seo-aeo-audit — 検索エンジン+回答エンジンの可視性を監査し、計画を納品する
1つの仕事: 実際のサイトを確認し、証拠をもって問題点を証明し、優先順位のついた変更計画を手渡すこと。これは、従来の検索エンジン(Google、Yandex、Bing)と回答エンジン(AI概要/AIモード、ChatGPT、Perplexity、Claude、Copilot、Gemini、Alice AI)の両方をカバーします。
このスキルが担当しないこと: コンテンツの作成、ページの構築、リンクの購入。検証済みの診断と実行可能な計画の作成で完了です。
絶対条件
- 証拠がないなら黙秘。 すべての発見事項には、観察した内容、場所(
URL、ファイル:行、レポート名)、観測値、および日付を添付すること。自分でこのサイトで検証していない発見事項は決して報告しないこと。「ベストプラクティスによると」は証拠ではありません。 - すべての推奨事項に証拠レベルをラベル付けする(references/evidence-tiers.md参照):
CONFIRMED(エンジンによって文書化されている、またはこのサイトで再現された)·STUDY(公開された複数サイトデータ)·FIELD(単一ケースレポート)·HYPOTHESIS。HYPOTHESISがCONFIRMEDのブロッカーを上位にランク付けさせないこと。 - 処方箋を書く前に診断する。 原因が特定されるまで、修正案を計画に含めないこと。「スキーマを追加」は診断ではありません。
- 神話リストを拒否する。 下記の「神話ガード」を参照 — それらを推奨することはクライアントの予算を無駄にし、親切心ではなく欠陥です。
- 欺瞞的な手法を決して推奨しない。 クローキング、偽造されたコンセンサスネットワーク、レビュー操作、競合他社に対する権利侵害申し立ての悪用、クリックシグナルのスプーフィングは計画に含めないこと。これらはこのスキルでは、references/threats-and-defense.mdに、検出および防御すべきものとしてのみ登場します。
- チェックできなかったことを明記する。 GSCログインがないことはレポートのギャップであり、黙って省略することではありません。
- 計測値と推定値を決して混在させない。 1つの成果物が両方を含む場合 — リンク構築CSVは常にそう —
source列でそれらを分離し、計測されていない行のボリュームセルは空白のままにし、0にしないこと。0は「計測済み、需要なし」と読まれ、空白は「誰も確認していない」と読まれます。この区別は、誰かが予算で実行する作業で最も重要です。 - 各ツールの死角を把握し、出力に明記する。 ルール1と7はあなたが書く内容を規定しますが、あなたが見る前にツールが情報を混在させたり省略したりするのを見逃します。常に2つのケースが発生します。静的フェッチでは、CMSがJavaScriptで注入するJSON-LDを見ることができないため、「スキーマが見つかりません」は、Yoast/RankMath/AIOSEOサイトでは誤った発見です —
scripts/page_audit.pyはすべてのスキーマインベントリの横に注意書きを出力し、不在はレンダリングチェック後にのみ報告可能です。同意モードモデリングを使用したGA4は、観測された動作と推定された動作を1つの数値内に返します — references/measurement.md J1で、3つのアクティベーション条件、可視インジケーター、観測のみのフォールバックを確認してください。このルールは一般化されます: ツールの沈黙が発見事項になる前に、そのツールがそもそもその対象を確認できたかを立証してください。
ステップ0 — モードを検出し、二度尋ねない
まず検査し、その後行動する。順番に:
docs/seo/(またはユーザーが指定したパス)を読む。以前の監査が存在する場合、この実行は再監査です: 差分を取って、何が変わったかを最初に報告する。- 到達可能なものを特定する: ライブサイト、ステージングURL、
robots.txt、sitemap.xml、Search Console / Bing Webmaster / アナリティクスへのアクセス、クロールエクスポート(Screaming Frog、Sitebulb)、サーバーログ、接続されたMCPツール(Ahrefs、GSC、アナリティクス、クローラーMCP、または大量の競合データおよび需要データをベンダーシートなしで取得するためのProwl MCP)。 アクセスをテストし、想定しないこと。 接続されたサーバーが動作するとは限りません: API階層はエンドポイントを制限し、トークンはダッシュボードが示唆するよりも狭いスコープを持ちます。各ソースが使用される前に、そのための1回の呼び出しをプローブし、何が返ってきたかを記録する — 「接続されたがInsufficient planを返す」は、次の監査が必要とする発見事項です。 - ユーザーとスコープを決定する(ただし、答えが作業を変える場合のみ): サイト全体、1つのテンプレート/セクション、1つの質問(「なぜ5月にトラフィックが落ちたのか」)、またはリンク構築抽出 — ターゲット、キーワード、アンカーテキストを請負業者向けに。これは診断ではなく成果物です: それが依頼である場合はreferences/linkbuilding.mdを読んでください。Search Consoleがなくても機能します。
- 3行でステータスを報告する — 利用可能な入力、不足している入力、スコープ — その後開始する。実行の最後に、正確に1つの次のアクションを提案する。
scripts/preflight.pyは、このステップ2の自動化可能な半分を実行します。つまり、scripts/preflight.pyはこのステップの自動化可能な半分を実行し、どの独立したゲートで障害が発生したかを報告します — Search Console、GSC API、PageSpeedはすべて異なる理由で403を返します。references/preflight.mdを読んで、何をプローブし、何をあなたに任せるか(Bing/Yandex、アナリティクス、サーバーログ、クロールエクスポート、すべてのMCPツール)を正確に確認してください。緑色のpreflightは、カバーされたステップを意味しません。
# Claude Code プラグイン: ${CLAUDE_PLUGIN_ROOT}はスキルコンテンツ内で展開されます。
SKILL_DIR="${CLAUDE_PLUGIN_ROOT}/skills/seo-aeo-audit"
# その他のチャネル: ハーネスがこのスキルをロードするときに指定するベースディレクトリ
# — このSKILL.mdが存在するディレクトリ。依存する前に確認してください:
ls "$SKILL_DIR/scripts/preflight.py"
ここでNo such file or directoryは、機能が欠落していることでも、黙って続行する理由にもなりません。6つのツールが到達不可能であることを意味し、それらが実行するはずだったすべてのチェックは証拠のはしごの最下位に落ちます — そして発見事項の段位がその階層を制限します。3行ステータスでその旨を述べてください; 黙って手動監査になった監査は、その結論の価値を変えてしまいます(絶対条件#6)。
python3 "$SKILL_DIR/scripts/preflight.py" --site sc-domain:example.com --origin https://example.com
アクセスルール: デフォルトで読み取り専用。フォームの送信、インデックス登録のリクエスト、リンクの否認、またはライブプロパティの変更は、このセッションで明示的な承認なしに行わないこと; これらは外部に向けたアクションです。
ステップ1 — 意見の前にベースライン
日付を記録して記録し、後ですべての主張を測定できるようにする:
- 国およびデバイス別のオーガニッククリック数 / インプレッション数 / 平均掲載順位、12ヶ月分(GSC + Bing)、および該当する場合は減少または停滞期間;
- テンプレートごとのインデックス登録されたURL数と公開URL数(
site:は目安、GSC Pagesレポートが正確な数値); - 収益またはコンバージョンの上位20ページとその現在の順位;
- AIサーフェスのベースライン: references/aeo-geo.mdのブランドおよびカテゴリのプロンプトセットを、到達可能な各エンジンに対して実行し、回答をそのまま記録;
- どのAIクローラーが実際にサイトをフェッチしているか(サーバーログ; スプーファーをフィルタリングするための前方確認付き逆DNS)およびどのAIリファラーがアナリティクスに表示されるか;
- 更新タイムライン: 曲線のすべての変化を、原因に関する仮説を立てる前に、references/algorithm-updates.mdと日付で一致させる。
ファーストパーティのアクセスがまったくない場合は、3行ステータスでその旨を述べ、サードパーティのインデックスが確立できるものにフォールバックする: ドメインが現在ランクしているキーワード、リンクプロファイルのサイズ(適切なサイズの競合セットと比較)、ターゲットフレーズに測定可能な需要があるかどうか(references/prowl-mcp.md)。そのベースラインはSTUDYに制限され、「なぜこのページがインデックスされていないのか」には答えられません — しかし、コールドスタートと下降を区別するには十分であり、これらは逆の計画を必要とします。
サイトがトラフィック減少を主張する場合、まずレポート障害とランキング障害を区別する: 凍結されたGSCレポートはクリックを1つの日付に固定しますが、実際のヒットは新しい下降ポイントを生成し続けます。アルゴリズムの原因を診断する前に、GA4セッション、サーバーログ、独立したランクトラッカーをクロスチェックしてください。
ステップ2 — 10のトラック
スコープ内のすべてのトラックを実行する。各トラックには、具体的なチェック、2026年以降の落とし穴、およびキャプチャすべき証拠を含む独自のリファレンスファイルがあります。
| # | トラック | 回答 | リファレンス |
|---|---|---|---|
| A | アクセスとインデックス登録の経済性 | ボットはこれをフェッチ、レンダリング、そして支払いできるか?クロール予算はどこで消費されているか? | technical-checks.md |
| B | 正規化と重複 | どのURLが正規URLか、エンジンはそれに同意しているか?hreflangを含む。 | technical-checks.md |
| C | アーキテクチャとリンクエクイティ | マネーページは権威、深さ、クロール頻度を得ているか? | architecture-and-equity.md |
| D | インテントとSERP適合性 | 各ページはSERPに一致しているか、ページはカニバリゼーションを起こしているか? | intent-and-content.md + onpage-checks.md |
| E | コンテンツ価値 | AIが再現できないランク付けの理由はあるか? | intent-and-content.md + ranking-model.md |
| F | 抽出可能性とAEO/GEO | 回答エンジンはそれを取得、読み取り、引用できるか? | aeo-geo.md |
| G | エンティティとブランドコンセンサス | モデルはブランドを一貫して知り、名前を挙げているか? | entity-and-brand.md |
| H | エクスペリエンス、コンバージョン、アトリビューション | タスクはここで完了したか、それとも跳ね返されたか?コンバージョンし、測定されたか? | experience-signals.md + demand-and-conversion.md |
| I | リスクと脅威 | ペナルティ、ハイジャック、インジェクション、テイクダウン。 | threats-and-defense.md |
| J | 測定 | 誰かが計画が機能したかどうかを判断できるか? | measurement.md |
Discoverは10のトラックの1つではなく、トラックAの一部でもありません。 独自のランキングパス、独自のゲート(2つのメタタグ、なしではカードがまったく表示されない)、独自の鮮度曲線を持っているため、Discoverが主要なトラフィックソースであるサイトは、references/discover.mdを11番目のパスとして実行する必要があります — そうでないサイトは完全にスキップできます。決定する前にGSC Discoverレポートを確認してください: リファレンスはこのファイルの下部のリストからのみ到達可能に発送されていたため、トラックを順番に処理するエージェントがそれを開くことはありませんでした。
減少診断の前に、references/algorithm-updates.mdの日付調整と更新応答プロトコルを実行してください — 「コアアップデートがヒットした」は発見事項ではなく、文書化されたGSC障害の半分はロールアウトと同時に発生しました。
各トラックには2つの半分があります: 診断作業(何が間違っていてなぜか)と、完全性のための機械的スイープ — トラックA/B用のtechnical-checks.md §A3と、トラックD/E用のonpage-checks.md。まず診断を実行し; その後スイープで退屈な障害をキャッチし、観測可能な影響があるスイープ項目のみが発見テーブルに昇格されます。
順序は重要です。 トラックAのブロッカー(サイトがフェッチ不可、プリレンダーソースにnoindex、手動措置)は、他のすべての発見事項を無意味にします — 手動措置はバイナリ乗数です: それが解除されるまで、改善したものは何もカウントされません。F/Gに時間を費やす前に、A → B → Cと作業してください。
証拠のはしご — 完全なルーティングはreferences/tooling.mdにあります; これは証拠の強度、利便性ではなく順序付けられています: サーバーログ → Search Console / Bing / Yandex → フルクロール → フィールドパフォーマンスデータ → サードパーティインデックス → 手動フェッチとDevTools。各チェックで実際に到達可能な最上位の段を使用し、どの段に発見事項が依存しているかをレポートに明記してください。プロパティアクセスなしの公開のみの監査は有効な作業ですが、そのインデックス登録とクエリの発見事項は推測であり、観察ではなく、それに応じて階層化されます。
6つのバンドルスクリプト — preflight.py、gsc_pull.py、page_audit.py、url_inspection.py、sitemap_audit.py、psi_pull.py — すべてのトラックの機械的な半分を収集します。references/scripts.mdを読んで、呼び出し、フラグ、クォータ、スクリプトごとの制限を確認してください。
発見事項が本物かどうかを決定する4つのトラップ:
page_audit.pyのスキーマインベントリは、サーバーレンダリングされたHTMLのみを読み取ります。CMSがJavaScriptでJSON-LDを注入する場合、空のインベントリはマークアップがないことの証拠ではありません(絶対条件#8)。--format jsonは、1つのURLの場合でも、ページごとに1つのオブジェクトを含む配列を出力します:data[0]でインデックスアクセス。--max-bytesによって切り捨てられた応答は、断片を測定値として公開するのではなく、カウントベースの発見事項をすべて削除します。- 出力されるすべての発見事項には、重大度と同様に証拠レベルが含まれ、トリアージ式に入力されるのはレベルのみです。 重大度は発見事項がどれほど深刻かを示します; レベルはそれを裏付けるものです。
url_inspection.pyは、フェッチから推測するのではなくインデックスに問い合わせます。これは発見事項がCONFIRMEDに到達する唯一の方法です — プロパティごとに1日2000、1分600のクォータがあるため、テンプレートごとに1つのURLと、発見事項が実際に関係しているページをサンプリングしてください。
ステップ3 — トリアージ
すべての発見事項をスコアリングし、並べ替える。ランク付けされていないリストを提示しないこと。
優先順位 = (影響度 × 確信度) / 工数
- 影響度 1–5: 収益ページがブロックされている = 5; テンプレート全体のリーク = 4; 単一の情報ページ = 1。ベースラインが許可する場合、トラフィックまたは収益の観点で推定する。
- 確信度: CONFIRMED 1.0 · STUDY 0.7 · FIELD 0.4 · HYPOTHESIS 0.2。
- 工数 エンジニアリング日数で1–5、リリースプロセスを含み、編集だけではない。
出力を次の4つのバケットにグループ化し、この順序で:
- ブロッカー — インデックス登録、ペナルティ、ハイジャック、収益ページが到達不能。
- リーク — クロール予算、エクイティ、カニバリゼーション、読み取り予算の浪費。
- ゲイン — インテント適合性、情報ゲイン、抽出可能性、エンティティコンセンサス。
- 実験 — CONFIRMED未満で、ロールアウトではなく分割テストに値するもの。references/experiments.mdに従って設計すること;
HYPOTHESISは決してロールアウトしない。
ステップ4 — 変更計画
以下の内容を含めます:
- 影響度、確信度、工数、証拠レベル、優先順位スコアを備えた、優先順位順に並べられたすべての発見事項のテーブル。
- 各トリガー(手動アクション、GSC一致、サーバーログパターン)の証拠へのリンク。
- 各推奨事項に期待される結果と測定方法。
- 各変更の依存関係と推奨される順序。
リンク構築がスコープ内にある場合:
- references/linkbuilding.mdに従って、ターゲット、キーワード、アンカーテキスト、見積もり需要を含むCSVを生成する。
source列は、計測値(Search Console、Ahrefs、Prowl)を推定値(関連キーワードの平均CTR、サイズ調整された競合リンク予算)から分離する。 - 不足している行のボリュームは空白のままであり、0ではない。
ステップ5 — 結論
3行で要約する:
- ブロッカー: 即時対応が必要なもの。
- ゲイン: 最大の投資収益率をもたらすもの。
- 次は: 発見事項を解決するためのフォローアップアクション。
「監査は此処で終わるが、仕事は始まったばかりである。」
神話ガード
以下は、多くのSEOツールやコンサルタントが推奨するが、実際のエンジンメカニズムによって裏付けられていないため、このスキルの計画には登場しない。もし出現した場合は、バグとして報告すること:
- TF*IDFの最適化 — エンジンはこれを使用しない。
- キーワード密度 — 測定可能な信号ではない。
- 過剰な内部リンク(ページあたり100以上、など)— リンクは文脈に基づいており、数ではない。
- メタキーワードタグ — 使用されていない。
- 著者バイライン — Googleにとってのランキング信号ではない。
- 正確な一致ドメイン(EMD) — ランキング要素ではない。
- ページ上の特定の単語数(「ブログ投稿は2000語以上であるべき」)— 長さは品質ではなく包括性の結果です。
これらの推奨事項を追加すると、証拠がないためにHYPOTHESIS未満の証拠レベルでフラグが立てられます。