agentic-commerce-readiness について
Magento 2 と Adobe Commerce の管理者向けオープンソースモジュールです。8項目の AI エージェント対応チェックを実行し、識別した AI エージェントのアクセスを集計します。スキャンデータは既定でストア内に保存されます。
主な機能
- 01管理画面で8項目をチェック
- 02AI エージェントのアクセスを集計
- 03毎日のスキャンを設定
- 04各チェックの技術的な判定を表示
- 05スキャンデータをストアのDBに保存
活用シーン
- 01AI ショッピングエージェントへの対応状況を評価
- 02MCP エンドポイントや商品構造化データを調査
- 03識別したエージェントのアクセス傾向を確認
MCP 対応
UCP プロファイルに MCP エンドポイントが記載されている場合、スキャナーは initialize ハンドシェイクを試し、少なくとも1つのツールが列挙されるか確認します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://expandingweb.com/mcpclaude mcp add --transport http com-expandingweb-agentic-commerce-readiness https://expandingweb.com/mcp{"mcpServers":{"com-expandingweb-agentic-commerce-readiness":{"type":"http","url":"https://expandingweb.com/mcp"}}}Cursor で開く{"servers":{"com-expandingweb-agentic-commerce-readiness":{"type":"http","url":"https://expandingweb.com/mcp"}}}VS Code で開く{"mcpServers":{"com-expandingweb-agentic-commerce-readiness":{"type":"http","url":"https://expandingweb.com/mcp"}}}{"mcpServers":{"com-expandingweb-agentic-commerce-readiness":{"serverUrl":"https://expandingweb.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
7| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | いいえ | 自由テキスト(例:「sprint」または「monitoring」)。省略するとすべてを対象にします。 |
詳細
Magento 2 の AI エージェント対応状況
ExpandingWeb_AgentReadiness は、Magento 2 / Adobe Commerce ストアの管理画面から、公開されている 8 つのエージェント対応状況チェックを実行し、ストアフロントがすでに受け取っている AI エージェントのトラフィック(GPTBot、ClaudeBot、PerplexityBot など)をカウントします。
Expanding Web が提供する Agentic Commerce Suite の無料オープンソース版です。MIT ライセンスです。デフォルトでは、ストアの情報が外部に送信されることはありません(プライバシーを参照)。
8 つのチェック
公開スキャナー(https://expandingweb.com/#scan)と同じチェック ID、意味、判定表現を使用しています。スコアは、管理画面でも、公開スキャンでも、四半期ごとのベンチマークでも同じ意味を持ちます。
| ID | チェック | 合格条件 |
|---|---|---|
| UCP-01 | /.well-known/ucp プロファイル | そのパスに、Universal Commerce Protocol 仕様のバージョン 2026-04-08 に準拠したプロファイルが存在すること。 |
| MCP-01 | 公開されている MCP エンドポイントに到達可能 | UCP プロファイルで指定された MCP エンドポイント(または <link rel="mcp">)が initialize ハンドシェイクに応答し、少なくとも 1 つのツールを一覧表示すること。停止しているエンドポイントを公開するプロファイルは不合格です。 |
| BOT-01 | AI ショッピングクローラーに対する robots.txt のポリシー | エージェントが使用するクローラー(GPTBot、ClaudeBot、PerplexityBot、OAI-SearchBot、ChatGPT-User、Claude-User、Applebot-Extended、Amazonbot、Bingbot、meta-externalagent、CCBot)に対するポリシーで、ホームページだけでなく商品 URL の読み取りも許可されており、ホームページに noindex / noai ディレクティブがないこと。 |
| AGENT-01 | エッジで配信される AI エージェントのユーザーエージェント | robots.txt はポリシーを示しますが、実際の状況を示すのはエッジです。スキャナーは GPTBot と ClaudeBot としてホームページを取得し、CDN またはファイアウォールがそのユーザーエージェントに対して 401/403/429/503 やボットチャレンジを返さないことを確認します。 |
| CRAWL-01 | 検索 URL とファセット URL のクロール制限 | カタログ検索と階層化ナビゲーションでは、キャッシュミスとなる異なる URL が無制限に生成されます。このチェックでは、robots.txt が AI クローラーごとに、* だけでなく、/catalogsearch/result/、/search、クエリ文字列付き URL を制限しているかを確認します。 |
| LLMS-01 | /llms.txt の存在 | 言語モデル向けに作成された、サイトのプレーンテキスト形式のインデックスがルートに存在すること。 |
| FEED-01 | 商品の構造化データの完全性 | サンプルとして取得した商品ページ(最大 3 件)が、27 個の属性にわたる重み付き 35 点中 16 点以上を獲得すること。エージェントが取引を行ううえで欠かせない 8 項目(商品名、画像、GTIN、価格、通貨、在庫状況、配送の詳細、返品ポリシー)は 2 倍の点数として扱われます。誤解を招く値(不正な GS1 チェックデジット、数値以外の価格、有効期限切れの priceValidUntil)は得点になりません。 |
| SCHEMA-01 | 商品、Offer、AggregateRating の JSON-LD | 商品ページに、商品、Offer、およびレビューがある場合は AggregateRating を含む有効な JSON-LD があること。 |
結果の見方:
- Score は、該当するチェックのうち合格した数です。これは対応状況を示す指標であり、ランキングの予測ではありません。AI の回答での掲載順位を保証できる人はいませんし、このモジュールも保証しません。
- N/A は、チェックを実行できない場合(サンプル対象の商品カタログがない、エッジが特定のパスへのアクセスを拒否した、60 秒の制限時間を超えた場合)に表示されます。スコアには影響しません。
- Blocked(チェック開始前にスキャンが停止)は、ストアがエッジでスキャナー自身のユーザーエージェントを拒否したことを意味します。unreachable は応答がなかったことを意味します。どちらも 8 つのチェックすべてが不合格だったとは報告されませんが、実際のエージェントも同じ壁に阻まれるため、通常はエッジのルールを最初に修正する必要があります。
数値の出典:1,867 の Magento ストアを対象とした Q3 2026 のベンチマークでは、33.9% が 8 つのチェックのいずれにも合格しませんでした。SCHEMA-01 だけを見ると、到達可能な商品ページの 54% に Product+Offer JSON-LD がありませんでした。
インストール
composer require expandingwebcom/module-agent-readiness
bin/magento module:enable ExpandingWeb_AgentReadiness
bin/magento setup:upgrade
bin/magento cache:flush
要件:Magento Open Source / Adobe Commerce 2.4.6 以降、PHP 8.2 以降、guzzlehttp/guzzle 7(Magento にすでに含まれています)。次の 2 つのテーブルが作成されます:expw_readiness_scan と expw_readiness_daily。bin/magento module:uninstall ExpandingWeb_AgentReadiness を実行すると、両方のテーブルと、すべての expw_readiness/* 設定値が削除されます。
このモジュールは Agentic Commerce Suite と併用してインストールできます。テーブル、設定パス、ルート、ACL ID、cron ジョブは競合しません。
管理画面での操作
- マーケティング → AI Agent Readiness → Readiness Dashboard:最新のスキャン結果をスコアゲージと各チェックの行(簡潔な判定、重大度、Technical details の下に折りたたまれたスキャナーの技術的な判定全文)で表示します。Run scan now ボタンとエージェントトラフィックのカードも表示します。
- Stores → Configuration → ExpandingWeb → AI Agent Readiness:カウントのオン/オフ、保持期間、日次 cron スキャンのオン/オフ、TLS 検証を設定します。
スキャンは自サーバー上で、デフォルトのストアビューのベース URL に対して外部から実行されます。エージェントが実行するのと同じ取得を行います:/、/robots.txt、/.well-known/ucp、/llms.txt、/sitemap.xml、最大 3 つの商品ページ、GPTBot と ClaudeBot としてのホームページへの再アクセス、さらにプロファイルがエンドポイントを示している場合は MCP ハンドシェイクです。実行予算は、全体で 60 秒、リクエストごとに 5 秒、レスポンスごとに 2 MB です。Cron expw_readiness_scan はサーバー時刻の 03:15 に毎日実行され、直近 400 件のスキャンが保持されます。
Run scan now は同期処理です。管理画面からの POST はスキャンが完了するまで待機するため、PHP-FPM のリクエストタイムアウトを 60 秒より長く設定する必要があります。
エージェントトラフィックカウンターの仕組みと、その検出範囲
controller_action_predispatch のオブザーバーが、リクエストの User-Agent を既知の AI エージェントトークンのリスト(Model/Tracking/AgentDetector:OAI-SearchBot、ChatGPT-User、GPTBot、Claude-User、Claude-SearchBot、ClaudeBot、Perplexity-User、PerplexityBot、Google-Extended、Applebot-Extended、Amazonbot、Meta-ExternalAgent、Bytespider、CCBot、Bingbot)と照合し、一致すると expw_readiness_daily に (日付、エージェント、ストアビュー) ごとの行を 1 件追加または更新します。それ以外のリクエスト(99.x%)については、部分文字列のスキャンが 1 回行われるだけです。「日付」にはストアに設定されたタイムゾーンが使われます。保持設定(デフォルトは 400 日)より古い行は、毎晩削除されます。トークンリストはモジュールに含まれており、モジュールのリリース時に更新されます。新しいエージェントが追加された場合は新しいバージョンが必要で、実行時にダウンロードされることはありません。
ダッシュボードには、エージェントごとの 7/30/90 日間の合計、直前の 30 日間との比較、および 14 日間のスパークラインが表示されます。
カウントは合計ではなく、最低数です。その理由は 2 つあり、ダッシュボードでは数値の横に説明が表示されます。
- 判定は申告されたユーザーエージェントに基づきます。ブラウザーのユーザーエージェントを提示するエージェントは検出されません。
- オブザーバーは PHP で実行されます。Varnish または組み込みのフルページキャッシュからページが完全に配信されると、PHP まで到達しないため、エージェントによるキャッシュヒットはカウントされません。ヒット率が高いストアでは、カウンターが検出するのは主にキャッシュミス、つまり初回訪問、キャッシュされていない URL、キャッシュをバイパスするすべてのアクセスです。
全体像を把握するには、エッジ(CDN またはウェブサーバーのログ)でカウントしてください。このモジュールには、意図的にエッジログのパーサーを含めていません。
プライバシー
このモジュールは、自ストア以外には一切リクエストを送信しません。
- セルフスキャンでは、ユーザーエージェント
ExpandingWebAgentReadiness/1.0.0 (+https://expandingweb.com/; readiness self-scan)を使用して、自ストアのストアフロント URL(上記の一覧)を取得します。唯一の例外は MCP-01 です。UCP プロファイルが別のホスト上にある MCP エンドポイントを示している場合、ハンドシェイクはそのエンドポイントに送信されます。プロファイルがエージェントにそのように指示するためです。 - エージェントトラフィックカウンターはリクエストの
User-Agentヘッダーを読み取り、自ストアのデータベースに整数を書き込みます。IP アドレス、URL、ヘッダーは保存されません。 - スキャン結果とカウンターは自ストアのデータベースに保存され、管理画面にのみ表示されます。ダッシュボードの Agentic Commerce Suite へのリンクは、パラメーターのない静的 URL です。ストアに関する情報は送信されません。
テレメトリー、ライセンス確認、エージェントリストのダウンロード、外部への通信はありません。
公開スキャナーとチェックを常に同期させる
Model/Scanner/Scanner.php と Model/Scanner/UcpProfile.php は生成ファイルであり、手動で保守するものではありません。bin/port-scanner.php は、公開スキャナーのソース(expandingweb.com リポジトリ内の app/Agentic/Scanner.php。公開されていません)をこのモジュールの名前空間に移植し、上流のリビジョンを Model/Scanner/.upstream-hash に記録します。このスクリプトでは、意図的な差異を5つだけ適用します。名前空間と厳密な型指定、公開スキャナーの SSRF 対策済みクライアントに代わる ScanHttp(対象は自身のベース URL のみであり、正当にプライベートアドレスの場合もあるため)、フェーズ1での並行取得ではなく逐次取得、15秒ではなく60秒の制限時間(cron で実行される処理を待つ人はいないため)、そして MCP の clientInfo と robots.txt の照合でスキャナー独自の識別情報を使うことです。また、上流の構造が変わっている場合、スクリプトは実行を拒否します。
その理由は、このモジュールが掲げる約束にあります。同じストアであれば、公開スキャン、ベンチマーク、ストア内スキャンが同じ判定を出さなければなりません。四半期に2回、1,800行を手動でマージするやり方では、その約束はいつの間にか損なわれてしまいます。そのため、このファイルには DO NOT EDIT BY HAND マーカーがあり、CI で強制されています。チェックの動作に問題がありますか?問題を引き起こすストアの構造を添えて issue を作成してください。修正は上流に反映され、その後このモジュールに移植されます。CONTRIBUTING.md を参照してください。
このモジュールに含まれないもの
マーチャントフィードのシンジケーション(OpenAI、Perplexity、Google Merchant Center)、Product/Offer/ProductGroup JSON-LD の修復、エンドポイント(/llms.txt、/.well-known/ucp、MCP サーバー、エージェント向け商品フィード、チェックアウトセッション)、エージェントファネルと収益エクスポージャーの分析、AI の可視性とシェア・オブ・ボイスの調査、競合分析は有料プランの対象です:Agentic Commerce Suite。このモジュールは診断を行い、Suite は修復を行います。
エージェントと MCP クライアント向け
Expanding Web 独自の MCP サーバーは、公式 MCP レジストリに掲載されています。com.expandingweb/agentic-commerce-readiness(ストアのスキャン、オファーの読み取り、チェックアウトセッションの開始)と com.expandingweb/nord-trail-store(参照用のエージェント対応ストアフロント)です。どちらも POST 経由で JSON-RPC 2.0 を使用します。これは、このモジュールのチェックがマーチャントのストアで検出することを想定しているものと同じ形式です。
開発
ln -s /path/to/agent-readiness app/code/ExpandingWeb/AgentReadiness
bin/magento module:enable ExpandingWeb_AgentReadiness && bin/magento setup:upgrade
テスト、静的解析、コーディング規約については、CONTRIBUTING.md を参照してください。バージョン履歴については、CHANGELOG.md を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。