カニバリゼーションは「社内の共食い」だ。
同じサイトの中で、似たテーマの記事が2つ、3つと並んでいて、どれも検索結果で中途半端な順位——20位、35位、42位あたりをウロウロしている。1本に絞れば10位以内に入れるポテンシャルがあるのに、Googleが「どのページを返せばいいかわからない」状態になっている。これがカニバリゼーション。
私がSEOコンサルの現場でこの問題に出くわす頻度は、正直かなり高い。体感では、記事を50本以上持っているサイトの7割くらいで何らかのカニバリが起きている。そして厄介なのは、サイト運営者自身が気づいていないケースがほとんどだということ。「記事を増やしているのに順位が上がらない」という相談の裏側を掘ると、だいたいここに行き着く。
つまり、今この記事を読んでいるあなたが「記事数は増えてるのに成果が伸びない」と感じているなら、まさにこれの可能性がある。
カニバリの診断——Search Consoleだけで8割わかる
カニバリ診断は「レントゲン」みたいなもので、どこが重複しているかを可視化できれば、対処法はほぼ自動的に決まる。
高額なツールは要らない。私が最初にやるのはSearch Consoleの「検索パフォーマンス」だけ。
手順はシンプル。
Search Consoleの「検索パフォーマンス」を開く
「クエリ」タブで、カニバリを疑うキーワードをフィルタに入れる
「ページ」タブに切り替える
ここで同じクエリに対して複数のURLが表示されていたら、それがカニバリ。2本出てきたら黄色信号、3本以上なら赤信号。
ここ、大事。日付範囲を「過去28日」ではなく「過去3ヶ月」に広げること。短期間だとたまたま1ページしか出ていないこともある。3ヶ月にすると、Googleが日替わりでページを入れ替えている——つまり迷っている——のが見える。
悪い例と良い例を出す。
悪い例(カニバリ放置):
「業務効率化 ツール」で検索すると、自サイトの3記事が表示される
/blog/efficiency-tools-2024/(平均順位32位、クリック数5)
/blog/work-efficiency/(平均順位28位、クリック数8)
/blog/business-tools-comparison/(平均順位41位、クリック数2)
3記事合計でクリック15。どれも30位前後で、誰の目にも止まらない
良い例(統合後):
3記事を1本に統合、最もインプレッションの多いURLに集約
/blog/work-efficiency/(平均順位9位、クリック数120)
1記事で10倍以上のクリック。順位が上がったことでCTRも跳ね上がる
これは実際のクライアント案件で起きた結果。3本バラバラに30位台をさまよっていた記事を統合したら、2週間で一桁順位に入った(まあ、全部がこんなにきれいにいくわけじゃないけど)。
解消の3パターン——統合・canonical・削除
カニバリを見つけた後の対処は、大きく3つ。どれを選ぶかで結果が全然違う。
パターン1: 記事統合(最も多い)
カニバリの原因が「テーマが重複した記事が複数ある」場合。これが全体の6〜7割を占める。
やることは明快で、最もパフォーマンスの良いURLを残して、他の記事の有用な情報をそこに統合する。統合元の記事は301リダイレクトで統合先に飛ばす。
「どの記事を残すか」の判断基準で、よく間違いを見る。クリック数ではなく、インプレッション数で判断するのが正しい。クリック数は順位の影響を強く受ける。順位が低いけどインプレッションが多いページの方が、Googleから見て「このクエリに関連性がある」と判断されている可能性が高い。クリック数が多い方を残したくなるけど、それは罠。
パターン2: canonical指定
テーマは似ているが、それぞれのページに存在理由がある場合。たとえば「料金ページ」と「料金の詳細を解説したブログ記事」のように、ページの役割が違うケース。
ブログ記事側に <link rel="canonical" href="https://example.com/pricing/" /> を入れて、「検索結果に出すならこっちを優先して」とGoogleに伝える。
ただし正直に言うと、canonicalはGoogleへの「お願い」であって「命令」ではない。Googleが無視することもある。私の経験上、canonical単独で解決するケースは半分くらい。残りの半分は内部リンクの整理やコンテンツの差別化と組み合わせないと効かない。
パターン3: 削除(noindex or 物理削除)
記事自体の価値が低く、統合する意味もない場合。古いニュース記事、イベント告知の残骸、テスト投稿の消し忘れなど。
<meta name="robots" content="noindex"> を入れるか、ページ自体を削除して410を返す。この判断で迷う人が多いけど、そのページ単独でオーガニック流入がゼロに近いなら、消して困ることはまずない。
「もったいない」という感情は分かる。でも、インデックスに残っているだけで価値を生んでいないページは、サイト全体のクロールバジェットを食っているだけ。消した方がサイト全体の健康度が上がる。
カニバリが再発しない仕組みを作る
ここからが本題だと私は思っている。カニバリを直しても、同じ運用を続ければまた発生する。「記事を書く前にカニバリチェックする」をお願いベースでやっても、半年後には忘れる。
「お願いで守れることを仕組みで守る必要はない。でも仕組みで守るべきことをお願いで済ませるな。」
私がクライアントに提案する再発防止策は2つだけ。
1. キーワードマッピングシートを作る
全記事の「主ターゲットKW」を1シートに並べる。記事を新しく書く前に、そのKWが既存記事と被っていないかチェックする。Googleスプレッドシートで十分。被っていたら「既存記事をリライトする」か「明確に検索意図が違うことを確認してから書く」の二択にする。
シートの列は最小限でいい——URL / 主ターゲットKW / 検索意図の要約 / 最終更新日。これだけ。凝ったシートを作ると更新されなくなる(何度も見てきた)。
2. 四半期ごとにSearch Consoleで定点チェック
さっきの診断手順を、3ヶ月に1回やる。新しいカニバリが発生していないか確認する。カレンダーに入れておく。それだけ。
この2つをやっているクライアントと、やっていないクライアントで、1年後のカニバリ再発率がまるで違う。仕組みにしたところは再発がほぼゼロ。お願いだけで終わったところは、半年で元通り。
「全部統合すればいい」は間違い
最後に、よくある誤解を潰しておく。
「カニバリ = 全部まとめればOK」と思いたい気持ちはわかる。でもそれは違う。検索意図が明確に異なる記事を無理に統合すると、今度は「1記事で複数の意図に応えようとして、どの意図にも中途半端」という別の問題が起きる。
たとえば「SEOとは」と「SEO 費用」。関連するけど、検索している人の目的が違う。前者は概念を知りたい人、後者は発注を検討している人。これを1記事にまとめると、どっちの人にも刺さらない。
判断基準はシンプルで、検索結果の上位10件を見る。同じクエリの上位に同じタイプのページ(全部ブログ記事、全部サービスページ)が並んでいるなら、検索意図は1つだから統合が正しい。異なるタイプが混在しているなら、検索意図が複数あるから分けておく方が正しい。
まあ、全部完璧にカニバリ管理できているサイトがあったら、それはそれで別の心配をした方がいいかもしれないけどね。大事なのは「気づける仕組み」を持っておくこと。カニバリは発生すること自体が悪いんじゃない——気づかずに放置し続けることが悪いんだ。

