---
title: "Keyword cannibalization report | SEO Skill"
description: "Find Search Console queries associated with competing URLs and inspect where impressions, clicks or intent may be split across several pages."
canonical: "https://seoskill.dev/docs/reports/cannibalisation"
language: "en"
---

# Keyword cannibalization report

Find queries that Google returned with more than one URL from your site. Use the evidence to check whether those pages compete, serve different intents or only look similar in an averaged report.

## Install and run the report

Install the CLI once, then run `seo start` to connect your site and Google data. After setup you can run this report yourself or ask your agent to run it.

Install the SEO CLI globally.

```
npm i -g seo
```

Run setup after installation.

```
seo start
```

Review queries associated with more than one URL.

```
seo cannibal --project example
```

## What you get from this report

Find Search Console queries associated with competing URLs and inspect where impressions, clicks or intent may be split across several pages.

Best for

Several pages appear to compete for the same search topic.

Needs

Returned Search Console query and page rows

You get

Find Search Console queries associated with competing URLs and inspect where impressions, clicks or intent may be split across several pages.

Use next

Audit one page

Every report follows the same rules for missing data and outside estimates.[See how report data works](https://seoskill.dev/docs/reports#how-report-data-works).

## What you need before you run it

The report uses the information below. Optional sources are only used when you ask for them.

### Returned Search Console query and page rows

Provides the URLs, query, clicks, impressions, CTR, and average position in the chosen period.

### Optional live-page verification

Adds current canonical, indexability, metadata, and content evidence for selected URLs.

### Optional local ranked-keyword exports

Finds keywords where two or more of your URLs rank in one to four DataForSEO, Semrush or Ahrefs files, with positions and volumes labelled as provider estimates.

## Use a different report for these jobs

These jobs need a different report or a manual review.

[

### You need to find relevant pages that could link to one chosen target URL rather than investigate several URLs shown for the same query.

Run internal links. It uses related Search Console query evidence and live link checks to find candidate source pages for the target.

Internal linking report

](https://seoskill.dev/docs/reports/internal-links)

### You need a final decision to merge, redirect, canonicalise, or keep the overlapping pages separate.

No automated report can decide page intent, business value, or the preferred information architecture. Review the live pages, SERP intent, conversions, backlinks, and ownership of each topic. This report can still supply the overlap and Search Console metrics for that review.

Needs more evidence

## Use the report with an agent or in code

The command above is enough for most work. These options let an agent, script or application run the same report with explicit input and structured output.

### CLI

Use the report catalog when an agent, script or CI job needs predictable JSON instead of the normal terminal output. Check the current input first, then run the report with the validated parameters.

Check the current input before the agent or script runs the report.

```
seo reports describe cannibalisation --json
```

Once the input is valid, run the report through the report catalog.

```
seo reports run cannibalisation --params '{"site":"sc-domain:example.com","days":90,"limit":20,"minImpressions":100,"includeBrand":false}' --json
```

### MCP

An MCP agent follows the same two-step flow. It inspects the current schema, fills the required fields and only then runs the report.

Ask the MCP server for the current report input.

```
{
  "id": "cannibalisation"
}
```

Run the report after the agent has checked and filled the input.

```
{
  "id": "cannibalisation",
  "params": {
    "site": "sc-domain:example.com",
    "days": 90,
    "limit": 20,
    "minImpressions": 100,
    "includeBrand": false
  }
}
```

### TypeScript

Install the package in a Node 22 project when your application needs to run the report directly. The result includes the same evidence, warnings and limits returned through the CLI and MCP server.

Add the SEO package to your project.

```
npm install seo
```

Run the report from your TypeScript application.

```
import { executeReport } from 'seo/mcp'

const result = await executeReport(
  'cannibalisation',
  {
  "site": "sc-domain:example.com",
  "days": 90,
  "limit": 20,
  "minImpressions": 100,
  "includeBrand": false
},
)

console.log(result)
```

## What to do next

Compare the competing pages and the intent each one serves before consolidating anything. Merge, redirect or differentiate a page only when the returned query evidence and the live content support that choice.

1.  01Audit the competing URLs and decide whether to differentiate, consolidate, redirect, or leave them alone.
2.  02Measure any consolidation after a complete comparison window.

## Related reports

[

Audit one URL for technical SEO, metadata, canonicals, schema, links and Search Console queries. See the live evidence before changing the page.

SEO page audit

](https://seoskill.dev/docs/reports/audit-page)[

Follow every redirect hop from one URL to its final page and check status codes, loops, chains, canonicals and link safety before updating links.

Redirect trace

](https://seoskill.dev/docs/reports/redirect-trace)[

Compare matched Search Console periods around a recorded SEO change and keep releases, demand shifts and other confounders beside the result.

SEO change measurement

](https://seoskill.dev/docs/reports/measure-change)

## Sources used by this report

These primary sources define the provider data or search controls used by the result.

-   [Search Console Search Analytics API guidance](https://developers.google.com/webmaster-tools/v1/how-tos/search_analytics)
-   [Google canonical URL guidance](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)
-   [Local provider export format and evidence limits](https://seoskill.dev/docs/research-providers#use-ranked-keyword-exports-without-api-access)
