OpenAIクローラーとは?種類と役割をおさらい
OpenAIクローラーとは、OpenAIがChatGPTや関連サービスを提供するためにウェブ上のコンテンツを収集・参照するボット群の総称です。ひと口に「OpenAIのbot」と言っても、実際には用途ごとに複数のユーザーエージェント(UA)が使い分けられており、サイト運営者がrobots.txtやアクセスログで正しく扱うためには、まずそれぞれの役割を押さえておく必要があります。ここでは今回のヘルプドキュメント更新の話題に入る前提として、代表的な3つのクローラーを整理します。
GPTBot:モデル学習用のクローラー
GPTBotは、将来的な生成AIモデルの学習データを収集する目的で稼働するクローラーです。ペイウォールコンテンツやポリシー違反の可能性があるサイトは除外される仕様で、サイト側はrobots.txtで User-agent: GPTBot を指定してブロックできます[1]。学習利用の可否をコントロールしたい場合、まず対象になるのがこのGPTBotです。
OAI-SearchBot:検索インデックス用のクローラー
OAI-SearchBotは、ChatGPT内の検索機能(ChatGPT検索(旧SearchGPT)系機能)で回答の根拠となるページを見つけ、リンクとして提示するためにサイトをインデックスするクローラーです。GPTBotとは異なり、学習ではなく検索結果表示のためのクロールに用いられます。したがってブロックすると、ChatGPTの検索回答に自社サイトが露出しにくくなる可能性があります[2]。
ChatGPT-User:ユーザーのリクエストに応じて動くフェッチャー
ChatGPT-Userは、ユーザーがChatGPT上で特定のURLを開かせたり、ブラウジング機能やコネクター経由でページを参照させたりしたときに、その都度アクセスするフェッチャーです。バックグラウンドで無差別にクロールするのではなく、あくまで「ユーザー起点」で動作する点が特徴です。robots.txtの記述方法を工夫して、学習用と検索用・ユーザー起点アクセスとで扱いを分ける運用も可能です。
| クローラー名 | 主な用途 | 代表的なUA文字列(例) |
|---|---|---|
| GPTBot | モデル学習用のデータ収集 | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot |
| OAI-SearchBot | ChatGPT検索のインデックス作成 | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.4; +https://openai.com/searchbot |
| ChatGPT-User | ユーザー起点のページ取得(ブラウジング等) | Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; ChatGPT-User/1.0; +https://openai.com/bot |
このように、OpenAIクローラーは目的別に明確に切り分けられています。今回のヘルプドキュメント更新はこれら3種類すべてのUA文字列に共通する仕様を明文化したもので、次章以降で解説する「バージョン番号の変動」や「robots.txt取得時の追加マーカー」を理解するには、まずこの分類を押さえておくことが出発点になります。
ヘルプドキュメント更新の概要:何が変わったのか
OpenAIは、クローラーの識別方法をまとめた公式ヘルプドキュメント「Overview of OpenAI Crawlers」を更新し、これまで暗黙のうちに運用されていた挙動を明文化しました。今回の更新は新しいbotの追加や仕様変更ではなく、既存のOpenAIクローラーがどのようなユーザーエージェント(UA)文字列を返しうるかを、より具体的に説明した点がポイントです。[2]
追記された内容を大きくまとめると、次の2点に整理できます。いずれもサイト運営者がアクセスログを解析したり、robots.txtの記述を検討したりする際に押さえておきたい情報です。
- UA文字列のバージョン番号は変わりうる:
GPTBot/1.2やOAI-SearchBot/1.4のように末尾に付くバージョン番号は将来的に更新される可能性があり、固定値としてマッチングしてはいけないことが明記されました。 - robots.txt取得時には追加マーカー付きのUAが使われることがある:クローラーがrobots.txtを取得するリクエストでは、通常のUAの後ろに
; robots.txtのような識別子が付いた文字列を送出する場合があると明示されました。 - 該当するクローラーはGPTBot・OAI-SearchBot・ChatGPT-Userの3種類:いずれもOpenAIが公表しているbotであり、逆引きIPやUAで識別できる点は従来どおりです。
重要なのは、これらが「新しい挙動」ではなく「以前から動いていた仕様の説明追記」であるという点です。つまり、すでにログを丹念に見ていた運営者であれば、バージョン番号の違いや robots.txt マーカー付きのアクセスに気づいていた可能性があります。今回の更新によって、その挙動が公式にサポートされた仕様として位置づけられ、フィルタや正規表現を安心して設計できるようになった、というのが実務上の意義です。
robots.txt取得時のUA文字列の具体例
ここでは、OpenAIクローラーが実際にサイトへアクセスした際にログへ記録されるユーザーエージェント(UA)文字列を、通常のクロール時とrobots.txt取得時に分けて具体的に見ていきます。文字列の違いを押さえておくと、アクセスログからOpenAIのbotの挙動をより正確に読み解けるようになります。
通常クロール時のUA例
OpenAIの主要なクローラーは、通常のページ取得時に「Bot名/バージョン番号」を含むUA文字列でアクセスしてきます。公式ヘルプに掲載されている代表的な例は次のとおりです[2]。
Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; +https://openai.com/gptbot Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.0; +https://openai.com/searchbot
ポイントは「GPTBot/1.2」「OAI-SearchBot/1.0」といったスラッシュ区切りのバージョン番号が含まれている点です。今回の更新では、このバージョン番号が将来的に変わりうる(例:1.2 → 1.3 や 2.0 など)ことが明文化されました。ログでbotを識別する際は、バージョン番号を固定値で完全一致させるのではなく、「GPTBot」「OAI-SearchBot」というトークン部分をベースに判定するのが安全です。
robots.txt取得時のUA例
今回のドキュメント更新で新たに明記されたのが、robots.txtを取得しにきた時に付与される追加マーカーです。OpenAIのクローラーは、robots.txtを読みに来たリクエストであることを示すため、UA文字列の末尾に「; robots.txt」というマーカーを付けて名乗る場合があります。

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.4; robots.txt; +https://openai.com/searchbot Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.2; robots.txt; +https://openai.com/gptbot
「OAI-SearchBot/1.4; robots.txt」のように、Bot名とバージョンに続いてセミコロン区切りで「robots.txt」というキーワードが挿入されているのがわかります。このマーカーが付いているリクエストは、コンテンツをクロールしに来たものではなく、あくまで「/robots.txt をどう読めばいいかを確認しに来た」アクセスだと判別できます。
ログで見たときのイメージ
実際のアクセスログでは、同じOpenAIクローラーであっても、最初のリクエストがrobots.txtマーカー付きで飛んできて、その後にマーカーなしの通常UAで各ページを取得しにくる、という2段構えの挙動が観測されます。イメージとしては次のような並びです。
203.0.113.10 - - [12/Nov/2025:10:00:01 +0900] "GET /robots.txt HTTP/1.1" 200 512 "-" "...OAI-SearchBot/1.4; robots.txt; +https://openai.com/searchbot" 203.0.113.10 - - [12/Nov/2025:10:00:03 +0900] "GET /blog/article-a HTTP/1.1" 200 18234 "-" "...OAI-SearchBot/1.4; +https://openai.com/searchbot" 203.0.113.10 - - [12/Nov/2025:10:00:05 +0900] "GET /blog/article-b HTTP/1.1" 200 21044 "-" "...OAI-SearchBot/1.4; +https://openai.com/searchbot"
1行目でrobots.txtの内容を取得し、そこに書かれたルールに従って2行目以降で個別のURLを巡回している、という流れが読み取れます。robots.txtの記述方法を整備しておけば、この最初のリクエストで許可/不許可の指示を確実にクローラーへ伝えることができます。
なお、末尾に付くマーカーの表記や区切り文字はOpenAI側の実装アップデートによって微調整される可能性があります。ログ解析ルールを組む際は、「robots.txt」という文字列を含むかどうかで大まかにフラグを立て、Bot名とバージョン部分は正規表現で緩めに拾う設計にしておくと、将来の変更にも耐えやすくなります。
サイト運営者にとっての意義:ログ識別のしやすさ
今回のOpenAI公式ヘルプ更新でまず押さえておきたいのは、これがクローラーの挙動そのものを変える変更ではないという点です。UA(ユーザーエージェント)文字列のバージョン番号が変わりうること、robots.txt取得時に追加マーカー付きのUAが使われる場合があること──いずれも従来から実装として存在していた挙動を、公式ドキュメントで明文化したものと位置づけられます[2]。
とはいえ「明文化にすぎない」からといって、サイト運営者にとって意味の薄いアップデートかというとそうではありません。むしろOpenAIクローラーの挙動を公式仕様として参照できるようになったことで、アクセスログ解析やbot制御の精度を一段引き上げる好機になります。
ログからOpenAIのbotをより正確に切り分けられる
UA文字列の末尾に付くバージョン番号(例:GPTBot/1.2、OAI-SearchBot/1.4)が今後も変動しうることを公式が明言したため、ログ解析時に「バージョン番号を含めた完全一致」でフィルタリングしていた運用は見直しの対象になります。GPTBotやOAI-SearchBotといったbot名部分での部分一致、あるいはバージョン番号をワイルドカードにした正規表現で捕捉するのが安全です。
また、robots.txt取得時のUAに; robots.txtのようなマーカーが付与されるケースが明記されたことで、「robots.txtを読みに来ているアクセス」と「実際のコンテンツをクロールしているアクセス」をログ上で区別できるようになります。これはrobots.txtでのクロール制御が意図通りに機能しているかを検証するうえでも有用です。
サイト運営者が確認・対応すべきチェックリスト
- アクセスログでOpenAIのbotをフィルタする際、バージョン番号を含めた完全一致になっていないか確認する
GPTBot/OAI-SearchBot/ChatGPT-Userなど、bot名単位で識別できる正規表現に置き換える- robots.txtマーカー付きUAのアクセスを別カウントし、robots.txtが正しく取得されているかを定期的にチェックする
- robots.txtの
User-agent指定が、公式ドキュメントに記載されたトークンと一致しているか再確認する - WAFやCDNでbot制御を行っている場合、バージョン番号の変動に耐える設定になっているかを見直す
- IPレンジによる真正性検証(なりすまし対策)と、UAによる識別を併用する運用に整える
特に最後のなりすまし対策は重要です。UA文字列は誰でも自由に名乗れるため、ログ上でGPTBotを名乗るアクセスがすべて本物のOpenAIクローラーとは限りません。OpenAIは公式にクローラーのIPレンジをJSONで公開しているため、本気で制御・分析するのであればUAとIPの両輪でチェックする運用が望ましいでしょう[2]。
要するに今回の更新は、「これまで暗黙的に動いていたOpenAIクローラーの仕様を、運営者側が公式根拠を持って扱えるようになった」という点に価値があります。ログ識別のしやすさは、生成AI経由の流入やクロール負荷の把握、コンテンツ利用のコントロールといった、より上位の意思決定の土台となる部分です。
OpenAIクローラーへの実践的な対応:robots.txtとログ分析のポイント
ここまでで、OpenAIクローラーのユーザーエージェント(UA)文字列にはバージョン番号や「robots.txt」マーカーといった可変要素が含まれることが分かりました。この章では、それらを踏まえてサイト運営者が具体的にとるべき3つのアクション──robots.txtによる制御、ログ解析でのUAフィルタリング、バージョン変動に耐える正規表現の書き方──を順に解説します。

robots.txtでの制御:ボット名で明示的に許可・拒否する
OpenAIのクローラーはいずれも標準的なRobots Exclusion Protocolに準拠しており、User-agent行にトークン名(プロダクト名)を指定することで挙動を制御できます。バージョン番号やマーカーはUser-agent行のマッチングには影響しないため、シンプルにボット名だけを書けば問題ありません。[2]
たとえば学習用クロールだけを拒否し、検索用のクロールは許可したい場合は次のように記述します。robots.txtの基本的な記述方法と合わせて確認しておくと安心です。
User-agent: GPTBot Disallow: / User-agent: OAI-SearchBot Allow: / User-agent: ChatGPT-User Allow: /
全ボットを一律にブロックしたい場合でも、ワイルドカード(User-agent: *)ではなく個別のトークン名を明記した方が、意図が明確になり将来的な仕様変更にも追従しやすくなります。
ログ解析:バージョン変動に耐える正規表現を用意する
アクセスログを解析するとき、UA文字列を完全一致で判定するとGPTBot/1.2からGPTBot/1.3へのバージョンアップで漏れが発生します。バージョン番号部分はd+(.d+)*のような可変マッチにし、末尾の「; robots.txt」マーカーも吸収できるよう、緩めのパターンを組むのがコツです。
| 目的 | 推奨正規表現(例) |
|---|---|
| GPTBot全般 | GPTBot/[d.]+ |
| OAI-SearchBot全般 | OAI-SearchBot/[d.]+ |
| ChatGPT-User全般 | ChatGPT-User/[d.]+ |
| robots.txt取得アクセスのみ抽出 | (GPTBot|OAI-SearchBot|ChatGPT-User)/[d.]+;s*robots.txt |
Google Analytics 4やLog Explorer、Cloudflare Bot Analytics、Fastlyのログストリームなど、正規表現でフィルタリングできる環境ならこのパターンをそのまま流用できます。Googlebotのクロール挙動の把握と同じ発想で、OpenAIクローラーの巡回頻度・パス別アクセス数もダッシュボード化しておくと運用判断が速くなります。
検証:逆引きDNSでUA詐称を見抜く
UA文字列は容易に偽装可能なため、本当にOpenAIからのアクセスかどうかを確かめるには、OpenAIが公開しているIPレンジと突き合わせるか、逆引きDNS(PTRレコード)で*.openai.com系のホスト名に解決されるかを確認します。特にGPTBotを完全ブロックしている場合、「ブロックできているつもりが実はUA詐称ボットに素通りされていた」という事態を防ぐ意味でも、IPベースの検証を組み合わせておくと安全です。
運用チェックリスト
- robots.txtで
GPTBot/OAI-SearchBot/ChatGPT-Userを個別に指定しているか - UA判定ロジックがバージョン番号の変動を吸収する正規表現になっているか
- 「
; robots.txt」マーカー付きアクセスを別カウンタで集計し、ルール取得頻度を把握しているか - 逆引きDNSまたは公式IPレンジで正規のOpenAIクローラーかを検証しているか
- OpenAI公式ヘルプの更新を定期的にチェックし、新ボット追加時に速やかに対応できる体制があるか
これらを一度整えておけば、今後OpenAIが新しいクローラーを追加したりバージョンを上げたりしても、大きな手戻りなく運用を継続できます。AI検索経由の流入を伸ばしたいのか、学習利用は拒否したいのか──サイトの方針を明確にした上で、robots.txtとログ分析の両輪で管理していきましょう。
よくある質問(FAQ)
- Q. OpenAIのクローラーをrobots.txtでブロックするにはどう書けばいいですか?
- A. robots.txtに対象のユーザーエージェント名(GPTBot、OAI-SearchBot、ChatGPT-Userなど)ごとにUser-agent行を書き、Disallow: / を指定すればサイト全体のクロールを拒否できます。すべてのOpenAIクローラーを一括で止めたい場合は、それぞれのbotについて個別にブロック指定を書くのが確実です。バージョン番号はUA文字列内に含まれるだけで、robots.txtの識別子には影響しません。
- Q. GPTBotとOAI-SearchBot、ChatGPT-Userの違いは何ですか?
- A. GPTBotは主にモデル学習用のデータ収集を目的としたクローラーで、OAI-SearchBotはChatGPTの検索機能で検索結果として表示するためのインデックス作成に使われます。ChatGPT-UserはユーザーがChatGPT上で特定URLの取得を指示した際に動作するフェッチャーです。それぞれ役割が異なるため、robots.txtでも用途に応じて個別に許可・拒否を設定できます。
- Q. UA文字列のバージョン番号が変わっても既存のログフィルタは動きますか?
- A. バージョン番号を固定でマッチさせている場合は、更新のたびにフィルタが機能しなくなる可能性があります。将来的な変更に備えて、GPTBotやOAI-SearchBotといったbot名部分だけを正規表現で拾う書き方にしておくのが安全です。例えば `OAI-SearchBot/[0-9.]+` のようにバージョン部分をワイルドカード化するとよいでしょう。
- Q. 「OAI-SearchBot/1.4; robots.txt」のようなUAはいつ現れますか?
- A. これはOpenAIのクローラーがrobots.txtファイル自体を取得しにきた際に使用されることがあるUA文字列で、通常のページクロール時のUAに `; robots.txt` というマーカーが付与された形になります。サイト運営者はこのマーカーを見ることで、robots.txt取得目的のリクエストと通常のクロールを区別できます。
- Q. 今回のヘルプドキュメント更新でクローラーの挙動そのものは変わりましたか?
- A. いいえ、挙動自体に変更はなく、これまでも存在していた仕様が公式ドキュメントに明文化されただけです。UA文字列のバージョン番号が変わり得ること、robots.txt取得時に追加マーカー付きUAが使われる場合があることが正式に記載されました。サイト運営者はこの情報をもとに、より正確にログを解析できるようになります。
- Q. アクセスログでOpenAIのクローラーを正確に識別するコツはありますか?
- A. UA文字列の中に含まれるbot名(GPTBot、OAI-SearchBot、ChatGPT-User など)でフィルタリングするのが基本です。加えて、公式ドキュメントで公開されているIPレンジと突き合わせることで、UA詐称との切り分けもできます。バージョン番号やマーカー部分は変動しうるため、正規表現ではbot名部分を軸にマッチさせるのが実務的です。
参考リンク
📌 Search Times を Google の「優先ソース」に追加しませんか?
優先ソースに登録すると、Google 検索や AI による要約で Search Times の最新記事が届きやすくなります。こちらから優先ソースに追加できます(数十秒で完了します)。

