Topical map builder
Skill siddiqss/semantic-seo-suite/skills/topical-map-builder
Build or extend a full topical map — a pillar/cluster/supporting content architecture grounded in entity-based semantic SEO — for a brand. Use whenever the user asks for a topical map, a content plan or content strategy, keyword clustering into topics, "what should we write about", niche coverage, or how to build topical authority — even if they only mention keywords or blog ideas. Produces topical-map.json plus a readable tree and a prioritised content calendar. If the brand has no entity-profile.json, run seo-brand-foundation first. Triggers on content-planning intent broadly, not just the literal phrase "topical map".From its SKILL.md
npx -y skills add siddiqss/semantic-seo-suite --skill topical-map-builderAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 7 commands, including `web_search` and 6 more.
SKILL.md
4.5 KB, 963 tokens by cl100k_base, as published. Nobody here has run it
topical-map-builder
Turn a brand's foundation into an executable content architecture: a processed topical map of pillars → clusters → supporting pages, each with an intent and a query network, split into core (monetizing) and outer (authority-feeding) sections.
Read these first: ../../framework/topical-map-theory.md,
../../framework/eav-modeling.md, ../../framework/query-semantics.md. (And
00-overview.md for provenance rules if not already this session.)
Preconditions
- Read
brands/<slug>/config.yaml(tier). - Require
brands/<slug>/entity-profile.json. If absent, run seo-brand-foundation first — do not build a map without a foundation.
Workflow
-
Decompose the central entity (raw map). Using the entity profile's attribute inventory + eav-modeling.md, over-generate: every attribute → candidate topics; values/comparisons/how-tos → sub-topics; questions/edge-cases → supporting topics; neighbouring entities → outer topics. Completeness first; don't filter yet.
-
Apply the core/outer split from the entity profile's boundary rule. Tag each candidate
coreorouter. Drop anything failing the "right to cover" test (source-context.md) — respect the will-not-cover list. -
Expand query networks per node (query-semantics.md), at the configured tier:
- T0: reason out the network + validate a few via
web_search; intentasserted. - T1:
../../scripts/fetch_autocomplete.py(real variants,measured), optional../../scripts/fetch_trends.py(relative demand), and../../scripts/serp_intent_classifier.pyto upgrade intent tomeasured. - T2:
../../scripts/dataforseo_client.pyfor volume/difficulty/PAA (measured). Never invent search volumes.
- T0: reason out the network + validate a few via
-
Process the map: assign
tier(pillar/cluster/supporting),parent, and oneintentper node. Merge near-duplicates:- T1+:
../../scripts/cluster_keywords.pyon query networks → flag & merge sibling pairs abovecannibalization_threshold. - T0: merge by judgement (one URL, one intent).
- T1+:
-
Attach demand + priority. Set
volume/difficultyonly if grounded (tagged). Computepriority ≈ business_value × demand_signal × feasibility(topical-map-theory.md). At T0, demand is qualitative — priority_score may beassertedor left null with an ordering rationale. -
Wire internal links (skeleton): each node's
up(to parent),down(to children), and candidatelateral(siblings sharing an attribute; justify by embedding distance at T1). Full plan islinking-and-schema's job later — here just seed structure. -
Emit artifacts.
brands/<slug>/topical-map.json— must validate against../../templates/topical-map.schema.json.- A readable Markdown tree (write to
brands/<slug>/topical-map.md). - Prioritised
brands/<slug>/calendar.mdfrom../../templates/calendar.template.md. - T1+: render the coverage heatmap via
../../scripts/map_heatmap.py.
Definition of done (gate for P1-18)
- ≥1 pillar per defining/unique attribute of the central entity.
- Every node has tier, section, parent (except top pillars), target query, query network, and intent (with provenance).
- No sibling pair above the cannibalization threshold.
- Every outer node has a link path into the core.
- Priority order + seeded calendar exist.
- The map passes an expert sniff test: no generic filler, core/outer reflects the actual business. If it reads generic, the fix is usually in the framework docs or the entity profile, not in prompt wording.
Grounding ladder
- T0: structure + query networks by reasoning; intents/volumes
asserted/absent. - T1: autocomplete-grounded query networks, SERP-verified intents, embedding-based dedupe + lateral-link justification, relative demand.
- T2: absolute volume/difficulty + PAA from DataForSEO.
What ships with it: 1 file
1.2 KB alongside SKILL.md
evals/
- evals.json1.2 KB