ブログ一覧に戻る
AEO実験llms.txt構造化データPerplexityChatGPTGemini

AEO Hack: AIはどのソースを読んでいるか? — 4ソースに異なる値を仕込んで検証した

HTML本文・Schema.org・llms.txt・独自JSONの4箇所に意図的に異なる数値を設置し、AI検索エンジンの回答から参照元を逆算する実験を行った。Perplexity・ChatGPT・Geminiの結果を公開。

実験の概要 — 4ソースに異なる値を仕込む

AEO(Answer Engine Optimization)の議論では「llms.txtを設置しよう」「Schema.orgを充実させよう」「AI向けJSONを用意しよう」という施策が語られる。しかし、AIが実際にどのソースを読んでいるかを検証した事例は少ない。

そこで自社プロダクト「KeyFace」のサイトを使い、4つのソースに意図的に異なる値を設置して、AI検索エンジンの回答内容からソースを逆算する実験を行った。

実験設計

日本語版・英語版それぞれで、以下の4箇所に異なる数値を埋め込んだ。例えば「分析項目数」は、HTML本文に8、Schema.orgに12、llms.txtに15、ai/keys.jsonに20と記載した。AIが「8」と回答すればHTML本文を、「15」と回答すればllms.txtを参照したと逆算できる。

項目HTML本文Schema.orgllms.txtai/keys.json
分析項目数8121520
対応シナリオ3種類5種類4種類6種類
処理方式ブラウザ完結クラウド処理エッジAIハイブリッド
出力形式JSONJSON + PDFJSON + CSVJSON + API

検証クエリは「KeyFaceの分析項目数は?」「KeyFaceの対応シナリオ数は?」など4問。日本語・英語の両方で、Perplexity(無料版)、ChatGPT(無料版・GPT-5.2)、Gemini 3に投げた。

結果 — HTML本文が94%を占めた

全27回の回答のうち、AIが正しくKeyFace(当社プロダクト)を認識して回答したのは17回。そのうち16回(94%)がHTML本文の値を返した。Schema.orgの値を単独で返したケースは0回、llms.txtも0回、ai/keys.jsonも0回だった。

エンジン別の詳細

エンジン正答率ソース内訳
Perplexity(無料)6/86回HTML、2回は別製品と混同または回答不能
ChatGPT(無料)8/87回HTML、1回はSchema+llmsの混在
GPT-5.23/33回すべてHTML(EN側の値も併記)
Gemini 30/8全問で別製品(顔認証システム)と混同

唯一の例外: ChatGPTの出力形式クエリ

ChatGPT(無料)に「KeyFaceの出力形式は?」と聞いたとき、回答は「PDFとCSV」だった。PDFはSchema.org(JSON + PDF)から、CSVはllms.txt(JSON + CSV)から取得したと推定される。つまり、HTML本文の「JSON」を無視して、Schema.orgとllms.txtの情報を混合した。4ソース中唯一の非HTML回答であり、ChatGPTが複数ソースを横断的に参照する可能性を示している。

Geminiの全問混同

Gemini 3は日本語・英語ともに全8問で、当社のKeyFace(非言語コミュニケーション分析ツール)ではなく、別の「KeyFace」(顔認証・勤怠管理システム)について回答した。興味深いのは、回答に含まれる数値がllms.txtやai/keys.jsonの実験値と偶然一致するケースがあった点だ。ソース逆算において「数値の一致」だけでは判定できないことを示す好例である。

ここから何を読み取ったか

1. 少なくとも「仕様クエリ」では、HTML本文が圧倒的だった

PerplexityとChatGPTは、Schema.org・llms.txt・独自JSONをほぼ無視して、HTML本文のテキストを参照していた。考えてみれば、HTMLはすべてのクローラーが確実に取得できるソースであり、他はあくまで補助だ。ただし、「おすすめは?」「比較して」のような推薦クエリでは違う結果になるかもしれない。今回わかったのは「製品仕様を聞かれたとき」に限った話である。

2. llms.txtの効果は、この実験では確認できなかった

llms.txtを単独ソースとして参照したケースは、正しく製品を認識した回答の中では0件だった。llms.txtの設置自体は低コストなので外す理由はないが、「llms.txtを置けばAIに読まれる」とまでは言えない。推薦クエリや、より権威性の高いドメインでは異なる結果になる可能性はある。

3. Schema.orgも単独では読まれなかった

Schema.orgの値を単独で返したケースも0件だった。ただしChatGPTの1件でSchema.orgの情報が混在していたため、補助情報として参照されている可能性はある。少なくとも「構造化データを入れればAEOは解決」ということはなく、構造化データの価値はリッチリザルトなど従来のSEO寄りだと考えている。

4. エンティティの一意性が、すべての前提だった

個人的に一番大きかったのはこの発見だ。Geminiが全問で別製品と混同した事実は、AEOの議論でしばしば見落とされる前提を浮き彫りにする。AIがそもそも「どのKeyFaceか」を区別できなければ、どのソースを最適化しても意味がない。エンティティの一意性(Wikidata登録、固有のブランド名、ドメイン権威性)は、個別の最適化テクニック以前の問題だった。

この結果を受けて、うちが次にやること

一般化できるほどのサンプルではないが、少なくとも自社サイトでは以下の順序で進めることにした。

うちの判断施策この実験での根拠
最優先で強化HTML本文の回答可能性を高める正答17回中16回がHTML参照(94%)
最優先で対処エンティティの一意性を確保するGeminiが全問で別製品と混同(0/8)
維持(既に実装済み)Schema.org構造化データ補助情報として混在参照あり(1件)
維持(設置コスト低)llms.txt単独参照0件だが、外す理由もない
経過観察独自JSON(ai/keys.json等)参照確認なし。仕様が固まれば再検討

これはあくまで「仕様クエリ × n=27 × 2026年3月時点」での判断であり、推薦クエリや他のドメインでは違う結果になる可能性がある。自社サイトで同じ実験をして検証することをおすすめする。

実験の限界

本実験にはいくつかの制約がある。まず、サンプルサイズが小さい(27回答)。次に、対象が単一プロダクトの仕様クエリに限定されており、「おすすめは?」「比較して」といった推薦クエリでは異なる結果になる可能性がある。また、無料版エンジンのみの検証であり、有料版(Perplexity Pro、ChatGPT Plus等)では挙動が異なるかもしれない。さらに、AIエンジンの挙動は日々変化するため、この結果は2026年3月1日時点のスナップショットである。

それでも、「AIが実際にどこを読んでいるか」を実データで示した点に価値がある。AEOの議論は推測に基づくものが多い中、こうした実験の積み重ねが必要だ。

自分のサイトで同じ実験をする方法

この実験は特別なツールなしで再現できる。手順は3つだけだ。

1. 4箇所に異なるダミー値を設置する

自社サイトの任意の仕様ページで、HTML本文・Schema.org JSON-LD・llms.txt・任意のJSONファイルに、同じ項目の異なる値を記載する。例えば「対応言語数」をHTML=5、Schema=8、llms.txt=12、JSON=15のように。値は事実と異なっていいが、実験後に必ず元に戻すこと。

2. 各AIエンジンに同じ質問を投げる

「[プロダクト名]の対応言語数は?」のように、設置した値を直接聞くクエリを投げる。Perplexity・ChatGPT・Geminiの無料版で十分。回答に含まれる値を記録し、どのソースの値と一致するかを照合する。

3. 結果を公開する

1社だけのデータでは一般化できない。n=1が10社集まればn=10になる。もし実験した方は結果を公開してほしい。うちのデータとの比較ができれば、「ドメインの権威性」「プロダクトの知名度」「クエリの種類」など、どの変数が効くのかが見えてくるはずだ。

次にやること

うちとしては、推薦クエリ(「非言語コミュニケーション分析ツールのおすすめは?」等)での再実験、有料版エンジンでの比較、時系列での変化追跡を予定している。結果は本ブログで随時公開する。