Analiza opinii klientów: język klienta jako dowód

Agent zbiera prawdziwe słowa klientów, liczy je uczciwie i dopiero z nich buduje kąty do tekstów.

Research, średni poziom. Opublikowano

Co robi

Agent czyta recenzje, fora, komentarze i wiadomości od klientów, a każdą wypowiedź kopiuje dosłownie, z literówkami, w oryginalnym języku i z linią dowodu. Z wiadomości usuwa dane osobowe. Cytaty grupuje w klastry pięciu typów: ból, pragnienie, obiekcja, moment wyzwalający i porównanie. Przy każdym klastrze podaje liczbę cytatów i liczbę różnych źródeł, a osobno oznacza sformułowanie najczęstsze i najbardziej jaskrawe. Najmocniejsze klastry zamienia w karty kątów z jednym z pięciu etapów świadomości klienta według Eugene'a Schwartza i propozycjami nagłówków. Każda propozycja wskazuje numer cytatu, z którego pochodzi.

Kiedy używać

Kiedy używać

  • Przed pisaniem strony produktu, reklamy albo maila.
  • Planujesz treści i chcesz tematów z pytań, które klienci naprawdę zadają.
  • Pozycjonujesz ofertę i chcesz wiedzieć, z czym klienci cię porównują.
  • Masz dużo recenzji i wiadomości, ale nikt ich nie przeczytał systematycznie.

Kiedy nie używać

  • Nie masz jeszcze żadnych klientów ani publicznych rozmów o problemie. Najpierw porozmawiaj z kilkoma osobami.
  • Potrzebujesz liczb o skali rynku. Ten skill liczy cytaty, nie mierzy popytu.
  • Źródłem są wyłącznie dane osobowe, których nie możesz przetwarzać w tym celu.

Tabela decyzyjna

SytuacjaCo robi skill
Źródło się otwieraKopiuje cytaty dosłownie z linią dowodu
Źródło wymaga logowania albo eksportuDaje ci link i mówi, co skopiować, a wynik oznacza jako supplied
Cytat w obcym językuZostawia oryginał, objaśnienie dopisuje w osobnej linii gloss
Wiadomość albo recenzja z danymi osobowymiUsuwa imię, nick, email, telefon, adres i numery zamówień, zgłoszeń czy kont przed zapisem
Klaster z jednego wątkuOznacza go jako jedno źródło
Propozycja nagłówka bez cytatuOznacza ją jako nasze słowa, nie klienta

Szablon

Metoda: zbieranie cytatów dosłownie ze źródłem, klastry bólu, pragnienia i obiekcji z uczciwym liczeniem, ranking i karty kątów komunikacji.

SKILL.mdPobierzSKILL.md
---
name: voice-of-customer-mining
description: Collect what customers actually say about a problem or product category from reviews, forums, comments and support messages, keep every quote verbatim with its source, cluster the quotes by pain, desire and objection with honest counts, and turn the clusters into angles and message candidates. Use it before writing copy, planning content, positioning an offer, or when someone asks "what are our customers really saying".
---

# Voice-of-customer mining

Copy written from a summary ("customers care about quality") sounds like every competitor's copy. The
words that land are the ones customers already use: specific, sometimes rough, often misspelled. This
workflow collects those words as evidence, counts them honestly, and only then turns them into angles. It
never invents a quote and never passes off a translation or a paraphrase as the customer's voice.

Read `CONTEXT.md` next to this file first. It names the product or problem, the sources you may mine, the
competitors whose customers you may read, the language that counts as primary, and where the cluster bank
lives.

If `CONTEXT.md` is missing, or a field still holds `___`, ask the user for it before collecting anything,
in the language they write in. Ask for the competitor list and the sources by name, for example:
„Dodaj swoją listę konkurentów i źródeł opinii: …" or "Add your competitor list and the places your
customers talk: …". Never make up a competitor or source list yourself. "No competitors" is a valid
answer; write it down and carry on.

## Before you start / What you need

- **An AI agent that can open web pages**: Claude Code (https://code.claude.com/docs/en/overview) has web
  search and page fetch built in; Codex CLI (https://developers.openai.com/codex/cli) and Cursor
  (https://cursor.com/docs) work too. Without page access the user pastes the content and every quote is
  `supplied`.
- **Optional: Playwright MCP** (Apache-2.0, https://github.com/microsoft/playwright-mcp) for review pages
  that only load in a real browser. Needs Node.js. Claude Code: `claude mcp add playwright npx
  @playwright/mcp@latest`; Codex: `codex mcp add playwright npx "@playwright/mcp@latest"`. Do not sign in
  anywhere with it; a page behind a login stays `supplied`.
- **Optional: the official X API** (https://docs.x.com/x-api/introduction) to read public posts. The user
  creates an app in the Developer Console (https://console.x.com), buys pay-per-use credits, sets a
  spending limit, and generates an app-only token. The token lives in an environment variable in the
  user's shell profile or a `.env` file listed in `.gitignore`, never in the chat or in `CONTEXT.md`. Use
  the recent search endpoint (https://docs.x.com/x-api/posts/search/introduction).
- **Optional: review exports** from the user's own store or review app, stripped of personal data first.

If a tool is missing, say so once and mark those sources `supplied`.

## 1. Collect

For each source in `CONTEXT.md`:

1. Open it and read what is actually there. If it will not load or needs a login, do not guess: give the
   reader a ready link and say exactly what to copy back, then work from what they paste.
2. Copy each relevant statement **verbatim**, typos and slang included, into the raw list with an
   evidence line:

   ```
   "quote" [URL or source name · seen: YYYY-MM-DD · language · rating if any · opened | supplied]
   ```
3. Keep the original language. If a translation helps, put it on the next line,
   a line starting `gloss:`. Never use the gloss as the quote.
4. Take the full range: one-star and five-star reviews, complaints about competitors, questions asked
   before buying, reasons given for returns. Positive quotes show desires; negative ones show pains and
   objections.

Support messages, public reviews and your own customer records may contain personal data. Before a quote
enters the list, strip names, usernames and handles, emails, phone numbers, addresses, and order, ticket or
account numbers. For a private message, the source in the evidence line is the channel (for example "support
inbox"), never the sender or the ticket. If a public page address contains a username or profile id,
cite the page or thread without it, or just the site and the date. For a post on X, cite
`x.com/i/status/<post id>`, which leaves out the author's handle. Keep only the words about the problem.

## 2. Cluster

Group quotes by what they are about. Each cluster gets one type:

| Type | It answers |
|---|---|
| PAIN | what goes wrong, what hurts, what it costs them |
| DESIRE | the result they want, in their words |
| OBJECTION | why they hesitate or do not buy |
| TRIGGER | the moment or event that made them look for a solution |
| COMPARISON | what they measure you against: another product, a different kind of solution, their current habit |

Report each cluster as:

```
## <TYPE>: <cluster name>: N mentions from M sources
1. "quote" [evidence line]
2. "quote" [evidence line]
...
Most frequent phrasing: #n
Most vivid phrasing: #n
```

Rules:

- **N equals the number of numbered quotes listed.** It is a count, not an estimate of how common the
  problem is.
- **M counts distinct sources**, so one angry thread does not look like a market-wide pain.
- Pick the most frequent phrasing as representative. Mark the most vivid one separately; it is often an
  outlier.
- A quote that fits two clusters goes into both, and each cluster notes the overlap.

## 3. Rank

Order clusters by N, then by M. Flag clusters with one source only as `SINGLE SOURCE`. Flag clusters whose
newest quote is older than the freshness window in `CONTEXT.md` as `STALE`.

## 4. Turn clusters into angles

Only a cluster that meets the "Minimum before an angle" in `CONTEXT.md` (mentions and distinct sources)
becomes an angle card. If the minimum is `no data` or blank, ask the user for it. If they do not know,
use at least 3 quotes from at least 2 sources and say so in the output: fewer than three quotes is an
anecdote, and a single source can be one loud thread. List the clusters below the minimum by name so the
reader sees what was held back.
For each cluster that meets it, write:

```
ANGLE: <one line, in the customer's words where possible>
From cluster: <name> (N / M)
Awareness stage: unaware | problem-aware | solution-aware | product-aware | most aware
Message candidates:
- <a hook or headline using a verbatim phrase, with the quote number it comes from>
- <a second one from a different phrasing>
What we would need to prove it: <the evidence a sceptical reader asks for>
```

Match the message to the stage. The five stages follow Eugene Schwartz's levels of awareness
(Breakthrough Advertising): unaware readers need the problem named; problem-aware readers need to learn a
solution exists; solution-aware readers need to see why this approach; product-aware readers need a
reason to pick you over what they know; the most aware need the offer. A message aimed at the wrong stage
is wasted.

Every message candidate points back to a numbered quote. A candidate with no quote behind it is marked
`OUR WORDS, NOT THEIRS`.

## 5. Output

Write to the cluster bank from `CONTEXT.md` (template in `cluster-bank.template.md`):

1. The ranked cluster list with counts.
2. The angle cards.
3. A "not found" section: questions you went looking for and found no customer language on, and sources
   that could not be read.

## Self-check before replying

- Is every quote verbatim, in its original language, with an evidence line?
- Does every N match the quotes listed under it?
- Are personal details stripped from every quote and from every evidence line, including usernames or
  profile ids in page addresses?
- Does every message candidate point to a quote number, or say it is our words?
- Is the "not found" section present?

## Failure modes

| Symptom | Cause | Fix |
|---|---|---|
| Clusters read like a marketing brief | quotes paraphrased or summarised | copy verbatim; paraphrase only in the cluster name |
| A pain looks huge but comes from one thread | counted mentions, ignored sources | report N and M; flag single-source clusters |
| Polished "customer language" that nobody said | translations used as quotes | original language only; translations on a labelled line |
| Copy built on the most dramatic review | vivid quote taken as representative | representative = most frequent; vivid marked separately |
| Personal data in the bank | messages pasted raw, or a username in a review link | strip names, handles, emails, phones, addresses and order, ticket or account numbers first; cite review pages without usernames or profile ids |

Pozostałe pliki

CONTEXT.template.mdTwoje ustawienia: temat i decyzja, źródła z trybem, język główny, okno świeżości, próg dla kąta i miejsce banku klastrów.
CONTEXT.template.mdPobierzCONTEXT.template.md
# Voice-of-customer mining: your context

Copy this file to CONTEXT.md next to SKILL.md (Claude Code), or next to your AGENTS.md or rules file
(Codex, Cursor), and fill in every blank. Write `no data` for anything you do
not know yet. Never put passwords, access keys, card numbers or customer personal data here.

## What we are listening for

(The product, category or problem, and the decision the result feeds.)
Topic: ___
Decision it feeds: ___
Example (not your data): reusable food wraps; feeds the headline and first section of the product page.

## Sources

(Where customers talk about this. Mark each opened if the agent can open it, supplied if you will copy it in.)
| Source | Why it matters | Mode |
|---|---|---|
| ___ | ___ | opened / supplied |
Example (not your data): reviews on our own product pages, supplied from an export; competitor product reviews, opened where pages load; two hobby forums, opened; our support inbox, supplied after stripping personal data.

## Competitors

(Add your own competitor list: the products or brands whose customers' words you want read. The agent asks
for this list if it is empty and never makes one up. Write `none` if you only want your own customers.)
| Competitor | Where their customers talk |
|---|---|
| ___ | ___ |
Example (not your data): two rival brands of the same product; their product review pages and one comparison thread.

## Primary language

(The language of quotes that count as your customers' voice. Quotes in other languages are hints.)
Primary language: ______
Example (not your data): the local language of the market we sell in.

## Freshness window

(After how long a cluster with no newer quote is marked STALE.)
Freshness window: ______
Example (not your data): 12 months.

## Minimum before an angle

(How many mentions and sources a cluster needs before it becomes an angle card. If you write `no data`,
the agent asks, and without an answer uses at least 3 quotes from at least 2 sources.)
Minimum before an angle: ______
Example (not your data): at least five quotes from at least three sources.

## Cluster bank

(Where the output file lives.)
Path: ___
Example (not your data): ./research/voice-of-customer.md
cluster-bank.template.mdWzór pliku wynikowego: ranking klastrów, klastry z ponumerowanymi cytatami, karty kątów i sekcja rzeczy nieznalezionych.
cluster-bank.template.mdPobierzcluster-bank.template.md
# Voice of customer: (topic)

Last updated: YYYY-MM-DD
Sources read: (list, each with opened or supplied)

## Ranked clusters

| Rank | Type | Cluster | N | M | Flags |
|---|---|---|---|---|---|
| 1 | PAIN | (name) | (n) | (m) | (SINGLE SOURCE, STALE, or none) |

## PAIN: (cluster name): N mentions from M sources
1. "(verbatim quote)" [source · seen: YYYY-MM-DD · language · opened | supplied]
2. "(verbatim quote)" [source · seen: ...]
Most frequent phrasing: #(n)
Most vivid phrasing: #(n)

## Angle cards

ANGLE: (one line in the customer's words)
From cluster: (name) (N / M)
Awareness stage: (unaware | problem-aware | solution-aware | product-aware | most aware)
Message candidates:
- (hook using quote #n)
- (second hook using quote #n)
What we would need to prove it: (evidence)

## Not found

- (question we looked for and found no customer language on)
- (source that could not be read, and why)

Czego potrzebujesz

Instalacja

  1. Claude Code: skopiuj folder do .claude/skills/voice-of-customer-mining/ w projekcie albo do ~/.claude/skills/voice-of-customer-mining/ dla wszystkich projektów. Claude ładuje skill, gdy opis pasuje do zadania, albo gdy wpiszesz /voice-of-customer-mining.
  2. Codex: wklej treść SKILL.md do AGENTS.md w katalogu repozytorium albo do globalnego ~/.codex/AGENTS.md.
  3. Cursor: dodaj SKILL.md jako regułę projektu albo wklej go do AGENTS.md.
  4. Czat bez plików: wklej SKILL.md na początku rozmowy, a potem wklejaj opinie partiami.
  5. Skopiuj CONTEXT.template.md jako CONTEXT.md obok SKILL.md (Claude Code) albo obok swojego AGENTS.md lub pliku z regułami (Codex, Cursor) i uzupełnij każde pole.
  6. Utwórz bank klastrów z cluster-bank.template.md w miejscu podanym w CONTEXT.md.

Działa, jeśli

  • Każdy cytat w banku ma źródło, datę, język i tryb pozyskania.
  • Liczba przy każdym klastrze zgadza się z liczbą ponumerowanych cytatów pod nim.
  • Klastry mają typ: ból, pragnienie, obiekcja, moment wyzwalający albo porównanie.
  • Każda propozycja nagłówka wskazuje numer cytatu albo jest oznaczona jako nasze słowa.
  • W banku nie ma imion, nicków, adresów email, telefonów ani numerów zamówień, zgłoszeń czy kont.
  • Plik kończy się sekcją rzeczy nieznalezionych.

Wymagania

  • Dostęp do źródeł opinii: publiczne strony, eksport recenzji albo wklejone wiadomości.
  • Agent, który potrafi otwierać strony. Bez tego wklejasz treść sam.
  • Podstawa prawna do przetwarzania wiadomości od klientów, jeśli ich używasz.

Pytania

Po co liczyć źródła osobno od cytatów?

Jeden długi wątek może dać kilkanaście cytatów o tym samym. Bez liczby źródeł wygląda to jak problem całego rynku. Dwie liczby obok siebie pokazują, czy to powszechny ból, czy jedna głośna rozmowa.

Czy mogę przetłumaczyć cytaty na język mojej strony?

Do zrozumienia tak, w osobnej, oznaczonej linii. Jako cytat nie. Przetłumaczony cytat brzmi gładko, ale nikt go tak nie powiedział, a cała wartość tej metody to słowa, których klienci naprawdę używają.

Czym ta metoda różni się od analizy sentymentu?

Analiza sentymentu mówi, czy opinie są dobre czy złe. Ten skill wyciąga konkretne sformułowania, grupuje je według tego, czego dotyczą, i zamienia w kąty komunikacji z przypisanym cytatem. Wynik nadaje się wprost do pisania tekstów.

Gdzie to pasuje

Ten skill stosuje reguły dowodu z szablonu agenta do researchu do jednego rodzaju materiału: słów klientów. Karty kątów zasilają każdy brief tekstu albo treści, który piszesz jako następny. W sklepie internetowym łączy się z szablonem instrukcji agenta dla sklepu, gdzie opisy produktów korzystają z banku klastrów.

Wszystkie skille

Źródła

Pytania o wdrożenie zadajesz na Discordzie.Dołącz za darmo