HOME SKILLS BLOG GITHUB
// SKILL

TOPIC CLUSTERS
SERP-OVERLAP CLUSTERING

Most topic clustering tools group keywords by text similarity. That misses what actually matters: which keywords Google ranks for the same pages. Claude SEO measures SERP overlap directly, classifies intent, and designs hub-and-spoke content architectures with internal link matrices. Outputs an interactive cluster map you can drop in a browser.

CONTRIBUTED BY LUTFIYA MILLER · PRO HUB CHALLENGE WINNER · original repo
$
/seo cluster <seed-keyword>

REQUIRES CLAUDE SEO INSTALLED IN CLAUDE CODE

Claude SEO topic cluster generator with SERP overlap analysis and hub-and-spoke architecture
// HOW IT WORKS

SERP-OVERLAP, NOT TEXT SIMILARITY.

The skill starts from a seed keyword and expands it into 30 to 50 variants using related searches, People Also Ask, long-tail modifiers, and intent modifiers. Then it runs the part most other tools skip: for every candidate pair, it pulls the top 10 organic SERP results for both keywords and measures how many URLs overlap.

Two keywords with 7 or more shared URLs are merged into a single target page. 4 to 6 shared URLs places them in the same cluster as separate posts. 2 to 3 shared URLs makes them cross-linked neighbors in adjacent clusters. 0 or 1 means they belong to different clusters or get excluded. Intent is classified from SERP composition, not guessed from text. The output is a hub-and-spoke plan with an internal link matrix and an interactive cluster-map.html.

/seo cluster <seed> EXPAND 30-50 variants PAA + related SERP OVERLAP shared top-10 core differentiator INTENT 4 classes info/comm/txn/nav HUB+SPOKE pillar + spokes link matrix MAP cluster-map.html interactive CLUSTER PLAN + INTERACTIVE MAP Hands off to /seo blog (claude-blog) for execution, or outputs editorial briefs

Six Capabilities

The skill bundles six things most teams stitch together from separate tools. SERP-overlap scoring is the core; the other five make the output usable for content production.

01
SERP-OVERLAP CLUSTERING
Measures actual Google SERP overlap between keywords. Two keywords are in the same cluster only if Google ranks substantially the same URLs for both.
02
INTENT CLASSIFICATION
Classifies each cluster as informational, commercial, transactional, or navigational based on SERP composition. Drives URL pattern and template selection.
03
HUB-AND-SPOKE ARCHITECTURE
Designs the cluster as a hub (pillar page) plus 3-12 spokes (deep articles). Suggests URLs, slugs, and content templates per intent.
04
INTERNAL LINK MATRIX
Generates the recommended internal linking structure: hub-to-spoke, spoke-to-spoke, sibling clusters. Anchor text suggestions per link.
05
INTERACTIVE CLUSTER MAP
Outputs cluster-map.html with every cluster as a node sized by total search volume. Drop in browser, no build step. Share with stakeholders.
06
CONTENT EXECUTION
If claude-blog is installed, /seo cluster execute hands off to write the hub and spokes with the agreed link matrix. Otherwise outputs editorial brief.
// USAGE

HOW TO RUN CLUSTER

Commands

CommandWhat it does
/seo cluster <seed>Full plan: expansion, SERP overlap, intent, hub-and-spoke, link matrix, map
/seo cluster plan <seed>Architecture only, no execution. Outputs cluster-plan.json and cluster-plan.md
/seo cluster execute <plan-file>Hand off to claude-blog. Writes hub and spokes with the agreed link matrix
/seo cluster map <plan-file>Regenerate cluster-map.html, refresh post statuses (planned vs written)

How SERP-Overlap Scoring Works

For each candidate keyword pair, the skill fetches the top 10 organic results (ignoring ads, featured snippets, and PAA) for both queries and computes a Jaccard-like score over the URL sets. Concretely: if keyword A has top-10 URLs {a1...a10} and keyword B has {b1...b10}, the score is |A ∩ B|, the count of shared URLs. The score maps directly to a clustering action:

Shared URLsRelationshipAction
7-10Same intent, same pageMerge into a single target page
4-6Same cluster, different pagesGroup as spokes under the same cluster
2-3Adjacent clustersCross-link between clusters
0-1Different clustersAssign to different clusters or exclude

For 40 keywords, full pairwise comparison would be 780 calls. The skill optimizes by pre-grouping with intent guesses (4 groups of ~10 = 180 comparisons) and only cross-checking group boundaries. Long-tail variants of the same head term are assumed to share a cluster without an explicit SERP call.

Output Files

All outputs land in the current working directory:

  • cluster-plan.json: machine-readable cluster plan with keywords, clusters, links, and meta
  • cluster-plan.md: human-readable cluster plan summary
  • cluster-map.html: interactive SVG visualization, no build step required
  • cluster-briefs/: per-post content briefs, generated when claude-blog is not installed
  • cluster-scorecard.md: post-execution quality report

DataForSEO Integration

When the DataForSEO MCP server is installed, the skill uses serp_organic_live_advanced instead of WebSearch for higher-quality SERP data. A cost check runs before every batch via scripts/dataforseo_costs.py. If the budget is blocked, the skill falls back to WebSearch automatically. See /seo dataforseo for setup.

// FAQ

QUESTIONS ABOUT CLUSTERING

Text similarity groups keywords that sound alike. SERP overlap groups keywords Google treats as the same intent. They are not the same. "best running shoes" and "top running sneakers" have low text similarity but high SERP overlap (Google ranks the same pages for both). Building a cluster on SERP overlap means one page can rank for the entire cluster. Building on text similarity often produces clusters where Google still wants separate pages.
An interactive HTML file (cluster-map.html) with each cluster as a node, sized by total search volume. Edges connect related clusters. Each cluster expands to show its keywords, suggested URL, intent classification, and recommended internal links to sibling clusters. Drop the file in any browser, no build step. Useful for content team kickoffs and stakeholder reviews.
If you have claude-blog installed, yes. /seo cluster plan generates the architecture; /seo cluster execute hands off to claude-blog to write hub and spoke posts with the agreed internal linking matrix. If claude-blog is not installed, the skill outputs an editorial brief you can hand to a writer.
By analyzing the SERP composition. Informational intent dominates when SERPs feature articles, guides, and "how-to" content. Commercial intent dominates when SERPs feature comparison pages, reviews, and listicles. Transactional intent dominates when SERPs feature product pages, pricing, and "buy" CTAs. Navigational intent dominates when SERPs feature a single brand. Each cluster gets one primary intent and may have secondary intents.
Lutfiya Miller, winner of the AI Marketing Hub Pro Hub Challenge. The original implementation is at github.com/Drfiya/semantic-cluster-engine. The submission was reviewed, security-audited, and integrated into Claude SEO v1.9.0 with Lutfiya's permission.
// RELATED SKILLS

EXPLORE MORE

VIEW ALL 23 SKILLS →

BUILD YOUR FIRST CLUSTER
IN 30 SECONDS.

$
git clone --depth 1 https://github.com/AgriciDaniel/claude-seo.git && bash claude-seo/install.sh
VIEW ON GITHUB ALL SKILLS >