構造化データはAIに読まれるか。OpenAIが公開したWeb閲覧コードを動かして検証した結果
執筆: 株式会社センダー
OpenAIが公開したWeb閲覧のサンプルコードでは、ページの構造化データ(JSON-LD)はAIに渡る前に削除されます。当社がこのコードを実際に動かして確かめたところ、meta description・OGP・公開日のmetaタグも削除され、残ったのは画面に表示される本文・表の文字・画像のalt・リンクの文字でした。ただし、このコードはChatGPTで実際に使われているコードではなく、公開モデル向けの参考実装です。この記事では、検証の方法と結果、結果から言えることと言えないこと、LLMO対策で何を変えるべきかを順に説明します。2026年10月時点の情報です。
LLMO対策の全体像はLLMOとは何か、SEOとの役割分担はLLMOとSEOの違いで扱っています。
検証のきっかけになった主張
2026年10月26日、海外のSEO担当者がXに「ChatGPTのWebクローラーのサンプルコードはSchema(構造化データ)をすべて削除している。構造化データがAIの回答に影響するという説は誤りだ」という趣旨の投稿をしました。根拠として示されたのは、OpenAIがGitHubで公開している「gpt-oss」というリポジトリの中の、Web閲覧ツールのコードです。
構造化データとは、ページの内容を検索エンジンが機械的に読み取れる形式で補足するコードのことです。多くのサイトは、JSON-LDという形式で、HTMLの <script> タグの中に書いています。LLMO対策(AIの回答で自社が引用・推奨されるための対策)では、構造化データの実装が施策の1つとして挙げられることが多くあります。
当社は、投稿の内容をそのまま受け入れるのではなく、次の3点を自分たちで確かめました。
- コードは本当に構造化データを削除しているか
- 構造化データ以外に、どの要素が残り、どの要素が消えるか
- このコードの結果を、ChatGPTの挙動として扱ってよいか
検証の方法
当社は、gpt-ossリポジトリの最新版(2026年10月27日時点のコミット 5681a6b)から、HTMLをAI向けの文章に変換する処理(page_contents.py の process_html)を取り出し、手元のPCで実行しました。この処理は、取得したWebページのHTMLを、モデルが読む文章に変換する部分です。
入力したページは2種類です。
- 検証用のテストページ: 給湯器の料金ページを想定し、14種類の要素を1つずつ入れたHTMLを当社で作成しました。各要素に目印の文字列を入れ、変換後の文章に目印が残るかで判定しました
- 当社サイトの実ページ3本: LLMO対策のサービスページ、llms.txtの解説記事、LLMOとは何かの解説記事です。公開中のHTMLを取得して同じ処理にかけ、構造化データにだけ書かれている文が、変換後の文章に含まれるかを数えました
テストページの結果: 14要素のうち残ったのは9要素
| 要素 | 変換後の扱い |
|---|---|
| 構造化データ(JSON-LD。商品情報とよくある質問の2種類) | 削除される |
| meta description(検索結果に出る説明文) | 削除される |
| OGP(SNSで共有されたときのタイトル) | 削除される |
| 公開日のmetaタグ | 削除される |
| JavaScriptのコード | 削除される |
| titleタグ | 本文とは別に「タイトル」として保持される |
| 見出し(h1)と段落 | 残る |
| 表 | 文字は残る。行は改行で分かれるが、列の境界は空白になる |
| 画像 | 代替テキスト(alt)が「Image 0」という番号付きで残る。altが無い場合はtitle属性が残る |
| リンク | リンクの文字が番号付きで残る。URLは本文とは別の一覧に入る |
| 開閉式のよくある質問(details・summaryタグ) | 質問と回答の両方が残る |
| microdata形式の構造化データ | 画面に表示される文字は残る。表示されない値(metaタグのcontent)は削除される |
| CSSで非表示にした文 | 残る |
| JavaScriptが無効なときだけ表示する文(noscript) | 残る |
コードを読むと、この結果になる理由が分かります。変換処理は、HTMLをMarkdown形式の文章に変える外部ライブラリ(html2text)を使っています。このライブラリは <script> タグと <head> 内のmetaタグを文章に含めません。JSON-LDは <script> タグの中に書くため、一緒に削除されます。コードには「公開日は処理の負荷を理由に取り出していない」という注記もあります。表は、設定で表の書式を無視しているため、文字だけが残ります。
一方で、CSSで非表示にした文は残りました。この処理はページの見た目を計算しないため、画面に表示されない文も、HTMLに書かれていれば文章として渡ります。
当社サイト3ページの結果
当社サイトは、全ページに会社情報(Organization)の構造化データを入れ、記事には記事情報(BlogPosting)、サービスページにはサービス情報(Service)とよくある質問(FAQPage)を入れています。
| ページ | 構造化データのブロック数 | 構造化データ内の文(8文字以上)の数 | そのうち変換後の文章に含まれなかった数 |
|---|---|---|---|
| LLMO対策のサービスページ | 3 | 19 | 3 |
| llms.txtの解説記事 | 2 | 5 | 2 |
| LLMOとは何かの解説記事 | 2 | 5 | 2 |
変換後の文章に含まれなかった文は、会社紹介の文、ページの要約文、サービス名の3種類でした。サービスページのよくある質問は、同じ質問と回答を画面にも表示しているため、構造化データが削除されても、本文の側からすべて読み取れました。
この結果から、当社サイトでは、構造化データにしか書いていなかった情報は、会社紹介の文、ページの要約文、サービス名に限られていたことが分かりました。料金・対応範囲・よくある質問など、AIの回答に使われてほしい情報は本文に書いてあったため、このコードの処理では失われていません。
この結果から言えること、言えないこと
言えること
- OpenAIが公開したこの閲覧コードを使うAIには、構造化データ・meta description・OGP・公開日のmetaタグは渡りません
- 同じコードを使うAIに渡るのは、画面に表示される本文に近い文章です。表の文字、画像のalt、リンクの文字も含まれます
- 構造化データにしか書いていない情報は、このコードが作るモデル向けの文章に含まれません
言えないこと
- ChatGPTの本番の挙動: gpt-ossは、OpenAIが2025年8月に公開した、誰でも動かせるモデルのリポジトリです。閲覧ツールは、そのモデルと組み合わせて使うための参考実装です。ChatGPTの本番で動いている取得・解析の仕組みは公開されていません
- 「最近公開されたコード」であること: このコードはgpt-ossの公開時からリポジトリに含まれています。2026年10月に新しく公開されたものではありません
- 検索の段階での扱い: このコードは、ページの取得そのものを外部の検索APIに任せています(コードに含まれるのはExaとYou.comの2種類)。検索結果の一覧では、ページのHTMLではなく、検索APIが返した要約や抜粋文を使います。どのページが候補に選ばれるかは検索APIの側で決まり、その過程で構造化データが使われているかは、このコードからは分かりません
- モデルが残った文章をどう使うか: 今回の検証は、変換後の文章に目印の文字が残るかを調べたものです。モデルに回答を生成させてはいないため、残った文章をモデルが理解し、回答に引用するかは分かりません
- 検索APIを通した場合の結果: 当社サイトの3ページは、HTMLを直接取得して変換処理に渡しました。ExaやYou.comのAPIを通した場合に、APIが返すHTMLが同じになるかは確かめていません
- Googleでの扱い: Googleは、構造化データをリッチリザルト(検索結果に評価の星や価格を表示する機能)に使うと公式に説明しています。今回の結果は、Googleの検索やAI Overviewsでの扱いとは別の話です
ChatGPTの通信を観察した海外の報告でも、ページのheadタグの一部は読まれている一方、構造化データが使われた形跡は確認されていないとされています。今回の検証と同じく、構造化データの利用は確認されていません。ただし、どちらもChatGPTの本番の仕様を示す一次情報ではありません。
構造化データについては、AirOpsとKevin Indig氏による調査『The State of AEO Report』(2026年)で、AIに引用されたページの約61%が構造化データを3種類以上実装していたと報告されています。この数値は相関関係であり、サンプル数・統計手法の詳細は公開されていません。構造化データがあるから引用されたのか、見出しの整理や定期更新など他の施策を行っているサイトほど構造化データも実装しているのかは、この調査からは区別できません。今回の検証結果は、少なくともページを読む段階では構造化データの中身がAIに渡らない仕組みがあることを示しており、後者の説明と矛盾しません。
LLMO対策で変えること
検証結果をふまえて、当社は次の6点を実務の基準にします。
- AIの回答に使われてほしい事実は、本文に書く。 料金、対応エリア、営業時間、実績の数値、よくある質問の回答は、構造化データだけに書かず、画面に表示される本文にも書きます
- 構造化データは外さない。 Googleのリッチリザルトに使われるうえ、検索の段階での扱いは今回の検証で否定されていません。本文と同じ内容を構造化データにも書き、両者の内容を一致させます
- 更新日は本文に表示する。 公開日・更新日のmetaタグは今回のコードでは削除されました。記事の冒頭か末尾に「更新日 2026年10月27日」のように文字で表示します
- 表は、行だけを読んでも意味が分かる形にする。 表の区切りが消えると、列の見出しとの対応が分かりにくくなります。表の前後に、表の結論を1〜2文で書きます
- 画像の中の文字に頼らない。 画像は代替テキスト(altが無ければtitle属性)しか残りません。料金表や比較表を画像だけで載せている場合は、同じ内容を本文か代替テキストに書きます
- 非表示にした古い文を残さない。 CSSで非表示にした文もAIに渡ります。終了したキャンペーンの文や古い料金を非表示にしているだけの場合は、HTMLから削除します
項目ごとの作業手順はLLMO対策のやり方(実装チェックリスト22項目)にまとめています。ChatGPTに絞った対策はChatGPTの検索対策、GoogleのAI Overviewsに絞った対策はAIO対策とはで扱っています。
自社のページで確かめる方法
同じ確認は、Pythonを動かせる環境があれば自社のページでも行えます。
- GitHubのopenai/gpt-ossリポジトリから
gpt_oss/tools/simple_browser/page_contents.pyを取得します - 必要なライブラリ(html2text・lxml・tiktoken・aiohttp・pydantic)を入れます
- 自社ページのHTMLを取得し、
process_htmlに渡します - 出力された文章に、料金・対応エリア・会社名・よくある質問の回答が含まれているかを確認します
外部から取得したコードを実行するため、業務用のPCとは別の環境で動かすことをおすすめします。
よくある質問
構造化データは削除してもよいですか
削除はおすすめしません。Googleはリッチリザルトに構造化データを使っており、検索エンジンやAIの検索の段階で構造化データがどう使われているかは、今回の検証では分かっていません。構造化データは残したうえで、同じ情報を本文にも書きます。
llms.txtはこの閲覧コードで読まれますか
今回のコードは、AIが開くと決めたページのHTMLを文章に変換する処理です。llms.txtを自動で探して読む処理は含まれていません。llms.txtの位置づけと書き方はllms.txtとはで説明しています。
ChatGPTが自社ページをどう読んだかは確認できますか
ChatGPTの内部でどの文章が使われたかを直接見る方法は、2026年10月時点で公開されていません。当社が実務で確認しているのは、回答に自社ページが引用されたかどうかと、ChatGPT経由でサイトに来た人数です。流入の数え方はGA4でAI検索経由の流入を計測する方法で説明しています。
まとめ
- OpenAIが公開したWeb閲覧のサンプルコードでは、構造化データ・meta description・OGP・公開日のmetaタグが削除され、本文・表の文字・画像のalt・リンクの文字が残ります
- このコードは公開モデル向けの参考実装で、ChatGPTの本番の仕組みを示すものではありません。検索の段階やGoogleでの構造化データの扱いは、この検証では分かりません
- 当社サイト3ページでは、構造化データにしか書いていなかった情報は会社紹介の文、ページの要約文、サービス名に限られていました
- AIの回答に使われてほしい事実は本文に書き、構造化データは本文と同じ内容で残します。この進め方なら、今回のコードでは本文の情報が残り、Googleのリッチリザルトに必要な構造化データも失いません
自社のページで本文と構造化データの書き分けを点検する場合は、上の4つの手順から始められます。点検の範囲や優先順位を相談したい場合は、お問い合わせから相談できます。当社のLLMO対策の支援内容はLLMO対策・AI検索最適化コンサルティングで紹介しています。



