Back to templates

Quick overview

This skill finds the places where two of your own pages are competing for the same search — and, just as importantly, refuses to flag the places where they aren’t. Every candidate is checked against the live results page, read for what the searcher actually wants, and priced by the clicks and the money it’s leaking. What comes back is a short worklist with a verdict, a reason and a specific fix on every row, ordered by what the conflict is costing you.

Who it’s built for

For technical SEOs and agencies who have been burned by tools that flag every overlap as a crisis, and for anyone who has to justify merging two pages to a client or a developer. It earns its keep before a content consolidation, during a migration, or any time rankings move for no obvious reason.

What you get

  • Only conflicts that are real. Every one confirmed against the live results page, not inferred from a stored ranking table.
  • Refusals you can trust. Harmless overlaps are explicitly declined, with the reason given — which is what stops you merging pages that are working perfectly well.
  • A price on each conflict. The clicks being split and what they’re worth a month, so the finding survives a conversation about budget.
  • A verdict, a reason and a specific fix on every row — not a flag and a shrug.
  • Ordered by what it costs you, so the output is a work order rather than a report.
  • A spreadsheet worklist plus a short document to share with whoever signs off.
  • No manual checking. One request covers the whole keyword list, however long it is.

What you need to get started

  • DataForSEO account and your API credentials.
  • Claude Code, with the DataForSEO connection added once.
  • The Keyword Cannibalization Detector skill installed.
  • The domain, the keywords you want checked, and the market you rank in.

Workflow breakdown

  • You give the domain, the keyword list and the market.
  • A cheap first pass drops every keyword the site doesn’t rank for at all — nothing can be cannibalising a term it never appears on.
  • Everything that survives is checked against the live results page, to see whether two of your own pages really are competing there.
  • Each pair is read for search intent and page type: a category page and a guide fighting over a buying query is a problem; the same pair on a research query usually isn’t.
  • Genuine conflicts are priced by the clicks being split and what those clicks are worth, then ranked by that figure.
  • You get a worklist carrying a verdict, a reason and a fix on every row — including the ones the skill decided to leave alone, and why.