ガイド

ウェブサイトをエージェント対応にする方法

「エージェント対応」とは、3種類のAIエージェントに対してそれぞれ異なる意味を持ちます — そしてそれらは積み重なります。このバリデーターをエージェント対応にした方法を、実装したコードとともに正確に説明します。パターンをそのまま参考にしてください。

独立した3つのレイヤーがあります。どれか1つだけ採用しても構いません。3つを組み合わせることで、サイトをクロールするクローラー、ブラウザ内でUIを操作するエージェント、ネットワーク経由で呼び出す別のエージェントをすべてカバーできます。

レイヤー1 — llms.txt:クローラーへのコンテキスト

基本となる層です。ルートに置かれたプレーンテキストのllms.txtは、AIクローラーに対してサイトの概要と重要なページを優先順に伝えます。フェッチ時に読み込まれるため、JavaScriptもプロトコルも不要です。まずはここから始めましょう:作成方法はこちら

レイヤー2 — WebMCP:ブラウザ内エージェント向けツール

WebMCPを使うと、ページがブラウザ内で動作するAIエージェントに対して呼び出し可能なツールを公開できます。エージェントはフォームを推測する代わりに、型付きアクションを直接呼び出せます。2つの方法があり、どちらも実装しています。

宣言的 — 実際のフォームにアノテーションを付けると、ブラウザがツールを自動生成します:

<form toolname="open_llms_txt_report"
      tooldescription="Validate a site's llms.txt and open its report.">
  <input name="url" toolparamdescription="Domain or URL to validate">
</form>

命令的 — JavaScriptでツールを登録し、構造化データを直接返します:

navigator.modelContext?.registerTool({
  name: "validate_llms_txt",
  description: "Validate a website's llms.txt; returns a 0-100 score and findings.",
  inputSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"] },
  execute: (input) => fetch("/api/validate?url=" + encodeURIComponent(input.url))
    .then(r => r.json())
    .then(data => ({ content: [{ type: "text", text: JSON.stringify(data) }] }))
});

命令的な呼び出しはif (navigator.modelContext)で保護し、WebMCPが存在しない環境では何もしないようにしましょう。現在はChromeのオリジントライアルのため、実際のリーチは小さいです — トラフィックではなく、将来へのシグナルとして捉えてください。

レイヤー3 — A2A:他のエージェントから呼び出せるエージェント

Agent2Agent(A2A)プロトコルにより、他のエージェントがあなたのサービスを発見して呼び出すことができます。エージェントカードを公開し、JSON-RPCエンドポイントで裏付けます:

// GET /.well-known/agent-card.json
{
  "name": "llms.txt Validator",
  "url": "https://llms-txt-validator.dev/a2a",
  "skills": [{ "id": "validate_llms_txt", "name": "Validate llms.txt" }]
}

urlはA2Aを話す動作するエンドポイントを指定する必要があります — 同じバリデーションロジックをスキルとしてラップして同期的なmessage/sendメソッドを実装しています。カードはメタタグではなく、契約です。

唯一のルール:裏付けのないシグナルを公開しない

空のエージェントカードや偽のフォームアノテーションを追加して監査を通過させたくなるかもしれません。やめましょう。カードを取得して死んだエンドポイントを呼び出したり、何もしないツールを実行したりするエージェントは、その後あなたへの信頼を失います。ここに挙げたシグナルはすべて、実際に機能するものに解決される必要があります。だからこそ、このバリデーターはWebMCPやA2Aのシグナルを「存在する」と報告するのは、動作する実装がある場合のみです。

各レイヤーの確認方法

続きを読む

あなたの llms.txt を検証する →