robots.txtでAIクローラーをブロックする書き方|GPTBotとAI検索用クローラーの違いと止めたときに起きること

robots.txt で AI クローラーをブロックするには、止めたいクローラーの名前を User-agent: の行に書き、その下に Disallow: / を書きます。これで、その名前に対して、サイト全体を拒否できます。
名前は、同じ会社でも用途ごとに分かれています。OpenAI の GPTBot を拒否することは、生成 AI の基盤モデルの学習に使わないでほしいという意思表示で、ChatGPT の検索にサイトを出すかどうかは OAI-SearchBot で別に設定できます(Overview of OpenAI Crawlers)。学習には使われたくないが AI 検索にはサイトを出したいなら、各社が AI 検索用として分けている OAI-SearchBot・Claude-SearchBot・PerplexityBot は拒否しないでください。Google-Extended の拒否は、Google 検索への掲載と順位に影響しません(Google's common crawlers、最終更新 2026-07-14)。
robots.txt は、クローラーに対してルールに従うよう求めるもので、アクセスそのものを止める仕組みではありません(RFC 9309 セクション1)。
学習などへの利用だけ止めるか、AI 検索用のクローラーも拒否するかを先に決めてください
書く名前は目的で変わります。目的を決めたら、ステップ 1 でいまの robots.txt を確かめ、ステップ 2 で下の表の例を書き、ステップ 3 で反映を確かめます。いまの robots.txt が目的どおりになっているなら、書き換える必要はありません。
| 目的 | 拒否する名前 | ステップ 2 で書く例 |
|---|---|---|
| AI の学習などに使わないよう求めたいが、AI 検索にはサイトを出したい | GPTBot・ClaudeBot・Google-Extended・Applebot-Extended・CCBot | 例 1 |
| ChatGPT・Claude・Perplexity の検索用クローラーも拒否したい | 例 1 の名前に加えて OAI-SearchBot・Claude-SearchBot・PerplexityBot | 例 2 |
| AI クローラーを止めるつもりは無い | 拒否している名前を外す | 拒否を外すとき |
2026-09-24 に Majestic Million に載っている .jp ドメインから転送を追った先の robots.txt を本サイトで測ったところ、Googlebot を止めずに AI クローラーを拒否していた 433 件のうち 206 件が AI 検索用の名前も拒否していました(Majestic Million は、被リンクの多い順の一覧で、無作為に選んだものではありません。公開データ)。学習だけ止めたいなら、ステップ 1 で AI 検索用の名前が拒否になっていないかも確かめてください。
利用者が AI に質問したときのページの取得を止めたいときは、「robots.txt で止められないもの」の節を読んでください。会社によっては、その取得に robots.txt が適用されません。
ステップ 1/3:いまの robots.txt で止まっている AI クローラーを確かめてください
ブラウザで https://ドメイン名/robots.txt を開きます。www の有無でサイトの表示先が分かれているなら、サイトが実際に表示されるホスト名の robots.txt を開いてください。どれが効いているかの見分け方は、robots.txt が原因でサイトが検索されないときの直し方に書いています。
本サイトの診断 (以下、「診断」という) を使うとサイト全体で拒否している AI クローラーの名前が、一覧で表示されます。診断が数えるのは「名前と拒否したときに起きること」の表にある 9 つの名前だけで、一部のパスだけを拒否しているものは数えません。
名前のグループが無いクローラーは、* のグループに従います
robots.txt は、1 行以上の User-agent の行とその後に続くルールのまとまり (グループ) でできています(RFC 9309 セクション2.1)。クローラーは、自分の名前と一致する User-agent の行を持つグループを探して、そのグループのルールに従います。一致するグループが無いときは、User-agent: * のグループがあればそれに従います(RFC 9309 セクション2.2.1)。
そのため、robots.txt に次の 2 行があると GPTBot などの名前を 1 つも書いていなくても AI クローラーはサイト全体を取得しないよう求められます。Googlebot の名前のグループが無いときは、Google のウェブ検索のクローラーである Googlebot も同じです。
User-agent: *
Disallow: /
Googlebot の名前のグループが無ければ、診断では「AIクローラー N件 を拒否しています」と一緒に「サイト全体で Googlebot のクロールを禁止しています」も出ます。検索結果に出したいサイトなら、先に robots.txt が原因でサイトが検索されないときの直し方で直してください。
書いた覚えが無いときは、robots.txt を作っている場所を確かめてください
robots.txt の拒否は、自分で書いていなくても次のどこかから入っていることがあります。
| 出どころ | 手がかり | 直す場所 |
|---|---|---|
| 制作会社や前の担当者が置いたファイル | サーバーの公開ディレクトリの最上位に robots.txt というファイルがある | そのファイル。手順は robots.txt をどこで直すか |
| CMS やプラグイン (WordPress など) | 公開ディレクトリに robots.txt が無いのにブラウザで開くと内容が出る | CMS やプラグインの設定。手順は同じく robots.txt をどこで直すか |
| ホスティングサービスの設定 | サービスの管理画面に robots.txt を編集する画面がある | その編集画面 |
| CDN の設定 | 自分のファイルや管理画面に無い行が、公開中の robots.txt に入っている。例として Cloudflare は目印のコメントを入れます (下の段落) | CDN の管理画面 |
例として、CDN の Cloudflare では「robots.txt setting」を有効にすると Cloudflare が AI クローラーを拒否するグループを robots.txt に加えます。サイトに robots.txt が既にあれば (HTTP の応答が 200 なら) その先頭に加え、無ければ Cloudflare が robots.txt を作ります(robots.txt setting、最終更新 2026-08-03)。
同じページに載っている例では、Amazonbot・Applebot-Extended・Bytespider・CCBot・ClaudeBot・Google-Extended・GPTBot・meta-externalagent のグループが Disallow: / で加わり、その前後に # BEGIN Cloudflare Managed content と # END Cloudflare Managed Content のコメントが入ります。
同じ例では、User-Agent: * のグループに Content-signal: で始まる行と Allow: / も入ります。Cloudflare は、この行を検索の索引作り (search)・AI への入力 (ai-input)・学習 (ai-train) の用途ごとに使ってよいかを示すものと説明しています。診断が数えるのはサイト全体の拒否で、Disallow と Allow の行から判定します。
robots.txt にこのコメントがあるときは、まず Cloudflare の設定を確かめてください。このうち Amazonbot と meta-externalagent は、診断が数える名前に入っていません。この設定を止めるときは、Cloudflare のダッシュボードの Security Settings にある Bot traffic で「Set your preference to block training in robots.txt」をオフにします。画面の名前は、同じページの英語の手順のものです。
ステップ 2/3:目的に合わせて、拒否するクローラーのグループを書いてください
書き換える前に、いまの robots.txt をブラウザで開いて中身をコピーし、控えておいてください。思ったとおりにならなかったときに、元の状態へ戻せます。
名前と拒否したときに起きること
右の列は、各社の公式ページに書かれていることだけを載せています。確認日はいずれも 2026-09-24 です。
| 名前 | 提供元 | 提供元が説明している用途 | 拒否について提供元が書いていること |
|---|---|---|---|
| GPTBot | OpenAI | 生成 AI の基盤モデルを役立つ安全なものにするため | 学習に使わないでほしいという意思表示になります。ChatGPT の検索への掲載とは別に設定できます |
| OAI-SearchBot | OpenAI | ChatGPT の検索機能で、サイトを検索結果に出すため | ChatGPT の検索の回答に出なくなります。ナビゲーション用のリンクとしては出ることがあります |
| ClaudeBot | Anthropic(最終更新 2026-04-07) | 生成 AI の学習に使われうるページを集めるため | 今後のページを学習データから外すよう求める合図になります |
| Claude-SearchBot | Anthropic(最終更新 2026-04-07) | 利用者向けの検索結果の質を上げるため | 検索のための索引に入らなくなり、検索結果での見え方が下がることがあります |
| Google-Extended | Google(最終更新 2026-07-14) | 今後の Gemini の学習と Gemini アプリなどで回答の根拠として検索の索引の内容を渡すこと (grounding) に使うかを決めるため | Google 検索への掲載と順位には影響しません |
| PerplexityBot | Perplexity | Perplexity の検索結果にサイトを出してリンクするため。AI の基盤モデルのための取得には使わないと書かれています | 公式ページは、検索結果に出るには許可するよう勧めています |
| CCBot | Common Crawl | 誰でも使えるウェブのクロールデータを作るため | Common Crawl にサイトを取得しないよう求められます |
| Applebot-Extended | Apple(公開 2026-09-04) | Applebot が取得したデータを Apple の生成 AI の基盤モデルの学習に使うかを決めるため | 学習に使わないよう選べます。Applebot 自体を止めていなければ、拒否しても検索結果には載りえます |
| Bytespider | ByteDance | 用途を説明する公式ページを見つけられませんでした | 確認できていません |
OAI-SearchBot や PerplexityBot を許可してもその AI 検索の結果に出ることが保証されるわけではありません。どの会社の公式ページにも、許可したときに必ず検索結果に出るとは書かれていません。
書き足す前に、* のグループにあるルールを確かめてください
名前が一致するグループがあれば、該当するクローラーはそのグループのルールに従います。User-agent: * のグループに従うのは一致するグループが無く、User-agent: * のグループがあるときです(RFC 9309 セクション2.2.1)。たとえば、いまの robots.txt が次の形だとします。
User-agent: *
Disallow: /admin/
ここに GPTBot のグループを足して Disallow: / を書くなら、サイト全体を拒否するので /admin/ も含まれます。一方、GPTBot のグループに Disallow: /private/ だけを書くと GPTBot には /admin/ の禁止が効かなくなります。一部のパスだけを拒否するグループを作り、* のグループのルールもそのクローラーに効かせたいなら、同じグループに書き写してください。
同じ名前のグループが 2 つ以上あるとクローラーはそれらを 1 つにまとめて読みます(RFC 9309 セクション2.2.1)。同じ長さの Allow と Disallow が当たるときは Allow を使うべきとされ、より長い Allow が当たる範囲は Allow が使われます(RFC 9309 セクション2.2.2)。同じ名前のグループに Allow: / などが既にあると Disallow: / を足しても拒否にならないので、その Allow の行を消すかを先に決めてください。Cloudflare が加えたグループと自分で書いたグループに同じ名前があるときも、公開されている robots.txt 全体で読まれます。
新しいグループは、ファイルの最後 (最後の行が User-agent の行でないとき) か、既存のグループの User-agent の行の前に足してください。既存の User-agent の行の直後に足すとその行と同じグループになります。
例 1:学習などへの利用を止める名前だけを拒否する
GPTBot・ClaudeBot・Google-Extended・Applebot-Extended・CCBot を拒否し、AI 検索用の名前は * のグループに任せます。* のグループがサイト全体を拒否していると AI 検索用の名前も拒否になるので、その場合は * のグループの Disallow: / を先に直してください。AI 検索用の名前のグループが既に拒否しているときは、「拒否を外すとき」でその名前を外してください。User-agent の行は、続けて書くと 1 つのグループになります(RFC 9309 セクション2.1)。
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
Disallow: /
Google-Extended の行は、学習に加えて Gemini アプリなどの回答の根拠 (grounding) への利用も止めます。grounding への利用を止めたくないなら、この行を外してください。用途は確認できていませんが、Bytespider も止めたい場合は、同じグループに User-agent: Bytespider の行を追加できます。
例 2:ChatGPT・Claude・Perplexity の検索用クローラーも拒否する
例 1 の名前に、AI 検索用の OAI-SearchBot・Claude-SearchBot・PerplexityBot を加えます。
User-agent: GPTBot
User-agent: ClaudeBot
User-agent: Google-Extended
User-agent: Applebot-Extended
User-agent: CCBot
User-agent: OAI-SearchBot
User-agent: Claude-SearchBot
User-agent: PerplexityBot
Disallow: /
拒否を外すとき
自分で書いたグループなら、外したい名前の User-agent の行を消します。グループ内の名前をすべて外すなら、グループ全体 (User-agent の行とその後の Disallow の行) を消してください。同じ名前の別のグループが無いときは、消した名前のクローラーが * のグループに従います。* のグループがサイト全体を拒否していれば、消した名前も拒否のままです。
Cloudflare が加えたものなら、ステップ 1 で紹介した Cloudflare の設定をオフにします。User-agent: * の Disallow: / で止まっているなら、robots.txt が原因でサイトが検索されないときの直し方の手順で直します。
robots.txt をどこで編集するか (レンタルサーバー・WordPress・Wix など) は、robots.txt をどこで直すかを見てください。
ステップ 3/3:書いた内容が反映されたかを確かめてください
ブラウザで robots.txt を開き直し、書いたグループが表示されることを確かめます。古い内容が出るときは、再読み込みしてください。
診断をもう一度実行すると公開中の robots.txt をもとに、サイト全体で拒否している名前の一覧が表示されます。診断が数える名前について、拒否した名前がすべて表示され、拒否していない名前が表示されていなければ、書いた内容は意図どおりに読めています。ただし、これは公開されている robots.txt を読み取った結果であり、各社が新しい内容を取り込んだことの確認ではありません。
各社が新しい内容を取り込むまでの時間について、公式ページに記載がある会社のみまとめると次のとおりです。
| 会社 | 公式ページの記載 |
|---|---|
| OpenAI | 検索の結果について、robots.txt を更新してから約 24 時間かかることがある(Overview of OpenAI Crawlers) |
| Perplexity | 変更の反映に最大 24 時間かかることがある(Perplexity Crawlers) |
Anthropic・Google・Apple・Common Crawl の上記のページには、取り込むまでの時間の記載がありません。
アクセスログで確かめるときは、Google-Extended と Applebot-Extended の名前がログに出ないことに注意してください。この 2 つは、ページの取得には使われない名前で、実際の取得は、Google の既存のクローラーや Applebot の名前で行われます(Google's common crawlers、About Applebot)。ログに名前が無いことは、設定が効いていない証拠になりません。
robots.txt で止められないもの
robots.txt のルールは、クローラーに対して指示に従うよう求めるものであり、アクセスの認可を行う仕組みではありません(RFC 9309 セクション1)。Cloudflare も、robots.txt に従うかどうかはクローラー側の任意であると説明しています(robots.txt setting)。
AI の利用者が質問したときなどにその場でページを取りに行くアクセスは、会社によって扱いが違います。
| 名前 | 会社の説明 |
|---|---|
| ChatGPT-User (OpenAI) | 利用者が始めた操作なので、robots.txt のルールが適用されないことがある(Overview of OpenAI Crawlers) |
| Perplexity-User (Perplexity) | 利用者が求めた取得なので、概ね robots.txt のルールを無視する(Perplexity Crawlers) |
| Claude-User (Anthropic) | robots.txt で無効にすると利用者の質問に応えるためのページの取得をしなくなる(Does Anthropic crawl data from the web) |
アクセスそのものを止めたいなら、robots.txt 以外の手段が必要です。Cloudflare は、robots.txt で意思を示すことと同社の AI Crawl Control で拒否を強制することを併用できると説明しています(robots.txt setting)。
診断に「AIクローラー N件 を拒否しています」と出たとき
診断は、「名前と拒否したときに起きること」の表にある 9 つの名前について、その名前のグループ (無ければ * のグループ) がサイト全体を拒否しているかを見ています。N は拒否している名前の数です。項目の説明に拒否している名前が並び、「観測した内容を見る」を開くと名前ごとの用途が表示されます。
- 一覧にある名前の拒否がサイトの方針どおりであり、「サイト全体で Googlebot のクロールを禁止しています」と表示されていなければ、何も変更する必要はありません
- 「サイト全体で Googlebot のクロールを禁止しています」も出ているなら、Googlebot に適用されるグループでサイト全体を止めています。検索結果に出したいサイトなら、robots.txt が原因でサイトが検索されないときの直し方で先に直してください
- 一覧に OAI-SearchBot・Claude-SearchBot・PerplexityBot のいずれかが含まれており、その AI 検索にサイトを出したいなら、「拒否を外すとき」の手順で該当する名前を外してください
- 自分で書いた覚えが無いなら、「書いた覚えが無いときは、robots.txt を作っている場所を確かめてください」の節から始めてください
まずは全体を診断してみましょう
専門知識がなくてもいまの設定状況と具体的な対処方法をわかりやすく確認できます。
ドメイン設定を診断する利用中のDNS事業者が分かっているなら事業者別の設定手順から直接進めます。