The execution phase transforms a cluster-plan.json into actual content. It handles
priority ordering, context injection for the blog writer, backward link updates,
resume capability, and post-execution quality scoring.
Content is created in this strict order:
Rationale: The pillar establishes the topical authority foundation. High-volume spokes generate the most organic traffic, so they should be published earliest for faster compounding returns.
When invoking blog-write for each post, pass a structured context block:
{
"cluster_context": {
"role": "pillar|spoke",
"pillar_title": "The Complete Guide to ...",
"pillar_url": "/guide/...",
"cluster_name": "Cluster Name",
"cluster_index": 0,
"post_index": 0,
"primary_keyword": "target keyword",
"secondary_keywords": ["variant 1", "variant 2"],
"template": "how-to",
"word_count_target": 1500,
"outgoing_links": [
{ "url": "/pillar-url", "anchor": "main topic guide", "type": "mandatory" },
{ "url": "/sibling-post", "anchor": "related subtopic", "type": "recommended" }
],
"incoming_link_placeholder": "<!-- cluster-link:cluster-0-post-1 -->",
"differentiation_note": "This post should focus on X, while sibling post covers Y"
}
}
| Field | Purpose |
|---|---|
role |
Whether this is the pillar or a spoke (affects depth and breadth) |
pillar_title / pillar_url |
So spokes can link back to the pillar |
cluster_name / cluster_index |
For organizing and labeling |
post_index |
Position within the cluster |
primary_keyword |
The main target keyword for this post |
secondary_keywords |
Additional keywords to naturally incorporate |
template |
Content template to follow (how-to, listicle, comparison, etc.) |
word_count_target |
Target word count (not a hard limit, a guideline) |
outgoing_links |
Links this post MUST include, with suggested anchor text |
incoming_link_placeholder |
HTML comment marker for future backward link injection |
differentiation_note |
How this post differs from siblings targeting similar topics |
After each new post is written, update previously written posts to link to it:
cluster-plan.json<!-- cluster-link:POST_ID -->
c. Replace the placeholder with an actual contextual link
d. If no placeholder found, append a contextual link in the most relevant section<!-- cluster-link:cluster-0-post-1 -->
This is inserted during content creation at a contextually appropriate location. When the target post is later written, the placeholder is replaced with:
For a deeper dive, see our guide on <a href="/target-url">anchor text</a>.
Execution can be interrupted and resumed. The resume algorithm:
cluster-plan.json from the current directoryprimary_keyword in frontmatter or first H1)"status": "written" in the plan"status": "planned" posts onlycluster-plan.json has been modified since last execution, re-validate
the plan before resumingAfter execution completes (or on demand), generate cluster-scorecard.md:
| Metric | Formula | Target |
|---|---|---|
| Coverage | written_posts / planned_posts * 100 |
100% |
| Link Density | total_internal_links / total_posts |
>= 3.0 per post |
| Orphan Pages | Count of posts with 0 incoming internal links | 0 |
| Pillar Connectivity | spokes_linking_to_pillar / total_spokes * 100 |
100% |
| Reverse Pillar Links | spokes_linked_from_pillar / total_spokes * 100 |
100% |
| Cross-Links | implemented_cross_links / recommended_cross_links * 100 |
>= 80% |
| Cannibalization | Count of posts sharing a primary keyword | 0 |
| Image Count | Posts with at least one image / total posts | >= 90% |
| Content Gaps | Planned posts not yet written | 0 |
| Avg Word Count | Mean word count across all written posts | Within 10% of targets |
# Cluster Scorecard: [Seed Keyword]
## Summary
- Posts: X/Y written (Z%)
- Total words: N (estimated: M)
- Internal links: L (density: L/Y per post)
## Metrics
| Metric | Score | Status |
|--------|-------|--------|
| Coverage | 100% | PASS |
| Link Density | 3.2/post | PASS |
| ...
## Issues Found
- [List any FAIL or WARN metrics with remediation steps]
## Next Steps
- [Actionable items to reach 100% on all metrics]
Before marking execution as complete, verify:
If any gate fails, flag it in the scorecard and provide specific remediation instructions. Do NOT silently pass a failing cluster.