Vercel Agent Readability Spec 完全ガイド — 47 項目の根拠と読み方
Vercel が公開した Agent Readability Spec は、AI エージェントから「正しく読まれる」ための業界標準です。何をどう測るのか、なぜその指標なのかを 47 項目すべて整理します。
YomuScore が採点に使っている Vercel Agent Readability Spec は、ChatGPT、Claude、Perplexity といった AI エージェントが、あなたのサイトを正しく読めるかどうかを判定する評価仕様だ。Vercel が発表した当初は英語圏中心の議論だったが、その後 llmstxt.org の仕様を取り込み、現在はこの 2 つを合わせたものが「AI エージェント対応度を測る業界標準」として定着しつつある。
本記事ではこの仕様が何を測っているのか、なぜその指標なのか、日本語サイトで特に気をつけるべき点はどこか、を 47 項目すべて見ていく。長めなのでリファレンス的に使ってもらうのが想定読み方だ。
全体像
47 項目は 3 つのグループに分かれている。S1-S15 がサイトワイドチェック (15 項目)、P1-P22 がページレベルチェック (22 項目)、L1-L10 が llmstxt.org 互換チェック (10 項目)、という構成だ。
サイトワイドの S 系はサイト全体に関わるファイルや設定で、/llms.txt や /sitemap.xml や /robots.txt のようにルートに置く 1 ファイル系がほとんど。1 度直せばサイト全体に効くので ROI が高い。ページレベルの P 系はページ単体の HTML 構造とメタデータ — <head> の中身、JSON-LD、見出し構造、Markdown ミラーといった項目で、ページごとに整える必要があるぶん工数はかかる。L 系は llms.txt の中身が llmstxt.org 仕様に準拠しているかどうかで、S1-S4 で llms.txt が見つかった場合だけ実行される。
評価軸を機能で言い換えると、AI 向けインデックスファイル / 構造化データ / Markdown 配信 / AI ボットへのアクセス許可、の 4 つに大別できる。各項目は「なぜそれが必要か」が AI 側の実装から逆算されていて、指標を満たすことが実害なくクロールされることに直結する作りになっている。
S1-S15: サイトワイドチェック
S1: /llms.txt の存在
/llms.txt、/.well-known/llms.txt、/docs/llms.txt のいずれかで HTTP 200 が返るか。llms-full.txt も同パス候補で代替可能。AI エージェントが「このサイトの主要コンテンツはどこか」を真っ先に問い合わせるファイルなので、robots.txt の AI 版と思ってもらえばいい。雛形は YomuScore の llms.txt ジェネレーター で作れる。詳細は llms.txt とは何か を参照。
S2: llms.txt の Content-Type
Content-Type: text/plain で配信されているか。AI 側のフェッチャーは Content-Type を見て「これはテキストなので本文を抽出する」と判断するので、application/octet-stream 等で返ってくるとバイナリ扱いされる可能性がある。
S3: llms.txt の中身が非空
ファイルサイズ > 0。空のファイルを置いただけで終わらないように。
S4: llms.txt の URL フォーマット
列挙されているリンクのうち、.html 拡張子を使うものが 0 件か。AI 側は .md か拡張子なしの URL を優先するので、.html リンクが多いと取得効率が落ちる。
S5: robots.txt が AI ボットを許可
GPTBot (OpenAI)、ClaudeBot (Anthropic)、CCBot (Common Crawl)、Google-Extended (Google) のいずれも Disallow: / でブロックされていないか。WordPress 等で User-agent: * Disallow: /wp-admin/ だけ書いてあれば OK と思いがちだが、それぞれの AI ボットを明示的に Allow するのが安全。書き方の詳細は GPTBot / ClaudeBot / Google-Extended の robots.txt 設定 を参照。
S6: robots.txt で /llms.txt が非ブロック
Disallow: /llms.txt になっていないか。せっかく置いた llms.txt を robots.txt 側で締め出していたら本末転倒なので。
S7: robots.txt 自体の存在
/robots.txt が HTTP 200 を返すか。
S8: sitemap.xml が valid
/sitemap.xml または /sitemap_index.xml で valid な XML が返るか。
S9: sitemap.xml に <lastmod>
すべての <url> エントリに <lastmod> 要素があるか。AI エージェントは「最近更新されたコンテンツ」を優先したいので、<lastmod> がないと判定できず、結果として一律のクロール頻度になり古い情報が引用される原因になる。
S10: sitemap.md の存在
/sitemap.md (人間と AI の両方が読める Markdown 版のサイト目次) が配置されているか。
S11: sitemap.md の構造
sitemap.md 内に ## 以上の見出しが 2 つ以上、各見出し下にリンク 1 つ以上あるか。
S12: AGENTS.md の存在
/AGENTS.md、/.well-known/agents.md、/CLAUDE.md 等のいずれかが HTTP 200 を返すか。コーポレートサイトの多くでは AGENTS.md は不要 (詳細は AGENTS.md とは何か)。
S13: AGENTS.md の必須セクション
AGENTS.md 内に Installation / Configuration / Usage のうち 2 つ以上のセクションがあるか。
S14: HTTPS
トップページが https:// でアクセス可能か。当然 pass であるべき項目だけれど、念のため。
S15: ルート OpenAPI spec
/openapi.json、/openapi.yaml、/swagger.json のいずれかで OpenAPI spec が公開されているか。API を持たないサイトは自動的に skip 扱いになるので、pass / fail にカウントされない。
P1-P22: ページレベルチェック
YomuScore の MVP では当面トップページのみがページレベル評価の対象になっている (Phase B 以降で内部リンクをたどる予定)。
P1: HTTP 200
最終的に HTTP 200 で返るか。
P2: リダイレクトチェーン
リダイレクトが 1 ホップ以下か。AI エージェント側は無限リダイレクトを避けるためにホップ数を制限しており (多くは 3〜5)、2 段以上のチェーンがあると本文取得を諦める実装もある。
P3: Content-Type
HTML ページなら text/html を含むか。
P4: x-robots-tag
レスポンスヘッダの x-robots-tag に noindex / noai / noimageai のいずれも含まれないか。noai ヘッダは AI 用に最近追加された指標で、これが付いていると AI エージェントは本文を取得しても引用しない。意図せず CDN や CMS が付けているケースが意外と多いので、diagnostics で fail だったら一度ヘッダを確認することを薦める。
P5: canonical link
<link rel="canonical" href="..."> が <head> 内にあるか。
P6: meta description
<meta name="description"> の content が 50 文字以上か。日本語は英語より情報密度が高いので、50 文字でもかなりの情報量を入れられる。「〇〇社の△△サービスについての公式情報。導入事例、料金、お問い合わせはこちら」程度で 40〜50 字に到達する。
P7: og:title
<meta property="og:title"> が空でなく存在するか。
P8: og:description
<meta property="og:description"> が空でなく存在するか。
P9: html lang
<html lang="..."> 属性が存在するか。日本語サイトなら lang="ja" が標準。
P10: JSON-LD の存在
<script type="application/ld+json"> が 1 つ以上あるか。AI エージェントは HTML 全体の意味解析より、構造化データから情報を抽出する方が遥かに高速・正確なので、会社情報なら Organization、商品なら Product、記事なら Article のスキーマを必ず入れたい。
P11: JSON-LD の必須フィールド
JSON-LD 内に title / name / headline のいずれか、description、url、dateModified、BreadcrumbList 型エントリ、をすべて含むか。WordPress + Yoast SEO は Organization と WebSite を出力するが、dateModified と BreadcrumbList が抜けがち。プラグインのスキーマ設定で「組織」「パンくず」両方を有効にしておこう。
P12: section headings
<h1> <h2> <h3> の総数が 3 つ以上あるか。
P13: text-to-HTML ratio
テキストコンテンツ文字数を HTML 全体文字数で割った比率が、15% 超で pass、10-15% で warn、10% 未満で fail。ナビゲーションや装飾 HTML に対して本文が少なすぎると、AI 側がノイズに埋もれて本文を見失う。SPA の初期 HTML がほぼ空な場合はここで致命的に fail するので、SSR や SSG への移行を検討した方がいい。
P14: glossary link
ページ内に「glossary」「用語集」「terminology」のいずれかを含むリンクが存在するか。業界用語が多いサイトほど、用語定義へのリンクは AI の理解精度に直結する。
P15: markdown mirror の存在
ページ URL に .md を付加するか、Accept: text/markdown での content negotiation で markdown 版が取得できるか。AI エージェントは markdown を直接受け取れる方が、HTML をパースするよりも圧倒的に効率的かつ正確。Vercel / Astro / Next.js 等は標準サポートしている。WordPress 等は手動配置が必要で、これが Grade A 到達の最大の障壁になることが多い (詳細は Markdown ミラー実装ガイド)。
P16: markdown frontmatter
ミラーされた markdown の先頭に --- で囲まれた YAML frontmatter があり、title / description / last_updated のうち 2 つ以上を含むか。
P17: alternate link (markdown)
HTML 側に <link rel="alternate" type="text/markdown" href="..."> が存在するか。
P18: Link header in markdown
Markdown 版レスポンスの Link ヘッダに rel="canonical" が含まれるか。
P19: content negotiation
Accept: text/markdown でリクエストすると Content-Type: text/markdown で返るか。
P20: sitemap section in markdown
Markdown 版に ## Sitemap セクションがあるか。
P21: code block language tags
<pre><code> ブロックすべてに class="language-*" または class="lang-*" があるか。コードブロックが 0 個の場合は skip。
P22: API schema link
URL パスに /api/、/reference/、/endpoints/ 等を含むページから openapi.json / swagger.json 等へのリンクがあるか。API 系ページでない場合は skip。
L1-L10: llmstxt.org 互換チェック
ここからは S1-S4 で /llms.txt が見つかった場合だけ実行されるチェック。
L1: ファイルアクセス可能
llms.txt が HTTP 200 で取得できるか。
L2: 先頭が H1 見出し
ファイルの先頭が # で始まる見出しか。よくある失敗として、WordPress + All in One SEO プラグインが自動生成する llms.txt の先頭に <!-- Generated by All in One SEO ... --> のようなコメントが入って L2 が fail する、というケースがある。対処は WordPress でグレード A を取る 7 つのチェックリスト で詳しく。
L3: 有効な markdown
markdown としてパース可能か。リンク記法や見出し記法の構文エラーがないかをチェックする。
L4: blockquote summary (warn)
H1 の直後に > で始まる blockquote (サイト要約) があるか。これは fail ではなく warn 扱いなので、減点はされない。
L5: H2 file-list セクション
## で始まる H2 が 1 つ以上、各 H2 下に markdown リンクが 1 つ以上あるか。
L6: リンクフォーマット
すべてのリンクが [text](url) または [text](url): description 形式か。生 URL を直書きしていないか。
L7: リンク到達可能
llms.txt 内のリンクをランダムサンプリング (5 件) して HTTP 200 が返るか。1〜2 件失敗で warn、3 件以上で fail。
L8: Optional セクション
## Optional が無い、または使われていれば正しく (リンクのみ、地の文なし) 記述されているか。
L9: Content-Type: text/plain
S2 と独立して再評価。
L10: llms-full.txt 存在 (warn)
llms-full.txt または llms-ctx-full.txt が同一パスに存在するか。warn 扱い。
スコア計算と改善優先度
YomuScore のスコアは pass / (pass + fail + error) の比率で 0〜100 になる。pass のみが分子で、fail と error は分子に含まれず分母に含まれる (= 減点要因)。warn は分子・分母どちらにも含まれない (情報通知扱い、減点なし)。skip は分母から除外される。
仕様によっては「warn (fail ではない)」と明記されている項目があるため、warn を fail と同列に減点してしまうと過度に厳しいスコアになる。これを避けるための設計で、先行サービスの agent-ready.dev でも実質的に同じ扱いになっている。
実務的に「どこから手を付けるか」で言うと、ROI の高い順は (1) S1-S8 のルートに置くファイル系 (1 回直せばサイト全体に効く)、(2) P10-P11 の JSON-LD (AI が最も信頼する情報源)、(3) P4-P9 の HEAD 内基本メタ (SEO の延長で多くは満たしているはず)、(4) P15-P20 の Markdown ミラー (技術コストは上がるが効果も大きい)、(5) S10 / S12 / S13 の sitemap.md と AGENTS.md、(6) L1-L10 の llms.txt 内部、というあたりが目安になる。
まず自社サイトを診断する
ここまで読んだら、まず YomuScore でスキャン してみてほしい。47 項目すべてに対して pass / fail / warn と日本語の改善ヒントが返る。登録不要・無料で、1 日 5 回まで実行できる。結果は永続化されてシェア URL が取れるので、社内エンジニアや代理店と共有しやすいはず。
CMS 別の具体的な改善手順は CMS別 改善ガイド にまとめてあって、WordPress / STUDIO / Shopify / EC-CUBE / ペライチ / Wix / Next.js / Astro の 8 環境について個別に書いている。
関連リンク