mcpField
S
seo-crawlability

seo-crawlability

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

seo-crawlability について

検索エンジンのクロールアクセス、robots.txt のルール、サイトマップの指示を監査する Claude スキルです。ページスナップショットを基に Googlebot と Bingbot のアクセスを調べ、根拠に基づく修正案を提示します。

主な機能

  1. 01robots.txt の到達性と構文を確認
  2. 02Googlebot と Bingbot のアクセスを判定
  3. 03ブロックされたアセットやコンテンツを検出
  4. 04クロール遅延とサイトマップ指示を確認
  5. 05修正案の生成と検証

活用シーン

  1. 01ページがクロール禁止かを監査
  2. 02CSS や JavaScript を遮るルールを特定
  3. 03サイトマップ指示とクロール遅延を確認

インストール

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

$npx skills add https://github.com/hainrixz/claude-seo-ai --skill seo-crawlability

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

詳細

seo-crawlability (M1)

クロールアクセスは、ほかのすべての検索シグナルの前提条件です。Googlebot/Bingbot がページとそのアセットを取得できなければ、ほかの要素がランキングに影響することはありません。このモジュールでは、汎用的なクロールアクセスのみを扱います。AI 固有のボット指示(GPTBot、Claude-SearchBot など)は seo-ai-crawlers(M14)に、AI ディスカバリーファイル(llms.txt、agents.md、UCP)は seo-ai-discovery(M21)にあります。この境界については references/ai-crawlers.md を参照してください。

入力

ディスパッチエンベロープで指定された PageSnapshot を使用します。<run_dir>/pages/<slug>.json から parsed と status_chain、headers を読み込み、<run_dir>/site/robots.json から解析済みの robots ファイル(構文、グループ、監査対象 URL に対する Googlebot/Bingbot の判定、Sitemap: 行)を読み込みます。pages/<slug>.html を Grep して、証拠をそのまま確認してください。audit.mjs がすでに出力した決定論的な検出結果は <run_dir>/findings.deterministic.json に記載されています。該当する ID を再出力せず、モデル判定による検出結果のみを追加してください。スナップショットがなく、URL/パスを直接指定して呼び出された場合は、まず node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" を実行し、出力されたスナップショットパスを使用してください。

監査

PageSnapshot(render.used が none でなければ parsed_rendered、そうでなければ parsed)と site/robots.json を使用して、次を確認します。

  1. 到達可能性:/robots.txt が 200 を返すこと(404 は「すべて許可」を意味しますが、指摘する価値があります。5xx ではクロールが一時停止することがあります)。
  2. 構文:各行が有効なディレクティブ(User-agent、Disallow、Allow、Sitemap、Crawl-delay)であること。不明なトークン、User-agent グループヘッダーの欠落、BOM/文字コードの問題にフラグを立てます。
  3. アセットのブロック:CSS/JS、フォント、または /wp-includes/ のようなパスをブロックする Disallow がないこと。これはレンダリングを妨げ、「ページが Google に正しく表示されない」主な原因です(M-render と照合してください)。
  4. コンテンツのブロック:重要なインデックス可能パスを Googlebot/Bingbot から隠す Disallow ルールがないこと。
  5. Crawl-delay の妥当性:大きな Crawl-delay(または全体グループに適用されるもの)はクロールバジェットを圧迫する可能性があります。Googlebot は Crawl-delay を無視しますが、Bingbot は適用する点に留意してください。
  6. Sitemap ディレクティブ:絶対 URL の Sitemap: が少なくとも 1 つ存在すること。
  7. 全体的なアクセス:監査対象 URL に対する Googlebot と Bingbot の有効なルールセットを評価し、最終的にアクセスが許可されるか確認します。

修正

生成される編集内容は fix 用の差分であり、スキーマの fixable フィールドに対応します。

  • AUTO:CSS/JS または重要なコンテンツパスに対する誤った Disallow を削除する(検証可能な、許可範囲の追加)。絶対 URL の Sitemap: 行がない場合は追加する。構文の誤り(例:Dissallow のタイプミス、コロンの欠落、User-agent ヘッダーのないグループ)を修正する。
  • PROPOSED:Crawl-delay の厳格化、または User-agent グループの再構成。意図的な設定である可能性があるため、項目ごとの承認を必要とする案として提示します。
  • ADVISORY:意図的に禁止されている対象(非公開/ステージング用パス)の変更。ツールによる書き込みは行いません。 サイトマップの URL やパスを決して捏造しないでください。正規のサイトマップの場所が不明な場合は、ユーザーが入力するための TODO プレースホルダーであることを明記して出力するか、確認してください。

検証

  • node "${CLAUDE_PLUGIN_ROOT}/scripts/parse-robots-sitemap.mjs" --url <final_url> --path <audited path> — /robots.txt を取得して解析し、監査対象のパス(ルートではありません)に対する Googlebot/Bingbot の有効な許可/拒否ルールを評価し、Sitemap: ディレクティブを確認します(メソッド robots_parse)。オフラインの robots ファイルには --robots <robots_url> または --file <path> を使用してください。
  • /robots.txt を取得できない場合(ネットワーク/認証/エッジによるブロック)、ステータスは needs_api となり、誤って pass になることはありません。

検出事項

schema/finding.schema.json に従って検出事項を出力します。軸は search です。重大度ポリシー:5 は、サイト/テンプレートのスコープで適格性を失わせる壊滅的な事実にのみ割り当てます。4 は重大、3 は中程度、2 は軽微、1 は表面的、0 は情報提供です。また、アクティブなカテゴリにおける established の重大度 5 の fail のみが、スコアの上限を設定できます(references/scoring-model.md)。

  • M1.robots.blocks_googlebot — 有効なルールセットにより、監査対象 URL への Googlebot のアクセスが拒否されています(fail、重大度 5、fixable: proposed、確信度 established)。サイト全体に関わるもので、robots に関する欠陥として最も破壊的なものです。重大度は 5 のままです。
  • M1.robots.blocks_css_js — ページのレンダリング時に読み込まれる CSS/JS に Disallow が一致し、Google によるページのレンダリングが劣化します(fail、重大度 4、fixable: auto、確信度 established)。
  • M1.robots.unreachable — /robots.txt が 5xx を返すため、復旧するまでクロールが停止します(fail、サイトスコープで重大度 5、fixable: advisory、確信度 established)。
  • M1.robots.syntax_error — ディレクティブの形式が正しくない、User-agent グループヘッダーがない、または BOM がある状態です(warn、重大度 3、fixable: auto、確信度 established)。
  • M1.sitemap.missing_directive — robots.txt に Sitemap: 行がありません(warn、重大度 2、fixable: auto、確信度 directional — サイトマップは Search Console や /sitemap.xml からも検出されるため、ディレクティブがないのは利便性の問題であり、アクセス障害ではありません)。
  • M1.crawl_delay.excessive — グローバルグループに大きな Crawl-delay が設定されており、それに従うクローラーの処理が滞ります(warn、重大度 2、fixable: proposed、確信度 directional)。 プラットフォーム条件付き ID。 このモジュールは、profile.json でプラットフォーム(shopify、wordpress、nextjs)が指定されている場合にのみ発生する 6 つの ID も出力します。これらは references/routing.md § Platform-conditional finding ids に索引があり、references/platforms/<id>.md §10 に仕様が記載されています。

各検出事項では、evidence.observed に問題のある robots.txt の行(または解決済みの判定)をそのまま引用します。verification.reproduce は上記の実行可能なコマンドです。expected_impact は範囲と確信度タグを付けて記載します(% のみの表記は禁止)。

正確性

  • robots.txt が制御するのは クロール であり、インデックス登録 ではありません。Disallow で拒否されたページも、外部リンクを通じて URL のみインデックス登録されることがあります。ページをインデックスから除外するには noindex メタタグを使用し、Disallow も併用しないでください。併用すると、クローラーが noindex を確認できなくなります。
  • robots.txt がない場合や 404 の場合は 欠陥ではありません。「すべてクロールする」という意味です。fail として報告せず、情報提供として扱ってください。5xx は異なり、発生中は全面的な拒否として扱われます。
  • Googlebot は Crawl-delay を無視します。Google のクロールを制御する手段として推奨するのは誤りです。アドバイスの対象は Bingbot や、これに従うその他のエージェントに限定してください。
  • すべての判定は / ではなく、監査対象のパスを基準に解決してください。ルートへのアクセスは許可し、/blog/ へのアクセスは拒否するサイトはよくあります。ルートのみを確認すると、誤った結果が報告されます。
  • プレビューホストやステージングホストでは、Disallow: / による一括拒否が想定される設定です。--environment preview|staging|local が設定されている場合、スコアラーは M1.robots.* による上限設定を抑制します(references/scoring-model.md を参照)。

コメント