What keyword cannibalization means
Keyword cannibalization happens when two or more of your pages show in Google for the same query. Google has to choose between them, and it may switch from one to the other. Each page then gets part of the impressions, and neither ranks as well as one clear page would.
Search Console shows this directly: group its data by query and page, and every query with more than one page is a candidate.
What you need
- A Search Console property with a few months of data.
- An AI app that supports MCP servers, such as Claude, ChatGPT, Codex or Cursor.
- A Search Console MCP server. This guide uses QuerySail's hosted Google Search Console MCP server. Setup takes about five minutes, and the steps for each app are in how to connect Search Console to ChatGPT and Claude.
Five steps
1. Pull queries with their pages
For sc-domain:example.com, get clicks, impressions and average position by query and page for the last 3 months. Page through the results until you have 1,000 rows.
Tool: get_performance
Grouping by query and page gives one row for each page that showed for a query. Each call returns up to 100 rows, and your assistant pages through more with the cursor it gets back.
2. Keep the queries with more than one page
From those rows, list the queries where two or more of my pages each have at least 50 impressions. For each one, show the pages with their clicks, impressions and position.
No tool call. Your assistant groups the rows it already has.
The Search Console API cannot group or count pages for you. Your assistant does that with the rows it fetched. The impression limit drops pages that only showed once or twice.
3. Check whether the pages take turns
For the query "bakery pricing guide", get clicks and average position by date and page for the last 3 months.
Tool: get_performance
Filter to one query and group by date and page. If one page ranks on some days and the other page on other days, Google is switching between them. If both pages show on the same days, they may simply both rank, and that is not always a problem.
4. Inspect the competing pages
Inspect https://example.com/guides/pricing and https://example.com/blog/how-to-price. Are both indexed, and which canonical did Google choose for each?
Tool: inspect_urls
URL Inspection checks up to 20 URLs of one property per call. If Google chose one page as the canonical of the other, it already treats them as duplicates.
5. Measure the fix later
Compare clicks, impressions and average position for the query "bakery pricing guide" over the last 28 days with the 28 days before, broken down by page.
Tool: compare_performance
Run it a few weeks after you merge, redirect or change a page. The comparison returns both periods' totals and, broken down by page, which pages gained or lost clicks.
Example result
Made-up example. We invented these numbers to show the shape of a result. They do not come from a real site or a QuerySail customer. For sc-domain:example.com, July 28 to October 25, 2026, 12 queries had two or more pages with at least 50 impressions each. For "bakery pricing guide", /guides/pricing had 1,820 impressions at position 9.6 and /blog/how-to-price had 1,140 impressions at position 14.2. By date, the two pages took turns: on most days only one of them showed.
Decide what to change
For each query, pick the page that should rank. Usually that is the page with more clicks, or the one that answers the query best. Then choose one fix:
- Merge and redirect. Move the useful parts of the weaker page into the stronger one, then redirect the old URL with a 301.
- Differentiate. If both pages are worth keeping, change the title, headings and content of one so it targets a different query.
- Link. Link from the weaker page to the stronger one with descriptive text.
The data shows which pages compete, not why. Treat your assistant's suggestions as ideas to test, and change one page at a time so you can measure the result.
Limits of the data
- Both pages can be fine. Two pages that show together on page one, or that answer different needs, are not a problem. Check the dates before you merge anything.
- Top rows only. Google returns only top rows for query and page breakdowns and leaves out rare queries. A missing page may still have impressions.
- History. Search Console keeps about the last 16 months.
- Usage. Each call returns up to 100 rows, and QuerySail allows 2,000 requests a day. Fair-use limits are on the pricing page.