ウェブサイトをエージェント対応にする方法
公開日:
「エージェント対応」とは、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 — ドメインをバリデーターに貼り付けてください。壊れたリンクなしで100/100を目指しましょう。
- WebMCP — Chrome 149+で
chrome://flags/#enable-webmcp-testingを有効にし、LighthouseのAgentic Browsingの監査を実行してください。ツールが一覧表示されるはずです。 - A2A —
/.well-known/agent-card.jsonを取得し、そのurlにmessage/send呼び出しをPOSTして、完了したタスクが返ってくることを確認してください。