SEO & GEO/AEO

Verified against ChatGPT · 2026-08-08

Turn a messy keyword export into clusters mapped to buyer-journey stage, not just shared words

Takes a raw keyword list plus rough search-volume and intent notes and groups it into clusters built around one ranking page each, tagged to where the searcher sits in the funnel — not a generic word-overlap grouping.

ChatGPT (GPT-5.1)4 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

You are clustering a raw keyword export for one site section into groups that map to real pages, not just groups of words that happen to share a root term.

SITE / SECTION
The /pricing and /compare section of a B2B expense-management SaaS site.

RAW KEYWORD LIST
expense management software, best expense management software, expense management software pricing, expense management software vs Expensify, free expense tracking app, how to automate expense reports (37 more rows)...

EXISTING PAGES THAT ALREADY RANK FOR SOME OF THESE
/pricing, /compare/expensify, /blog/automate-expense-reports

BUSINESS PRIORITY
We're trying to win comparison-stage traffic against Expensify specifically, not top-of-funnel awareness content.

CLUSTERING RULES
Group keywords by what a single page could realistically satisfy in one visit, not by shared substring — "best project management software" and "project management software pricing" share three words but belong on two different pages because they answer two different questions at two different funnel stages. For every cluster, name the one page it should live on, whether that page already exists in the list I gave you or needs to be created, and the specific search intent it serves (informational, comparison, transactional, navigational). Tag every cluster with a funnel stage — top (learning the category exists), middle (comparing options), bottom (ready to choose) — and flag any cluster where the keywords inside it actually span two stages, because that's usually a sign the cluster should split, not a sign it's fine as one page. If two clusters would cannibalize each other because they'd both plausibly rank on the same page anyway, say so explicitly rather than silently listing them as separate clusters. Do not force every keyword into a cluster — if a keyword doesn't fit anywhere in this site section's realistic scope, put it in a leftover list and say why it doesn't belong, rather than stretching a cluster to absorb it.

OUTPUT FORMAT
A table with columns: Cluster name, Target page (existing or new), Funnel stage, Core keywords (comma-separated), Search intent, Cannibalization risk (none / name the other cluster). Follow the table with a short leftover-keywords list and a one-line reason for each, and a final paragraph flagging the single highest-priority cluster to build first given the business priority I stated.

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

GPT-5.1 clusters keywords well by surface similarity by default because that's the cheapest pattern to complete from a raw list, which is exactly the failure mode this prompt targets: instructing it to cluster around "what a single page could satisfy in one visit" forces it to reason about search intent as the grouping variable instead of shared tokens, which is the actual signal that predicts whether two keywords should share a URL or cannibalize each other if they do. The explicit funnel-stage tag matters because a cluster that spans top and bottom funnel almost always means the underlying page would have to serve two contradictory jobs — educate a stranger and convert a ready buyer — and naming that split up front catches a structural content problem before a writer builds one page that does neither well. Asking the model to flag cannibalization risk rather than silently keep clusters separate matters because ChatGPT, left unprompted, treats each cluster as an independent unit and won't cross-reference them against each other for overlap unless told to explicitly hold the full set in mind as it goes — a real risk with SEO clustering, since two clusters built from a genuinely large keyword export can easily target the same query space without either cluster's description making that obvious on its own. The leftover-keyword list exists because forcing every row into a cluster produces artificially padded clusters that look complete but actually bury a handful of keywords that don't belong on this site at all, which wastes a content brief on a page that was never going to rank for its stated intent.

What you get back

Cluster: "Expense software vs Expensify" | Target: /compare/expensify (existing) | Stage: middle-to-bottom | Keywords: expense management software vs Expensify, Expensify alternative, expense software better than Expensify | Intent: comparison | Cannibalization: none. Leftover: "free expense tracking app" — belongs on a different site entirely aimed at individual users, not our B2B buyer.

Verified against

ChatGPT GPT-5.1 · 2026-08-08

Changelog

  • 2026-08-08 — Initial publish, verified against ChatGPT GPT-5.1.

Building this for real?

This is a free starting point. If you'd rather have SEO built and running for your business, that's Scult's day job.

EXPLORE SEO
All SEO & GEO/AEO prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY