All promptsKeyword research

Expand one seed keyword into a set worth validating

A prompt that expands a single seed keyword into candidate search terms along named axes, marks which came from your own words, and refuses to invent demand.

Works in
ChatGPT, Claude, Gemini
You need
One seed keyword · The words your customers use, from tickets, calls or reviews
Written for
chatgpt prompts for seo keywords
98A

Scored by our own engine

This page, run through the audit we sell. Measured 4 August 2026.

Score your own page →

A keyword tool can only show you terms somebody already searched often enough to be recorded. That is a real limit, and it is the one thing a language model is placed to help with, because a model knows the dozen ways people phrase a problem and knows nothing at all about how many of them do. The prompt below takes that division of labour literally: it generates phrasings and it is forbidden from touching demand.

What a model is genuinely good at here

Language, and specifically the phrasings that contain none of your product words. Somebody with a scheduling problem types “how to stop double booking my crews” long before they type “scheduling software”, and no export seeded from your product words will ever return that phrase.

That is the axis worth running the prompt for. The rest of the expansion, plurals and near synonyms and “best X for Y”, is something a keyword tool does better and with evidence attached. Judge the output on how many problem phrasings it found, not on how long it is.

Why the seed decides the output

A seed that names your market returns a dictionary. A seed that names one job returns a keyword set. The model expands outward from what you give it, so a broad seed makes every branch equally plausible and nothing specific survives.

The test is one sentence: who types this, and what do they want when they do. If you cannot answer, narrow it and run the prompt again. Three narrow runs beat one broad run, and they are quicker to read.

Where this list goes next

Into a real tool for volume, then into clustering. The output is candidates, and treating it as a plan is how sites end up with forty pages built on phrasings nobody uses.

Once you have real figures against the survivors, hand them to the keyword clustering prompt, which decides which terms belong on one page and which two of your planned pages would compete. Expansion widens the list. Clustering is what turns it into a build order.

The two runs are worth keeping separate for a reason beyond tidiness. A model asked to expand and cluster in one pass will quietly stop expanding once it has enough terms to fill a neat set of clusters, and the terms it stops before reaching are the long tail you ran the prompt for.

The prompt 431 words
You are a technical SEO strategist. I am going to give you one seed keyword
and some context about my business. Expand the seed into candidate search
terms. These are candidates for me to validate, not a finished keyword list.

Rules you must follow:

1. Every term must be a phrase a real person would type into a search box.
   No headline phrasings, no marketing nouns, nothing that only appears on a
   pricing page. If you would not type it yourself, leave it out.
2. Expand along these axes and label every term with the axis it came from:
   problem phrasing, solution phrasing, comparison, audience, location, cost,
   tooling, objection. Problem phrasing is the one most lists miss, because
   those terms contain none of my product words.
3. Mark every term as either "yours" or "general". A term is "yours" only if
   it uses language I gave you. Everything else is "general", meaning you
   produced it from what similar businesses tend to look like.
4. Do not output search volume, difficulty, competition or cost per click.
   You have no access to any of them. If you find yourself about to write a
   number, write the reasoning instead.
5. Do not pad. If an axis produces nothing genuine for this business, write
   "none" for that axis. Two terms that differ only by a stop word or a plural
   are one term.
6. Put anything whose searchers are not buyers into a separate list: jobs,
   courses, free versions, templates, do it yourself. Do not silently drop
   them and do not mix them into the main table.
7. If the seed is broad enough that expanding it would produce a dictionary of
   the whole industry, say so and ask me for a narrower seed instead of
   producing hundreds of terms.

Output a markdown table with these columns:
Term | Axis | Intent | Who types this and what they want | Yours or general

After the table, give me three things:
- The not a buyer list, grouped by why they are not buyers.
- The axes that produced nothing, with one line each on what that tells me.
- The five terms you would validate first, chosen on how closely they match
  what I sell, with one sentence of reasoning each. Say plainly that this
  ordering is based on fit and not on demand, because you cannot see demand.

My seed keyword: [SEED KEYWORD]
My business: [ONE SENTENCE ON WHAT YOU SELL AND TO WHOM]
Words my customers actually use: [PASTE PHRASES FROM TICKETS, CALLS OR REVIEWS]
Market: [COUNTRY OR REGION, OR WRITE "none"]

What to change

Everything in square brackets is yours to replace. Nothing else needs editing.

[SEED KEYWORD]
One phrase, naming one job rather than your whole market. "Project management software" returns a dictionary because every branch off it is plausible. "Subcontractor scheduling" returns a keyword set, because the model can tell who is typing it and why.
[ONE SENTENCE ON WHAT YOU SELL AND TO WHOM]
The buyer is what turns a generic expansion into yours. "We sell scheduling software" and "we sell scheduling software to construction subcontractors with under fifty staff" produce almost no overlapping terms, because the second one has an audience axis to expand along.
[PASTE PHRASES FROM TICKETS, CALLS OR REVIEWS]
The one input a model has no way to guess. Real customers describe the problem in words no keyword tool surfaced, because nobody searched them enough to be recorded. Ten lines lifted verbatim from support tickets is enough, and it is what the "yours" column measures against.
[COUNTRY OR REGION, OR WRITE "none"]
Terminology splits by market and the model will default to American phrasing. Lettings and rentals, mobile and cell, chartered accountant and CPA are different searches with different searchers, and getting the wrong one produces a list that reads fine and matches nobody.

How to run it

  1. 01
    Narrow the seed before you start

    Write your seed down and ask who types this and what they want when they do. If you cannot answer in one sentence, the seed is a market rather than a keyword and the output will be a dictionary. Run the prompt once per narrow seed instead of once on a broad one.

  2. 02
    Collect the words your customers use

    Open your support inbox, your sales notes or your reviews and copy ten phrases where somebody described the problem in their own words. Do not tidy them. The value is in the phrasing you would never have written yourself, and tidying it is how it turns back into your marketing copy.

  3. 03
    Fill the four inputs and run it

    Paste the prompt with your seed, your business line, your customer phrases and your market. Run it in ChatGPT, Claude or Gemini. If the output arrives without the axis or the yours and general column, the model has shortened the format, so ask it to redo the table in full rather than working from the shortened one.

  4. 04
    Read the general list harder than the yours list

    Terms marked general came from the model knowing what businesses like yours usually look like. Some of those are the best finds on the page and some belong to a business you are not. This is the column that decides which, and it is the reason the prompt makes the model declare it.

  5. 05
    Validate the survivors in a real tool

    Take the terms that survive into Google Keyword Planner, Search Console or whichever paid tool you use, and get actual figures. Nothing in this output is evidence that anybody searches anything. It is a list of plausible phrasings, which is the part a keyword tool cannot generate for you.

  6. 06
    Cluster before you plan any pages

    Once you have real figures, run the validated list through the clustering prompt at /prompts/keyword-clustering-prompt/ to decide which terms share a page. Building one page per keyword off a raw expansion is the fastest route to thin pages competing with each other.

Questions people ask

What makes a good seed keyword?

One that names a single job your buyer needs done, not the market you sell into. A seed like "accounting software" expands into everything anybody has ever wanted from accounting, so nothing in the output is specific. A seed like "vat return software for sole traders" expands into terms a real person would type, because the seed already contains a person.

Will ChatGPT tell me the search volume for these keywords?

It will if you ask, and the numbers will be invented. Language models have no access to search data and produce plausible looking figures rather than admitting the gap. Get real volume from Google Keyword Planner, from Search Console for terms you already appear for, or from a paid tool. Any of those beats a generated number.

How is this different from clustering a keyword export?

Expansion is what you run when you have nothing but an idea. Clustering is what you run when you already have a list and need to know which terms share a page. They are halves of the same job in that order, and expansion produces exactly the raw list clustering consumes.

Why does the prompt make the model label terms as yours or general?

Because the two need different treatment and they look identical in a table. A term built from your own customer language is already evidence that somebody phrases the problem that way. A term the model generalised from similar businesses is a guess about an industry, and it is worth checking before you plan anything around it.

Does this work in Claude and Gemini as well as ChatGPT?

Yes. It is plain instructions with no model specific syntax, so it runs anywhere. The part that varies between assistants is how strictly the output format is held, so check that the axis column and the yours and general column both survived before you read the table.

A new prompt, most days One working prompt for a real SEO or AI visibility job, what to change in it, and a worked example. No sequences, no offers dressed as newsletters.

Unsubscribe in one click. We never pass your address on.

Run your first audit
in about a minute

Free account, no card. Paste your URL and get a real, scored report of your AI and search visibility.

Measuring rankings in