ideabrowser.com — find trending startup ideas with real demand
Try itnpx skills add https://github.com/calm-north/seojuice-skills --skill build-clustersBuild a topical authority cluster from a seed keyword using pillar-spoke structure, coverage scoring, and interlinking plans.
A topic cluster is a group of interlinked pages that collectively cover a subject area. Google evaluates topical authority at the cluster level — ranking a single page is harder if the site has no supporting content around the topic.
Structure:
Gather this context (ask if not provided):
From the seed topic, generate subtopics using these methods:
Search-derived:
Intent-derived:
Audience-derived:
Aim for 8-20 subtopics per cluster.
Organize subtopics into a structured cluster:
Pillar: [Broad Topic] (head term)
│
├── Spoke: [Subtopic 1] (body term)
│ └── Intent: informational
│
├── Spoke: [Subtopic 2] (body term)
│ └── Intent: commercial investigation
│
├── Spoke: [Subtopic 3] (long-tail)
│ └── Intent: transactional
│
├── Spoke: [Subtopic 4] (long-tail)
│ └── Intent: informational
│
└── ... (8-15 more spokes)
Score how well the existing site covers the cluster:
| Subtopic | Existing Page? | Quality (1-5) | Traffic | Gap? |
|---|---|---|---|---|
| [subtopic 1] | /blog/topic-1 | 4 | 500/mo | No |
| [subtopic 2] | — | — | — | Yes |
| [subtopic 3] | /blog/old-post | 2 | 50/mo | Partial (needs refresh) |
The pillar page should:
Pillar page is NOT a mega-article that tries to cover everything in depth. It is a hub that distributes authority and directs readers to the right spoke.
Map the internal links:
| From Page | To Page | Anchor Text | Context |
|---|---|---|---|
| Pillar | Spoke 1 | "[subtopic 1] guide" | In the subtopic 1 overview section |
| Spoke 1 | Pillar | "[broad topic]" | In the introduction or conclusion |
| Spoke 1 | Spoke 2 | "[subtopic 2]" | Where subtopic 2 is mentioned contextually |
| Spoke 3 | Spoke 1 | "[subtopic 1]" | Where comparison is relevant |
Rules:
Score the cluster's readiness to compete:
Coverage Score = (Covered spokes / Total spokes) x 100
Link Health = (Spokes with bidirectional pillar link / Total spokes) x 100
Content Quality = (Spokes scoring 3+ quality / Total spokes) x 100
| Metric | Score | Threshold |
|---|---|---|
| Coverage | [x]% | > 70% to start ranking for pillar keyword |
| Link Health | [x]% | 100% is the target — every spoke must link to pillar and back |
| Content Quality | [x]% | > 80% — clusters with thin spokes dilute authority |
| Cluster State | Coverage | Link Health | Content Quality | Expected Result |
|---|---|---|---|---|
| Incomplete | <50% | <70% | Any | Pillar unlikely to rank page 1; spokes rank individually at best |
| Developing | 50-70% | 70-90% | 50-80% | Pillar may appear page 2-3; some spokes rank for long-tail |
| Competitive | 70-90% | 100% | 80-90% | Pillar competes for page 1; most spokes rank for their targets |
| Dominant | >90% | 100% | >90% | Pillar strong on page 1; cluster captures most queries in the topic |
| Link Type | Minimum Count | Direction |
|---|---|---|
| Pillar → each spoke | 1 per spoke | Downward — link from the relevant section of the pillar |
| Each spoke → pillar | 1 per spoke | Upward — "our complete [topic] guide" |
| Spoke ↔ sibling spokes | 2-4 per spoke | Lateral — where contextually natural |
| Cross-cluster bridges | 0-2 per cluster | Between hubs — only with genuine topical relevance |
Cluster ready to compete: Coverage > 70%, Link Health = 100%, Content Quality > 80%. Below these thresholds, prioritize filling gaps before expecting the pillar to rank.
Order the content production for maximum impact:
Cluster Summary
Cluster Map [Visual structure from Step 2]
Coverage Scorecard [Table from Step 3]
Pillar Page Spec
Interlinking Plan [Table from Step 5]
Production Roadmap [Ordered list from Step 6 with estimated timelines]
Pro Tip: Use the free Blog Keyword Generator to discover subtopics for your cluster. SEOJuice MCP users get automatic cluster mapping — run
/seojuice:content-strategyto see existing clusters with coverage metrics, or uselist_clustersandget_cluster_detailto check cluster health and identify gaps.