Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Turn ONE seed keyword into a full hub-and-spoke content plan grouped by real SERP overlap, not string similarity. Use whenever the user says "build a topic cluster", "content cluster", "pillar page", "hub and spoke", "content architecture", "group my keywords", "what pages should I write around X", or hands over a seed keyword and wants a content plan. Reach for it before anyone starts writing a batch of articles, when a blog has lots of overlapping posts cannibalizing each other, or when planni
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -5% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 65% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 53% | 0% |
Expand a single seed keyword into a topic map, group the keywords by who actually ranks for them (SERP overlap), and hand back a hub-and-spoke plan a writer can execute. The grouping step is the whole point: two keywords belong in the same cluster only when Google returns largely the same pages for both, because that is Google telling you it treats them as one intent. String similarity ("email marketing" vs "email marketing software") lies constantly; SERP overlap does not.
"keyword grouping", "content architecture", "what should I write around X".
Start with the seed keyword and generate 40 to 80 candidate keywords across intent types:
for, without, template, examples, tool, checklist, and question words.
live SERP for the seed.
each is a candidate spoke.
and decision ("X pricing", "X for use case]") phrasings.
Deduplicate obvious repeats. Keep near-duplicates for now; step 3 merges them by evidence.
For every candidate keyword, record the top 10 organic results (URLs only, ignore ads and map packs). This is your raw signal. If you have a SERP tool or API, batch it; if you are working by hand, sample the 15 to 25 highest-priority candidates rather than all of them.
Store as a simple map: keyword -> [url1, url2, ... url10].
Compare each pair of keywords by how many of their top-10 URLs match. Use the overlap count as the grouping rule:
Google will only rank one and they will cannibalize.
should interlink.
Walk the keywords greedily: pick the highest-volume unassigned keyword as a cluster seed, pull in every keyword with 3+ overlap, then repeat with the next unassigned keyword. The result is a set of clusters where within-cluster overlap is high and cross-cluster overlap is low.
For each cluster, label the dominant intent from what the ranking pages actually are:
The pillar is the broadest informational keyword whose SERP overlaps most of the cluster (usually the seed or a close variant). Every other keyword becomes a spoke targeting one specific sub-intent. One target keyword per spoke, no overlap between spokes.
Wire the cluster so link equity and topical authority flow:
links back up to the pillar. Bidirectional, always.
a reader on one would plausibly want the other. Do not link every spoke to every spoke; that dilutes signal and looks spammy.
Before finalizing, kill weak spokes:
the nearest spoke instead of making a page.
it is thin. Merge it up into the pillar or a sibling spoke.
# Topic Cluster: <seed keyword>
## Pillar
- Page title: <pillar page title>
- Target keyword: <keyword> | Intent: informational
- Covers: <one-line scope of the hub page>
## Spokes
| # | Page title | Target keyword | Intent | In cluster because (SERP overlap) |
|---|------------|----------------|--------|-----------------------------------|
| 1 | ... | ... | info | 4/10 shared URLs with pillar |
| 2 | ... | ... | commercial | 3/10 shared with spoke 4 |
| ...|
## Internal-link matrix
Pillar -> Spoke 1, Spoke 2, ... (hub links down to all)
Spoke 1 -> Pillar; Spoke 3 (shared intent)
Spoke 2 -> Pillar
Spoke 3 -> Pillar; Spoke 1
...
## Merged / dropped (thin-content guardrail)
- <keyword> merged into <spoke> (>6/10 SERP overlap, same intent)
- <keyword> dropped (no demand, no distinct SERP)Seed: cold email.
Expanding gives ~50 candidates. Pulling top-10 URLs and comparing overlap reveals that "cold email" and "cold emailing" share 8 of 10 URLs, so they merge into the pillar. "Cold email templates" and "cold email examples" share 5 URLs with each other but only 2 with the pillar, so they form one spoke, not two. "Cold email subject lines", "cold email open rate", and "cold email deliverability" each have distinct SERPs (0 to 2 overlap with the pillar) and become separate spokes. "Best cold email software" is commercial (the SERP is listicles), so it is a commercial spoke that links to the pillar but not to the informational how-to spokes.
Final plan: 1 pillar ("The complete guide to cold email") + 6 spokes (templates+examples, subject lines, open rate, deliverability, follow-up sequences, software). The link matrix wires the pillar to all 6, links deliverability <-> open rate (4/10 overlap), and drops "cold email meaning" as thin, folding it into the pillar intro.
From God of Skills: a curated, hand-tested directory of AI skills, prompts, templates and image style guides. Source: https://godofskills.com/skills/seo-cluster-builder?ref=claude-skill
Other measured skills in the registry, with their headline benchmark lift.