Open source · Content & Publishing

Keyword Cannibalization Map

Map overlapping search intent and surface likely keyword cannibalization.

v0.1.0 · Node.js 22+ · MIT

Browse the public repository · View releases

Group query/page exports into candidate overlap clusters — pages that share one search intent within one segment — and order them as a review queue, with the source rows that produced every candidate travelling with it.

This walkthrough uses the tool's public README and checked-in example files. Run the command from a repository checkout with Node.js 22+; inspect the source before using it on your own files.

Run the checked-in example

node bin/keyword-cannibalization-map.mjs --root examples/exports-clean
node bin/keyword-cannibalization-map.mjs --root examples/exports-clean --json
node bin/keyword-cannibalization-map.mjs --root examples/exports-clean --map build/cannibalization.map.json
node bin/keyword-cannibalization-map.mjs --help

Read the result

stdout carries the report and nothing else, so it pipes straight into a JSON parser. Diagnostics go to stderr.

Where this check stops

Every limit is explicit and enforced: maxExports, maxExportBytes, maxRows, maxFieldChars, maxDepth, maxIntentGroups, maxClusterRows. Exceeding one produces a finding naming it and an incomplete report — never a silent truncation.

Before adapting the command to your own workflow, review the accepted inputs, exit codes and safety boundaries in the README.

Compiled with AI assistance from checked-in public documentation and example scripts. Run the example and review the repository's current documentation before relying on its result.