When two articles target the same root keyword, the most common result isn’t “one of them will rank” — it’s both stuck on page two. The search engine can’t decide which URL to push up, so weight, backlinks, and clicks get split evenly, and neither page collects enough signal. For how to map URLs by funnel stage, see the funnel-based URL mapping guide.
Keyword mapping is essentially assigning each keyword a single owner page. Build a “keyword → unique URL” reference table, split sibling keywords across pages by search intent, merge already-overlapping content or close it off with canonical — and internal self-competition basically disappears.
First see how keyword cannibalization happens
Internal self-competition usually comes from three paths, and since the causes differ, the treatments do too.
- Duplicate topics: different authors wrote about the same core keyword at different times, and nobody checked what was already on the site
- Old URLs not closed off: an article changed its title and link, but the old address never got a 301 and stays in the index competing
- Template pages overlapping content pages: category and tag page titles hit the same keyword as an article, creating two entries on the site
The diagnosis is straightforward: pick a query in the Search Console performance report, then switch to the “pages” dimension. If more than one URL appears under the same query with non-trivial impressions, that’s classic cannibalization. These pages’ average positions usually swing between 11–25, both just short of the finish line.
Build a one-to-one mapping table
List all candidate keywords in a table and assign each one a single target URL. Keywords with no page to host them yet get marked “to build”, to be backfilled when the new page launches. This table becomes the standard for all future topics — check the table before writing anything new, and don’t start if the keyword isn’t in it.
| Keyword | Search intent | Target URL | Status |
|---|---|---|---|
| best running shoes | Comparison / list | /best-running-shoes | Published |
| how to choose running shoes | Informational / tutorial | /how-to-choose-running-shoes | Published |
| cheap running shoes | Commercial investigation | /cheap-running-shoes | To build |
| running shoe brands ranking | Comparison / list | /running-shoe-brands | Published |
Two more columns make it much more useful: monthly search volume for prioritizing, and current position to tell whether the mapping is already working. When the keyword count gets large, cluster keywords into groups first, then assign one main page per group — far faster than assigning word by word, and harder to miss anything.
Split sibling keywords across URLs by intent
“Recommendations / how to choose / budget / ranking” are sibling keywords under one topic — similar on the surface, but users want completely different things. Stuffing them all into one article diffuses the page’s intent and every keyword ends up ranking halfway nowhere.
- Informational intent → a tutorial or guide page explaining the principles and steps
- Comparison and ranking intent → a list page with tables and clear conclusions
- Commercial investigation intent → a review or pricing page giving the trade-off rationale
- Transactional intent → a product page or landing page with the shortest path to action
Before layering, you have to get the intent right. The four-type search intent classification offers a practical method: look directly at what types of pages currently rank in the top ten — far more reliable than classifying subjectively. If the top ten are all list pages, a long tutorial is going to have a hard time squeezing in.
Overlapping content: merge or canonical
When two pages genuinely overlap heavily, there are three ways to close them off; which you choose depends on whether you still need an independent entry point.
| Situation | Treatment | Key action |
|---|---|---|
| Heavy content overlap, neither needs to stand alone | Merge + 301 | Keep the stronger one, redirect the weaker to it |
| Need to keep an independent entry, e.g. a campaign page | canonical pointing to the main URL | Confirm the main URL is indexable; don’t point at a 404 |
| Intent is actually different, only the title collided | Change title and H1 | Separate the two pages’ core keywords; no merge needed |
There’s one step after merging that often gets skipped: updating the site-wide internal links pointing at the old URL. Leaving the 301 redirect works, of course, but every hop costs and makes crawlers take an extra lap. For the exact canonical markup and common mistakes, refer to the canonical tag guide — self-referencing, cross-domain, and pointing at redirects are the easiest traps to fall into.
Monthly health check to keep the mapping table from decaying
Building the mapping table isn’t a set-and-forget job. New articles cut in line, old articles get retitled, and within three months duplicates grow back. Keep it alive with a fixed set of monthly actions.
- Run a full-site crawl, export titles and H1s, and find highly similar page pairs
- Export the last 28 days of “query–page” data from Search Console and filter for one query mapping to multiple URLs
- Go back to the mapping table and fix ownership — merge what should merge, retitle what should be retitled
- Add that month’s newly published articles to the table with their primary keyword, intent, and status
Keep records of each check. Add a line with the date and reason for every change, so six months later you can clearly see why a keyword ended up on its current page — instead of having the same decision overturned back and forth.
When it comes to execution, the moves are concentrated: export the queries with impressions over the last 28 days and their pages, aggregate by query, and flag keywords hitting multiple URLs; pick the worst-overlapping group and decide whether to merge, add canonical, or just retitle; build a mapping table with at least keyword, intent, target URL, and status columns; after merging, update the site-wide internal links, replacing old addresses one by one; and write “check the mapping table” into your topic-selection flow so no new article starts before confirming its primary keyword has no owner yet. Cannibalization isn’t solved by deleting articles after the fact — it’s solved by deciding each keyword’s ownership up front.
Figure: Keyword-to-URL mapping: two posts fighting over one keyword, both stuck on page two — key points (compiled by Operations GO)


