A topical content map that starts from your own site
You hand over a keyword universe and your sitemap. What comes back is a map: every keyword grouped into a cluster, every cluster tied to the pages you already have, and every gap marked as a new page, a rewrite or something to leave alone.
The map is built in Claude Code, with Python scripts doing the counting and Ahrefs and Jina supplying the evidence. It is the step between keyword research and a content calendar, and it is the step most teams skip.
Why most topical maps describe a site that doesn't exist
A typical topical authority map is a mind map drawn outward from a head term. It shows the topics you could cover. It rarely checks which ones you already cover, which ones two of your own pages already fight over, or whether anyone searches for the leaf at the end of each branch.
Coverage is only half of topical relevance. The other half is not having three pages compete for one query, and a map drawn from a blank page can't see that.
That is how a plan ends up commissioning an article the client published last year. On one engagement a 72-row plan held 8 topics the client already had, one of them a page AI engines were already citing, plus 9 pairs of rows that targeted the same thing as each other. None of it showed until the plan was checked against the site.
How to create a topical map that survives contact with the site
The build runs in five passes. Each one catches a different kind of mistake, so skipping one lets its mistake through:
- Group keywords into clusters, first by Ahrefs' parent keyword and then by the distinctive words left once modality terms like agency, company and services are stripped out.
- Pick each cluster's primary keyword by volume, never by traffic potential, which Ahrefs credits to a parent term and which can make a 150-search keyword look like thousands.
- Collect every H1, H2 and H3 on the site, not just titles and slugs, and compare them with the clusters through a synonym map.
- Give each match a verdict: a match on a blog post is a rewrite, a match on your own service page is the page the cluster should feed, and a partial match becomes an internal-link target.
- Phase every cluster by evidence: proven demand, thin demand or no data.
The order matters because each pass reads the output of the one before. A cluster with the wrong primary keyword matches the wrong page in pass three, and every verdict after it inherits the mistake.
The checks that make the map trustworthy
Topical map SEO work fails quietly. A comparison that looks thorough can drop half the plan or keep pages that should go, and nothing errors. Three rules came from exactly those failures.
Rule | The failure it prevents |
|---|---|
Read every heading, not the slug | A post can answer a keyword in an H2 inside a broader article |
A page title may add only modality words | A broad keyword matching a narrow page wrongly dropped 216 topics |
Compare against internal links too | 21 live pages on one site were missing from its sitemap |
The second rule is worth a sentence of its own. Letting "software developers" match a page about hiring developers in one country dropped topics carrying 441,620 monthly searches. Tightening the rule took the drops from 216 to 29, and all 29 were correct.
What lands in the map
The deliverable is a spreadsheet plus a short written read of it. Each cluster row carries:
- The cluster name and its primary keyword, with that keyword's own volume rather than the cluster's summed total
- Every existing page mapped to it, whether AI engines cite that page, and whether it sits in the sitemap
- How many planned keywords already point at each page, which is the column you sort by to set priorities
- A verdict per row: new page, rewrite of a named URL, or internal-link target
- The evidence phase, so thin clusters are not resourced like proven ones
The phase column is the one that changes budgets. When a grid of 182 design verticals was mapped for Awesomic, logos had search data behind 136 groups and pitch decks behind 34, which made decks a brand play rather than a traffic play.
Keeping the map current with n8n
Once the map exists, new keywords keep arriving. A smaller n8n step handles them: the model reads the cluster list from a sheet and gives each new row in the content plan a three-to-five word cluster name, so the plan stays organized without rebuilding the whole map.
That step is the first thing SEO competitor research does with a keyword, which is where a clustered row goes next.
Where a topical content map pays for itself
This pays off when the site and the keyword list have both outgrown anyone's memory:
- Your library is big enough that nobody on the team can name everything on it
- You have hundreds of candidate keywords rather than dozens
- You are about to commission a batch of content and want to know what not to write
- You can act on a rewrite verdict, not only on new-article ones
If most of those hold, the map will change what gets commissioned. If none do, it will mostly confirm what you already know.
When it's too early
A site with under a dozen pages has nothing to map against yet, and keyword research automation is the better first step. The same goes for a keyword list short enough to read in ten minutes, where a spreadsheet and a careful read get there faster.
The map also won't make the hard call for you. When a cluster collides with a page that already ranks, it says so and shows the evidence. Whether to rewrite, merge or leave that page alone is still a strategist's decision.
Keyword data, scripts and pricing
Most of the cost is keyword data. The Ahrefs Keyword Explorer export takes 10,000 pasted keywords per search, so even a large universe is a handful of exports rather than thousands of API calls, and Jina fills in the results Ahrefs has no data for. The scripts cost nothing to run.
Building and maintaining the map sits inside execution capacity, a flat monthly $2,000 for the agents and automations route that comes with a fractional Head of Content retainer. Expect one to two weeks for a first map: the scripts are fast, and reading the clusters properly is not.
Start with the list you already have
Send the keyword export you are working from and your sitemap. On a call we'll run one cluster end to end, so you can see what the verdicts look like on pages you know.
Related automations
AI Overview tracking report
A weekly report joining Search Console and GA4 with visibility across ChatGPT, Gemini, Perplexity, AI Overviews and AI Mode, checked before it's written.
Read the build →
AI SEO agents built in Claude Code
Claude Code subagents that research articles, directory entries and market pages in parallel, while one orchestrator checks their work and writes.
Read the build →
Automated indexing for new pages
Walk your sitemap, ask GSC which URLs still aren't indexed, submit the eligible ones to Google's Indexing API and flag the rest.
Read the build →