mcpField
S
seo-drift

seo-drift

github.com/indranilbanerjeeマーケティング・グロース91462 回インストール1 日前に更新
リポジトリ

seo-drift について

seo-driftは、2時点のSEOデータを比較するデジタルマーケティング向けスキルです。変化を分類し、増加・減少項目や診断パターンを示して、優先アクション案を作成します。

主な機能

  1. 01基準と最新スナップショットの比較
  2. 02成長・減少・再編の分類
  3. 03指標の増加項目と減少項目の順位付け
  4. 04品質スコアカードによる入力検証
  5. 05優先アクション案の作成

活用シーン

  1. 01月次SEOパフォーマンスの確認
  2. 02コアアップデート前後の変化評価
  3. 03コンテンツ更新後の効果測定
  4. 04サイト移行前後のデータ比較

MCP 対応

aeo-auditの結果など、他のスキルが生成したスナップショットを分析できます。入力にはMCPの直接利用について記載されていません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/indranilbanerjee/digital-marketing-pro --skill seo-drift

インストール後、Claude Code で/seo-driftを入力して読み込まれたか確認します。

詳細

/digital-marketing-pro:seo-drift

スクリプトの場所。 ホストが ${CLAUDE_PLUGIN_ROOT} を設定しない場合、スクリプトはこのプラグインの skills/ と同じ階層にある scripts/ フォルダー内にあります。Python 3.10 以降で実行してください。python が見つからない場合は、python の代わりに python3 を使用してください(macOS、多くの Linux システム)。

目的

SEO パフォーマンスデータのスナップショットを 2 つ用意し、数週間、コアアップデート、コンテンツの更新、またはアルゴリズム変更を挟んで比較し、構造化された変動レポートを作成します。レポートには、上昇項目、下降項目、分類(成長/減少/順位変動/安定/新規/消失)、診断パターンが含まれます。従来の GSC、新しい GSC AI Performance Report、順位トラッカーのエクスポート、aeo-audit のプローブ結果に対応しています。

コンテキストの効率化

負荷の高いスキルです。参照するファイルはすべて、Read の前に Grep を実行し、一致した範囲のみを offset + limit で Read してください。ファイルを開く前に ${CLAUDE_PLUGIN_DATA}/<brand>/ の内容を一覧表示してください。セッション中に再度呼び出す場合は、すでにコンテキストにあるファイルをスキップしてください。

使用する場面

  • 月次パフォーマンスレビュー — 先月とその前の月を比較します
  • コアアップデートのトリアージ — アップデート前とアップデート後+安定化期間を比較します(ロールアウト完了から 14 日以上経過してから使用してください)
  • AI Mode の引用状況の追跡 — 四半期ごとの aeo-audit 出力を比較し、AI Mode の引用を獲得または失ったクエリを確認します(Google AI Mode の引用の差分は、オーガニック検索の減少を示す先行指標です)
  • コンテンツ更新の効果測定 — 計画したコンテンツ更新の前後を比較し、上昇分が更新によるものか、他の要因によるものかを判断します
  • GSC AI Performance Report — 新しい(2026 年 6 月 3 日)AI Overviews と AI Mode を統合したレポートの前月比を確認します
  • サイト移行の監査 — 移行前のベースラインと移行後の安定化期間を比較します

ある時点の分析には使用しないでください。 その場合は、ソーススキル(seo-audit、aeo-audit、gsc-ai-performance)を使用してください。

ブランドコンテキスト(自動適用)

  1. ~/.claude-marketing/brands/_active-brand.json でアクティブなスラッグを確認し、~/.claude-marketing/brands/{slug}/profile.json を読み込みます
  2. ブランドが存在しない場合は、「先にブランドを設定しますか(/digital-marketing-pro:brand-setup)?」と尋ねるか、デフォルト設定で進めます
  3. 業界固有のノイズしきい値には skills/context-engine/industry-profiles.md を適用します(YMYL 業界では、Quality Rater Guidelines による通常の変動を除外するため、より高い --noise を使用してください)

入力

入力ソース必須?
ベースライン CSV古いスナップショットはい
現在の CSV新しいスナップショットはい
結合キー自動検出(query、keyword、page、url)または --join-on フラグいいえ
ノイズしきい値--noise(デフォルトは 5%)— これを下回る変動率の指標は「安定」とします。YMYL 業界では、Quality Rater Guidelines による変動を除外するため、10% を使用してくださいいいえ
上位 N 件--top(デフォルトは 20)— 指標ごとの上昇項目/下降項目の件数いいえ

どちらのスナップショットも、同じソースから取得する必要があります。 GSC のエクスポートと Ahrefs のエクスポートを混在させると、異なるソースでは集計対象が異なるため、意味のない結果になります。

処理(10 ステップ、番号付きファイルへの出力)

すべての出力先は ${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{YYYY-MM-DD}/ です。

  1. 00-input.md — 基準期間、現在の期間、データソース(GSC / GSC AI / rank-tracker / aeo-audit)、ブランドのコンテキストを記録します
  2. 01-baseline.csv — 基準データのエクスポートをここにコピーします(数か月後でも差分実行を再現できるようにします)
  3. 02-current.csv — 現在のデータのエクスポートをここにコピーします
  4. 03-drift-run.json — スクリプトを実行します:
    python "${CLAUDE_PLUGIN_ROOT}/scripts/seo_drift.py" \
        --baseline "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{date}/01-baseline.csv" \
        --current  "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{date}/02-current.csv" \
        --top 30 --noise 5 \
        --out "${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/{date}/03-drift-run.json"
    
  5. 04-quality-scorecard.md — 03-drift-run.json から quality_scorecard を読み取ります。status: needs_review の場合は、次のように原因を特定します:
    • date_range_distinct: warn → スクリプトで自動検証できませんでした。基準期間と現在の期間が重複していないことを 00-input.md で手動確認します。
    • sample_size: fail → いずれかの入力データが 50 行未満です。行数制限を設けずに再エクスポートします。
    • metric_compatibility: fail → どちらの入力データにも数値指標がありません。列名が一致していないため、同じソースから再エクスポートします。
    • no_lookup_collisions: fail → いずれかの入力データにキーの重複があります(例:同じクエリ × ページの行が 2 回ある)。重複を削除して再エクスポートするか、--join-on を使って識別用の列を追加します。
  6. 05-biggest-gainers.md — 表示回数/クリック数/掲載順位で上位 10 件の上昇について説明します。それぞれについて、原因の仮説(新しいコンテンツ? 獲得した被リンク? Core Update による E-E-A-T の評価上昇? 強調スニペットの入れ替わり?)を示します。拡散候補を /digital-marketing-pro:content-engine に引き継ぎます。
  7. 05-biggest-losers.md — 上位 10 件の下落について説明します。それぞれに、トリアージマトリックス is_yMYL × had_recent_change × Core_Update_window を適用して、アクション(コンテンツの更新/元に戻された変更の復元/次のアルゴリズム更新まで待機/受け入れてリソースを再配分)を決定します。
  8. 06-ai-mode-shift.md (入力ソースが GSC AI Performance Report の場合のみ) — AI モードの表示回数が減少したクエリは、先行指標です。/digital-marketing-pro:aeo-audit と照合し、模擬プローブで引用が失われたことを確認します。
  9. 07-classification-distribution.md — 件数の表:
    • growth / decline / reshuffle / stable / new / lost
    • decline が 40% を超える場合:Core Update または競合他社の追い上げが原因と考えられます。診断には /digital-marketing-pro:seo-audit を実行します。
    • reshuffle が 20% を超える場合:検索意図の変化(AI モードの重み付け変更)が原因と考えられます。新たな検索意図のパターンに合わせるには /digital-marketing-pro:aeo-geo を実行します。
    • growth が 30% を超える場合:拡散の機会を見つけます。追加施策を企画するには /digital-marketing-pro:content-engine を実行します。
    • new が 15% を超える場合:新たな SERP の掲載状況を追跡し、検索意図との適合性を検証します。
  10. PLAN.md — 1 ページの概要:統計情報とスコアカードに加え、インパクト × 工数で順位付けした上位 5 件のアクションと、担当者の提案(SEO リード/コンテンツリード/開発チーム)を記載します。

出力形式

${CLAUDE_PLUGIN_DATA}/{brand}/seo/seo-drift/2026-06-04/
├── 00-input.md
├── 01-baseline.csv
├── 02-current.csv
├── 03-drift-run.json
├── 04-quality-scorecard.md
├── 05-biggest-gainers.md
├── 05-biggest-losers.md
├── 06-ai-mode-shift.md       (only when input is GSC AI Performance Report)
├── 07-classification-distribution.md
└── PLAN.md

品質スコアカード(4 つのゲート)

ゲート確認内容重要な理由
date_range_distinct基準期間と現在の期間が重複していないこと期間が重複すると、両方に同じデータが含まれ、誤検出の差分が生じます
sample_size各入力データが 50 行以上であることこれを下回ると、差分はノイズになります
metric_compatibility両方の入力データに数値指標が 1 つ以上あること列が異なる場合(例:Ahrefs と GSC)、比較できるものがありません
no_lookup_collisions入力データ内に重複キーがないこと重複があると、差分の計算が曖昧になります

status: ready となるには、サンプル数、指標の互換性、重複なしのゲートを通過する必要があります(期間の重複なしは warn であり fail ではありません。スクリプトでは日付を常に自動検出できるとは限らないためです)。

分類ルール

レポートの各行は、次のいずれかに分類されます。

分類条件解釈
growth2 つ以上の指標がノイズ%を超えて上昇し、10%を超えて低下した指標がない明確な成果 — 拡大策を検討します
decline2 つ以上の指標がノイズ%を超えて低下し、10%を超えて上昇した指標がない明確な損失 — YMYL × Core Update 期間に基づいて優先度を判断します
reshuffle反対方向への大幅な変動(例:表示回数は増加、掲載順位は低下)AI Mode の特徴 — コンテンツがより広く表示される一方、対象となる検索意図がやや異なっています
stableどの指標もノイズ%を超えて変動していない対応不要
newベースラインにはなく、現在のデータに存在する新しいコンテンツ、または新しい SERP での表示範囲 — 推移を追跡します
lostベースラインには存在するが、現在のデータには存在しないコンテンツが削除された、インデックスから除外された、または追跡期間から外れた

掲載順位は例外です:掲載順位は、数値が小さいほど良いことを意味します。このスクリプトは、増減のランキングで掲載順位の差分の方向を自動的に反転します。掲載順位が最も上昇したページとして -85.9% と表示される場合、そのページは掲載順位 12 位から 2 位に上がっています。

スキル間の引き継ぎ

このスキルは通常、データを受け取り、診断する役割を担います。

  1. /digital-marketing-pro:gsc-ai-performance、seo-audit、または aeo-audit — スナップショットを生成します
  2. /digital-marketing-pro:seo-drift — このスキル
  3. 調査結果に応じて分岐します:
    • 大幅な低下 → 技術面の確認には /digital-marketing-pro:seo-audit、コンテンツ面の確認には /digital-marketing-pro:content-decay-scan
    • 大幅な変動 → 検索意図の再調整には /digital-marketing-pro:aeo-geo
    • 大幅な成長 → 拡大施策のブリーフ作成には /digital-marketing-pro:content-engine

ヒントと注意事項

  • Core Update の展開中は実行しないでください。 Google が「展開完了」と発表してから、変動が落ち着くまで 7~14 日待ちます。展開中の差分は信頼できません。
  • 掲載順位の差分は、表示回数やクリック数の差分よりノイズが多くなります — 掲載順位 8 位と 12 位の間で変動するページでは、意味のない ±30% の掲載順位差分が生じます。診断では、表示回数やクリック数の変動をより重視してください。
  • GSC のデータには約 3 日の遅延があります。 「今月」のデータを取得するときは、昨日ではなく、3 日前を終了日とする期間を指定してください。
  • GSC AI Performance Report(2026 年 6 月 3 日)にはクリックデータがありません。 AI レポートのドリフトは、表示回数のみのドリフトです。そこから CTR のドリフトを計算しようとしないでください。
  • Core Update の影響を判断するには、ドリフト分析を 2 回実行します:アップデート前と展開完了翌日(「直後」)の比較、およびアップデート前と 14 日後(「安定後の状態」)の比較です。この 2 つの結果は食い違うことが多く、重要なのは 14 日後のデータです。
  • reshuffle 分類は先行指標です — reshuffle の件数が急増した場合、検索意図の重み付けが変化しています。翌四半期のドリフトでは、通常、成長や低下がより明確に表れます。すぐに対応しないでください。

使用するエージェント

  • analytics-analyst(主担当)— 解釈と原因の仮説
  • seo-specialist — 低下の技術的原因に関する仮説
  • competitive-intel — 低下が競合の成果と相関している場合
  • market-intelligence — アルゴリズム更新の状況(期間中に Core Update があったかどうか)

関連項目

  • /digital-marketing-pro:gsc-ai-performance — GSC AI Performance Report を取得します(入力元)
  • /digital-marketing-pro:seo-audit — 低下の原因を診断します
  • /digital-marketing-pro:aeo-audit — AI Mode での引用減少を診断します
  • /digital-marketing-pro:content-decay-scan — コンテンツ面の低下を優先度順に確認します
  • /digital-marketing-pro:content-engine — 成果が上がったページを拡大します
  • scripts/seo_drift.py — 基盤となるドリフトエンジン

コメント