Keyword cannibalization: how to detect it with Search Console
· Organiq · third-party facts carry source and date in the text
Keyword cannibalization is when two or more URLs of the same site compete for one query and split impressions and clicks. Detect it in Search Console by grouping queries by page: over 90 days, a query with at least 10 impressions and 2 pages is a candidate; the entropy of the split (in bits) measures severity, high from 1.5 bits.
How do I measure cannibalization?
For every query, add the impressions per URL and compute the entropy of the distribution: 0 bits when one URL takes everything, 1 bit when two split it evenly, above 1.5 bits when three or more share it evenly. With the entropy come the winner (URL with the most clicks and best position) and the contenders with their impression share. In Organiq: analyze_cannibalization with days: 90, minImpressions: 10, minPages: 2 (large sites: minImpressions: 100).
What are the false positives?
- Variants of the same URL: http/https, www/non-www, trailing slash,
#fragment. That is canonical hygiene, not cannibalization. - A brand query with the home page and a deep page: usually sitelinks.
- Intentionally different intents (a guide and a product page) can coexist on one query.
How do I fix it?
| Situation | Fix |
|---|---|
| Two near-identical pages | Consolidate: merge the content and redirect (301) the loser to the winner |
| Same intent, different pages | Canonical to the winner, or re-target one page to another query |
| Complementary roles (pillar, comparison, purchase) | One role per page, with reciprocal links and anchors pointing to the winner |
| Scattered internal links | Concentrate the query's anchors on the winner |
Afterwards, query_top_pages with query: "<the query>" and a comparison with the previous period shows whether clicks and position consolidated.
How do I run this in a conversation?
With the connector in Claude, ChatGPT or Cursor: "Where are we cannibalizing: several pages ranking for the same query?" The cannibalization skill discards the false positives and returns a table with query, impressions, entropy, winner, contenders and suggested fix.
Frequently asked questions
Is cannibalization always harmful?
No. When the pages answer different intents (inform and buy) and both rank well, leave them. The problem is when the split pushes both down.
How many days of data should I use?
90 days: with less, URL alternation looks like cannibalization and is only fluctuation; with more, content changes get mixed in.
Is entropy better than counting pages?
Yes, because it distinguishes "one URL with 95% and another with 5%" (low, 0.29 bits) from "two with 50% each" (high, 1 bit) with the same number of pages.
Does redirecting the losing page drop traffic?
There can be a few weeks of fluctuation; the 301 transfers most of the signal. Only redirect when the winner covers the loser's content.