3つのクローラーと3つのレビュープラットフォームへのcurl.
フィールド実験。Shopifyのストア3つ、レビュープラットフォーム3つ、AIユーザーエージェント3種。9セルのグリッド、そのうち6つが空。空のセルこそが物語です。
CONTENTS · 13
AIクローラーがShopifyの商品ページで実際に何を見ているのか、確かめたいと思いました。マーケティング資料が主張する内容でもなく、レビューウィジェットベンダーのSEOページが言う内容でもなく、ターミナルと1回のHTTPリクエストで直接問いかけたときに何が返ってくるのか、それが知りたかったのです。
その問いを立てる方法は、一時的にクローラーになりきることです。ユーザーエージェントをGPTBotに設定し、商品URLにcurlを実行し、HTMLをディスクに保存して、文字列検索のできる任意のエディタで開きます。そのストアの高評価レビューの中で最も特徴的な文を探してください。ページの他のどこにも、ベンダーのマーケティング文章にも登場しない、そういう一文です。その文がファイルの中にあれば、クローラーはその文を見ています。なければ、クローラーは見ていません。そのフェッチ以降、顧客の言語に何が起きるにしても、その文は存在しない状態で進んでいくことになります。
数週間前、私たちはこれを3つのストアに対して、それぞれ3つのクローラーで実施しました。合計9回のフェッチ。対象はShopify App Storeで最も人気の高いレビュープラットフォーム3つ(Yotpoを使うストア、Okendoを使うストア、Looxを使うストア)、いずれもデフォルトのApp Storeインストール状態です。結果は3×3のグリッドで、このエッセイはそれをセルごとに辿っていきます。ほとんどのセルは空です。空でないものでも、集計評価のみで、言語は含まれていません。
ストアは匿名(ストアA、ストアB、ストアC)のままにします。焦点はプラットフォームであって、ストア運営者ではないからです。どのShopifyストアでも、どのウィジェットを使っていても、同じテストを実行すれば同じ結果になると私たちは予測しています。20分、ターミナル、文字列検索。
実験の概要
ストアのURLは、購入者が見つけるような方法で選びました。いずれも、非ブランドの商品クエリ(美容液、キャンドル、ペットサプリメント)のオーガニック検索上位結果です。各商品ページには、ストア運営者自身のダッシュボード集計で300件から3,000件のレビューがありました。いずれも、カスタムのサーバーサイドレンダリング層やエンタープライズ機能なしに、新規のデフォルトインストールでレビューソフトウェアを稼働させていました。
ストアAはYotpoを使用し、Shopify App Storeで提供されている標準ウィジェット設定でした。
ストアBは同じ標準設定でOkendoを使用していました。
ストアCは写真・動画レビューアプリのLooxを使用し、こちらもApp Storeのデフォルト設定です。
リクエストは単一の住宅用IPから、2026年5月に実施しました。各ユーザーエージェント文字列は、各プラットフォームが公開しているクローラーオペレーターページの記載をそのまま使用しました。ページとのインタラクションは行っていません。JavaScriptも実行していません。iframeも追いかけていません。クローラー自身が行うのと同じ方法でHTMLをリクエストしました。GETリクエスト、適切なユーザーエージェントヘッダー、クッキーなし、Accept-Languageはデフォルトのみです。
3つのボットの公開ドキュメントは明確です。OpenAIのGPTBotは、OpenAIのクローラーオペレーターページ(2026年5月参照)によれば、HTMLをフェッチして解析しますが、JavaScriptは実行しません。AnthropicのClaudeBotは、Anthropicの公開ボットドキュメントによれば、HTMLをフェッチして解析しますが、JavaScriptは実行しません。PerplexityのPerplexityBotは、ライブクエリ時に作動するPerplexityUserエージェントとは異なるインデックスクローラーで、同様にHTMLのみを処理します。
これが実験の範囲です。3ページ、3クローラー、9回のフェッチ、セルごとに1つの問い。サーバーが返す生のHTMLに、購入者がブラウザで見るレビューテキストは含まれているのか。
セルA1:GPTBotが見るYotpo
ストアAがGPTBotに返すページは50キロバイトです。Shopify Liquidレンダリングのテーマが含まれています。ヘッダー、商品タイトル、価格、バリアントピッカー、購入ボタン、商品説明、サイズガイド、配送ポリシーの抜粋、フッター。商品の構造化データ、商品名・価格・画像を含むProductスキーマ、レビュー件数と平均スコアを記載したAggregateRatingノードが1つ含まれています(AggregateRatingはサーバーサイドであり、HTMLに含まれる唯一のレビュー形式の証拠です)。
含まれていないもの:Yotpoがこの商品に保持する812件のレビューのテキスト。レビューセクションはクラス`yotpo-main-widget`を持つdivで、いくつかのデータ属性(商品ID、商品名、画像URL、価格、通貨)と、YotpoのスタティックCDNを指す単一の非同期scriptタグだけがあります。レスポンス内のdivは空であり、スクリプトは実行されていません。
最高評価レビューの最も特徴的なフレーズ、つまりテクスチャーとメイクアップ下での使用感についての特定の文を検索しました。そのフレーズは見つからず、部分一致もありませんでした。集計評価と構造化データの外で「review」という単語を検索すると、ナビゲーションラベルとARIA属性に数件のマッチがありました。いずれもレビューではありませんでした。
このページを訪れたクローラーが持ち帰るのは、ストア運営者の商品説明、価格、集計評価、そして自身には読めない場所に812件のレビューが存在するという認識だけです。文章は1行も持ち帰りません。
セルA2:ClaudeBotが見るYotpo
ストアAがClaudeBotに返すページは、GPTBotに返すページとバイト単位で同一です。Shopifyのオリジンはユーザーエージェントによってレスポンスを変えません。どのクライアントにも同じLiquidレンダリングのテーマを提供します。レビューウィジェットは同じ空のdivで、scriptタグは同じ非同期フェッチです。そしてAnthropicのクローラーも、OpenAIのクローラーと同様に、スクリプトを実行しません。
このページについてClaudeBotのインデックスは、GPTBotのインデックスと同じです。集計評価、件数、レビューなし、同じ空白。
同じ特徴的なフレーズを確認しました。存在しません。
セルA3:PerplexityBotが見るYotpo
同じレスポンス。同じ空のdiv。同じscriptタグ。レビューの文も同様に存在しません。
今回のテストでPerplexityBotは、GPTBotおよびClaudeBotと同じ動作をしました。PerplexityUserエージェントは、ユーザーがPerplexityにライブな質問をして、Perplexityが少数のページをリアルタイムでフェッチする際に作動するもので、ブラウザに近い動作をし、簡単なJavaScriptをレンダリングできる場合もあります。しかし、PerplexityUserはインデクサーではありません。インデクサーはPerplexityBotであり、PerplexityBotはJavaScriptを実行しません。
したがって、グリッドの1行目はすべてのセルで空です。標準インストール状態のYotpoは、私たちがテストしたすべてのAIクローラーに対して不可視です。
セルB1・B2・B3:Okendoと3つのクローラー
OkendoはShopify App Storeのプレミアムなダイレクトトゥコンシューマー(DTC)向けオプションです。Yotpoよりデザイン意識が高く、ブランドに忠実な代替として位置づけられています。ウィジェットの見た目は異なりますが、仕組みは同じです。
ストアBが返すページは、仕組みの面で同じ形をしています。`okeReviews`というプレフィックスのOkendoコンテナdiv、一連のデータ属性(サブスクライバーID、商品ID、ロケール)、OkendoのCDN(d3hw6dc1ow8pp2.cloudfront.net)を指すscriptタグ。レスポンスにレビューは含まれていません。段落もありません。構造化データにはAggregateRatingノードが含まれています。Yotpoと同様、OkendoもSEO上の理由でサーバーサイドに集計を書き込んでいます。引用文は含まれていません。
GPTBot、ClaudeBot、PerplexityBotのいずれも、このページで同じ結果を返しました。集計評価、件数、レビューなし。
したがって、グリッドの2行目もすべてのセルで空です。
セルC1・C2・C3:Looxと3つのクローラー
Looxは写真・動画レビュープラットフォームです。差別化要因は視覚的な面にあります。多くのインストール環境では、すべてのレビューに顧客が送信した画像が添付されています。ストアCが返すページは、3つの中でJavaScriptへの依存度が最も高いです。フォトカルーセル、ライトボックス、画像の遅延読み込みがあります。ブラウザで購入者に見えるほぼすべてのものは、ページ読み込み後にレンダリングされます。
したがって、サーバーが返すHTMLは3つの中で最も内容が少ないです。`loox-reviews-default`というクラスのdivといくつかのデータ属性、その後にscriptタグがあります。初期HTMLには画像もなく、レビューテキストもなく、Looxの場合、ページの構造化データにデフォルトではAggregateRatingノードすら含まれていません(ストア運営者が設定することはできますが、デフォルトインストールには含まれていません)。
GPTBot、ClaudeBot、PerplexityBotはいずれも同じ結果でした。レビューなし。グリッドの3行目もすべてのセルで空です。
グリッド:描画結果
3行、3列、9セル。レビューテキストを含むセルは0件。
これが結果であり、このエッセイを書く理由なので、繰り返します。Shopify App Storeで最も人気の高いレビュープラットフォーム3つを横断し、引用エコノミーで最もよく使われるAIクローラー上位4つのうち3つ(4つ目はGooglebotで、後ほど取り上げます)に対して、レビューテキストが含まれているのは9セル中0件でした。クローラーが持ち帰ったのは、6セルでは集計評価のみ、3セルでは何もありませんでした。9つのいずれのセルでも、レビューの文章は1行も持ち帰っていません。
JavaScriptウィジェットを導入しているストア運営者は、引用エコノミーにおいて集計評価を公開しているに過ぎません。レビューを公開しているわけではないのです。
人気レビュープラットフォーム3社。人気AIクローラー3種。9回のフェッチ。レビューの文はゼロ。このグリッドが証拠です。そしてこのグリッドが問題でもあります。
Googlebotについて
理解のある読者はこう問うでしょう。GooglebotはどうなのかGoogleはJavaScriptを実行するので、Googlebotはこの問題を解決するのではないか、と。
同じ週に、同じ3ページに対してGooglebotでも同じ実験を実施しました。結果はより複雑で、独立した段落で扱う価値があります。
Googlebotのレンダラーは実在します。ただし、Googleが少なくとも2018年から明示してきたように、またJohn Muellerが2024年から2025年にかけてOffice Hoursで繰り返し述べてきたように、2段階のパイプラインで処理されます。第1段階は、AIクローラーと同様に初期HTMLをフェッチします。第2段階では、ページをレンダリングキューに入れ、ヘッドレスChromiumを実行し、JavaScriptを実行してレンダリングされたDOMをインデックスします。第2段階には遅延があります。最短でも数時間、通常は数日、優先度の低いページでは数週間かかります。
GoogleのURL検査ツールで同じ3ページを再フェッチしたところ、3ページすべてでレビューを含むレンダリングされたDOMが返されました。したがって、理論上はGooglebotはレビューを見ています。実際には、初期フェッチとレンダリングされたインデックスの間の遅延によって、Googleのインデックスにおけるレビューコーパスの鮮度は、構造的にストア運営者の実際のコーパスより遅れることになります。昨日美容液のレビューを書いた購入者は、今日のGoogleのインデックスには入っていません。
そしてこれはGoogleの話です。ページをGeminiのトレーニングに使用するかどうかを決めるルーティングフラグであるGoogle-Extendedは、Googlebotのクロールに依存しています。ChatGPT、Claude、Perplexityにはそのような関係がありません。第2段階のレンダラーを持ちません。JavaScriptウィジェットから持ち帰れる最大のものは集計評価だけです。
AI回答エンジンが商品ページを読む際に実際に何を消費するのかについては、the engine the answer engine readsで別途論じています。本エッセイはその議論の実証版です。エンジンはHTMLを読み、HTMLにはレビューが含まれておらず、グリッドは空になっています。
反論:それは安いプランでのインストールだから
2つ目の合理的な反論として、私たちがサンプルした3つのストアは、レビュープラットフォームのデフォルトのApp Storeグレードのインストールを使用していた、というものがあります。これらのプラットフォームにはそれぞれエンタープライズ層(Yotpo Enterprise、Okendo Plus、Loox Scale)があり、オプションのサーバーサイドレンダリングモジュールが含まれています。より高い料金を支払うストア運営者は、原則としてサーバーレンダリングのレビュースニペットを選択できます。
これは事実です。しかし結果は変わりません。
3つのプラットフォームのSSRの提供内容に関する公開された技術ドキュメントを確認しました。いずれの場合も、サーバーサイドレンダリングは初期HTMLに少数のレビューブロックを配信します。通常は3件から10件で、多くの場合は最新または最高評価のものです。コーパスの残りは依然としてクライアントサイドです。800件のレビューを持つストア運営者がSSRを有効にしても、AIクローラーに公開されるのは10件だけです。残りの790件は依然としてウィジェットの中にあります。
ゼロよりは良いです。しかし同等ではありません。
そしてこれは、App Storeデフォルトのストア運営者、つまりShopifyユーザーの中央値が支払わない、より高い価格層の後ろに隠れています。2026年のShopifyストアのロングテールでは、デフォルトインストールこそが実際のインストールです。そしてデフォルトインストールは不可視です。
もう一つ言及する価値のある仕組み上の詳細があります。各プラットフォームが配信するサーバーレンダリングのスニペットは、多くの場合、好意的なレビューや最新のレビュー、あるいは固定のビジュアルブロックに収まる短いレビューを優先するように選別されています。サーバーサイドでレンダリングされるレビューは、コーパスのランダムサンプルではありません。マーケティング上許容できるサンプルです。クローラーがレビューを取得できる場合でも、取得するのは最も見栄えの良い10件です。
複雑なレビュー(星4の「気に入っているがキャップが開けにくい」、星3の「日中は良いが夜は向かない」)、長いレビュー、購入者が検索するであろう特定のロングテールキーワードを含むレビューは、依然としてJavaScriptウィジェットの中にあり、依然として不可視です。選択の問題がレンダリングの問題を複合させています。クローラーはレビューをほとんど見ていないだけではなく、特定の種類のレビューしか見ておらず、ロングテール全体を見逃しています。
the end of the review widgetでは、ウィジェットの形状が購入者の言語に求められる仕事に対して構造的に不適合であると論じました。本エッセイはcurlという形の確認です。ウィジェットは購入者のためにレンダリングされます。クローラーのためにはレンダリングされません。ストア運営者は両方のオーディエンスに対して費用を払っていますが、リーチできているのは一方だけです。
反論:GPTBotはどうせ重要ではない
3つ目の反論は、レビュープラットフォームのマーケティング資料で時折見られるものです。AIクローラーはトラフィックのごく一部でしかない。Googlebotがインデックスを持っているのに、なぜAIクローラーのために最適化するのか、というものです。
上述したGooglebotの鮮度の問題は一旦置いておきます。より本質的な回答は、AIクローラーはトラフィックの源泉ではなく、コンバージョンの源泉だということです。敏感肌向けの最良の美容液をChatGPTに尋ねた購入者は、すでに何らかのストアのレビューを引用した回答の下流にいます。その回答からストアに到達した購入者は、従来のオーガニック検索では及ばない購買意図を持って訪問しています。
Adobe Analyticsの2025年ホリデーリテールレポートは、生成AIソース経由で訪問した人のコンバージョン率が従来の検索経由の訪問者より9.4%高く、サイト滞在時間が12%長いことを報告しています。
グリッドのセルは抽象的ではありません。空の各セルは、ストア運営者が得られないコンバージョンです。レビュワーは引用につながったはずの文を書きました。ストア運営者はその文を収集しましたが、クローラーはそれを見ず、AI回答エンジンは別のストアを引用しました。
the citation economyでは、情報源となる二度目のチャンスはありません。引用を持つブランドが購入者を持ちます。そうでないブランドは、他者の回答の中で、通りすがりに言及される競合他社として、あるいは全く言及されないものとして登場します。
ストア運営者が明日すべきこと
実験と同じ形式で、短いリストにまとめます。
最も売れている商品ページを選び、URLをコピーしてください。
ターミナルを開き、ユーザーエージェントをGPTBotに設定したcurlコマンドを実行し、出力を保存して、任意のテキストエディタで開きます。最高評価レビューの最も特徴的なフレーズを検索してください。そのフレーズがファイルにない場合、あなたのレビューはChatGPTのトレーニングおよび検索パイプラインが参照するインデックスに入っていません。ClaudeBotでも、PerplexityBotでも同様に実施してください。
結果は3通りのいずれかになります。フレーズが3つすべてのファイルに含まれていれば、サーバーサイドレンダリングのレビューシステムを運用していることになります。2026年のShopify App Storeの主要アプリはそうではないため、あなたは幸運な少数派に属しています。フレーズが一部のファイルにあって他にはない場合、通常とは異なる設定(部分的SSRを使うJudge.meやエンタープライズSSR層のいずれか)を使用しており、空白の形はスイスチーズのようです。フレーズがどのファイルにもない場合、あなたのレビューはAIクローラーにとってインターネット上に存在せず、他の全員と同じグリッドの行にいます。
テスト後、グリッドのどこに位置するかがわかります。テストには20分かかります。次の決断は、そのセルをどうするかです。
セルに対して何をするか
正直なところ、答えは地味です。コーパスの正規記録が存在する場所を変えることです。現状では、ウィジェットベンダーのJavaScriptの中に存在し、初期描画の直後にDOMにハイドレーションされます。購入者のブラウザはそのハイドレーションを待つだけの時間があります。クローラーの多くはそうではありません。
したがって、必要な作業はコーパスのコピーをベンダーのCDNから取り出し、ShopifyがByte 1で配信するHTMLの中に入れることです。必ずしもすべてである必要はありません。最新の100件のレビューがほとんどの仕事をこなします。特に、最高評価のもの、最新のもの、4つ星と3つ星のテールにわたるサンプルが含まれていれば。ストア運営者が星と写真のビジュアルを好む(ほとんどそうですが)なら、ウィジェットはページに残しておいて構いません。重要なのは、ウィジェットの上か下のどこかに、プレーンなサーバーレンダリングのマークアップで、日付、著者ハンドル、評価、顧客が書いた実際の段落を含む意味論的な記事のリストが存在することです。
その議論はreviews are language not inventoryに抽象的な形で存在します。上記のグリッドは同じポイントの具体的な版です。言語がJavaScriptの中にあるためセルは空であり、言語がクローラーが最初のホップで読めるHTMLに移動した瞬間にセルは埋まります。
技術的な作業量は少ないです。私たちが確認したすべてのレビュープラットフォームは、コーパスのJSONエンドポイントを公開しています。Shopifyテーマはリクエスト時にそのエンドポイントを呼び出し、レスポンスを処理して、記事を商品テンプレートにレンダリングできます。ほとんどの場合、半日のテーマ作業で済みます。それ以下の場合もあり、ストア運営者がレスポンスをプリキャッシュしてエッジから配信したい場合は1日かかることもあります。
1年後、グリッドが埋まっているストア運営者は、より見栄えの良いウィジェットを選んだ人ではありません。静かに別のページを公開した人たちです。
結びとして
ウィジェットベンダーがウィジェットベンダーであることを責めるつもりはありません。彼らは作るべきものを作っています。それはUIの一部です。星評価、件数、フォトカルーセル、購入確認済みバッジ。それは2015年のブリーフであり、2026年の多くのストア運営者オンボーディング通話でも依然としてブリーフのままです。そのブリーフは、それ自体の条件で達成されました。
2015年から変わったのはブリーフではありません。誰もブリーフを書かなかった2番目のオーディエンスです。クローラーは過去2年間で静かにオンラインになり、サーバーが最初のリクエストで渡すHTMLを読み、持ち帰ったものはすべて、ストア運営者が決して見ない別のコンテキストで、ある購入者の回答に引用されます。その2番目のオーディエンスは、ウィジェットの仕事に常に暗黙的に含まれていました。今やそれは2つのうち大きい方であり、ウィジェットが最も対応できていないオーディエンスです。
まだ自分のストアに対してcurlを実行していないなら、その式のどちら側に自分がいるのかを本当にはわかっていません。ぜひ実行してみてください。ターミナルコマンド1つ、最も売れている商品のURL、3つのクローラーを順番に。最高評価レビューの最も特徴的な行をレスポンスからgrepしてください。そこになければ(おそらくないと予想しますが)、AI回答エンジンがあなたのストアを読みに来たときに見るものを、あなたはちょうど見たことになります。次に何をするかは、その結果と購入者がブラウザで見るものとのギャップの中にあります。
THE LETTER
When there is a new essay worth sending, it goes here first.
If any of this reads like something your store could use,write to us.
We will write back.