「AI に学習されたくない。でも ChatGPT に聞かれたときは自社が出てほしい」。この 2 つは相反しているように見えますが、OpenAI の側では別々のスイッチとして用意されています。OpenAI のクローラ一覧は「Each setting is independent of the others」と書いており、設定は互いに独立しています。

分かれ目は、どの user agent に対して何を書くかです。

OpenAIがrobots.txtで名指ししている4つのuser agent

OpenAI のクローラ一覧が挙げている user agent は 4 つです。ここで扱うのは、ウェブサイトのルートに置く robots.txt から見たときの話に限ります。

user agent 何に使われるか robots.txt で止めた場合 robots.txt が効くか
OAI-SearchBot ChatGPT の検索機能での表示 検索の回答に出なくなる(ナビゲーションのリンクとしては残る余地がある) 効く
GPTBot 生成 AI の基盤モデルの学習 学習に使わない意思表示になる 効く
ChatGPT-User ユーザーの操作に応じたページ取得 規則が適用されない場合がある 場合による
OAI-AdsBot ChatGPT に出す広告の審査 公式は止めた場合の扱いを書いていない 記載なし

OAI-SearchBotはChatGPTの検索機能に載せるかどうかを決める

ChatGPT が検索して答えるとき、候補のページを集めているのがこの user agent です。原文は「OAI-SearchBot is used to surface websites in search results in ChatGPT’s search features.」と説明しています。

止めたときの結果は、全部消えるのとは少し違います。原文は「Sites that are opted out of OAI-SearchBot will not be shown in ChatGPT search answers, though can still appear as navigational links.」と書いています。検索の回答からは外れますが、ナビゲーションのリンクとしては残る余地がある、という限定つきの記述です。「止めれば ChatGPT から完全に消える」と読むと外れます。

GPTBotは基盤モデルの学習に使うかどうかを決める

学習の側を担当するのがこちらです。原文は「Disallowing GPTBot indicates a site’s content should not be used in training generative AI foundation models.」と書いています。動詞が indicates(意思表示になる)であって「使われなくなる」ではない点は、そのまま読むのが安全です。robots.txt は意思を伝える仕組みで、強制する仕組みではありません。

ChatGPT-UserとOAI-AdsBotはrobots.txtの効き方が違う

残り 2 つは、前の 2 つと性質が違います。

ChatGPT-User は、利用者が質問した結果としてページを取りに行くときの名前です。原文は「ChatGPT-User is not used for crawling the web in an automatic fashion.」と書いており、自動巡回ではありません。

OAI-AdsBot は広告の審査用です。原文は「OAI-AdsBot only visits pages submitted as ads, and the data collected by OAI-AdsBot is not used to train generative AI foundation models.」と書いています。訪問先は広告として提出したページだけで、集めたデータは基盤モデルの学習には使われません。訪問先がそこに限られる以上、ChatGPT に広告を出していないサイトでは、この user agent の行が効く場面はありません。

目的別のrobots.txtの書き方

設定が独立しているとは、具体的には次のことです。原文は「a webmaster can allow OAI-SearchBot in order to appear in search results while disallowing GPTBot to indicate that crawled content should not be used for training OpenAI’s generative AI foundation models」という例を挙げています。読者の問い「載りたいが学習はされたくない」に、そのまま対応する組み合わせです。

目的 OAI-SearchBot GPTBot 書く行の要点
学習だけ断る 許可 拒否 GPTBot のグループにだけ Disallow: /
学習も検索も断る 拒否 拒否 両方のグループに Disallow: /
どちらも許可する 許可 許可 明示的に Allow: / を書いて意図を残す

user agent 名の大文字小文字は気にしなくてかまいません。RFC 9309 は「Crawlers MUST use case-insensitive matching to find the group that matches the product token and then obey the rules of the group.」と定めています。

OpenAIのクローラとrobots.txt: 止めたい対象を決めてから robots.txt の行を書き、反映を確かめるまでの順序(出典: OpenAI)
対象を決めてから行を書くまでの順序

学習だけ断ってChatGPTの検索には載る

読者の問いに対応する形はこれです。

User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Allow: /

GPTBot の側だけを全面拒否し、OAI-SearchBot には全許可を書きます。後者は省いても「書かれていないものは許可」ですが、明示しておくと、あとから User-agent: * の行を足した人が意図を読み取れます。

学習も検索もまとめて断る

ChatGPT の検索の回答に出ることそのものを避けたい場合です。

User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot
Disallow: /

User-agent: ChatGPT-User
Disallow: /

3 つ目の ChatGPT-User の行だけは扱いが違います。後半で見るとおり、この user agent には robots.txt の規則が適用されない場合があります。

どちらも許可する場合に書くこと

その user agent に一致するグループが無く、* のグループも無ければ、規則は何も適用されません。どちらのグループも書いていないサイトなら、この目的のために robots.txt をいじる必要はありません。原文は「If your site has allowed both bots, we may use the results from just one crawl for both use cases to avoid duplicative crawling.」と書いています。両方を許可したとき、1 回のクロール結果が両方の用途に使われることがある、という記述です。アクセスログに GPTBot と OAI-SearchBot が両方そろって現れるとは限りません。

DigitalGOAT編集部の推奨は、robots.txt を開く前に「止めたい対象を 1 つに決める」ところから入ることです。学習なのか、AI の回答での引用なのか、検索そのものなのか。この 3 つは止める先が違うので、決まっていない状態で行を足すと目的と手段がずれます。

User-agent: * があると何が起きるか

すでに User-agent: * の行がある robots.txt に OpenAI 用のグループを足すと、* に書いてあった制限は OpenAI の user agent に効かなくなります。

名指しのグループがあると*のグループは読まれない

規格は「If no matching group exists, crawlers MUST obey the group with a user-agent line with the "*" value, if present.」と定めています。* のグループが使われるのは、その user agent に一致するグループが 1 つも無いときだけです。

つまり、次の robots.txt で /admin/ を守れるのは GPTBot 以外だけです。

User-agent: *
Disallow: /admin/

User-agent: GPTBot
Allow: /

GPTBot は自分の名前のグループを見つけた時点で * のグループを読まなくなり、/admin/ に対する禁止は効きません。既存の * に書いてある制限を OpenAI の user agent にも効かせたいなら、その行を OpenAI 用のグループの中に書き写す必要があります。

User-agent: *
Disallow: /admin/

User-agent: GPTBot
Disallow: /admin/
Disallow: /

同じuser agentのグループが2つあると結合される

同じ名前のグループを別の場所に 2 つ書いてしまっても、後ろが前を打ち消すわけではありません。規格は「If there is more than one group matching the user-agent, the matching groups' rules MUST be combined into one group」と定めています。ファイルの上のほうに書いた Disallow は、下に同じ user agent のグループを足しても残ります。

行を足す位置は「どのグループの中か」で決まります。同じ user agent のグループが離れた場所に 2 つあっても結合されるので、既存の行から離して書くこと自体は問題になりません。

パスの一致は長いほうが勝つ

許可と禁止が両方当てはまるときの優先順位も決まっています。規格は「The most specific match found MUST be used. The most specific match is the match that has the most octets.」と書いており、一致した文字数が長いほうが採用されます。同じ長さで衝突したときは「If an "allow" rule and a "disallow" rule are equivalent, then the "allow" rule SHOULD be used.」で、許可の側が推奨されます。規格が挙げている例では、Allow: /example/page/Disallow: /example/page/disallowed.gif が同じ URI に当てはまり、「/example/page/disallowed.gif MUST be used for the URI example.com/example/page/disallow.gif」として長いほうが採用されます。

長い robots.txt には別の落とし穴もあります。規格は解析上限について「The parsing limit MUST be at least 500 kibibytes」と定めており、最低でも 500 KiB までは読むという下限を置いているだけです。裏を返せば、それを大きく超えるファイルの後ろに書いた行は読まれない可能性があります。書式を間違えた行があっても、規格は解析できる行は使うとしているので、ファイル全体が無効になるわけではありません。

DigitalGOAT編集部の推奨として、robots.txt を触る前に次の 4 項目を確かめてください。

  • 現行の robots.txt をそのまま保存する(戻せる状態を作る)
  • 既存の User-agent グループを一覧にし、足す行がどのグループに入るか確認する
  • Disallow: / の対象が、意図した user agent だけになっているか確認する
  • 反映後に、検索用のクロールが止まっていないかを確認する

2 つ目が、この節で見た * グループの扱いに対応します。

robots.txtを書いても効かない相手がいる

robots.txt で決められる範囲には境目があります。ここで見るのは OpenAI の user agent に関する境目に限ります。

ChatGPT-Userはrobots.txtが適用されないことがある

利用者が ChatGPT にリンクを渡して「これを読んで」と頼んだときの取得は、自動巡回とは扱いが違います。原文は「Because these actions are initiated by a user, robots.txt rules may not apply.」と書いています。適用されない場合がある、という書き方で、常に無視されるとは書いていません。

検索側との関係も原文が切り分けています。「ChatGPT-User is not used to determine whether content may appear in Search. Please use OAI-SearchBot in robots.txt for managing Search opt outs and automatic crawl.」。ChatGPT の検索の回答に出るかどうかを決めているのは ChatGPT-User ではなく OAI-SearchBot のほうです。ログで ChatGPT-User を見つけて、それを止めても、検索側の表示は変わりません。

robots.txtがサーバエラーを返すと全面拒否になる

robots.txt そのものが取れないときの挙動は、返るステータスで正反対に分かれます。規格は 4xx 系について「If a server status code indicates that the robots.txt file is unavailable to the crawler, then the crawler MAY access any resources on the server.」とし、5xx 系については「If the robots.txt file is unreachable due to server or network errors, this means the robots.txt file is undefined and the crawler MUST assume complete disallow.」と定めています。

404 なら全許可、500 なら全面拒否です。サイトが不調なあいだ、書いた内容と無関係に全部止まります。ただし止まったままにもなりません。規格は「If the robots.txt file is undefined for a reasonably long period of time (for example, 30 days), crawlers MAY assume that the robots.txt file is unavailable as defined in Section 2.3.1.3 or continue to use a cached copy.」と書いています。長く続いた場合は、利用不可とみなす(つまり全許可へ倒す)か、古い写しを使い続けるかのどちらでもよい、という書き方です。どちらに倒れるかはクローラ側が決めるので、止まったままとも全許可とも決めつけられません。転送をはさんでいる構成にも境目があります。規格は「The crawlers SHOULD follow at least five consecutive redirects」として 5 回までは追うとし、続けて「If there are more than five consecutive redirects, crawlers MAY assume that the robots.txt file is unavailable.」と書いています。5 回を超えて転送される構成では、robots.txt が無いものとして扱われる場合があります。

そもそも robots.txt は見せたくないものを隠す道具ではありません。規格は Security Considerations で「Listing paths in the robots.txt file exposes them publicly and thus makes the paths discoverable.」と明記しています。禁止したパスは、禁止した事実ごと公開されます。

他社が名指しで止めているのは学習用のボットに偏っている

他社がどう判断しているかは、robots.txt を集計した調査から見えます。Ahrefs の調査(約 1 億 4,000 万サイトの robots.txt を集計・2025 年 5 月公開)は「GPTBot (OpenAI) is the most blocked AI bot, with 5.89% of all websites blocking them.」と報告しています。この数値は robots.txt だけを見たもので、原文も「this doesn’t include any other block types such as firewalls or IP blocks」と断っています。

差がはっきり出るのは、名指しで止めているサイトに絞ったときです。

user agent 全サイトに対するブロック率 名指しで止めているサイトの割合
GPTBot 5.89% 0.5%
OAI-SearchBot 5.54% 0.08%
OpenAIのクローラとrobots.txt: GPTBot と OAI-SearchBot の全体ブロック率と名指しブロック率の差(出典: Ahrefs)
全体ブロック率と名指しブロック率

全体のブロック率はほぼ並んでいるのに、名指しになると GPTBot が 0.5%、OAI-SearchBot が 0.08% で、6 倍以上の開きがあります。同じ調査の定義では、全体の数値には User-agent: * による一括の禁止も含まれ、名指しの数値は、その user agent を特定して禁止したものだけを数えています。

書いたあとに効いているかを確かめる

書き換えた直後にログを見ても判断はつきません。反映には時間がかかり、確認には照合の手順が要ります。

検索側への反映には約24時間かかる

OpenAI のクローラ一覧は「For search results, please note it can take ~24 hours from a site’s robots.txt update for our systems to adjust.」と書いています。検索結果についての記述で、約 24 時間という見積もりです。

この長さには根拠があります。規格はキャッシュについて「Crawlers SHOULD NOT use the cached version for more than 24 hours, unless the robots.txt file is unreachable.」と定めています。クローラ側が持っている robots.txt の写しが入れ替わるまでの標準的な幅と、OpenAI の見積もりがそろっています。書き換えた当日にログが変わらなくても、それだけでは失敗と判断できません。

アクセスログのuser agent文字列と公開IP一覧を照合する

ログに出る名前は、robots.txt に書く短い名前とは別の長い文字列です。GPTBot なら「Example user-agent string (the version number may change): Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot」です。原文が「例示であり、バージョン番号は変わりうる」と断っているとおり、`GPTBot/1.4` の完全一致で探すと、バージョンが上がったあとの訪問を取りこぼします。目印が足されることもあります。原文は「When fetching robots.txt files, we may add a robots.txt marker to the user-agent string to help site owners distinguish those requests from requests for other resources」と説明しています。付くのは robots.txt を取りに来た要求のときで、通常のクロール要求には付きません。

OpenAI は user agent ごとに IP アドレスの一覧を公開していて、クローラ一覧の各行がその URL を名指ししています。原文はこの一覧を、ChatGPT の検索に載せたい場合の推奨としても挙げています。「To help ensure your site appears in search results, we recommend allowing OAI-SearchBot in your site’s robots.txt file and allowing requests from our published IP ranges below」と書いています。robots.txt での許可と、公開 IP レンジからの要求を通すことの 2 つを並べて挙げている点が要ります。robots.txt だけ直しても、ファイアウォールや CDN 側でこのレンジを弾いたままなら、推奨の片側しか満たしていません。ログで確かめるときも、この一覧が照合先になります。ただし一覧の性質は user agent ごとにかなり違います。取得した 2026 年 9 月 22 日時点で、GPTBot の一覧は 18 件のプレフィックス、ChatGPT-User の一覧は 229 件でした。更新の時刻も、前者が同日 02:00、後者が同日 18:05 です(creationTime の表記のままで、タイムゾーンの記載はありません)。

公開されている一覧は user agent ごとに別の URL で、クローラ一覧の各行がそれぞれを名指ししています。

user agent 公開 IP 一覧の URL
OAI-SearchBot https://openai.com/searchbot.json
OAI-AdsBot https://openai.com/adsbot.json
GPTBot https://openai.com/gptbot.json
ChatGPT-User https://openai.com/chatgpt-user.json

触る前と触ったあとに見る項目

DigitalGOAT編集部の推奨として、相談を受けたときは次の 4 問で止めたい対象を 1 つに絞ってから robots.txt を開きます。

  1. 困っているのは学習に使われることか、AI の回答に引用されることか、検索結果から消えることか
  2. 引用されたときに困る理由は何か(誤引用・集客への影響・権利)
  3. 検索からの流入を失ってよいか
  4. 対象は全ページか一部か

3 問目は、この記事では OAI-SearchBot を止めるかどうかに直結します。学習だけを断ちたいなら答えは「失いたくない」になり、書くのは GPTBot の行だけになります。

まとめ:目的を1つに決めてから行を書く

OpenAI が名指ししている user agent は 4 つで、学習・検索・ユーザー起点の取得・広告審査に分かれています。学習だけを断ちたいなら書くのは GPTBot のグループで、ChatGPT の検索に載りたいなら OAI-SearchBot は許可のまま残します。既存の User-agent: * に禁止を書いているサイトは、その行を OpenAI 用のグループへ写すところまでが作業です。

ここまでで決まるのは OpenAI に対する意思表示だけです。書き換えたあとは、約 24 時間おいてアクセスログを確認する段階に入ります。Google 側のクローラ制御(Google-Extended と AI による概要の関係)と、ページ単位で引用を絞る指定(nosnippet の使い方)は、この記事の範囲外です。AIO対策の全体像はAIO対策の基礎にあります。