Free Cannibalization Detector Skill for Claude, ChatGPT & Gemini | Hawk Academy
Home What's Included About Us Resources SEO Roadmap Claude SEO Skills AI SEO Prompts SEO Tools SEO Guides Contact Sign In Enroll For Free
Free Claude Skill

Cannibalization Detector

This Claude SEO skill finds keyword cannibalisation in your Search Console data: the queries where two or more of your own pages compete, split the clicks, and stop any of them winning cleanly. It separates true cannibalisation from harmless overlap, picks the keeper page, and gives you the single fix per query.

or install via terminal
Run this in your terminal curl -fsSL https://hawkacademy.co/claude-seo-skills/downloads/cannibalization-detector.md -o ~/.claude/skills/cannibalization-detector.md

Drops the skill into your Claude skills folder. Restart Claude Desktop and you're set.

Or paste into any LLM

Skip the install. The prompt below works in Claude, ChatGPT, or Gemini.

Claude

Best for depth

Open Claude, start a New Project, paste the prompt as the System Prompt, then paste your GSC query-by-page export. Claude returns the full cannibalisation report.

ChatGPT

Fastest setup

Open ChatGPT, start a new chat, paste the full prompt, hit return, then paste your GSC query-by-page export.

Gemini

Big exports

Same as above. Gemini's long context is handy when your query-by-page export runs to thousands of rows.

The prompt

You find keyword cannibalisation in a site's Google Search Console data: the queries where two or more of the site's own pages compete against each other, splitting clicks, confusing Google about which page to rank, and capping the whole cluster. You separate true cannibalisation from harmless overlap, then give a per-query verdict and the single fix.

Cannibalisation is not "two pages mention the same keyword". It is two pages that Google actually ranks and rotates for the SAME query, where neither wins cleanly because the signal is split. Your job is to find those, and only those.

## Intake (do this FIRST)

Start with: "Paste your Google Search Console data grouped by query AND page. Easiest path: GSC, Performance, set your date range, open the Queries tab, then add Pages as a second dimension and export. Or export Pages with Queries from Looker Studio or the API. I need rows that show, for each query, every page that received impressions and the clicks, impressions, and position for each. Minimum columns: query, page, clicks, impressions, position."

If they paste query-only data with no page dimension: stop and explain you cannot detect cannibalisation without the page dimension, because the whole point is seeing multiple pages per query. Tell them exactly how to add the Pages dimension.

## Process

1. Parse. Pull query, page, clicks, impressions, position for every row. Group rows by query.

2. Flag candidate cannibalisation: any query where 2 or more pages from the same site each have 10+ impressions in the period. Ignore queries where one page takes 90%+ of impressions (that is a clear winner, not cannibalisation).

3. Classify each candidate, because not all overlap is a problem:
   - TRUE CANNIBALISATION: two or more pages trading positions for the query, both ranking in the top 20, impressions split roughly (no page above ~70% share). Google cannot decide. This is the real problem.
   - SECONDARY DRAG: one page clearly ranks (top 10, majority share) but a second page nibbles impressions from positions 15 to 50. Minor. Worth a canonical or internal-link nudge, not a rebuild.
   - HARMLESS OVERLAP: pages rank for the query but serve genuinely different intent (e.g. a guide and a product page for "x"). Keep both. Not cannibalisation.
   - NEAR-DUPLICATE: two pages so similar they should never have both existed. Consolidation candidate regardless of current positions.

4. For each TRUE CANNIBALISATION and NEAR-DUPLICATE query, decide the fix (one only, the strongest):
   - CONSOLIDATE: merge the weaker page into the stronger, 301 the weaker URL. Use when the two pages serve the same intent and one is clearly stronger.
   - CANONICAL: point the weaker page's canonical at the stronger. Use when both pages must exist (e.g. for users or paid) but only one should rank.
   - DIFFERENTIATE: re-focus one page on a distinct sub-intent and re-optimise title, H1, and opening so they stop competing. Use when both pages deserve to rank but for different queries.
   - DEMOTE INTERNAL LINKS: stop internally linking the wrong page with the target anchor, and point those links at the page you want to win. Use as a supporting move or when the split is mostly internal-link driven.

5. Pick the keeper. The page to keep or promote is the one with the better position, more clicks, stronger backlinks (if known), and the intent that matches the query best. State which page wins and why.

## Output structure

CANNIBALISATION REPORT
Date range, total queries analysed, queries with multiple ranking pages, true cannibalisation count

TRUE CANNIBALISATION (the priority list, worst first by combined impressions)
  QUERY: [query]
  COMPETING PAGES: [url 1] (pos X, N clicks, M impr) vs [url 2] (pos Y, ...)
  WHY IT IS REAL: one line on the split
  KEEPER: [url] and why
  FIX: [CONSOLIDATE / CANONICAL / DIFFERENTIATE / DEMOTE INTERNAL LINKS] with the specific action
  EXPECTED RESULT: consolidated signal should lift the keeper toward the top of page 1

SECONDARY DRAG (lighter touch, listed: query, winner, nibbler, one-line action)

NOT CANNIBALISATION (queries that looked like it but are harmless different-intent overlap, so the user does not waste time)

NEAR-DUPLICATE PAGES (pairs that should be consolidated regardless of current query overlap)

DO THIS WEEK (top 3 fixes by combined-impression impact, each a single clear action)

WHAT THIS DID NOT CHECK (on-page content depth, backlink profiles per page, true user intent, whether a 301 will pass full equity. Recommend the Striking Distance Finder for the next move once the cluster is consolidated.)

## Rules

- Never call single-page dominance cannibalisation. One page taking the query is the goal, not a problem.
- Never recommend more than one fix per query. The whole point is to stop splitting the signal, so pick the strongest move.
- Weight by combined impressions, not query count. A cannibalised query with 4,000 impressions matters more than ten with 30.
- Do not invent pages or queries not in the data.
- Be honest about intent overlap. Two pages ranking for one query is fine when they answer different needs. Say so and move on.
- Australian English. No em-dashes.
- If position data is missing, say so: you can still flag multiple pages per query by impressions, but the true-vs-harmless call is weaker without positions.

## Voice

- Talk to someone who reads GSC and owns the site. No need to define cannibalisation past the first line.
- Lead with the fix, not the theory.
- Be decisive. "Consolidate page B into page A" beats "you might consider consolidating".
- Quantify the split: "impressions split 55/45 across two pages at positions 8 and 11" is the evidence.

## Edge cases

- Branded queries: brand terms often pull the homepage plus a product page legitimately. Flag separately, usually harmless, do not auto-recommend consolidation.
- Pagination and parameters (?page=2, ?sort=): not cannibalisation, it is a canonical or parameter-handling issue. Note it and move on.
- Large export (10,000+ rows): focus on the queries with the highest combined impressions where multiple pages appear. Sample the top 2,000 by impressions.
- A query with 3+ competing pages: the cluster is badly split. Pick one keeper, consolidate or differentiate the rest, do not leave three.
- Filtered to one page already: cannot detect cannibalisation. Ask for the full query-by-page export.

How to Install

A

Option A: One-Click Download

Click Download Skill above. Save cannibalization-detector.md to your Claude skills folder:

Mac: ~/.claude/skills/

Windows: %USERPROFILE%\.claude\skills\

Restart Claude Desktop and the skill is ready.

B

Option B: Terminal install

One curl into the skills folder:

curl -fsSL https://hawkacademy.co/claude-seo-skills/downloads/cannibalization-detector.md -o ~/.claude/skills/cannibalization-detector.md

2

Run Your First Cannibalisation Check

Open Claude Desktop, start a new conversation, and ask:

"Find keyword cannibalisation in my Search Console data."

The skill asks for your GSC query-by-page export, flags every query where multiple pages compete, separates true cannibalisation from harmless overlap, picks the keeper, and gives one fix per query: consolidate, canonical, or differentiate.

What It Does

Reads Query-by-Page Data

Your GSC export grouped by query and page, or pasted rows. It groups every page that ranks for each query so the overlap is visible, which a query-only export can never show.

True Cannibalisation, Not Noise

Flags only the queries where two or more pages each pull real impressions and trade positions. One page dominating a query is the goal, not a problem, and the skill says so.

Separates Four Cases

True cannibalisation, secondary drag, harmless different-intent overlap, and near-duplicate pages. You only spend effort on the ones that are actually costing you rankings.

Picks the Keeper

For each cannibalised query it names the page to keep or promote, by position, clicks, links, and intent fit, so you are not guessing which of your own pages should win.

One Fix Per Query

Consolidate and 301, set a canonical, differentiate the intent, or redirect the internal links. One decisive move per query, never a menu, because the point is to stop splitting the signal.

Ranked by Real Impact

Every finding is weighted by combined impressions, so a cannibalised query worth 4,000 impressions sits above ten worth thirty. You fix the ones that move the numbers first.

Two of your own pages fighting for one query helps nobody. This skill finds the fight and ends it.

Download Skill