Install
openclaw skills install seo-cluster-builderBuild complete SEO topic clusters with full article content, schema markup, and internal linking. Use this skill whenever the user wants to create a content cluster, write SEO blog articles for a keyword group, build topical authority for a website, create pillar pages with supporting articles, generate WordPress-ready content with schema markup, research keyword competition before writing, or audit existing cluster structure. Triggers on phrases like: tao cluster, viet bai SEO, xay dung cluster, content cluster, pillar page, bai viet chuan SEO, build topic cluster, write cluster articles, loat bai SEO, chuan bi noi dung SEO. Always use this skill for multi-article SEO content creation tasks. Do not attempt to generate clusters without following this skill workflow.
openclaw skills install seo-cluster-builderSkill for building complete, production-ready SEO topic clusters. Each cluster includes: competition research, article content with natural internal links, schema markup per article, SEO meta tags, and a copy-paste–ready HTML output file.
This skill encodes the exact workflow used to build the "Pinata Sinh Nhật" and "Tổ Chức Tiệc Sinh Nhật" clusters for pinata.vn — two real-world clusters that demonstrate the full pattern.
PHASE 1 — RESEARCH (always first)
└── Fetch live site + competitor data
└── Identify content gaps and keyword angles
PHASE 2 — CLUSTER DESIGN
└── Choose pillar topic and angle
└── Map 6–8 cluster articles with intent groups
└── Design internal link graph
PHASE 3 — CONTENT GENERATION
└── Write all articles with inline links
└── Generate schema per article
└── Write SEO meta tags
PHASE 4 — OUTPUT
└── Produce single HTML file (copy-paste ready)
└── Validate all schema JSON + internal links
└── Generate summary table
Read references/phase1-research.md before starting Phase 1.
Read references/phase2-design.md before designing the cluster.
Read references/phase3-content.md before writing articles.
Read references/phase4-output.md before generating the final file.
ALWAYS fetch the client's site and top 3 competitor pages before writing a single word. Never design a cluster based on assumptions.
Search site:[domain] for existing articles on the topic. Flag:
Never compete head-on against sites with DA 50+. Always find a specific angle the domain can win:
Every article must have ≥ 3 internal links placed naturally within the content — NOT only in a sidebar, footer, or link map note. Validate programmatically before output.
All JSON-LD blocks must parse as valid JSON before inclusion. Run validation; never output unchecked schema.
When adding a new cluster to a site that already has clusters, check for topical overlap. Add bridge links between clusters; do not rewrite the same content twice.
PILLAR (1 article)
│ Intent: Informational overview — answers "what is X" + summarizes all subtopics
│ Word count: 2,000–3,000 words
│ Internal links: OUT to every cluster article (minimum)
│
├── INFORMATIONAL CLUSTER (1–2 articles)
│ Intent: Deep-dive on background, history, "why"
│ Word count: 1,200–1,800 words
│
├── HOW-TO CLUSTER (1–2 articles)
│ Intent: Step-by-step guides
│ Schema: HowTo (required)
│ Word count: 1,500–2,000 words
│
├── COMMERCIAL CLUSTER (1–2 articles)
│ Intent: Price, where to buy, comparison
│ Schema: FAQPage + ItemList
│ Word count: 1,200–1,500 words
│ Note: These articles must link directly to product/service pages
│
└── THEME/LONG-TAIL CLUSTER (2–3 articles)
Intent: Specific use cases, characters, locations
Word count: 1,000–1,500 words each
Note: Highest conversion — user has specific intent
| Article type | Min links OUT | Must link TO |
|---|---|---|
| Pillar | All cluster articles | Product/category page |
| Informational | 2 | Pillar + 1 other cluster |
| How-to | 3 | Pillar + commercial + 1 other |
| Commercial | 3 | Pillar + product page + 1 cluster |
| Theme/long-tail | 3 | Pillar + 2 related clusters |
Each article type requires specific schema blocks:
| Article type | Article | FAQPage | HowTo | BreadcrumbList | ItemList |
|---|---|---|---|---|---|
| Pillar | ✅ required | ✅ ≥4 Q&A | — | ✅ required | — |
| Informational | ✅ | ✅ ≥3 Q&A | — | ✅ | — |
| How-to guide | ✅ | ✅ ≥3 Q&A | ✅ ≥4 steps | ✅ | — |
| List/Top-N | ✅ | ✅ ≥3 Q&A | — | ✅ | ✅ ≥5 items |
| Commercial/Price | ✅ | ✅ ≥3 Q&A | — | ✅ | ✅ optional |
| Theme/character | ✅ | ✅ ≥2 Q&A | — | ✅ | — |
See references/phase3-content.md for complete schema templates.
The final deliverable is a single HTML file that:
File naming: cluster-[topic-slug].html
CSS: Use the shared stylesheet in assets/cluster-style.css (inline into <style> tag)
See references/phase4-output.md for the full HTML template and component library.
# Pseudo-code — implement with actual Python in bash_tool
for each article:
assert schema_blocks >= minimum_for_type # R5
assert json_valid(all_schema_blocks) # R5
assert internal_links_in_body >= 3 # R4
assert internal_links_not_only_in_ilmap # R4
assert pillar_links_to_all_clusters # architecture
assert no_city_name_leaks_from_other_cities # for geo clusters
assert breadcrumb_present # schema matrix
assert faq_present # schema matrix
| Cluster | Domain | Angle | Articles | Status |
|---|---|---|---|---|
| "Pinata sinh nhật" | pinata.vn | Commercial — product-specific | 6 | ✅ Live reference |
| "Tổ chức tiệc sinh nhật" | pinata.vn | How-to + theme — avoid DA60+ head terms | 8 | ✅ Live reference |
| "Pinata là gì" | pinata.vn | Informational — topical authority | 6 | ✅ Live reference |
Full content of these reference clusters is in the session history. When in doubt about format or depth, refer to those examples.