Community研究&データ分析github.com

ChaoticSurfer/seo-suite

検索パフォーマンス分析、トラフィック低下診断、SEOレポート作成。

seo-suite とは?

本スキルは、Search Console、Bing Webmaster、GA4、サーバーログなどのファーストパーティデータを活用し、トラフィック低下の原因を決定的な判断ツリーを用いて診断し、SEO対策の効果を測定するための包括的なツールスイートです。主な機能として、好機分析(例:ストライキングディスタンスキーワードの発見、CTR最適化の機会、キーワードカニバリゼーションの特定)、期間比較(トラフィック低下の診断)、レポートダッシュボードの構築(Looker Studio無料版対応)、およびSEO変更の効果検証(事前登録によるA/Bテスト)を提供します。Googleのアップデートがサイトに与えた影響を評価するための判断基準も含まれており、有料ツール(SemrushやAhrefs)の費用対効果を正当化するための指針も提供します。このスキルは、Claude Code, Cursor, CodexなどのAIエージェント向けに設計されており、`gsc_analyze.py`や`log_analyze.py`といったスクリプトでデータ分析が可能です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ChaoticSurfer/seo-suite/tree/HEAD/skills/seo-analytics

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

分析: 計測、診断、レポート作成

ファーストパーティデータ(Search Console、Bing Webmaster、GA4、サーバーログ)を意思決定に変えます。固定的な判断ツリーで低下を診断し、変更を正直に測定します。

いつ使うか/使わないか

以下のために使用します:

  • Search Console、Bing Webmaster、GA4のエクスポートデータ。
  • トラフィック低下やアルゴリズムアップデートに関する質問。
  • CTR最適化のターゲット。
  • カニバリゼーション。
  • クロールログ分析。
  • KPIダッシュボード。
  • 事前/事後テスト。

以下のためには使用しません:

  • サイト内の欠陥を探す → seo-technical、seo-audit。このスキルは、低下ツリーがそれらを指している場合に呼び出します。
  • 新しいページのキーワードアイデア → seo-keywords。
  • 競合の可視性 → seo-competitors。

収集する入力

  • Search Console パフォーマンスエクスポート。
    • UIエクスポート: Queries.csv / Pages.csv(上位1,000行のみ)。
    • APIまたはLooker Studioエクスポート(クエリ+ページ行を含むもの): カニバリゼーションに必要。API制限: リクエストあたり25,000行、種類あたり1日約50,000行(google-rules §11)。
    • 比較用: 同じ長さ、平日に揃えた2つの期間、最後の2~3日を除外(GSCデータは遅延します)。
  • ブランド正規表現。 ブランド名とそのスペルミス。(例)acme|acme ?corp|アックメ
  • オプション:
    • Bing Webmasterエクスポート(同じ形式。gsc_analyzeで動作)。
    • GA4オーガニックランディングページレポート。
    • サーバーアクセスログ(.log / .gz)。
    • サイト変更、デプロイ、移行の日付。
  • 低下の場合: いつ始まったか、どのセクション/国/デバイスか、コンバージョンも低下したか。

ワークフロー

A. 好機分析(GSC/Bingエクスポート)

  1. 分析を実行:

    mkdir -p seo-work
    python3 "${CLAUDE_PLUGIN_ROOT}/scripts/gsc_analyze.py" Queries.csv --brand "brand|brnd" --min-impressions 50 > seo-work/gsc.json
    python3 "${CLAUDE_PLUGIN_ROOT}/scripts/gsc_analyze.py" query_page.csv --brand "brand" > seo-work/gsc-qp.json   # カニバリゼーション
    

    フラグ: --striking-from 4 --striking-to 20(デフォルト); 大規模サイトでは--min-impressionsを引き上げます。

  2. striking_distance(順位4~20、est_extra_clicks_at_pos3 [推定値]でソート)を読みます。これらは最初に改善するページです。それぞれをクエリと共にseo-onpage / seo-contentに渡します。

  3. ctr_underperformersを読みます。CTRがこのサイト自身のその順位における中央値CTR(ctr_curve_used; データが少なすぎる場合はデフォルトにフォールバック)の半分未満である上位10クエリ。

    • 原因: 弱いタイトル/スニペット、結果の上のSERP機能やAI Overview、または意図の不一致。
    • 書き換える前に、WebSearchで実際のSERPを調査します。
  4. question_queries: FAQセクションや回答優先のパッセージ(seo-content、seo-ai-search)のための素材。

  5. brand_split: 非ブランドクリックを別途報告します。ブランド需要はSEOパフォーマンスではありません。

  6. cannibalization: 2ページ以上がそれぞれインプレッションの10%以上を獲得しているクエリ。ケースごとに判断: 統合+301、意図の差別化、または内部リンクを主要ページに向ける。すべての分割が問題とは限りません: 両方のページがうまくランクしている場合はそのままにします。

B. 期間比較とトラフィック低下診断

  1. 比較を実行:

    python3 "${CLAUDE_PLUGIN_ROOT}/scripts/gsc_analyze.py" last_28d.csv --compare prev_28d.csv > seo-work/gsc-compare.json
    

    各損失クエリにはlikely_causeが付けられます:

    • "rankings dropped"(ランキング低下)
    • "fewer impressions at similar rank"(同程度の順位でインプレッション減少)
    • "CTR fell at similar rank"(同程度の順位でCTR低下)

    これらはヒューリスティックです。「矛盾しない」という表現で伝えます。

  2. 低下ツリーを順番に辿り、証拠が裏付ける最初のブランチで停止します。各ブランチの証拠を記録します:

    1. 低下は本物か?

      • GSCクリックとGA4オーガニックセッションを比較し、トレンドの方向性を確認(10~20%のレベル差は許容)。
      • GA4のみの低下 → トラッキング/同意/タグの問題であり、SEOではない。
      • 前年同期比で季節性を排除。
    2. 技術的な問題。 並行して実行:

      • robots_check.py
      • sitemap_check.py
      • page_audit.py(損失の大きい上位URLに対して)
      • crawl.py(影響を受けたセクションに対して)

      以下を確認:

      • noindex、正規URLの変更、5xx/429、robotsブロック、リダイレクト変更、ボットチャレンジ(bot-challenge)。
      • 低下日当日のデプロイ。
      • Search Console ページインデックスレポートの「除外」の急増(seo-technical)。
    3. アルゴリズムアップデート。 低下日をGoogle Search Status Dashboard(https://status.search.google.com/ → ランキングインシデント;取得可能)と比較します。形状が重要:

      • アップデート日におけるサイト全体の段階的変化は、システムの再評価(有用なコンテンツ / コア / スパム)と一致します。google-rules §4を参照。
      • セクション固有の変化は、ページレベルの問題を示します。
      • Search Consoleに手動対策が表示されていない限り、「ペナルティ」とは決して言いません。
    4. 季節性 / 需要。 GSCの前年同期比(16ヶ月分のデータ;google-rules §11)、および主要クエリのGoogle Trends。安定した順位でインプレッション減少 = 需要の減少。

    5. SERPの置き換え。 順位は安定しているがCTRが低下。WebSearchでクエリを確認:

      • AI Overviewが存在するか?新しい機能(動画、PAA、ショッピング、フォーラム)は?広告は?
      • Search Consoleの「Search generative AI performance」レポートは利用可能か?(google-rules §10)
    6. 競合。 特定のURLに順位を奪われた → seo-competitors(勝者のページをcompare_pages)。Wayback CDXで競合のページがいつ変更されたかを確認。

  3. ログデータが利用可能な場合:

    python3 "${CLAUDE_PLUGIN_ROOT}/scripts/log_analyze.py" access.log access.log.1.gz --verify-dns --sitemap-urls seo-work/urls.txt > seo-work/logs.json
    

    以下を確認:

    • 1日あたりのGooglebotヒット数の減少(クロール容量の問題: 5xx/429またはサーバー応答遅延;google-rules §1)。
    • ボットに提供されたエラー。
    • パラメータURLの割合(クロールの無駄)。
    • サイトマップパスがクロールされていない。
    • 偽の「Googlebot」IP(unverified_ips)。
    • AIボット(OAI-SearchBot、Claude-SearchBot、PerplexityBot)がサイトに到達しているかどうか。

C. レポートとダッシュボード

  • KPI。 先行指標と遅行指標を区別:
    • 先行: インデックスされたページ(GSC)、インプレッション、ターゲットクラスターの平均順位、CWV合格率、クロールエラー。
    • 遅行: 非ブランドクリック、オーガニックコンバージョン/収益(GA4)、AI引用率(seo-ai-search)。
  • 無料ダッシュボード: ネイティブのSearch Consoleコネクタ(サイト+URLインプレッションテーブル)とGA4コネクタを使用したLooker Studio。ページ:
    • 概要。
    • 非ブランドトレンド(正規表現フィルター)。
    • クラスター(URLパスグループ化)。
    • 好機(順位4~20)。
    • CWV(CrUXコネクタ、またはpsi.pyスナップショット)。
  • 月次レポート: 何が変わったか、なぜか(証拠付き)、何をしたか(SEO-WORKLOG.mdから)、次に何をするか。

D. SEO変更の効果測定

  1. 事前登録。 変更前に、ワークログに以下を書き留めます:
    • 変更されたURL。
    • コントロールURL(類似、未変更)。
    • メトリック(ターゲットクエリのクリック/インプレッション/CTR/順位)。
    • 期待される方向性。
    • 期間: インデックス後4週間以上;URLインスペクションで再クロール日を確認。
  2. 両グループの前後で同じ長さの期間をエクスポートし、各グループでgsc_analyze.py after.csv --compare before.csvを実行します。
  3. 処置グループの変化からコントロールグループの変化を引いたものを報告します。ページ数が少ないかクリック数が少ない場合は、「結論が出ない」と言います。単一の事前/事後比較から因果関係を主張してはいけません。

ランクトラッキング

  • 無料: クエリごとのSearch Console平均順位(インプレッション加重、全ロケーション)。トレンドには十分ですが、「今の自分の位置」を表示するビューではありません。

  • 有料: 固定キーワードリストの日次順位、ロケーション/デバイス別、SERP機能付き。以下の場合に正当化:

    • ローカルまたは複数都市のランクが重要な場合、
    • クライアント契約でランクレポートが必要な場合、または
    • まだインプレッションがないキーワードを追跡する必要がある場合。

    オプション: Semrush Position Tracking、Ahrefs Rank Tracker、SE Ranking、またはスクリプトチェック用のDataForSEO SERP API(tools.md)。

チェックリスト

チェック項目ルールソース
比較期間は同じ長さ、平日揃え、最後の2~3日を除外GSCデータは2~3日遅延google-rules §11 [Googleドキュメント]
GSCデータ保持期間16ヶ月google-rules §11 [Googleドキュメント]
「ペナルティ」という主張手動対策レポートエントリがある場合のみgoogle-rules §4 [Googleドキュメント]
AI Overviews/AI Modeのトラフィックパフォーマンス → Web内にカウント;別途クリックはなしgoogle-rules §10 [Googleドキュメント]
Googlebotクロール率低下5xx/429/応答遅延と一致google-rules §1 [Googleドキュメント]
CTR期待値まずサイト自身の曲線;デフォルトはヒューリスティックヒューリスティック
カニバリゼーションの閾値2ページ以上がインプレッションの10%以上、かつ100インプレッション以上ヒューリスティック

データ: 無料 vs 有料

無料でここにあるほとんどすべてをカバーできます。 Search Console(+API)、Bing Webmaster(+そのAIパフォーマンスレポート、利用可能な場合;google-rules §10)、GA4、Looker Studio、サーバーログ、Google Search Status Dashboard、Google Trends。

有料で追加されるもの(${CLAUDE_PLUGIN_ROOT}/references/tools.mdを参照):

  • Semrush / Ahrefs。
    • 競合の可視性履歴とキーワードの動き(自社データはGSCの方が優れています)。
    • アルゴリズム変動センサー(Semrush Sensor)で、低下が業界全体かどうかを確認。
    • 「自分だけか?」という疑問に対するアップデート時の正当化。
    • コスト節約術: 完全なプロジェクトではなく、無料のSensorページと1競合のOrganic Research履歴を確認。
  • ランクトラッカー: 上記参照。マネーキーワードのみを追跡し、重要なロケーション/デバイスに制限します。ほとんどのツールはキーワード×ロケーション×デバイス×頻度で課金されるため、変動の少ないセットでは日次より週次の方が望ましい。
  • Screaming Frog Log File Analyser(## Screaming Frog)。ログが巨大でユーザーがGUIを好む場合に有用。log_analyze.pyは中核的な質問を無料でカバーします。

サードパーティのトラフィック数値には[ベンダーデータ] / [推定値]とラベルを付けます。これらはモデル化されたものであり、測定されたものではありません。

出力

  1. seo-work/gsc.jsonなど、および簡潔な発見事項の要約:
    • 上位10のストライキングディスタンス好機: クエリ、ページ、推定追加クリック数 [推定値]。
    • 上位のCTR修正点。
    • カニバリゼーションの判断。
  2. 低下診断: 各ブランチに✅/❌と証拠を付けたツリー、「矛盾しない」という表現での最も可能性の高い説明、および適切なスキルにルーティングされる次のアクション。
  3. KPI/ダッシュボード仕様(Looker Studioデータソース、フィールド、フィルター)または月次レポートのドラフト。
  4. 実験記録(事前登録+結果)。

落とし穴と誤解

  • 平均順位はすべてのクエリ/ロケーションにわたるインプレッション加重です。新しい2ページ目のランキングは、トラフィックが増加している間に平均を下げる可能性があります。
  • UIエクスポートは1,000行に制限されており、匿名化されたクエリは非表示になるため、合計はチャートと一致しません。
  • アップデート日における低下は、そのアップデートが原因であることの証明にはなりません。 最初に技術的原因とトラッキング原因を除外します。
  • 季節性ビジネスでは前月比より前年同期比が優れています。
  • クリックが減少しつつインプレッションが維持されているのは、多くの場合AI Overviewsまたは別のSERP機能であり、ランキング損失ではありません。
  • **GA4の「オーガニック」**は同意モードとチャネルグルーピングに依存するため、低下日の設定変更を確認してください。
  • クリックベイトのタイトルでCTRを最適化しないでください。 Googleはそれらを書き換える可能性があります(google-rules §3)。

作業を記録する

SEO-WORKLOG.md(${CLAUDE_PLUGIN_ROOT}/references/worklog.md)に追記:

  • 使用したエクスポート(日付範囲)。
  • 実行したスクリプト。
  • 証拠タグ付きの発見事項。
  • 診断結果。
  • 事前登録された実験。
  • 有料ツールの使用状況。
  • 再確認日(例:「タイトルテストのために2026-11-21にGSCを再取得」)。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

ChaoticSurfer/seo-suite

Use for visibility in AI answers (AEO, GEO, "LLM SEO") — "get cited by ChatGPT / Perplexity / Google AI Overviews / AI Mode / Copilot / Claude / Gemini", "why doesn't ChatGPT mention us", "should we block GPTBot or ClaudeBot", "AI crawler access", "do we need llms.txt", "track our AI visibility", "brand in AI answers", "opt out of AI Overviews". Covers eligibility, crawler policy by purpose (search vs user-fetch vs training), Bing indexing for ChatGPT and Copilot, consistent entity facts, citable content, off-site sources, and repeatable measurement with confidence intervals. Not for: classic keyword and ranking work (seo-keywords, seo-content), schema validation (seo-schema), Business Profile and maps (seo-local), traffic-drop forensics (seo-analytics).

ChaoticSurfer/seo-suite

Competitor and SERP analysis. Use for "who are my SEO competitors", "why does X outrank me", "compare my page with the top results", "competitor content gap", "keyword gap vs competitors", "what is ranking for <keyword>", "SERP features for <keyword>", "competitor backlinks", "how much traffic does competitor get", "what did competitor change on their page", "monitor competitor sites". Finds real SERP competitors (not just business rivals), compares pages with compare_pages.py, inventories SERP features and intent, tracks competitor page changes via the Wayback Machine, and states exactly when Semrush/Ahrefs/Similarweb are worth paying for. Not for keyword discovery from seeds (seo-keywords), link building execution (seo-links), or your own traffic analysis (seo-analytics).

関連スキル