AI Summary
A keyword map is a spreadsheet that assigns every target query to exactly one URL so no two pages compete for the same term. You build it by exporting keywords, clustering them by SERP overlap, labeling intent, then binding each cluster to one primary keyword and one owner URL.
- One URL owns one primary keyword; supporting variations live on the same page.
- Cluster queries by SERP overlap (three or more shared top-10 URLs), not by matching words.
- Intent (informational, commercial, transactional) decides the page template.
- The map is the front line against keyword cannibalization and thin duplicate pages.

What a keyword map actually is
A keyword map is a single spreadsheet that assigns every query you want to rank for to exactly one URL. It is the contract between keyword research and site architecture. Each row names one page, the single primary keyword that page is allowed to own, the supporting variations it should also satisfy, the intent behind the cluster, the target URL, and the current ranking position. When two URLs chase the same primary keyword, Google has to guess which one deserves the slot, impressions split, and both pages underperform. That failure mode is keyword cannibalization, and the map is the tool that prevents it before a single word of content is written.
The columns every keyword map needs
Keep the schema flat and boring. A good map is a table anyone on the team can read at a glance:
| Column | What goes in it | Example |
|---|---|---|
| Primary keyword | The one query the page must rank for | what is schema markup |
| Supporting keywords | Variations covered on the same page | schema markup examples, types of schema |
| Intent | Informational, commercial, or transactional | Informational |
| Target URL | The single owner page (existing or planned) | /learn/schema-markup/ |
| Volume | Monthly searches for the primary | 2,400 |
| Current position | Live ranking from Search Console | 14 |
| Status | Live, needs update, gap, or cannibalized | Gap |
Step 1: Export and dedupe the raw keywords
Pull queries from three sources so you catch both what you already rank for and what you do not. First, Search Console: open the Performance on Search report, set the date range to the last 12 months, and export the Queries table (up to 1,000 rows) plus the Pages table so you know which URL currently earns each impression. Second, your rank tracker. Third, a research tool such as the SEMrush Keyword Magic report or the Ahrefs Matching terms report for discovery volume you have no coverage on yet. Stack all three into one sheet, then normalize with =LOWER(TRIM(A2)) and remove duplicates. You want one flat list: query, monthly volume, and the current ranking URL where Search Console supplies one.
Step 2: Cluster by SERP overlap, not by matching words
The reliable grouping signal is SERP overlap: two queries belong in the same cluster when their top 10 organic results share at least three identical URLs. Google has already decided which intents deserve the same page, so let its own results do the clustering. Matching words will mislead you. The phrases "acv benefits" and "is apple cider vinegar good for you" share almost no words yet return nearly identical SERPs, so they map to one page. The opposite trap is just as common: "seo audit" returns guides while "seo audit tool" returns software listings, so despite the shared words they need two separate URLs. A practical threshold is three or more shared top-10 URLs to merge; fewer than three means split.
Step 3: Label intent and pick the page template
Intent decides the template, and the template decides what content wins. Tag each cluster with one of three intents and route it to a matching page type:
| Intent | Query signals | Page template |
|---|---|---|
| Informational | what, how, why, guide, examples | Long-form guide or tutorial |
| Commercial | best, top, vs, review, alternative | Comparison or listicle |
| Transactional | buy, pricing, hire, near me, service | Product, service, or landing page |
Step 4: Bind one primary keyword and one URL
For each cluster, promote the highest-volume query that best represents the group to primary, then demote the rest to supporting. Assign a single URL. If a strong page already ranks, reuse it; if not, plan a new slug that reflects the primary keyword, for example /learn/schema-markup/. The rule that protects you later: a keyword appears as a primary exactly once across the entire map. If you feel tempted to list the same primary on two rows, you have found a cannibalization risk, not a second page.
Step 5: Flag gaps and cannibalization
Two statuses matter most. A gap is a cluster with real volume and no owner URL; those become your content backlog. Cannibalization is two URLs collecting impressions for the same query. To find it, open the Search Console Performance report, filter by the exact query, and switch to the Pages tab: if two or more pages show impressions for that one query, you have overlap. Consolidate by picking the stronger URL, folding the weaker page's unique content into it, and 301 redirecting the loser. A compact way to store the whole map as a portable file is a CSV with a fixed header:
primary,supporting,intent,target_url,volume,position,status
what is schema markup,"schema examples;types of schema",informational,/learn/schema-markup/,2400,14,liveWorked example
Say research surfaces 40 queries around schema markup. SERP overlap collapses them into three clusters. The informational cluster (what is schema markup, schema examples, types of schema) maps to /learn/schema-markup/. The commercial cluster (best schema generator, schema tool comparison) maps to /tools/schema-generator/. The transactional cluster (schema audit service, fix schema errors) maps to /services/schema-audit/. Forty scattered queries become three focused pages, each with one primary and a clean set of supporting terms. From here you hand each row to a writer as a brief, and you decide build order by volume and difficulty.
Common mapping mistakes to avoid
- Mapping by folder instead of intent. Do not force every query about a topic into one URL because it feels tidy; a mixed-intent page satisfies no one and ranks for nothing.
- Listing the same primary twice. The moment a primary keyword repeats on two rows you have designed cannibalization into the site. Merge or split before you build.
- Ignoring existing pages. Always check Search Console for a page that already earns impressions on the cluster. Reusing and improving an aging URL beats launching a fresh competitor to it.
- Chasing volume with no difficulty check. A 20,000 volume primary you cannot realistically rank for is not a plan. Pair every volume figure with a difficulty read before you commit build time.
A finished map is not a one-time artifact. Re-pull Search Console positions monthly, promote clusters out of gap status as you publish, and watch for new cannibalization whenever you add pages. Once the map exists, the next two moves are turning each row into a detailed brief and sequencing the backlog. See how to turn a mapped cluster into a full SEO content brief, how to decide build order in prioritizing SEO tasks, and browse more guides in the keyword research library.
Frequently Asked Questions
What is the difference between a keyword map and a content plan?
A keyword map is the assignment layer: it binds each query cluster to one URL, one primary keyword, and one intent. A content plan is the schedule that decides when each mapped page gets written and published. The map defines what should exist; the plan sequences the work.
How many keywords should one page target?
One primary keyword and as many supporting variations as genuinely share the same intent and SERP, often five to fifteen. There is no penalty for covering many closely related terms on a single page; the risk is spreading one intent across several thin pages that then compete with each other.
How do I know if two keywords should share a page?
Compare their top 10 Google results. If they share three or more identical URLs, Google treats them as the same intent and they belong on one page. If they share fewer than three, build separate pages. Word similarity is unreliable, so always check the live SERPs.
What tools do I need to build a keyword map?
A spreadsheet, Google Search Console for current positions and impressions, and one research tool such as SEMrush or Ahrefs for discovery volume. A SERP overlap or clustering feature speeds up step two, but you can cluster manually by eyeballing the top results for smaller sites.
How does a keyword map prevent cannibalization?
Because a primary keyword can appear on only one row, the map makes it structurally impossible to point two pages at the same query without noticing. When you spot the same primary listed twice, that is the cannibalization warning, and you consolidate before publishing rather than after rankings drop.
How often should I update the keyword map?
Refresh current positions monthly from Search Console and revisit clusters whenever you add or retire pages. Treat gaps as your backlog and clear them as you publish. A quarterly full review catches new intent shifts and emerging queries you did not have coverage for.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







