Help us improve
Share bugs, ideas, or general feedback.
From smart-blog-skills
Plans and executes semantic topic clusters from a seed keyword: SERP research, intent grouping, hub-and-spoke architecture, SVG cluster map, and automated content generation with internal links.
npx claudepluginhub rainday/smart-blog-skills --plugin smart-blog-skillsHow this skill is triggered — by the user, by Claude, or both
Slash command
/smart-blog-skills:cluster [plan|execute] [seed-keyword|cluster-plan.json][plan|execute] [seed-keyword|cluster-plan.json]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Plans and executes entire interlinked content ecosystems from a single seed
Plans and executes semantic topic clusters for blogs using SERP research, intent grouping, and automated content generation with interlinking. Invoke via /blog cluster.
Clusters keywords by Google SERP overlap for hub-and-spoke content architecture. Generates internal link matrices and interactive visualizations. Useful for topic clusters, pillar pages, keyword grouping.
Builds, refreshes or promotes SEO topic clusters (pillar + satellites) backed by keyword and SERP evidence using DataForSEO. Runs in four phases with human curation preserved across reruns.
Share bugs, ideas, or general feedback.
Plans and executes entire interlinked content ecosystems from a single seed keyword. Three layers: Semantic Clustering (the brain), Cluster Architecture (the structure), and Execution Engine (the machine).
| Command | What it does |
|---|---|
/smart-blog-skills:cluster | Interactive. Asks whether to plan or execute. |
/smart-blog-skills:cluster plan <seed-keyword> | SERP-based semantic analysis. Outputs cluster plan + map. |
/smart-blog-skills:cluster plan --from strategy [path] | Imports existing strategy cluster build plan and validates against SERP data. |
/smart-blog-skills:cluster execute [path-to-plan] | Sequential write calls with cluster context and auto-interlinks. |
/smart-blog-skills:cluster, ask: "Would you like to plan a new cluster or execute an existing plan?"plan <keyword> to the Plan Phase (below)plan --from strategy [path] to the Strategy Import flow (below)execute [path], build, or run to the Execute Phase (below)/smart-blog-skills:cluster plan <seed-keyword>Use WebSearch to expand the seed into a keyword universe of 30 to 50 phrases:
<seed> to capture related searches and "People also ask".<seed> guide, <seed> tips, <seed> tools, <seed> examples, <seed> vs, best <seed>, how to <seed>.what is <seed>, how does <seed> work, why <seed>, <seed> for beginners.<seed> 2026.Group the expanded keywords:
Build the hub and spoke:
pillar-page. Links down to every spoke.Cluster formation rules:
For each spoke S:
S to Pillar (always; anchor text uses the pillar's primary keyword).S (always; anchor text uses S's primary keyword).S to other spokes in the same cluster (2 to 3 links each, contextual anchors).Verify every spoke has at least 3 incoming links.
All plan and execute artifacts go into a single subdirectory of the current working directory:
<cwd>/
└── cluster-<seed-keyword-slug>/
├── cluster-plan.json
├── cluster-map.html
├── pillar-<slug>.md (Execute Phase)
├── <spoke-slug>.md (Execute Phase, one per spoke)
└── cluster-scorecard.md (Execute Phase)
cluster-plan.json schema{
"seed_keyword": "<seed>",
"generated_at": "YYYY-MM-DDTHH:MM:SSZ",
"pillar": {
"id": "P",
"title": "Title of the pillar",
"primary_keyword": "broadest keyword",
"template": "pillar-page",
"word_count_target": 3000
},
"clusters": [
{
"name": "Cluster A: Theme",
"intent": "informational",
"posts": [
{
"id": "A1",
"title": "Post title",
"primary_keyword": "long-tail keyword",
"template": "how-to-guide",
"word_count_target": 1500,
"links_to": ["P", "A2"],
"links_from": ["P", "A2"]
}
]
}
],
"total_posts": 9,
"total_interlinks": 23
}
cluster-map.html (XSS-safe)A static, self-contained HTML file with an embedded SVG visualization. Hard rules:
<script> blocks. No onclick, onmouseover, or any on* event attributes.<src> references.&, <, >, ", '.:hover only. No JavaScript.Show a summary table of clusters and posts, total interlinks, estimated words, and the file paths. Ask for confirmation before proceeding to execution. Wait for explicit user approval. Do not auto-execute.
/smart-blog-skills:cluster plan --from strategy [path]Bridges strategy output into a cluster plan.
Cluster Build Plan table with the columns # | Spoke Topic | Template | Target Keyword | Word Count | Internal Links.P), the spoke rows, template assignments, target keywords, word counts, and link relationships.cluster-plan.json and cluster-map.html and wait for user confirmation./smart-blog-skills:cluster execute [path-to-plan]Read cluster-plan.json from the user-specified path or the most recent cluster-*/cluster-plan.json in the working directory. If no plan exists, return: "No cluster plan found. Run /smart-blog-skills:cluster plan <seed-keyword> first."
writeConstruct the cluster context block and prepend it to the topic prompt passed to the Task tool invoking write. The context tells write the cluster name, the post's role (pillar or spoke), the primary and secondary keywords, the chosen template, the word count target, and the linking requirements.
FLOW evidence triple propagation (required): The cluster context must include this directive for every spoke and the pillar: "Apply the FLOW evidence triple to every public statistic. Year anchor in prose ('In 2026,'), inline citation with publisher and title, URL with retrieval date in the source block."
If nanobanana-mcp is configured, call /smart-blog-skills:image generate via the Task tool to produce a 16:9 hero image. If the MCP is unavailable or fails, log a warning and continue without images. Image generation is non-blocking.
After each post is written:
[INTERNAL-LINK: keyword -> filename.md] markers that reference the just-written post.[keyword](filename.md).If write fails for a single post, log the failure and continue with remaining posts. Do not abort the cluster. The scorecard will mark the gap and recommend a retry.
cluster-scorecard.mdAfter all attempted posts complete, produce a markdown scorecard covering:
| Gate | Check | Action on fail |
|---|---|---|
| Cluster minimum | At least 2 clusters with at least 2 posts each | Warn during plan; suggest expansion |
| Cannibalization | No two posts share primary keyword | Block execution; require plan adjustment |
| Link completeness | Every post has 3 or more incoming internal links | Warn in scorecard |
| Word count | Pillar at least 2,500 words; spokes at least 1,200 words | Pass to write as a hard constraint |
| Scenario | Action |
|---|---|
| Seed keyword too broad (more than 50 keyword variants) | Suggest narrowing the focus before clustering. |
| Seed keyword too narrow (fewer than 5 keyword variants) | Offer a smaller cluster (pillar plus 2 to 3 spokes) or suggest broadening. |
| WebSearch unavailable | Fall back to Claude's reasoning for keyword expansion and grouping. |
write fails for one post | Log, skip, continue. Mark the gap in the scorecard. |
cluster-plan.json malformed | Validate JSON and report parse errors with line numbers. |
| User cancels execution | Save progress; resume on next invocation with already-written posts auto-detected. |
nanobanana-mcp not configured | Skip hero image generation; warn once at start of execute. |