DEV Community

Cover image for How to Find and Fix Keyword Cannibalization With Google Search Console Data
AgentSEO-dev
AgentSEO-dev

Posted on

How to Find and Fix Keyword Cannibalization With Google Search Console Data

Two pages receiving impressions for the same query is not enough evidence to merge them.

It is a reason to investigate.

That distinction matters because a rushed cannibalization cleanup can erase a useful page, redirect an audience to the wrong intent, or canonicalize two pages that are not actually duplicates. The site ends up tidier in a spreadsheet and less useful in search.

A safer workflow combines three things:

  • Google Search Console performance data
  • page-level intent and business value
  • a clear ownership decision for every affected query

This tutorial shows how to turn those inputs into a review queue, use an agent to structure the evidence, and choose among differentiation, internal linking, consolidation, canonicalization, or no change.

Start with a conflict, not a duplicate keyword

Keyword overlap is normal.

A product page and a tutorial can both receive impressions for the same broad phrase. Two location pages can share service terms. A glossary page may appear for a query that usually belongs to a commercial page.

The useful question is not:

Do multiple URLs appear for this query?

It is:

Are multiple URLs serving the same intent, and is that overlap preventing the right page from performing its job?

Recent discussions in r/SEO keep returning to this distinction. Practitioners recommend starting with query-page exports, but they also warn that multiple ranking URLs can be normal and must be judged case by case. Treat that as directional community evidence, not a ranking rule. Discussion: checking cannibalization across a 200-page site ยท Discussion: different intents are not necessarily cannibalization

Google's own documentation gives us two important constraints:

  1. Search Console lets you group and filter performance by query and page, but anonymized queries and data truncation mean the report is not a complete ledger. Search Console dimensions and data groupings
  2. Canonicalization is Google's process for selecting a representative URL among duplicate or very similar pages. It is not a general-purpose fix for every pair of pages that shares a keyword. Google Search Central: canonicalization

Those constraints should make the audit more conservative, not less.

Build a query-to-page review table in Search Console

Use a date range long enough to reduce noise. Ninety days is a practical starting point for an established site, but compare it with the previous period and check seasonality before treating a movement as structural.

In the Search results Performance report:

  1. Export query and page performance for Web search.
  2. Keep clicks, impressions, CTR, and average position.
  3. Group rows by query.
  4. Flag queries associated with two or more indexable URLs.
  5. Exclude navigational queries and obvious sitelink behaviour before prioritizing the queue.

Do not rely on a single filtered total. Google notes that query or URL filters can change report totals because of anonymized queries and truncation. Search Console filtering limitations

Your first table can be simple:

Query URL Clicks Impressions Avg. position Intended page job
seo api for agents /seo-api 126 3,900 7.4 commercial evaluation
seo api for agents /blog/best-seo-api-agents 41 2,100 11.8 comparison and education
seo api for agents /docs/api-reference 7 440 18.2 implementation reference

This example is illustrative. It shows why URL count alone is weak evidence. All three pages can legitimately mention the query, but only one should usually own its primary search job.

Separate harmless overlap from harmful competition

Review each flagged cluster against four tests.

The pages serve the same intent

Read the pages before changing them. Compare the promised outcome, page type, target reader, funnel stage, and likely next action.

If one page teaches and another sells, the overlap may be useful. If both pages make the same promise to the same reader, the conflict is more credible.

The wrong URL wins or the winner keeps changing

Look for repeated evidence across time:

  • the less useful URL receives most clicks for the target query
  • the ranking URL changes between periods
  • both pages remain in weak positions instead of one becoming the clear result
  • internal links use similar anchors for both pages
  • the preferred landing page loses qualified conversions while the other page gains impressions

No single signal proves cannibalization. Together, they justify review.

The overlap creates a user or business cost

An informational article outranking a product page is not automatically bad. It becomes a problem when the query has commercial intent and the article cannot help the visitor complete the job.

Measure the cost that matters: qualified clicks, sign-ups, assisted conversions, or support burden. Rankings without page purpose are not enough.

The evidence survives known Search Console limitations

Search Console assigns most performance data to canonical URLs, and some query data is omitted or truncated. A small sample of overlapping rows should not trigger a redirect. Check the live pages, inspect Google's selected canonical where relevant, and review the current SERP before deciding. How Search Console groups page data

Give the agent structured evidence, not a vague prompt

An agent can compare dozens of page clusters consistently, but only if the input preserves page role and performance context.

AgentSEO exposes agentseo_content_cannibalization for this job. The tool accepts page titles, headings, target and ranking queries, page type, canonical URL, indexability, performance, backlinks, and freshness signals. It returns conflicts, page signals, clusters, and a reviewable fix plan.

Use a prompt like this in an MCP client:

Use agentseo_content_cannibalization to review these pages for the focus query
"seo api for agents".

Use balanced sensitivity. Treat the supplied Search Console metrics as directional,
not proof of harm. Return:
1. the intended job of each page,
2. whether the pages share the same intent,
3. the preferred primary URL and why,
4. the safest fix,
5. evidence that still needs human verification.

Do not recommend a redirect or canonical solely because two URLs receive impressions.
Enter fullscreen mode Exit fullscreen mode

For a REST workflow, the same review can be called directly:

curl -s -X POST "https://www.agentseo.dev/api/v1/content/cannibalization?sync=true" \
  -H "x-api-key: YOUR_AGENTSEO_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "target": "example.com",
    "focus_keywords": ["seo api for agents"],
    "sensitivity": "balanced",
    "pages": [
      {
        "url": "https://example.com/seo-api",
        "title": "SEO API for AI Agents",
        "headings": ["Live search data for agent workflows"],
        "target_keywords": ["seo api for agents"],
        "ranking_queries": ["seo api for agents", "seo api"],
        "page_type": "product",
        "clicks": 126,
        "impressions": 3900,
        "avg_position": 7.4,
        "indexable": true
      },
      {
        "url": "https://example.com/blog/best-seo-api-agents",
        "title": "How to Evaluate an SEO API for AI Agents",
        "headings": ["The evaluation criteria", "Payload design"],
        "target_keywords": ["best seo api for ai agents"],
        "ranking_queries": ["seo api for agents", "best seo api for ai agents"],
        "page_type": "blog_post",
        "clicks": 41,
        "impressions": 2100,
        "avg_position": 11.8,
        "indexable": true
      }
    ]
  }' | jq '.result.content_cannibalization // .content_cannibalization'
Enter fullscreen mode Exit fullscreen mode

Replace the illustrative values with a consistent Search Console period. Keep the source export beside the result so a reviewer can trace the recommendation.

Choose the fix that matches the page relationship

The audit should end in one of five decisions.

Relationship Default action What gets worse if misused
Same topic, different intent Differentiate titles, headings, copy, and internal anchors Forced separation can make both pages less complete
One clear primary page with useful support pages Reinforce ownership through internal links and navigation Over-optimized anchors can make the site feel mechanical
Two pages perform the same job and one adds little unique value Consolidate useful material and redirect the weaker URL You can lose long-tail coverage or backlinks if the merge is careless
Duplicate or very similar URL variants Use canonicalization or redirects as appropriate A canonical can hide a page that deserved separate indexing
Overlap without measurable harm Leave the pages alone and monitor Premature cleanup creates work without improving the search result

Google describes redirects as a strong canonical signal, rel="canonical" as another strong signal, and sitemap inclusion as weaker. Signals can reinforce one another, but Google still makes the final canonical choice. Google Search Central: specifying a canonical URL

That is why a canonical tag should express a genuine duplicate relationship. It should not substitute for deciding what two distinct pages are meant to do.

Make URL ownership visible before creating the next page

Fixing existing conflicts is only half the job. The content process must stop recreating them.

Maintain a keyword map with one primary URL per search intent. Before approving a new brief, check:

  • the primary query and close variants
  • the page type and intended reader
  • the existing URL that currently owns the intent
  • whether the new asset supports, differentiates, or replaces that URL
  • which internal links should point to the primary page

AgentSEO's agentseo_content_keyword_map can map supplied keywords to existing pages and flag weak matches, missing pages, and cannibalization risks before drafting begins. The important output is not another keyword cluster. It is an explicit ownership decision that downstream briefs and agents can follow.

The operator move: do not merge the first pair of pages that shares impressions. Assign the intended search job, verify actual harm, then make the smallest change that clarifies ownership.

Re-measure the query after the change

Record the change date, affected URLs, target query, and expected outcome. Then compare a meaningful post-change period against the baseline.

Look for:

  • the preferred URL receiving a more stable share of clicks and impressions
  • improved qualified conversions for the query cluster
  • fewer unwanted ranking-URL changes
  • preserved performance for distinct long-tail intents
  • Google's selected canonical matching the intended duplicate relationship, where applicable

Do not claim success from a ranking change alone. Seasonality, SERP changes, competitor updates, and demand shifts can move the same metrics.

The workflow is deliberately conservative: detect overlap, verify intent, estimate harm, choose a page owner, apply the smallest defensible fix, and monitor the result.

That is slower than bulk-merging URLs from a spreadsheet.

It is also much less likely to delete a useful part of your search system.

Try the workflow

Disclosure: AI tools assisted with research organization, drafting, and editing. Daniel Martin reviewed and approved the topic, claims, workflow, examples, and publication decision.

Top comments (0)