backlink-gap について
複数の競合にはリンクしている一方、ブランドには未リンクのドメインを探す SEO スキルです。代理店やコンテンツチーム向けに、競合のバックリンクデータから候補を順位付けし、見込み先、リンク切れ候補、アウトリーチ文面を作成します。
主な機能
- 01ブランドと競合のバックリンクを比較
- 02権威性、重複度、流入で候補を評価
- 03データの鮮度とサンプル品質を確認
- 04競合リンクの切れた候補を特定
- 05見込み先リストと文面を作成
活用シーン
- 01四半期ごとの競合リンク増加を確認
- 02新製品やコンテンツ拠点のリンク施策を計画
- 03リンク切れの差し替え候補を探す
- 04新規顧客向けのリンク候補リストを作成
MCP 対応
接続済みのバックリンク MCP からブランドと競合のリンクデータを取得し、web-fetch MCP で候補 URL を確認できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ indranilbanerjee/ digital-marketing-pro --skill backlink-gapインストール後、Claude Code で/backlink-gapを入力して読み込まれたか確認します。
詳細
/digital-marketing-pro:backlink-gap
スクリプトの場所。 ホストで
${CLAUDE_PLUGIN_ROOT}が設定されていない場合、スクリプトはこのプラグインのscripts/フォルダーにあり、skills/と同じ階層にあります。Python 3.10 以降で実行してください。pythonが見つからない場合は、python3を使用します(macOS、多くの Linux システム)。
目的
最も効果の高い被リンク候補、つまり複数の競合他社にはリンクしているものの、自社にはリンクしていないドメインを特定し、オーソリティ、リンク重複のシグナル、下流のトラフィック、トピックとの関連性を組み合わせた独自の優先度スコアで順位付けします。アウトリーチの引き継ぎにすぐ使える、番号付きの出力一式を作成します。
コンテキスト効率
負荷の高いスキルです。参照するファイルは、まず Grep で検索してから Read し、一致した範囲だけを offset と limit を指定して読み込んでください。ファイルを開く前に ${CLAUDE_PLUGIN_DATA}/<brand>/ の内容を一覧表示してください。セッション途中で再度実行する場合は、すでにコンテキストにあるファイルをスキップしてください。
使用する場面
- 四半期ごとの被リンク監査 —「今四半期、競合他社はどこでリンクを増やしたのに、自社は増やせなかったのか?」
- 新製品やコンテンツハブのローンチ前のリンク構築計画
- デジタル PR の見込み先評価 —「誰にでもリンクする」候補と「自社の分野に高い確度でリンクする」候補を区別する
- 競合からの回復 — 競合他社に追い抜かれ、どのリンクが移動したのかを把握したい場合
- 新しいクライアントのオンボーディングで、「最初の50件のリンク獲得候補」のバックログが必要な場合
被リンクの件数だけが必要な場合(ブランドに接続済みの被リンク MCP を直接使用してください)や、自社のプロフィールのアンカーテキスト分析が必要な場合は使用しないでください(これは別の監査で、seo-audit で扱います)。
ブランドのコンテキスト(自動適用)
~/.claude-marketing/brands/_active-brand.jsonからアクティブなスラッグを読み取り、次に~/.claude-marketing/brands/{slug}/profile.jsonを読み込みます- ブランドが存在しない場合:「先にブランドを設定しますか(/digital-marketing-pro:brand-setup)?」と尋ねるか、デフォルト設定で続行します
- 業界固有のリンク品質しきい値には
skills/context-engine/industry-profiles.mdを適用します(YMYL 業界では--min-drをより高く設定してください) - ブロック対象のサイト運営者(ブランドが明示的に禁止している PBN 風ネットワークや有料リンクネットワークなど)を除外するため、
skills/context-engine/compliance-rules.mdを適用します
入力
| 入力 | ソース | 必須? |
|---|---|---|
| 自社の被リンク CSV | ブランドのメインドメインについて、接続済みの被リンク MCP(Ahrefs / Semrush / SE Ranking / Moz)からエクスポート | はい |
| 競合他社の被リンク CSV(2件以上) | 同じエクスポーターから、競合他社ごとに1件(リンク重複のシグナルには最低2件必要です。3〜5件が最適です) | はい |
| DR / DA の最小値フィルター | CLI フラグ、ブランドプロフィールのデフォルト値、または業界標準 | 任意 |
| Top-N 件数 | 抽出する見込み先の件数 | 任意 |
競合他社が1社でも実行できます(エラーではなく警告が表示されます)が、その場合の「共有シグナル」はノイズになります。競合他社1社のみのギャップ分析は、実質的に「競合他社にリンクするサイトはどこか」を調べるものであり、「自社の分野で継続的にリンクするサイトはどこか」を調べるものではありません。
処理(10 ステップ、番号付きファイル出力)
すべての出力は ${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{YYYY-MM-DD}/ に保存します。
00-input.md— 自社ドメイン、競合リスト(選定理由:なぜこの N 社なのか)、フィルターパラメーター、実行時刻を記録します01-data-pull.md— ブランドに接続されたバックリンク MCP を使用して、{brand}.tldと各競合のバックリンクを取得します。予算ガード:MCP がクレジットコストを公開している場合は、推定コストの合計を算出し、合計が 200 クレジットを超える場合は取得前に「続行しますか?(y/N — デフォルトは N)」と確認します。02-ours.csv— 自社のバックリンクエクスポート(生データ)03-comp-{competitor}.csv— 競合ごとに CSV を 1 つ作成(生データ)04-gap-run.json— スクリプトを実行します:python "${CLAUDE_PLUGIN_ROOT}/scripts/backlink_gap.py" \ --ours "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/02-ours.csv" \ --competitors \ "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/03-comp-competitor1.csv" \ "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/03-comp-competitor2.csv" \ --min-dr {brand.profile.min_link_dr or 20} \ --top 100 \ --out "${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/{date}/04-gap-run.json"--competitorsは CSV パスをスペース区切りで明示的に指定します(nargs="+")。03-comp-*.csvファイルをそれぞれ列挙してください。スクリプトは*グロブを展開しないため、03-comp-*.csvを引用符で囲んで指定すると FileNotFoundError が発生します。 競合ごとにパスを 1 つ指定します。05-quality-scorecard.md—04-gap-run.jsonからquality_scorecardを読み取ります。status: needs_reviewの場合は、次のように原因を診断します:data_freshness: fail→ 入力 CSV のいずれかが 90 日より古い状態です。データを再取得してください。バックリンクのグラフはすぐに古くなります。sample_size: fail→ いずれかの入力に、ユニークな参照ドメインが 50 件未満しかありません。ドメインが新しすぎるか、エクスポートが途中で切り詰められています。行数制限なしで再エクスポートしてください。competitor_coverage: warn→ 競合が 1 社のみです。実際の重複シグナルを得るため、少なくとも 1 社追加してください。link_overlap_signal: fail→ 2 社以上の競合にリンクしている参照ドメインが 5 件未満です。競合の選定が適切でない(互いにコンテンツ領域を共有していない)か、データが不完全です。競合を選び直してください。
06-prospect-shortlist.md— 見込み先上位 30 件を、アウトリーチへの引き継ぎ用に整形します:ドメイン、DR、競合全体でのリンク数、推奨するアプローチ(ゲスト投稿、リンク切れ、リソースページへの掲載)07-broken-link-candidates.md— 競合のリンクのいずれかが 4xx を返す対象を抽出します(競合のバックリンク URL に対して簡単な HTTP HEAD チェックを実行します。ブランドに接続された web-fetch MCP を使用してください)。これらは「簡単に獲得できる成果」です。代替リンクとして自社の URL を提案してください。08-outreach-templates.md— 3 種類のテンプレートを作成します:(a)リソースページへのコールドピッチ、(b)リンク切れの差し替え、(c)競合への言及。ブランドプロフィールのボイスフィールドとskills/context-engine/guidelines-framework.mdを使って、各テンプレートにブランドのトーンを反映します。PLAN.md— 1 ページの概要:統計情報、スコアカード、アプローチ案付きの見込み先上位 10 件、推奨頻度(持続可能なアウトリーチ品質を保つため、週 3~5 件の提案)。
出力形式
${CLAUDE_PLUGIN_DATA}/{brand}/seo/backlink-gap/2026-06-04/
├── 00-input.md
├── 01-data-pull.md
├── 02-ours.csv
├── 03-comp-{competitor1}.csv
├── 03-comp-{competitor2}.csv
├── ...
├── 04-gap-run.json
├── 05-quality-scorecard.md
├── 06-prospect-shortlist.md
├── 07-broken-link-candidates.md
├── 08-outreach-templates.md
└── PLAN.md
品質スコアカード(4 つのゲート)
| ゲート | チェック内容 | 重要な理由 |
|---|---|---|
| data_freshness | すべての入力 CSV の mtime が 90 日以内 | バックリンクのグラフはすぐに古くなります。古いデータを使うと、すでに無効なリンクを追いかけることになります |
| sample_size | 各入力にユニークな参照ドメインが 50 件以上ある | これを下回ると、ギャップの計算に順位付けに必要なシグナルが不足します |
| competitor_coverage | 競合 CSV が 2 つ以上指定されている | 「共有シグナル」によって、実際の見込み先とノイズを区別できます |
| link_overlap_signal | 2 社以上の競合にリンクしている参照ドメインが 5 件以上ある | ドメインの共有がなければ、競合は実際には同じコンテンツ領域で競合していません |
status: ready には、4 つすべてのゲートを通過する必要があります(competitor_coverage: warn はブロック要因ではなく、ソフトシグナルです)。
優先度スコア(0~1、04-gap-run.json に表示)
priority = 0.40 × DR_normalised
+ 0.25 × link_count_normalised (how many competitors this domain links to)
+ 0.20 × traffic_normalised
+ 0.15 × topical_relevance
traffic より link_count を高く重み付けする理由: 競合 3 社中 3 社にリンクしているドメインは、明らかに自社の領域にあり、リンクを掲載する意思があります。トラフィックの多いドメインでも、1 社にしかリンクしていない場合は、そのうちの 1 社をたまたま記事で軽く取り上げただけの一流メディアかもしれません。
監査後
次のように尋ねます。「次のことを行いますか?
- 有望な候補の上位10件をデジタル PR ワークフローに送信しますか?(
/digital-marketing-pro:digital-pr) - 壊れたリンクの置き換え候補の上位5件に向けたピッチを作成しますか?(
/digital-marketing-pro:pr-pitch) - 成果を追跡するため、四半期ごとの再実行をスケジュールしますか?(
/digital-marketing-pro:seo-drift) - 有望候補のショートリストを開いて確認しますか?」
チェーンの引き継ぎ
このスキルは、より長いチェーンの最初の工程です。
/digital-marketing-pro:competitor-analysis— 適切な競合を選定します/digital-marketing-pro:backlink-gap— このスキル/digital-marketing-pro:digital-pr—06-prospect-shortlist.mdと08-outreach-templates.mdを使用します/digital-marketing-pro:pr-pitch— 有望候補ごとに個別のピッチを作成します/digital-marketing-pro:performance-report— このスキルを四半期ごとに再実行した結果が、「獲得リンク」KPI に反映されます
ヒントと注意事項
- 競合は多ければよいわけではありません。 焦点を絞った競合3〜5社のほうが、無作為に選んだ10社より効果的です。すべての競合が同じコンテンツ領域にある場合、「共通シグナル」の判定が最も効果を発揮します。
- 異なるエクスポーターの DR/DA は比較できません。 Ahrefs のエクスポートと Moz のエクスポートを混在させないでください。このスクリプトは、エクスポーター間の値を正規化できません。監査ごとにプロバイダーを1つ選んでください。
- 多くのエクスポートではトピックとの関連性が十分に提供されないため、ほとんどの場合、最も弱いシグナルです。 値がない場合、スクリプトはデフォルトで 0.5 に設定します。これは適切な中立値です。トピック関連性のスコアを精選している場合に限り、値を上書きしてください。
- 1週間に100件の有望候補へアウトリーチしないでください。 出力されるのはバックログであり、キューではありません。持続可能なペースは、アウトリーチ担当者1人あたり週3〜5件の、十分にパーソナライズされたピッチです。
- 壊れたリンクの候補は、最も高い成功率を示す傾向があります(壊れたリンクの置き換えを提案するピッチは通常、コールドピッチよりも大幅に高い返信率を得られます。「30〜60%対5〜15%」という数値は、実測値ではなく参考となる目安です。自社のアウトリーチデータで検証してください)。必ず最初に
07-broken-link-candidates.mdのリストに取り組んでください。 - 再実行は毎月ではなく、四半期ごとに行ってください。 被リンクデータの変化は十分に緩やかなため、毎月実行してもほとんどの場合、ノイズが生じるだけです。
- YMYL 業界(医療、金融、法律)では、E-E-A-T を損なう可能性のある、権威性の低いサイト運営者を除外するために
--min-dr 40を設定してください。
使用するエージェント
seo-specialist(主要)— 有望候補の質を評価しますcompetitive-intel— 競合セットの選定理由を示します(ステップ1)pr-outreach— アウトリーチ用テンプレートを作成します(ステップ8)brand-guardian— ステップ6で掲載禁止サイトを除外します
関連項目
/digital-marketing-pro:competitor-analysis— この監査の競合を選定します/digital-marketing-pro:digital-pr— 実際のアウトリーチを実施します/digital-marketing-pro:seo-drift— 差分を追跡するため、四半期ごとに再実行します/digital-marketing-pro:seo-audit— 自社プロフィールの健全性を含む、より広範なサイトレベルの監査を行いますscripts/backlink_gap.py— 基盤となるギャップ検出エンジン