voice-of-customer
npx skills add https://github.com/tendtoyj/tendtoyj-claude-skills --skill voice-of-customer
Agent 安装分布
Skill 文档
Voice of Customer
Mine real customer language from communities, reviews, and forums. Uses Perplexity for community research. Output feeds copywriting, email, SEO, and every execution skill.
Purpose
Voice of Customer answers the question “What words do our customers actually use?” It produces a Customer Language Bank with four categories:
- Pain Expressions â Complaints, frustrations, problem descriptions
- Desire Expressions â Wishes, aspirations, ideal outcomes
- Comparison Language â How customers evaluate and compare alternatives
- Trigger Phrases â What finally pushes them to buy, subscribe, or switch
The output â research-memory/customer-language.md â is the language foundation that copywriting (06), SEO (07), newsletter (08), email sequences (09), and content atomizer (10) reference to write in customers’ own words.
“Every customer photo is an ad. Every review is copy. Every unboxing video is content. You’re not creating marketing â you’re curating what customers already give you.”
Relationship to Audience Profiler: Audience Profiler maps who the customer is. Voice of Customer captures how the customer talks.
Modes
| Mode | When to Use | Behavior |
|---|---|---|
| Full Mining | No customer-language.md exists, or it’s an empty scaffold |
Run all 5 steps from scratch |
| Refresh | customer-language.md already has data |
Check research-log.md for last mining date â add new expressions or strengthen weak categories |
Auto-Load Protocol
On every invocation, BEFORE any research:
- Check
research-memory/directory - If files exist â Read ALL
.mdfiles (except README.md) - Use loaded context to:
- From
customer-insight.md: Pull segment names, pain points, and community list â use as search keyword seeds (Step 1) - From
competitive-intel.md: Pull competitor names â generate comparison search keywords (“[competitor] review”, “[competitor] alternative”) - Build on existing findings (deepen, not repeat)
- From
- Check
brand-memory/(read-only) â If exists, extract product name and category fromvoice-profile.mdâ use in search queries - If
customer-language.mdhas data ANDresearch-log.mdshows a previous mining run â suggest Refresh mode
Input Gathering
Collect from the user conversationally. Do NOT dump a form â ask naturally.
| Field | Required | Description |
|---|---|---|
| Product / Service category | YES | What market are we mining language for? |
| Competitor names | Optional | For “[competitor] review” and “[competitor] vs” searches |
| Known communities | Optional | Reddit subs, Discord servers, forums the user already knows |
| Collection focus | Optional | Specific category to prioritize (Pain only, Triggers only, etc.) |
| Language | Optional | 결과물 ìì± ì¸ì´ (default: English). ê²ì ì¸ì´ë ì´ì ë°ë¼ ê²°ì |
| Research intensity | Optional | “light” / “standard” / “deep” (default: deep) â 리ìì¹ ê¹ì´ì ìì§ë ì¡°ì |
If customer-insight.md exists, pre-fill category, segments, pain points, and communities â ask user to confirm or add.
If competitive-intel.md exists, extract competitor names automatically â show user and ask if any should be excluded.
If this is a Refresh, show current Language Bank summary (count per category) and ask: “Which category needs more expressions? Any new communities to mine?”
Research Intensity
ì¬ì©ìê° ëª
ìì ì¼ë¡ ìì²íë©´ 리ìì¹ ê¹ì´ë¥¼ ì¡°ì í©ëë¤. ì§ì íì§ ìì¼ë©´ deep (기본ê°).
| Level | search_context_size | ìì§ë | ì©ë |
|---|---|---|---|
light |
low | ì¶ì (~50%) | ë¹ ë¥¸ ê° ì¡ê¸° |
standard |
medium | ë³´íµ (~75%) | ì¼ë° 리ìì¹ |
deep |
high | ì ì²´ (100%) | 본격 리ìì¹ |
“ê°ë³ê²”, “ë¹ ë¥´ê²”, “ê°ë¨í” â light / “ë³´íµì¼ë¡”, “ì ë¹í” â standard / ë³ë ì§ì ìì â deep
Process
Step 1: Load Context & Generate Search Keywords
Goal: Build a keyword matrix for targeted community mining.
Actions:
- Load all research-memory/ files
- Extract from customer-insight.md (if available):
- Segment names â search audience context
- Pain points â Pain Expression seed keywords
- Community list â search scope
- Extract from competitive-intel.md (if available):
- Competitor names â Comparison and Review keywords
- Generate the Search Keyword Matrix:
PAIN keywords:
"[category] problems", "[category] frustrating", "[category] sucks"
"[category] disappointed", "hate [category]", "[category] complaint"
DESIRE keywords:
"best [category]", "[category] recommendation", "wish [category] could"
"ideal [category]", "perfect [category] would", "[category] dream feature"
COMPARISON keywords:
"[competitor A] vs [competitor B]", "[product] alternative"
"switched from [competitor]", "[competitor] review honest"
TRIGGER keywords:
"finally bought [category]", "worth it [category]"
"what convinced me [category]", "just signed up for"
- If customer-language.md exists with data â switch to Refresh mode
Output: Keyword matrix ready for Steps 2-4.
Step 2: Mine Pain Expressions
Goal: Collect 10-15 real phrases expressing frustration, complaints, and problems.
Tool: perplexity_ask
Query pattern:
What are the most common complaints and frustrations people express about [category] in online communities (Reddit, review sites, forums, social media)?
For each expression: quote the actual language, note the context, identify the source platform, rate intensity (Mild/Strong/Extreme).
Find 10-15 distinct pain expressions from [primary segment] perspective.
Include complaints about: [competitor list]
Parameters: search_context_size: Research Intensityì ë°ë¼ ê²°ì (lightâ"low" / standardâ"medium" / deepâ"high"), search_recency_filter: "year"
ìì§ ëª©í: light=5-7 / standard=7-10 / deep=10-15 pain expressions
Step 3: Mine Desire Expressions & Comparison Language
Goal: Collect 8-10 desire expressions + 5-8 comparison expressions in one pass.
Why combined: In communities, wishes and comparisons naturally co-occur in the same threads (“I wish X could do what Y does”).
Tool: perplexity_ask
Query pattern:
What do people say when discussing what they WANT from [category] and how they COMPARE options?
DESIRE EXPRESSIONS: "I wish [product] could...", "The perfect [category] would...", ideal outcomes, feature requests.
COMPARISON LANGUAGE: "[A] vs [B]", "I switched from X to Y because...", evaluation criteria mentioned.
For each: quote actual language, note context + source, tag as Desire or Comparison.
For comparisons: note competitors mentioned and criteria used.
Find 8-10 desire + 5-8 comparison expressions. Include: [competitor list]
Parameters: search_context_size: Research Intensityì ë°ë¼ ê²°ì (lightâ"low" / standardâ"medium" / deepâ"high"), search_recency_filter: "year"
ìì§ ëª©í: desire â light=3-5 / standard=5-7 / deep=8-10, comparison â light=2-3 / standard=3-5 / deep=5-8
Step 4: Mine Trigger Phrases
Goal: Collect 8-12 phrases describing the moment of purchase decision.
Tool: perplexity_ask
Query pattern:
What makes people finally decide to purchase or subscribe to [category]?
Search for phrases describing the MOMENT of decision: "I finally decided because...", "What convinced me was...", "I was on the fence until..."
Classify each by trigger type: Social Proof, Urgency, Value Realization, Risk Removal, Authority, or Scarcity.
For each: quote the expression, classify type, note source platform.
Find 8-12 trigger phrases across 3+ trigger types.
Parameters: search_context_size: Research Intensityì ë°ë¼ ê²°ì (lightâ"low" / standardâ"medium" / deepâ"high"), search_recency_filter: "year"
ìì§ ëª©í: light=3-5 / standard=5-8 / deep=8-12 trigger phrases
Step 5: Save & Log
Goal: Write all findings to research-memory/customer-language.md and log execution.
5a. Write customer-language.md
Language rule: ì¹ì í¤ëì í ì´ë¸ 컬ë¼ëª ì ìì´ë¡ ì ì§í©ëë¤. 본문, ì ê°, ì¤ëª , ë¶ì í ì¤í¸ë ì¬ì©ìê° ì§ì í ì¸ì´ë¡ ìì±í©ëë¤. ì¸ì´ê° ì§ì ëì§ ìì¼ë©´ Englishë¡ ìì±í©ëë¤.
Use the exact schema in references/customer-language-schema.md. Key rules:
- 5 sections: Pain Expressions, Desire Expressions, Comparison Language, Trigger Phrases, Community Sources
- Every expression in quotation marks with source attribution
- For Refresh: append new rows to existing tables, do NOT overwrite
5b. Update research-log.md
Append one row:
| [YYYY-MM-DD] | voice-of-customer | Full Mining / Refresh | [X pain + Y desire + Z comparison + W trigger collected, key sources] | Perplexity |
Perplexity MCP Tool Guide
| Tool | When to Use | This Skill |
|---|---|---|
perplexity_ask |
Community language collection | Step 2 (pain), Step 3 (desire + comparison), Step 4 (triggers) |
perplexity_search |
Find specific communities/threads | Step 1 only â if known communities need URL discovery |
This skill does NOT use
perplexity_reason. The focus is collection, not classification or reasoning.perplexity_askhandles fact-based community mining best.
Common parameters:
search_context_size: Research Intensity ë 벨ì ë°ë¼ ê²°ì â ì Research Intensity í ì´ë¸ 참조search_recency_filter:"year"â recent expressions are most relevant for current copy
Query best practices:
- Always include the product category in every query
- Ask for ACTUAL phrases, not summaries â emphasize “quote the real language”
- Include competitor names to surface comparison discussions
- One category per query (pain, desire+comparison, triggers) â don’t combine all in one call
- Request source attribution for every expression
- Language: ì¬ì©ìê° English ì¸ ì¸ì´ë¥¼ ì§ì í ê²½ì°, 모ë query ëì “Respond in [language].”를 ì¶ê°
Quality Checklist
Before saving, verify:
- Pain expressions ìµì 5ê° (light) ~ 15ê° (deep) ìì§ (with intensity ratings)
- Desire expressions ìµì 3ê° (light) ~ 10ê° (deep) ìì§
- Comparison expressions ìµì 2ê° (light) ~ 8ê° (deep) ìì§, competitor names and criteria í¬í¨
- Trigger phrases ìµì 3ê° (light) ~ 12ê° (deep) ìì§, 3+ trigger types
- Every expression includes source platform/community
- Community Sources table lists all mined sources with URLs where available
- Expressions read like real human language (not AI-summarized)
- All Perplexity responses include source citations
- research-log.md updated with execution record
- If Refresh: existing expressions preserved, new ones appended
Example (Abbreviated)
Input: “AI marketing education / skill packs for solo marketers”
Pain Expressions:
- “I’ve installed 10 AI tools and ended up only using ChatGPT” (Reddit r/marketing, Strong)
- “Everything AI writes sounds the same â that generic LinkedIn tone” (Twitter, Strong)
- “Spent more time writing prompts than actually writing the copy” (HN, Mild)
Desire Expressions:
- “I just want copy-paste prompts that actually work for my niche” (Reddit)
- “Wish there was a system, not just random tips scattered across YouTube” (Twitter)
Comparison Language:
- “DigitalMarketer’s content was made pre-AI so it feels outdated now”
- “Demand Curve is great for growth but weak on content marketing side”
Trigger Phrases:
- “$199 is less than one month of agency fees and I keep it forever” (Value Realization)
- “Three people in my Twitter feed recommended it in one week” (Social Proof)
What This Skill Does NOT Do
- Customer profiling / segmentation â Use
audience-profiler(maps who they are) - Competitor identification â Use
competitor-finder(identifies the players) - Website scraping for competitor copy â Use
competitor-analyzer(Firecrawl) - Strategic recommendations â Use
research-synthesizer(reads this output) - Market sizing / trends â Use
market-scanner
Voice of Customer stays focused on capturing real language â the exact words, phrases, and expressions customers use when they complain, wish, compare, and decide.