キーワードカニバリゼーションを2026年に発見・修正する方法:Codex による実践ワークフロー

検索コンソール、クロールデータ、順位トラッカーからキーワードカニバリゼーションを特定し、統合・正規化・差別化・削除でトラフィックを失わずに修正する90分のワークフロー。すぐ使える Codex 監査スキル付き。

このワークフローで得られるもの

気になるキーワードで上位10位以内に入っていたページが、いつの間にか34位に落ちている。同じフレーズで検索すると、自分のサイトのURLが2つ並んでいる。あるいは先月コンテンツチームが40本の新規記事を公開したが、そのうちのいくつかが静かに競合している気がする。

このワークフローは、そんな疑念を確定リストと修正計画に変える。完了時には次の3つが手に入る:2つ以上のURLが同じクエリで競合している全クエリ、各クラスターへの判定(統合・正規化・差別化・削除のいずれか)、そして修正が実際に効いたかを教えてくれる4週間の検証計画。

  • 対象: 数百ページを超えるサイトの SEO 担当者・コンテンツチーム、および高速公開をしているすべての人。
  • 所要時間: 中規模サイトでの初回監査は約90分。一度ルーティン化すればその半分。
  • 前提条件: Google サーチコンソールの読み取りアクセス、クロールデータのエクスポート(Screaming Frog、Sitebulb など)、契約していれば順位トラッカー。
  • 完了条件: リスト上の競合クラスターがすべて4つの判定のいずれか1つを持ち、修正が適用され、順位とインプレッションを再確認する日程がカレンダーに入っている。

始める前に1つ現実確認をしておく。壊れていないものを直さないための確認だ。1つのクエリに複数のURLが出ることは正常である。カテゴリページ、ブログ記事、商品ページが同じフレーズで順位を持つことはある——それぞれが異なる意図(調べている人 vs. 買う準備ができた人)に応えているなら、それは健全な SERP であってカニバリゼーションではない。このワークフローでフラグが立つのは、同じ段階で同じ役割を争っているページだけだ。

この問題が5年前より重要になっている理由は1つ:AI によるブリーフと AI 生成ドラフトが、人手のレビューでは追いつけないペースで類似ページを作り出すため、カニバリゼーションがスケールで発生するようになったからだ。これは Google の順位と AI 検索の引用の両方に同時に影響する。

3分でできる症状チェック

データを掘る前にこれを確認しよう。次のうち2つ以上が当てはまるなら、本監査を実行する。

症状

見え方

最も可能性の高い原因

順位が停滞

数か月トップ10を維持していたページが、新ページ公開後に25〜50位へ下落

新ページが同じクエリで競合している

インプレッションの分散

2つのURLが同じクエリのインプレッションをほぼ50/50で分け合う

どちらのページも明確な関連性を獲得できていない

タイトルタグの双子

2つのページが同じかほぼ同一の H1 とタイトルを持つ

ライターが補完ではなく亜種を作ってしまった

順位の入れ替わり

フレーズに対する順位URLが週ごとに自社ページ間で切り替わる

検索エンジンが権威あるページを選べていない

AI回答が揺れる

AI アシスタントが同じ質問に対し実行ごとに異なる自社URLを引用する

同じ分散が別のサーフェスで起きている

始める前に:必要なデータ

次の3つを集める:

  1. 最低6か月の履歴がある検索コンソール。 90日でも簡易チェックには足りるが、長い期間の方が順位がページ公開と連動して落ちたタイミングが見える。
  2. タイトルと H1 を抽出した新しいクロール。 Screaming Frog は標準でこれを行う。Sitebulb や Botify も同様だ。どれもなければ、site: 検索と CMS のページ一覧で最も明らかなケースはカバーできる。
  3. 順位トラッカーのエクスポート(Semrush、Ahrefs、Authority Labs)。この手順は任意——検索コンソールのパスだけで大半のケースは見つかる。

開始前に検索コンソールから2つエクスポートする:クエリレポート(クエリ、インプレッション、クリック、順位)と、同じレポートのページディメンション版(URL)。どちらもパフォーマンスのフルレポート内にある。

Step 1:検索コンソールで競合URLを見つける

これが無料かつ最もシグナルの強いパスだ。

  1. 検索コンソールを開き、パフォーマンス → フルレポートを表示。
  2. クエリフィルタを使い、最初の優先キーワードを入力。
  3. グラフ下のURL一覧を見る。同じ期間に自社ページが2つ以上インプレッションを得ているクエリをメモする。

探しているのは2つのパターン:同じ期間にほぼ均等にインプレッションを分け合うページの組み合わせと、かつてトップ10にいたのに20〜50位で停滞しているページ——特に、その低下が類似ページの公開時と重なっている場合だ。

最初に重要度の高いキーワード10〜15個から始める。その半分でクラスターが見つかれば、問題はサイト全体に広がっているので、過去6か月でたとえば50インプレッション以上の全クエリを一掃する価値がある。数個だけなら問題は局所的だ——直して次へ進もう。

期待される出力: 各クエリについて、2つ以上の自社URLとそのインプレッション配分のリスト。品質チェック: ページが本当に同じクエリで順位を共有していること。似ているだけなら隣人であって競合ではない——リストから外す。リカバリ: 何も見つからない?期間を3か月に広げ、キーワードのロングテール亜種を含める。ブランド語と非ブランド語の配分も確認する——言語ペアや卸売・小売併設のような多バージョンサイトでは、そこに重複が隠れている。

Step 2:クロールデータで重複タイトルと H1 を見つける

カニバリゼーションは往々にしてコンテンツ制作の事故だ:ライターが「Xについて書いて」と依頼され、既存ページを確認せずに、すでに順位を持つページと同じタイトルのページを作ってしまう。

クロールエクスポートを開き、タイトル順、次に H1 順で並べ替え、重複と近似重複にフラグを立てる。「近似」も数える——2つのページが競合するのに完全に同一のタイトルは必要ない。「Best CRM software」と「Best CRM tools」が同じ読者を狙っているなら候補だ。「Best CRM for real estate」は別のページであり、リストに入れてはならない。

クロールデータを見ている間に技術的な容疑者も確認する:ページ自身以外を指すカノニカルタグ、亜種追加時に変わった meta robots noindex ルール、開始または停止した robots.txt のブロック。このテーマに関する Search Engine Journal のガイドが言う通り、クロール・インデックス・無視の指示を変えた時点でカニバリゼーション問題は生まれる。旧商品のカノニカルを引き継いだ商品バリアントページは典型的な例だ。

期待される出力: タイトル・H1 が重複または競合するページのペアと、技術的なフラグ。品質チェック: ペアごとに1つの問いを立てる——もう一方が公開される前からこのページは存在して順位を持っていたか?そうなら記録する。それが本物の問題の最強シグナルだ。リカバリ: CMS でのエクスポートが面倒なら、この記事末尾の Codex スキルでクロールCSVからリストを生成する。その出力は候補リストであって判定ではない、と扱うこと。

Step 3:順位トラッカーで確定させる

検索コンソールは Google の報告を教え、順位トラッカーは自社URLの時間的な位置を教える。停滞ページを実際に露呈させるのは後者だ。

各候補クエリをトラッカーで開く。カニバリゼーションを確定させるパターン:キーワードが25位前後〜50位台で停滞しているか、順位Xを保持するURLが自社ページ間で変わり続けている。Semrush は過去1年間にどの自社ページがそのフレーズで出現したかを示し、Authority Labs はキーワードごとの全URLを列挙する。過去1年の履歴に自社URLが2つ以上現れ、どちらもトップ10に触れていないなら、確定である。

ついでに方向も読む。元のページが新ページ公開まで順調で、両方が現在検索圏外で漂っているなら、新参者が「順位を奪った」のではない。2つのページが互いを薄め合ったのだ。その場合の修正は逆方向になる:新ページを元ページに統合するのであって、その逆ではない。

期待される出力: 各候補クラスターの確定ステータス——「確定」または「未確定、手動レビュー」。品質チェック: 確定には独立したシグナルが最低2つ必要。検索コンソール+クロールで2つと数える。順位トラッカーのみは弱い単一シグナルだ。リカバリ: トラッカーがキーワードごとに1 URL しか表示しないなら、この手順はスキップする。検索コンソールとクロールのパスだけでワークフロー全体は完走できる。

キーワードカニバリゼーション監査ワークフロー:3つの検出手順が4判定のマトリクスに流れ込み、修正と4週間の検証ループへ。

監査パイプライン:3つの検出パス、1つの判定マトリクス、1つの検証ループ。

Step 4:修正方針を決める

確定した各クラスターについて、4つの判定のうち正確に1つを選ぶ。この表が判断のすべてだ:

判定

使う場面

やること

統合

ページが同じ意図を持ち、一方が明らかに完成度が高い

弱いページの独自の論点を強いページに畳み込み、弱いURLを削除または301する

正規化

存在が必須のほぼ同一バリアント(商品バリアント、パラメータ、キャンペーンページ)

公式URLを選び、そこに自己参照カノニカルを置き、バリアントをそこへカノニカルする

差別化

同じトピックだが維持したい異なる意図(ハウツー vs. 商品ページなど)

一方のページを明確に異なるクエリかファネル段階に応えるよう書き直し、タイトルと H1 が重ならないようにする

削除

ページが薄い、重複している、あるいはカバー済みのフレーズのためだけに存在する

独自の価値を残存ページへ畳み込んだうえで削除する

カニバリゼーションではないので触らない2つのケース:同じキーワードをファネルの異なる段階で狙うハウツーガイドとコンバージョンページ——Google はどちらのページがどの役割か理解している——と、hreflang を置いた同じページの言語別バージョン。

判定を検証する1つの問い:この変更後、そのフレーズで検索したユーザーが1つのページにたどり着いて、もう一方が提供していたすべてを得られるか?イエスなら統合か削除。ノーなら正規化か差別化。

Step 5:可視性を失わずに修正を適用する

修正A:コンテンツの統合(統合の判定)。 残すページを起点にする。負けページの独自セクションをすべてコピーする——FAQ の回答、事例、引用されるセクション、そのページを指していた内部リンク。必要なら並べ替え、強いコンテンツが上に来るようにする。負けページに外部バックリンクか実在の順位がある場合は、404 にせず 301 で残存ページへつなぐ。どちらもなければ削除でよい。Search Engine Journal のガイドは意図的に 301 を避けている——コンテンツを畳み込んで新ページを削除する方を好む——301 が必要になるのは、削除するURLが独自のリンク資産を持つ場合だけだ。負けページのアンカーテキストを使っていた内部リンクを残存ページへ更新する。

コンテンツ統合の前後:競合していた2つのURLがインプレッションを分け合う状態から、1つの残存ページがクエリで勝利する状態へ。

2つの競合ページを1つのURLに統合すると、50/50のインプレッション分散が1つの勝者になる。

修正B:カノニカル化(正規化の判定)。 公式ページに自己参照カノニカルを置き、バリアントをそこへカノニカルする。これは存在が必須のほぼ重複ページ——商品バリアント、パラメータ付きURL、キャンペーンページ——に適したツールだ。統合の代わりにはならない。両方のページが実質的なコンテンツを持つなら、カノニカルのみでは両方がクロールに残り、編集の焦点も割れる——先にコンテンツの作業を済ませ、それからカノニカルを指す。

修正C:プログラム的にインデックスをブロックする(削除に隣接する判定)。 重複が構造的な場合——パラメータページ、フィルタの組み合わせ、インデックス不要の地域バリアント——ページ単位ではなくフォルダかテンプレート単位で noindex を適用する。これはコード1行が手作業200回に勝るケースだ。

修正D:意図に沿って内部リンクを直す(差別化の判定)。 2つのページが正当に異なる意図に応えているなら、内部リンクもそう言うべきだ。元ガイドのルール:「apples」という語の周囲の文がりんごを買う話ならコンバージョンページへリンクし、りんごの産地の話なら情報ページへリンクする。すべての内部リンクは投票である。リンクが一貫して勝たせたいページを指すようにすれば、検索エンジンが独断で(しばしば間違った方向に)解消していた曖昧さが消える。

Step 6:修正が効いたか検証する

修正から2〜4週間待ち、再チェックする。

  1. 検索コンソール: クエリが分散ではなく1つの支配的なURLを示すようになり、残存ページのインプレッションが上昇しているはず。クラスター全体のインプレッションは再評価中の1〜2週間は落ちることがある——それは正常で、失敗ではない。
  2. 順位トラッカー: キーワードがURL間で振動しなくなる。
  3. AI サーフェス: 主要フレーズを AI アシスタントか AI 検索エンジンで尋ね、引用されるのが残存URLであり削除した方でないことを確認する。分散したページは AI の引用も分散させる。統合は Google の順位と AI 検索での可視性 を同時に改善する数少ない修正の一つだ。

4週間たってもクラスターが分散したままなら、ページを見落としている(知らないバリアントを再確認)か、ページが本当に異なる意図を持っており差別化すべきだった(統合すべきでなかった)かのどちらかだ。再検証し、再判定する。

再発を防ぐ

監査は簡単な部分だ。清潔を保つのは公開ルールの問題である。重要度の順に3つの習慣:

  1. コンテンツチームが書く前に確認するトピックリストを維持する。 カニバリゼーションを生む最速の方法は、ページがもう存在することを知らないライターだ。
  2. 重複を壁にせず対話にする。 トピックを禁止する代わりに、ライターが補完的なアングル——ハウツー、比較、業界別バージョン——を見つけるのを助ける。
  3. AI 生成パイプラインを特に監視する。 AI 生成出力は最速のカニバリゼーション工場だ:プロンプトの品質に関係なく、互いに競合する反復的で薄いページを生む。生成または AI ブリーフ経由の全ページは、スケジュール前にトピックリストチェックを通し、四半期監査で優先する。

本監査は四半期ごと、そしてサイトの同じ領域に多数のページを追加するローンチのたびに実行する。

監査を自動化する:Codex スキル

上記の手順は、データの意味を理解するために手動で行う。理解したら、反復可能な部分を AI コーディングエージェントに任せよう。これは Codex 用の完全なスキルファイルだ:検索コンソールのエクスポートを読み込み、競合クラスターにフラグを立て、サイトに触れずに判定シートを生成する。

markdown
---
name: keyword-cannibalization-audit
description: Find and classify keyword cannibalization clusters from Google Search Console, crawl, and rank-tracker exports. Use when a query shows multiple URLs, rankings dropped after a new page launch, or you need a cannibalization verdict sheet. Read-only: produces a report, never edits pages.
---

# Keyword Cannibalization Audit

## Inputs (required)
- `gsc-queries.csv` — Search Console query export (query, impressions, clicks, position)
- `gsc-pages.csv` — Search Console page export (page, impressions, clicks, position)
- `crawl-titles.csv` — crawl export with URL, title, H1, canonical
- `rank-history.csv` — optional rank tracker export with per-keyword URL history

## Procedure

1. Load the CSVs. Normalize URLs (lowercase host, strip trailing slash and tracking parameters).
2. Join `gsc-queries.csv` and `gsc-pages.csv` on query to build query-to-URL mappings.
3. Flag queries where 2+ URLs each received at least 10% of the query's impressions in the last 90 days.
4. Flag queries where a URL sits between positions 20-50 and a second URL for the same query was created later (compare crawl or tracker history).
5. From `crawl-titles.csv`, flag pairs whose titles or H1s are identical or share 80%+ of their significant tokens.
6. From `rank-history.csv`, flag queries whose ranking URL changed more than twice in 6 months.
7. Cross-check every flag. Keep only clusters confirmed by at least two signals (Search Console + crawl counts as two).
8. Classify each surviving cluster as MERGE, CANONICALIZE, DIFFERENTIATE, or REMOVE:
   - Same intent + one page clearly more complete → MERGE (fold unique sections into the survivor; note a 301 only if the removed URL has external backlinks)
   - Near-identical variants that must exist (parameters, variants) → CANONICALIZE
   - Same topic, genuinely different intent you want to keep → DIFFERENTIATE (rewrite one page, no title overlap)
   - Thin or fully duplicated page with no unique value → REMOVE
   - Complementary intent (how-to vs. product for the same keyword) → NOT CANNIBALIZATION, skip
9. Output `cannibalization-verdicts.md`: a table of query | competing URLs | signals found | verdict | action, ordered by query impressions. Include for each cluster the exact URLs, the evidence rows (dates, positions, impressions), and fix text ready to paste into a CMS task.

## Rules
- Read-only. Never edit pages, robots.txt, or canonicals. Output the report and a proposed action plan only.
- Never merge a URL into a survivor whose content is not equal to or better than the merged output.
- Do not classify locale variants (hreflang) or genuinely different intents as cannibalization.
- Clusters with fewer than two confirming signals get marked "unconfirmed — review manually," never dropped.
- When the rank tracker export is missing, run with Search Console + crawl only and say so in the report header.

これを keyword-cannibalization-audit/SKILL.md として Codex のスキルフォルダに保存し、4つのCSVをワークスペースフォルダに置いて実行する。数千ページ規模の典型的な実行は数分で終わり、判定シートを返す。

フルスキルまでは不要という場合の、小さな2つのプロンプト:

  • エクスポートのトリアージ: 「これが私の検索コンソールのクエリエクスポートです。2つ以上の自社URLがそれぞれインプレッションの10%以上を得ている全クエリを見つけてください。クエリ、URL、インプレッション配分、URLごとの順位を表にしてください。推奨事項は出さないでください。」
  • クラスターの判定: 「私の2つのページが両方とも [クエリ] で順位を持っています:[URL A] が [X] 位、[URL B] が [Y] 位です。[URL B] は [日付] に公開されました。両者のコンテンツを比較し、4つの判定——統合・正規化・差別化・削除——のどれが当てはまるか、理由を2文で答えてください。」

FAQ

複数のページが同じキーワードで順位を持っています——自動的にカニバリゼーションですか?

いいえ。ページが異なる意図(調査 vs. 購入)や異なる言語圏に応えているなら、検索エンジンは問題なく処理します。同じファネル段階で同じ役割を争うページだけが判定を必要とします。

カノニカルと noindex——どちらを使うべきですか?

バリアントがアクセス可能でなければならず(商品バリアント、パラメータ)、そのシグナルを公式ページへ渡す必要があるならカノニカル。ユーザーのニーズに応えない純粋な重複ページなら、プログラム的に適用する noindex。どちらも、重複ページが実際に有用なコンテンツを含む場合のコンテンツ統合の代わりにはなりません。

負けページを 301 すべきですか?

外部バックリンクかそれ自身の実質的な順位を持つ場合だけです。それ以外は独自コンテンツを残存ページに畳み込んで削除しましょう。真の代替ではないページへの 301 はリダイレクトの資産を無駄にし、ユーザーを混乱させます。

統合後にトラフィックが落ちました——壊しましたか?

Google がクラスターを再評価している間の短い低下はよくあります。4週間時点で測定します:残存ページがクエリで順位を持ち、クラスターのインプレッションが回復していれば修正は効いています。別のページが勝っているなら統合の方向を間違えています。問題を悪化させる前に戻しましょう。

カニバリゼーションは AI 検索の引用に影響しますか?

はい。2つのURLが競合すると、AI 回答はどちらかを選び、どちらを引用するか——あるいはどちらも引用しないか——が実行ごとに変わります。統合は、薄め合う2つではなく、1つの強い引用可能なURLを生みます。

どのくらいの頻度で監査を実行すべきですか?

基準は四半期ごと、加えて新ページの波のたびに。AI でコンテンツを生成しているサイトは、監査を定期作業ではなく公開パイプラインの一部として扱うべきです。

著者: Clara Bennett — Auspia の10年コンテンツ戦略担当。編集システム、トピックマップ、そして公開プログラム同士が衝突しないための反復可能なコンテンツ運用について執筆している。

このトピックを読む

同じテーマの記事を続けて読む