AI エージェント向けに Web サイトをプログラムする方法: 5 つの要素。
llms.txt、OpenAPI 仕様、MCP エンドポイント、セマンティック HTML、およびエージェント カードを使用して、エージェント用の Web サイトを準備します。サンドボックス機能が含まれます。
Updated April 12, 2026
Web サイトは、明確な REST API、llms.txt、MCP エンドポイント、セマンティック HTML、セキュリティ層を追加することでエージェント対応になるため、自律型 AI エージェントはカスタムのスティッキー コードを使用せずに検出、理解、動作できます。以下は、2026 年に生産システムに必要となる 5 つの重要な技術要素と 2 つの新たなパターンです。
1. llms.txt をエージェント サイトマップとして作成します#
サイトのルートにある /llms.txt に Markdown ファイルを配置します。これは AI エージェントに対して、robots.txt ファイルが検索クローラーに対して行うのと同じ目的を果たします。サイトが提供するもの、場所、操作方法をエージェントに伝えます。
便利な llms.txt には、製品またはサービスの名前と 1 文の説明、目的を含む主要なページのリスト、短い説明を含む利用可能な API エンドポイント、認証要件、および制限または速度制限が含まれています。
エージェントはサイト全体をクロールする前に、llms.txt を探します。サイトにそれがない場合、エージェントは何が利用可能かを推測する必要があります。明確で最新の llms.txt が含まれるサイトは、より迅速に発見され、より正確に理解されます。
常に最新の状態に保ってください。存在しなくなったエンドポイントを説明する llms.txt は、llms.txt がまったく存在しない場合よりも信頼を損ないます。 llms.txt プログラミング ガイド では、この形式について詳しく説明しています。
2. エージェントにわかりやすい説明を含む OpenAPI 仕様を作成する#
サイトが API エンドポイントを公開する場合は、リクエストと応答の完全な例、特定のエラー コードとメッセージを含む詳細なエラー スキーマ、必須の型、範囲、フィールドを含む入力検証ルール、各エンドポイントが何を行うのか、いつ使用するのかについてのわかりやすい言語説明を含む OpenAPI 仕様で文書化します。
ほとんどの OpenAPI 仕様は、欠落しているコンテキストを推測できる人間の開発者向けに書かれています。エージェントは推測できません。すべてのパラメータを文書化し、すべてのエラーケースを説明し、すべての制限を明示する必要があります。
よくある間違いは、「予約を作成する」のような簡潔な 1 行の説明を書くことです。エージェント向けの説明では、「指定された日時に予約を作成します。ISO 8601 形式の有効な日付、利用可能なスロットの最後からの時間範囲、および連絡先電子メールが必要です。予約 ID とキャンセル期限を含む確認オブジェクトを返します。スロットがすでに占有されている場合は 409 で失敗します。」となります。
3. 動的ツール検出のために MCP サーバーを展開します。#
モデル コンテキスト プロトコル (MCP) は、AI エージェントがツールを検出して呼び出す方法に関する新しい標準です。各 AI プラットフォームの統合をコーディングする代わりに、互換性のあるエージェントが検出して使用できる単一の MCP サーバーを通じてその機能を公開します。 MCP は通信に JSON-RPC 2.0 を使用します。サーバーは、利用可能なツール (エージェントが呼び出すことができる関数)、リソース (エージェントが読み取ることができるデータ)、およびプロンプト (エージェントが使用できるテンプレート) をアドバタイズします。エージェントはこれらの機能を実行時に動的に検出します。
最小限の MCP サーバーは、在庫状況の確認、価格の取得、予約の作成、クエリの送信など、中核的なビジネス アクションをツールとして公開します。各ツールには、入力と出力を定義するスキーマが記述されています。投資は控えめです。 Python または Node.js での基本的な MCP サーバーは、3 ~ 5 つの主要なアクションを含むサイト用に構築するのに 2 ~ 4 時間かかります。利点は、すべての MCP 対応エージェントがサイトと即座に対話できることです。
4. JavaScript がなくても存続するセマンティック HTML を使用する#
通常、エージェントは JavaScript を実行しません。生の HTML を取得し、ドキュメント構造から情報を抽出します。重要なコンテンツがサーバー側でレンダリングされずに、React、Vue、または Angular を介してクライアント側でレンダリングされる場合、エージェントには空のページが表示されます。
明確なセマンティクスを持つネイティブ HTML 要素を使用します。アクションのボタン要素、入力のフォーム要素、構造化データのテーブル要素、階層のヘッダー要素。要素の目的が内容から明らかでない場合は、aria-label 属性を追加します。
サーバーはすべての重要な情報を処理します。製品名、価格、在庫状況、仕様、および連絡先の詳細は、非同期的に読み込まれるのではなく、最初の HTML 応答に含める必要があります。
curl を使用してページを取得し、応答に重要な情報が表示されるかどうかを確認してください。そうしないと、エージェントもそれを見ることができなくなります。
5. A2A コラボレーション用のエージェント カードを発行する#
エージェント カードは、サイトのルートにある JSON ファイル (agent-card.json) で、サイトの機能、認証要件、エージェント間通信でサポートされるプロトコルが記述されています。
A2A (エージェント間) プロトコルは、検出にエージェント カードを使用します。エージェントがサービスを見つける必要がある場合、エージェント カードをチェックして、そのサイトが役立つかどうか、利用可能な機能、および認証方法を判断します。
基本エージェント カードには、サービスの名前と説明、サポートされているプロトコル (MCP、REST、A2A)、構造化リスト、認証方法とエンドポイントなどの利用可能な機能、エラー報告のための連絡先情報が含まれています。
エージェント カードを公開すると、サイトを発見したエージェントが同じワークフロー内の他のエージェントにそのサイトを推奨できるため、マルチエージェント ワークフローでの発見可能性が 2 倍になります。
[A2A エージェントおよびガイド カード] (/docs/agent-cards-a2a-protocol/) には完全な仕様が記載されています。
新しいパターン: Agent SandboxProduction エージェント システムには分離が必要です。外部エージェントがインフラストラクチャ内でコードを実行したりデータを処理したりする場合、それを封じ込める必要があります。#
WASMベースのサンドボックス(Cloudflare Workersと同様)により、エージェントはリソース制限が定義された隔離された環境で信頼できない操作を実行できます。これにより、不正行為を行うエージェントが他のユーザーに影響を与えたり、無制限のリソースを消費したりすることが防止されます。
ほとんどのサイトでは、サンドボックス化は最初から必要なわけではありません。これは、複雑な入力を受け入れる実行エンドポイントを公開する場合、または複数の外部エージェントが同時にシステムと対話する場合に重要になります。
新しいパターン: リアルタイム WebSocket エンドポイント#
標準 REST API は、単一の要求と応答の対話で機能します。マルチステップのエージェント ワークフローは、セッション全体で状態を維持する WebSocket 接続の恩恵を受けます。/ws/agent-session の WebSocket エンドポイントにより、エージェントは、可用性の確認、オプションの選択、詳細の確認、トランザクションの完了など、複数の連続したステップを含むワークフローに対して永続的な接続を維持できます。各ステップは、共有セッション状態を使用して同じ接続上で実行されます。
これにより、エージェントが複数の独立した REST 呼び出しを実行し、それらの間のコンテキストが失われるときに発生する異常な動作が防止されます。
比較: 従来のアーキテクチャとエージェント最適化アーキテクチャ#
|外観 |従来のウェブサイト |エージェント向けに最適化された Web サイト |
| — |
| — |
| 発見 |
| インタラクション |
| セキュリティ |
| データ納品 |
| 成功指標 |
[実行層ガイド] (/docs/execution-layer/) では、アーキテクチャの原則について説明しています。 [AEO 実装ガイド] (/docs/implement-aeo/) は完全な最適化パスをカバーしています。
よくある質問#
エージェントになるためには、5 つの要素すべてを準備する必要がありますか? llms.txt とセマンティック HTML (読み取り層) から始めます。 API エンドポイントがある場合は、OpenAPI および MCP 仕様を追加します。 A2A の可視性が必要な場合は、エージェント カードを追加します。
基本的な MCP サーバーを展開するにはどのくらい時間がかかりますか? 調整する既存の API エンドポイントがあると仮定すると、サイトに 3 ~ 5 つのメイン アクションがある場合は 2 ~ 4 時間です。
エージェントは MCP サーバーがなくても機能しますか? はい、REST API と構造化 HTML 抽出を使用します。 MCP は、検出と対話をより標準化し、信頼性を高めますが、これが唯一の方法ではありません。
**WebSocket のサポートは単純な Web サイトに必要ですか?**いいえ。 WebSocket は、複数ステップのトランザクション ワークフローにとって重要です。シンプルなコンテンツ サイトとシングル アクション エンドポイントは、標準の REST とうまく連携します。
サイトがエージェント対応かどうかをテストするにはどうすればよいですか? (JavaScript を使用せずに)curl を使用してページを復元します。 llms.txt の正確さを確認してください。 OpenAPI 仕様を検証します。サポートされているクライアントを使用して MCP サーバーをテストします。 AI アシスタントにサイトが答えるべき質問をします。