google-ads-keyword-cannibalization
google-ads-keyword-cannibalization について
Google Ads のキーワード競合を監査し、キャンペーン横断の除外キーワードを計画するスキルです。検索語句の重複とコストを把握し、意図したキャンペーンへ振り分ける担当者を支援します。
主な機能
- 01重複キーワードとマッチタイプの重なりを検出
- 02キャンペーン間の検索語句の重複を確認
- 03月間の競合コストを推定
- 04除外キーワードで振り分けルールを作成
- 05優先順位付きの監査結果を作成
活用シーン
- 01キャンペーン間で競合する検索語句の監査
- 02内部競合による支出の推定
- 03検索語句を優先キャンペーンに割り当て
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ eliasmalmsandberg/ google-ads-skills --skill google-ads-keyword-cannibalizationインストール後、Claude Code で/google-ads-keyword-cannibalizationを入力して読み込まれたか確認します。
詳細
Google Ads — キーワードのカニバリゼーション
Google Ads のカニバリゼーション専門家として、キャンペーン同士が競合しているすべてのケースを特定し、その内部競争による金銭的コストを算出して、関連するオークションごとに適切なキャンペーンが勝てるようルーティングシステムを導入します。
開始前
まず、製品マーケティングのコンテキストを確認してください。
.agents/product-marketing-context.md が存在する場合は、質問する前に読んでください。
以下のコンテキストを集めます。
1. アカウントの状況
- 有効なキャンペーンはいくつありますか?そのうち検索キャンペーンはいくつですか?
- アカウントは、構成計画なしにキャンペーンが追加されながら、自然に拡大してきましたか?
- 最近追加されたキャンペーンによって、重複が生じている可能性はありますか?
- スマート自動入札は有効ですか?(スマート自動入札はカニバリゼーションを部分的に緩和しますが、完全には解消しません)
2. 利用可能なデータ
- すべてのキャンペーンのキーワードリストをエクスポートできますか?
- 過去60~90日間の検索語句レポートは利用できますか?
- キャンペーン単位の CPA または ROAS データはありますか?
キーワードのカニバリゼーションによる実際のコスト
同じ検索語句のオークションに自社のキャンペーンが2つ参加すると、自社同士で入札することになります。その結果、次のような影響が生じます。
| 影響 | 仕組み |
|---|---|
| CPC の上昇 | 2つ目のキャンペーンが、1つ目のキャンペーンのオークションの最低価格を引き上げます |
| コンバージョンデータの分散 | 同じキーワードのパフォーマンスが2つ以上のキャンペーンに分散し、どのキャンペーンにも最適化に使える正確なデータが集まりません |
| スマート自動入札の混乱 | 同じ検索語句から、アルゴリズムに矛盾するコンバージョンシグナルが送られます |
| 予算の非効率な使用 | 優先度の低い、CPA の高いキャンペーンが、優先したいキャンペーンではなく勝つ可能性があります |
推定される影響: カニバリゼーションが顕著なアカウントでは、影響を受けるキーワードの CPC プレミアムの10~25%が内部競争に起因する可能性があります。
カニバリゼーションの4つのタイプ
タイプ1 — キャンペーン間での完全重複キーワード
同じキーワード、同じマッチタイプが、2つ以上のキャンペーンに存在します。
Campaign A: [project management software]
Campaign B: [project management software]
→ Google chooses which campaign serves — usually based on Ad Rank, not your preference
タイプ2 — マッチタイプの重複
あるキャンペーンのより広いマッチタイプが、別のキャンペーンの完全一致で対象にするはずだった検索語句を拾います。
Campaign A: [project management software] (exact)
Campaign B: project management (broad)
→ Campaign B's broad match can trigger for "project management software" queries
→ It may win the auction at a higher CPC with a lower CVR
タイプ3 — キャンペーンタイプ間での検索意図の重複
異なるキャンペーンが、実質的に同じユーザーの検索意図を対象にしています。
Non-brand Search: "CRM software"
PMax: serves "CRM software" queries via Search Themes
→ Both enter the same auctions; PMax often wins due to Google preference
タイプ4 — ブランドキーワードの非ブランドキャンペーンへの流入
ブランドキーワードの除外キーワードが追加されていないため、非ブランドキャンペーンでブランドキーワードがトリガーされます。
Non-brand campaign: broad match "project management"
→ Triggers for "[YourBrand] project management"
→ Brand campaign also serves this query → internal competition
カニバリゼーションの確認手順
ステップ1 — すべてのキャンペーンのキーワードをエクスポートする
Google Ads Editor または UI で:
- キーワードリストをエクスポートします:キャンペーン、広告グループ、キーワード、マッチタイプ、ステータス
- フィルタリングします:有効なキーワードのみ(一時停止中のキーワードは、実際のカニバリゼーションを引き起こしません)
ステップ2 — 完全一致の重複を見つける
スプレッドシートで:
- 列を作成します:
=LOWER(TRIM(keyword))で正規化します - 結合キーを作成します:
=keyword & "|" & match_type - COUNTIF を使用して、同じキーワードとマッチタイプの組み合わせが複数のキャンペーンに重複している場合にフラグを付けます
Flag: Same keyword + same match type in 2+ campaigns
すぐに実行すること: 完全一致の重複があるすべての組み合わせについて、どのキャンペーンでそのキーワードを管理するか決めます。他のすべてのキャンペーンに、そのキーワードを完全一致の除外キーワードとして追加します。
ステップ3 — マッチタイプの重複を見つける
マッチタイプの重複は、手作業では見つけにくいものです。最も信頼できる方法は次のとおりです。
- 検索語句レポートを取得します(過去90日間)
- 「キャンペーン」をセグメントまたは列として追加します
- 複数のキャンペーンに表示されている検索語句でフィルタリングします
- 重複している語句ごとに、配信されたキャンペーンと CPC を記録します
確認する内容:「キャンペーン A の完全一致キーワードが対象にするはずだった検索語句を、キャンペーン B が配信していませんか?」
| 検索語句 | キャンペーン A(意図した配信先) | キャンペーン B(実際の勝者) | CPC の差 |
|---|---|---|---|
| project management software | ブランド:CPA 8ドル | 非ブランドの部分一致:CPA 34ドル | 4倍 |
Step 4 — 意図レベルの重複を特定する
キャンペーンの目的を相互に確認します。
- PMax キャンペーンの検索テーマは、非ブランド検索キャンペーンと重複していますか?
- DSA キャンペーンは、既存のキーワードキャンペーンが対象としているページをターゲットにしていますか?
- 類似したクエリをターゲットにするカテゴリキャンペーンと競合他社キャンペーンの両方がありますか?
各キャンペーンが想定するクエリの領域をマッピングします。2つのキャンペーンが同じ領域を対象としている場合、どちらかに除外キーワードを設定する必要があります。
Step 5 — カニバリゼーションのコストを計算する
特定した重複ペアごとに:
Monthly cannibalization cost =
(CPC in lower-priority campaign - CPC in higher-priority campaign)
× clicks intercepted by lower-priority campaign per month
キャンペーン B(広範囲、クリック単価 $4.20)が、キャンペーン A(完全一致、クリック単価 $2.80)から月間 300 クリックを奪っている場合:
Monthly waste = ($4.20 - $2.80) × 300 = $420/month
Annual: $5,040
これにより、修正の優先度を数値化できます。
カニバリゼーションの修正:クエリルーティングシステム
解決策は、キャンペーン間の除外キーワードによって適用する、明確なルーティング階層です。
ルーティング階層(具体的なものから抽象的なものへ)
1. Brand campaigns → own all brand + brand modifier queries
2. Specific product/SKU → own exact product queries
3. Category + feature → own specific intent queries
4. General non-brand → own everything else
5. Broad/DSA → catch-all for discovery only
各階層で、それより下位の階層を対象とする除外キーワードを追加する必要があります。
実装:キャンペーン間の除外キーワード
ブランドキャンペーン:
- ブランド以外の一般語をすべてフレーズ一致の除外キーワードとして追加します
- ブランドのクエリだけにブランドキャンペーンが配信されるようにします
非ブランドキャンペーン(具体的):
- より広範囲のキャンペーンのキーワードを完全一致の除外キーワードとして追加します
- 具体的なキャンペーンが対象のクエリを適切に獲得できるようにします
部分一致/DSA/PMax の一括対応キャンペーン:
- 具体的なキャンペーンのキーワードをすべて完全一致の除外キーワードとして追加します
- 具体的なキャンペーンが、対象のクエリで常に優先されるようにします
実践例
Account structure:
Campaign A (Non-brand core): [project management software], [team task manager]
Campaign B (Non-brand long-tail): broad match "project management"
Fix:
→ Add [project management software] and [team task manager] as exact negatives in Campaign B
→ Campaign A now owns those exact queries
→ Campaign B catches other project management variations it wasn't overlapping on
PMax と検索キャンペーンのカニバリゼーション
PMax は、アセットグループや検索テーマに関連するクエリを対象に、自動的に検索広告オークションに参加します。これが既存の検索キャンペーンと競合します。
Google の公式な優先ルール: 検索キャンペーンの完全一致キーワードが PMax と同じクエリに一致する場合、検索キャンペーンが優先されます。ただし、完全一致の場合に限ります。部分一致やフレーズ一致のキーワードは、引き続き PMax に負けることがあります。
修正方法:
- 上位の非ブランドキーワードを完全一致で検索キャンペーンに追加します
- これにより、該当するクエリでは検索キャンペーンが PMax より優先されます
- PMax の「検索インサイト」を確認し、PMax が配信している検索カテゴリを把握します。検索キャンペーンと重複している場合は、検索テーマを追加して PMax のリーチを絞り込みます
カニバリゼーション監査の出力形式
調査結果を、優先順位を付けた修正テーブルとして提示します。
## Keyword Cannibalization Audit
Account: [Name] | Period: [Date range]
### Identified Overlap Pairs
| Priority | Keyword | Campaign A (preferred) | Campaign B (cannibalizing) | Est. monthly cost | Fix |
|----------|---------|----------------------|--------------------------|------------------|-----|
| 1 | [project mgmt software] | Non-brand: $28 CPA | Broad catch-all: $61 CPA | $840/mo | Add as exact negative in Campaign B |
| 2 | [crm for startups] | Category campaign | PMax | $320/mo | Add as exact keyword in Search |
### Total estimated cannibalization cost: $[X]/month
### Cross-campaign negative plan
[List of exact negatives to add per campaign]
継続的な予防策
カニバリゼーションは、成長中のアカウントで繰り返し発生する問題です。再発を防ぎます。
新しいキャンペーンを追加するとき
- 配信開始前に、新しいキーワードを既存のすべてのキャンペーンのキーワードと照合します
- すぐに除外キーワードを追加し、新しいキャンペーンが1日たりとも重複しないようにします
マッチタイプを拡張するとき
- 既存のキャンペーンに部分一致を追加する場合、新しい部分一致キャンペーンに、他のキャンペーンの完全一致/フレーズ一致キーワードをすべて除外キーワードとして追加します
PMax を追加するとき
- 既存の検索キャンペーンとの重複をすぐに監査します
- 優先度を維持するため、コンバージョン数の多い検索キーワードをすべて検索キャンペーンに完全一致で追加します
毎月のメンテナンス確認
- 検索語句レポートを取得し、キャンペーン別に分類します
- 2つ以上のキャンペーンに表示されているクエリにフラグを付けます
- 新たな完全一致の重複が追加されていないことを確認します
よくある間違い
スマート自動入札で解決できると考える スマート自動入札は入札単価を調整してカニバリゼーションを部分的に緩和しますが、2つのキャンペーンが同じオークションに参加するのを防ぐことはできません。自分の2つ目のキャンペーンが引き起こす、引き上げられたCPCの下限額を引き続き支払うことになります。
完全一致の重複だけを確認する 現在のアカウントで発生するカニバリゼーションの大半は、完全一致の重複ではなく、マッチタイプの重複です。完全一致キーワードの重複がゼロでも、部分一致の拡張によって深刻なカニバリゼーションが発生している場合があります。
PMaxを無視する PMaxは検索オークションへの参加に積極的です。検索キャンペーンで完全一致キーワードを意図的に網羅していないと、PMaxが、制御された検索キャンペーンで配信するつもりだった検索クエリを頻繁に獲得します。
広告グループレベルでのみ除外キーワードを追加する ある広告グループにキーワードを除外キーワードとして追加しても、キャンペーン全体で除外しなければ、同じキャンペーン内の他の広告グループでカニバリゼーションが発生する可能性があります。
関連スキル
- google-ads-negative-keywords:除外キーワード戦略全般 — キャンペーン間の除外キーワードは、カニバリゼーションを解消する主な手段です
- google-ads-search-term-mining:検索語句分析を通じて、各検索クエリで実際にどのキャンペーンが成果を上げているかを特定します
- google-ads-bidding:カニバリゼーションが発生しているアカウントでのスマート自動入札の動作 — 競合するキャンペーンにアルゴリズムがどう対応するかを解説します
- google-ads-segmentation:キャンペーンレベルのパフォーマンスの内訳から、競合するキャンペーン間のCPAの差を定量化できます