seo-agent-readiness について
エージェントのサイト利用に関わるコントロール名、フォームラベル、iframe 内のコンテンツなどを静的に検査する SEO 監査用 Skill です。サイト監査担当者向けに方向性を示す所見を出し、検索順位への影響は主張しません。
主な機能
- 01操作要素のセマンティクス検査
- 02名前のないボタンとリンクの検出
- 03フォームコントロールのラベル監査
- 04スクリプト依存リンクと iframe の指摘
- 05WebMCP の有無と静的検査の限界を報告
活用シーン
- 01エージェントによるサイト利用の監査
- 02名前やラベルのない操作要素の検出
- 03iframe 内に配置されたページ内容の確認
- 04静的な所見とブラウザ検査の区別
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ hainrixz/ claude-seo-ai --skill seo-agent-readinessインストール後、Claude Code で/seo-agent-readinessを入力して読み込まれたか確認します。
詳細
seo-agent-readiness(M22 — エージェント対応)
Google の『生成 AI 機能に向けたウェブサイトの最適化』ガイドでは、「エージェントに優しいウェブサイトのベストプラクティス」(web.dev の『エージェントに優しいウェブサイトを構築する』)が紹介されています。エージェントはアクセシビリティツリーを通じてページを操作するため、名前のないコントロール、セマンティクスのないコントロール、スクリプトだけで機能するコントロールは認識できません。このモジュールでは、静的に確認できる範囲をチェックし、それ以外の項目も明示します。代替テキストは M9、アンカーテキストの品質は M10、レンダリングは M4 を参照してください。これらの項目を再出力しないでください。
入力
ディスパッチエンベロープで指定された PageSnapshot を使用します。<run_dir>/pages/<slug>.json から parsed(anchors[]、forms、iframes、scripts[]、landmarks)を読み取ります。render.used が none でない場合は、parsed_rendered を優先してください。問題のある要素をそのままの証拠として示すため、pages/<slug>.html(または .rendered.html)を Grep します。audit.mjs がすでに出力した決定的な検出結果は <run_dir>/findings.deterministic.json に記載されています。これらの ID は再出力せず、モデルの判断による検出結果だけを追加してください。スナップショットがない状態で URL またはパスを直接指定して呼び出された場合は、まず node "${CLAUDE_PLUGIN_ROOT}/scripts/snapshot.mjs" <target> --out "${CLAUDE_PLUGIN_DATA}/runs" を実行し、出力されたスナップショットのパスを使用してください。
監査項目
- セマンティックコントロール —
<button>/<a href>の代わりに、div/span(onclick、role="button"、ハンドラー付きのtabindex)でインタラクティブな動作を実装している場合。総コントロール数に対する割合として数えます。 - 名前付きボタン — テキストコンテンツ、
aria-label、aria-labelledby、title、valueのいずれもない<button>、role="button"、input[type=button|submit]。 - 名前付きリンク — アクセシブルネームが空の
<a href>(アイコンのみ、または内部に alt のない画像があるもの)。汎用的か説明的かというアンカーテキストの表現は M10 の対象です。 - ラベル付きフォームコントロール —
<label for>、ラップする<label>、aria-label、aria-labelledbyのいずれもないinput/select/textarea(プレースホルダーだけでは不十分です)。 href="javascript:"(およびハンドラーを持つhref="#") — スクリプト経由でしか動作しないナビゲーション。- 主要コンテンツが iframe 内にある — メインの記事や製品のコンテンツが
<iframe>内にある場合。エージェントやクローラーに見えるのは外枠だけです。 - WebMCP — インラインスクリプトまたはリンクされたスクリプト内の
navigator.modelContext。存在を参考情報として報告します。これは W3C Community Group のドラフト(2026-04-23)であり、Chrome のオリジントライアル中です。推奨事項として扱わないでください。 - 静的にはチェックできない項目 —
cursor: pointer、ターゲットサイズ(web.dev が示す > 8px² のガイダンス)、ゴーストオーバーレイ/画面外のクリック妨害要素。これらはnot_checkable_staticとして明示してください。Tier 1 では Lighthouse の「Agentic browsing」カテゴリ(M150+)を通じて扱います。
修正
- 提案(
fixable: proposed):div[onclick]を<button type="button">に置き換える、名前のないコントロールにaria-labelまたは表示テキストを追加する、フォームコントロールに<label for>を追加する、href="javascript:"を実際の URL または<button>に置き換えるなど、テンプレートやイベント処理に影響するため、項目ごとに差分を提示します。 - 助言(
fixable: advisory):主要コンテンツを iframe の外に移動する、フレームワークのコンポーネントを変更する、オーバーレイやターゲットサイズに対応する、WebMCP を導入する。 - 決して捏造しないでください。周囲のコンテンツから裏付けられないラベルやリンクテキストは作成せず、明確な
TODOプレースホルダーを残すか、確認してください。
検証
node "${CLAUDE_PLUGIN_ROOT}/scripts/agent-readiness.mjs" --snapshot <pages/<slug>.json>— 問題のある要素を含め、チェックごとの件数を表示します(メソッドdom_assert)。- Tier 1、同意が必要(ブラウザーをダウンロードして起動するため、最初に許可を求めます):
npx lighthouse <url> --output=json --output-path <run_dir>/lighthouse.jsonを実行し、agentic-browsing カテゴリ(カテゴリ ID はインストール済みの Lighthouse バージョンで要確認)を読み取ります。ユーザーの同意があり、Chrome を利用できる場合にのみ実行してください。それ以外の場合、M22.lighthouse.agentic_browsingはneeds_apiのままにします。 - ページがクライアント側でレンダリングされ、まだレンダリングされていない場合(
render.needed && render.used === "none")、コントロールのチェックは外枠のみを対象とします。この制限を明記し、外枠に何もない場合はneeds_apiのままにしてください。
指摘事項
schema/finding.schema.json に準拠します。axis は ai、すべての id の confidence は directional、severity は ≤3 とします。Severity の方針:5 は、サイト/テンプレート単位で適格性を失わせる壊滅的な事実に限ります。4 は重大、3 は中程度、2 は軽微、1 は表面的、0 は情報提供のみです。また、アクティブなカテゴリにおける established な severity-5 の fail のみがスコアに上限を設けます(references/scoring-model.md)。M22 に established のものはないため、ここにある項目がスコアに上限を設けることはありません。evidence.observed には要素を(セレクター+外側のタグとともに)そのまま引用し、verification.reproduce は上記のコマンドとし、expected_impact は範囲で示します(単独の % は不可)。
M22.controls.non_semantic_interactive— div/span のクリックハンドラーがコントロールとして機能します(大半のコントロールである場合、または主要なアクションを妨げる場合は warn 3、fail 3。fixable: proposed)。M22.controls.button_without_name(warn 2、fixable: proposed)·M22.links.empty_name(warn 2、fixable: proposed)·M22.links.href_javascript(warn 2、fixable: proposed)。M22.forms.unlabeled_controls(warn 3、fixable: proposed)·M22.content.iframe_primary(warn 2、fixable: advisory)。M22.lighthouse.agentic_browsing(severity 3。ユーザーの同意を得た実行が行われていない場合はneeds_api、行われた場合はスコアに基づいて pass/warn/fail)。M22.static.not_checkable(not_applicable、severity 0 — カーソル/ターゲットサイズ/オーバーレイの項目と Tier 1 のパスを列挙)·M22.semantics.ok(pass 3 — コントロール、名前、ラベルに問題がない状態)。M22.webmcp.present(pass、severity 0、情報提供のみ — 存在の確認のみ)。
誠実性
- エージェント対応の評価は 方向性を示すもの です。Google はエージェントに適した実践を推奨していますが、ランキングや引用への影響を記載したベンダー資料はありません。
establishedにせず、severity 4~5 にせず、スコアに上限を設けないでください。 - これらは主にアクセシビリティの基本事項(名前/ロール/値)を新たな利用者にも適用するものです。修正は「AI SEO」としてではなく、支援技術とエージェント双方の障壁を取り除くものとして説明してください。
- Lighthouse のエージェント的ブラウジングカテゴリは ラボ用 ツールです。スコアが良好でも、ページ上でエージェントがタスクを完了した証明にはなりません。WebMCP はオリジントライアル段階のドラフトです。存在を報告するにとどめ、推奨事項は示さないでください。