All guides

Guide · about 6 minutes

Detect keyword cannibalization across your site

Keyword cannibalization happens when two or more URLs on the same domain rank for the same query. Google has to pick one to show; both pages get fewer clicks than a single consolidated page would. CTR drops for both, ranking signals split, neither moves up.

The tell-tale sign in Search Console: a query where two URLs each have meaningful impressions, both ranking in positions 8-25, with click distribution split across them, find_cannibalization surfaces these automatically.

This guide shows the prompt + walkthrough for a one-shot audit. Time: 6 minutes for a typical mid-size site (200-500 posts).

The scenario

You have a content site with 200+ blog posts published over five years. You suspect overlap (the writer in 2022 covered "customer interview templates" and someone in 2024 covered "user research interview guides" - probably the same intent). You want a definitive list of cannibalized queries before deciding which pages to keep.

The prompt

prompt
Use the gsc-pap MCP server. For https://example.com, find queries with cannibalization in the last 90 days: queries where 2+ URLs each get at least 50 impressions and rank within positions 5-30. For each cannibalized query, list both URLs, their positions and clicks, and recommend whether to merge, redirect, or differentiate.

What happens

  1. 1

    Claude calls find_cannibalization

    The tool aggregates 90-day search analytics by query, then groups URLs ranking for the same query. The output is a list of (query, url_a, url_b, position_a, position_b, clicks_a, clicks_b, impressions). Claude orders results by total wasted impressions (impressions where neither URL captured the click).

  2. 2

    Claude classifies each pair

    Three patterns emerge: (1) Near-duplicate intent - two posts answering the same question slightly differently. Recommendation: merge into a single canonical URL, 301 redirect the loser. (2) Different intent, overlapping query - one post is broader, the other deeper. Recommendation: differentiate H1s and link them as related content. (3) Old content + new content - the older post still ranks but is stale. Recommendation: redirect old to new and let Google consolidate signals.

  3. 3

    Claude suggests the minimum action

    Output sample: "Query: 'customer interview templates' - 4,200 impressions/90d. /blog/customer-interview-templates (pos 12, 45 clicks) vs. /blog/user-research-interview-guides (pos 18, 22 clicks). Pattern: near-duplicate intent. Action: 301 /user-research-interview-guides to /customer-interview-templates. Estimated unification gain: 65-80% click recovery within 4 weeks."

Outcome

Typical mid-size site surfaces 8-20 cannibalization pairs. Most are mergeable in under 30 minutes each (write a 301 redirect, confirm canonical, update internal links). Re-running the audit a month later shows the merged URL climbing 3-7 positions and combined click count jumping 40-90%.

Where to take it next

  • ·Run the same query for branded terms ("only queries containing 'example' or your brand name") - branded cannibalization is the easiest to fix and usually has the biggest CTR uplift.
  • ·Use historical_position_trend afterward to confirm the merged URL is climbing.
  • ·Re-audit every 6 months - new content always introduces fresh overlap with old posts you have forgotten.

Other guides

All guides

Find your fastest SEO quick wins with Claude

Spot pages stuck on page 2 of Google with high impressions but low clicks. The fastest organic traffic gains are usually a single sentence, title tag, or meta description away.

7 min read

Correlate organic search clicks with GA4 conversions

Find the pages that bring search clicks but don't convert, and the ones that do. One tool call joins Search Console clicks per page with GA4 sessions, conversions, and revenue per page.

6 min read

Audit Core Web Vitals across your site with AI

Run Lighthouse audits and pull real-user (CrUX) Core Web Vitals data for any URL through Claude or Cursor. Surface LCP, INP, CLS regressions and the top opportunities to fix them.

7 min read

Query Search Console data older than Google's 16-month limit

Google retains Search Console data for only 16 months. GSC PAP archives every authorised property continuously so you can query years of history through Claude or Cursor, same dimensions, no truncation.

6 min read

Build a weekly SEO health report with Claude

One prompt that pulls performance, quick wins, decaying pages, ranking shifts, GA4 conversions, and CWV regressions into a single ready-to-share report. Run it every Monday.

8 min read

Diagnose indexing issues with bulk URL Inspection

Stop checking pages one-by-one in Search Console. Run URL Inspection on up to 2,000 URLs in one MCP call, group by indexing state, and surface exactly which content cluster isn't getting indexed.

6 min read

Track keyword ranking trends across years (not months)

Plot how a single query's average position has moved across the last 24-36 months. Spot the algorithm-update spike, the AI Overview-driven decline, the slow consolidation toward your canonical page.

5 min read