answer-engine-optimize…
Optimize a brand's mapped content to get cited by AI answer engines — Google AI Overviews, ChatGPT, Perplexity, Gemini. Scores drafts for citation-readiness…
Audit an existing site against its topical map — coverage gaps, keyword cannibalization, entity drift, orphan pages, and per-page micro-semantic issues. Use whenever the user asks to audit a site, find content gaps, check for cannibalization, asks "why aren't we ranking", wants
$ npx -y skills add siddiqss/semantic-seo-suite --skill semantic-site-auditor --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/semantic-site-auditorContext preview
The summary Claude sees to decide when to auto-load this skill.
Audit an existing site against its topical map — coverage gaps, keyword cannibalization, entity drift, orphan pages, and per-page micro-semantic issues. Use whenever the user asks to audit a site, find content gaps, check for cannibalization, asks "why aren't we ranking", wants
name: semantic-site-auditor description: > Audit an existing site against its topical map — coverage gaps, keyword cannibalization, entity drift, orphan pages, and per-page micro-semantic issues. Use whenever the user asks to audit a site, find content gaps, check for cannibalization, asks "why aren't we ranking", wants to know what's missing from their niche coverage, or wants a pre-sales content audit of any domain. Produces a prioritised audit report with provenance on every finding. Triggers on audit/gap/cannibalization intent broadly.
Turn a live site + its topical map into a prioritised, evidence-backed fix list. Every finding carries provenance (`measured` from crawl, `derived` from embeddings) — no invented scores. This is also the strongest pre-sales artifact for services work: run it on a prospect's domain before a call.
Read first: `../../framework/topical-map-theory.md` (gap/section logic), `../../framework/internal-linking-rules.md` (orphans), `../../framework/eav-modeling.md` (drift = claimed vs perceived identity).
first (you can't measure coverage without a target map).
1. **Crawl + extract** the site into `brands/<slug>/data/crawl/`:
python ../../scripts/crawl_sitemap.py --domain <domain> --max-pages 500 --out /tmp/urls.json python ../../scripts/extract_page_content.py --urls /tmp/urls.json --out-dir brands/<slug>/data/crawl
Robustness: `crawl_sitemap.py` falls back to a same-domain BFS when there's no sitemap, respects robots.txt, and caps pages/depth. For JS-rendered sites, extraction may be thin — note that in the report rather than treating missing content as a gap.
2. **Run the analysis engine:**
python ../../scripts/audit_site.py \
--map brands/<slug>/topical-map.json --crawl-dir brands/<slug>/data/crawl \
--entity-profile brands/<slug>/entity-profile.json \
--locked brands/<slug>/locked-facts.json --brand "<Brand>" \
--out brands/<slug>/audits/<date>-full.mdIt matches each page to its nearest map node (embedding cosine) and reports:
hit by multiple pages (`derived`).
pulling the site away from its claimed identity (`derived`). At T0 (no embeddings), do this qualitatively and label it `asserted` — never emit a fake distance.
graph).
reusing the draft rules.
3. **Review + prioritise.** The report ends with a prioritised action list: **create** (gap), **consolidate/redirect** (cannibalization), **rewrite/relink or prune** (drift), **relink** (orphan). Sanity-check each finding — with the offline hash-fallback embeddings, similarities are coarse; re-run with a model backend before making irreversible calls (redirects/prunes).
4. **Feed back into the map.** Apply `status_updates` from the audit JSON (matched nodes → `published` with their URL); mark thin/drifting matched nodes `needs-update`; add the confirmed gaps to `calendar.md` as new priorities.
5. **Render the heatmap** (`../../scripts/map_heatmap.py`) after status updates so coverage is visible at a glance.
are LLM-qualitative and labeled `asserted`. Orphans + micro-audit are `measured`.
(the strongest, `measured` signal) — see seo-performance-tracker.
A free, open-source alternative to Surfer, MarketMuse, Clearscope & Frase — built as Claude Code skills. Topical authority, content briefs, AI writing, schema, GEO, and backlinks. With a fabrication guard that refuses to invent numbers.
Optimize a brand's mapped content to get cited by AI answer engines — Google AI Overviews, ChatGPT, Perplexity, Gemini. Scores drafts for citation-readiness…
Generate entity-aware, Koray-style content briefs from a topical-map node or any target query — a semantically ordered heading skeleton with entity/attribute…
Plan how a brand's published content gets seen — per-piece channel fit, repurposing atoms (X thread, LinkedIn post, Reddit answer, short-form video,…
Plan off-page authority for a brand — find and prioritize backlink opportunities from its topical map and competitor set, with a safe anchor-text mix and a…
Generate an internal-linking plan and JSON-LD structured data from a brand's topical map and entity profile. Use whenever the user asks about internal links,…
Write a full article draft from a semantic-SEO brief, following the micro-semantics writing rules and the brand's locked facts, then validate-and-repair it…