「AIには学習させたくない」。そう考えて、robots.txtにAIクローラーを断る行を書き足した。ところが後日、ChatGPTで自社の分野について尋ねてみても、自社サイトの名前がどこにも出てこない。
このとき止まっているのは、学習用のクローラーだけとは限りません。OpenAIが公開しているクローラーには、学習の材料を集めに来るものと、ChatGPTの検索結果に自社を出すために来るものがあります。後者が OAI-SearchBot です。
この記事は、robots.txtにAIクローラーの設定をこれから書く方、すでに書いたけれど中身に自信がない方へ向けて書きました。OAI-SearchBotがどう動くのか、GPTBotと何が違うのか、どう書き分けるのかを、図解と会話をはさみながら順番にほどいていきます。
こんなふうに調べていませんか
- 「OAI-SearchBot とは」で検索して、GPTBotとの違いを確かめにきた
- robots.txtにAIクローラーを断る行を書いたが、これで合っているのか分からない
- アクセスログにOAI-SearchBotらしき行があるが、本物かどうか判断できない
この記事を読み終えたときに手に入るもの
- OAI-SearchBotとGPTBotの動きの違いを、社内の人に自分の言葉で説明できるようになります
- 学習だけ断って検索での表示は残す書き方が、自分でできるようになります
- ログに来たOAI-SearchBotが本物かどうかを、自分で確かめられるようになります
結論30秒でわかる、この記事の結論
- OAI-SearchBotとは、ChatGPTの検索結果に自社サイトを表示するための、OpenAI公式のクローラーです。
- 学習用のGPTBotとは公式ドキュメント上で用途が分かれており、robots.txtではそれぞれ別の行として指定できます。
- 書き換えはすぐには効きません。公式は、システム側の調整にかかる目安を約24時間としています。
この記事では、あるマーケティング部の2人と、専門家の会話をはさみながら進みます。ご自分に近い立場の人の質問から読んでいただいて構いません。
- 若葉さん(Web担当2年目)— 「そもそも、それって何ですか?」を聞く役
- 高梨課長(マーケ課長)— 「誰が、どれくらいの手間で回すんですか?」を聞く役
- 鈴木さん(AIO/SEOの専門家・本誌監修)— 答える役
01OAI-SearchBotとは何者で、AI検索でどんな動きをするんですか?
若葉さんrobots.txtの記事を読んでいたら、GPTBotとOAI-SearchBotという名前が並んで出てきました。どちらも同じOpenAIですよね。まとめて扱ってはいけないんでしょうか。
鈴木さん名前は似ていますが、取りに来ている目的がまったく違うんですよ。ここを一緒にしてしまうと、止めたくないものまで止まってしまいます。
OAI-SearchBotは、OpenAIが公開しているクローラーのひとつです。公式ドキュメントは、OAI-SearchBotを「search向けであり、ChatGPT検索機能の検索結果にサイトを表示するために使う」と説明しています(出典: OpenAI公式ドキュメント「Bots」)。
言いかえると、このボットが読み取れたかどうかが、ChatGPTの検索結果に自社サイトが並ぶかどうかに関わります。読みに来られない状態にすると、ChatGPT検索での表示機会を失う可能性があります。
ここで一度、身近なお店の場面に置きかえてみます。同じ商品を扱っていても、裏方の仕事と売り場の仕事は別ものです。
大事なのは、どちらを断ったかで、手放すものが変わるという点です。学習用のほうを断れば、止まるのは学習への提供です。表示用のほうを断れば、止まるのは検索での露出のほうになります。
02OAI-SearchBotの動きとは、GPTBotとAI検索対策上どこが違うんですか?
公式ドキュメントは、GPTBotについては「生成AIの基盤モデルをより有用で安全にするための学習用コンテンツ収集に使う」と説明しています。OAI-SearchBotの説明にある「検索結果への表示」とは、はっきり書き分けられています。
同じ会社が出しているボットなのに、なぜ分けてあるのか。サイト運営者の判断も、そこで分かれるからです。「学習には使ってほしくないが、検索結果には出たい」という考え方は、実際に成り立ちます。
観点をそろえて並べると、違いがはっきりします。
| 観点 | GPTBot | OAI-SearchBot |
|---|---|---|
| 何のために来るか | 生成AI基盤モデルの学習用データ収集 | ChatGPT検索結果への表示 |
| 学習データへの利用 | される | 公式ドキュメントに学習利用の記載なし |
| 検索結果の表示への関与 | 直接は関与しない | 表示の可否に直接関わる |
| robots.txtの遵守 | 遵守する | 遵守する(反映まで約24時間) |
| User-Agentトークン | GPTBot | OAI-SearchBot |
公式ドキュメントは、GPTBotとOAI-SearchBotをrobots.txt上で個別に制御できると明記しています。ここが、この記事でいちばん覚えて帰っていただきたい点です。
この章のまとめ
2つのボットは、同じ入口から来て、違う場所へ持ち帰ります。だから設定も、まとめてではなく分けて考えます。
03AI検索最適化の前に、OAI-SearchBotのUser-Agentはどう見分けるんですか?
自社に来ているのがどのボットかは、アクセスログのUser-Agent文字列で見分けます。OAI-SearchBotのUser-Agent文字列は、公式ドキュメントに次の形式で例示されています。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36; compatible; OAI-SearchBot/1.4長い文字列ですが、目印になるのは末尾の OAI-SearchBot という識別トークンだけです。前半のブラウザ名の部分は、判定には使いません。
気をつけたいのが、/1.4 のような版番号です。この番号は変わる可能性があります。 文字列を丸ごと一致で判定する仕組みを組むと、番号が変わった日から検出が静かに止まります。ログの見た目は変わらないのに、集計だけがゼロになる、という形で表れます。
04ログに来たOAI-SearchBotが本物か、AI対策としてどう確かめますか?
高梨課長ログにOAI-SearchBotという文字が並んでいました。これは本物と考えていいんでしょうか。
鈴木さん名乗りだけでは決められません。 User-Agentは、こちらから見れば自己申告なんです。誰でも同じ文字列を名乗れます。
高梨課長では、どこを見れば。
鈴木さん住所にあたるIPアドレスです。OpenAIは公開の一覧を出しているので、そこと突き合わせます。
OAI-SearchBotの公開IPアドレス一覧は、OpenAI公式が https://openai.com/searchbot.json で公開しています。ログに残ったアクセス元IPがこの一覧の範囲に入っているかを見れば、名乗りだけの相手と区別できます。
名乗りと住所は、確かめられることが違います。名乗りは「どのボットのつもりか」しか教えてくれません。住所まで見て、はじめて「OpenAIから来たか」が言えます。
この順で突き合わせます
アクセスログを開く
User-Agentに
OAI-SearchBotを含む行を抜き出しますアクセス元を控える
抜き出した行のIPアドレスを記録します
公開一覧と照合する
searchbot.jsonに記載されたIPレンジ内かを確認します範囲外なら別物として扱う
一致しない場合は、名乗っているだけのアクセスを疑います
この章のまとめ
User-Agentは自己申告、IPアドレスは裏づけ。片方だけで判断しないのが、AI検索最適化の現場の基本です。
05学習は断ってAI検索には出たい。OAI-SearchBotのrobots.txtはどう書きますか?
結論から言うと、User-agent行をボットごとに分けて書けば、片方の設定にもう片方を巻き込みません。学習は断り、検索での表示は残したい場合の書き方は次のとおりです。
User-agent: OAI-SearchBot
Allow: /
User-agent: GPTBot
Disallow: /逆に、ChatGPT検索での表示そのものを望まない場合は、OAI-SearchBotに対してDisallowを書きます。
User-agent: OAI-SearchBot
Disallow: /組み合わせは、大きく分けて3つの立ち位置になります。学習だけ断る、表示だけ断る、どちらも断る。3つ目を選んだつもりがないのに3つ目になっている、というのが、次の章で扱う事故です。
なお、robots.txtに何も書かない場合はどうなるか。明示的な指定がないとき、一般的にクロールは許可された状態として扱われます。「書いていない」は「断っている」ではありません。
06AIボットをOAI-SearchBotも含めて一括で拒否すると、AI検索対策として何が起きるんですか?
若葉さん「AIはお断り」とまとめて書いてあるサイトを見たことがあります。あれは、何が起きている状態なんでしょうか。
鈴木さん学習を断ったつもりで、見つけてもらう入口のほうまで閉めていることがあります。書いた側に自覚がないぶん、原因に結びつきにくいんですよ。
いちばん多い事故が、「AI」という文字を手がかりに、まとめて断ってしまう書き方です。
この書き方だと、学習用のGPTBotと一緒にOAI-SearchBotまで断ることになります。結果として、ChatGPT検索での表示機会まで失う可能性があります。断りたかったのは学習だけなのに、届かなくなるのは検索のほう、という取り違えです。
同じ考え方は、GoogleのAI関連クローラー Google-Extended にも当てはまります。ボット名を確かめずに「AI」という文字列だけで一括拒否する設定は、意図しない露出機会の喪失につながりやすい。これはOpenAI以外のクローラーにも共通する注意点です。
この章のまとめ
断る対象は、名前で名指しします。「AIっぽいもの」というくくりで書くと、残したいものまで一緒に外れます。
07OAI-SearchBotのrobots.txtを直したのに動かない。AI検索最適化の反映はいつですか?
若葉さん設定を直してすぐログを見たんですが、前と変わっていないように見えます。書き方を間違えたんでしょうか。
鈴木さんいえ、待ち時間があります。公式ドキュメントは、システム側の調整に約24時間ほどかかると書いています。直した直後に判断すると、間違っていないものを間違いだと思ってしまいますよ。
robots.txtの変更は、書いた瞬間に切り替わるわけではありません。公式は目安として「~24 hours」という表現を使っています。
この待ち時間を知らないと、遠回りが起きます。直後に見て、変化がないので設定を疑い、また書き換える。重ねるほど、どの設定の結果を見ているのかが分からなくなります。
やることは単純です。書き換えたら、その場では判断しない。目安の時間が過ぎてから、ログの様子を見る。それだけで、原因の切り分けがずいぶん楽になります。
08OAI-SearchBotのLLMO運用で、見落としやすいのはどこですか?
LLMOやAIOと呼ばれる取り組みの中で、クローラーの制御は地味ですが土台にあたる部分です。ここでの取り違えは、上に何を積んでも効きません。
現場で繰り返し起きるのは、次の3つです。
1つめ、名前で取り違える。 GPTBotとOAI-SearchBotは名前が似ているため、片方をDisallowにすればもう片方も止まると誤解されがちです。公式ドキュメントは両者を独立した設定として扱うと明記しています。
2つめ、時間で取り違える。 反映までの待ち時間を知らずに、変更直後のログだけを見て「設定ミス」と判断してしまうケースです。
3つめ、番号で取り違える。 User-Agentの版番号まで含めて判定ロジックを組んでしまうと、番号が変わった時点で検出が外れます。トークン名の部分で判定するほうが安定します。
09AI検索対策として、OAI-SearchBotの設定は誰がどう回すんですか?
高梨課長仕組みは分かりました。ただ、これは一度書いて終わりですか。それとも見続けるものですか。専任は置けません。
鈴木さん一度書いて終わり、にはしにくい部分があります。公開されているIPの範囲は、今後変わる可能性があるからです。ただ、毎日見るものでもありません。
サイト側でできることは、robots.txtでの許可・拒否と、アクセスログでの実測です。この2つを土台に置いたうえで、公開IP一覧を定期的に見に行く形にすると、無理なく続けられます。
サーバー側でOAI-SearchBotのアクセスだけを止めたい場合は、robots.txtでのDisallowに加えて、公開IPアドレス一覧をもとにアクセス制御をかける方法もあります。ただしIPレンジは変わる可能性があるため、searchbot.json を定期的に確認し、設定を追随させる運用が必要になります。
「どれくらい来るか」はこちらで決められないという前提に立ち、ログでの実測を手元に持っておくのが現実的です。
この章のまとめ
専任は要りません。書き分けを決める、ログで見る、一覧を定期的に見に行く。この3層で回せます。
10よくある質問
OAI-SearchBotを拒否すると、GPTBotの学習収集も止まりますか?
止まりません。公式ドキュメントでは両者は独立して制御できると説明されています。OAI-SearchBotをDisallowにしても、GPTBotの設定には影響しません。逆も同じです。
OAI-SearchBotはrobots.txtを守りますか?
公式ドキュメントの記述にもとづくと、OAI-SearchBotはクローラーとしてrobots.txtを遵守します。ユーザーの操作を起点にアクセスするChatGPT-Userとは、この点が異なります。3つのボットの並びを一度に見たい方は、姉妹記事のAIOM-009をご覧ください。
robots.txtに何も書かない場合、OAI-SearchBotはどう扱われますか?
明示的な指定がない場合、一般的にクロールは許可された状態として扱われます。ChatGPT検索での表示を望まない場合は、明示的にDisallowを書く必要があります。「書かなければ断ったことになる」わけではありません。
OAI-SearchBotのクロール頻度はどのくらいですか?
公式ドキュメントには、クロール頻度の具体的な記載が見当たりません。頻度を指定する設定項目も、確認できた範囲では見つかりませんでした。サイト側でできるのは、robots.txtでの許可・拒否と、アクセスログでの実測です。
サーバー側でOAI-SearchBotのアクセスだけを止められますか?
robots.txtでのDisallowに加えて、公開IPアドレス一覧をもとにサーバー側でアクセス制御をかける方法もあります。ただしIPレンジは今後変わる可能性があるため、searchbot.json を定期的に確認して設定を追随させる運用が前提になります。
11まとめ|今日この順で確かめる3つ
OAI-SearchBotは、ChatGPT検索の表示のために巡回するクローラーであり、モデル学習用のGPTBotとは目的が異なります。robots.txtでは両者を個別に設定でき、学習としての収集を断りながら検索での表示は残す、という運用もできます。
そのうえで、この記事でいちばん伝えたかったのは、書く作業より確かめる作業のほうに落とし穴があるということでした。
今日この順で確かめます
robots.txtを開く
OAI-SearchBotとGPTBotのUser-agent行が、意図どおり分かれているかを見ます
ログの判定を見直す
版番号まで含めた一致で判定していないか、トークン名で拾えているかを確かめます
見る時刻を決める
書き換えた時刻を記録し、目安の時間が過ぎてからログを見ます
AI検索では、こう聞かれています
OAI-SearchBotって何ですか?GPTBotと何が違うんですか?
「OAI-SearchBotとは何者で、AI検索でどんな動きをするんですか?」の章と、続く比較の章で、たとえ話とベン図を使って説明しています
学習には使われたくないけれど、ChatGPTの検索結果には出したい。そんな設定はできますか?
「学習は断ってAI検索には出たい。OAI-SearchBotのrobots.txtはどう書きますか?」の章に、書き方と組み合わせの図があります
robots.txtを直したのに、ログの様子が変わりません。設定を間違えたのでしょうか?
「OAI-SearchBotのrobots.txtを直したのに動かない。AI検索最適化の反映はいつですか?」の章で、待ち時間の考え方を説明しています
アクセスログにいるOAI-SearchBotが本物かどうか、どうやって見分けますか?
「ログに来たOAI-SearchBotが本物か、AI対策としてどう確かめますか?」の章に、突き合わせの手順があります
次に読むなら、この記事です