AIクローラー向けrobots.txt:許可と拒否のレシピ
GPTBot、ClaudeBot、PerplexityBotなどを1つの小さなテキストファイルで制御する、3つのレシピとボット別の比較表。
AIクローラーを制御するには、ドメインのルートにあるrobots.txtにUser-agentとDisallowのルールを書き加えます。すべてのAIボットをブロックする、学習は拒否しつつAI検索は残す、すべて許可する、のいずれも可能です。このファイルはあくまで勧告であり、行儀のよいボットは従いますが、アクセス制御ではありません。
robots.txtがAIクローラーを制御する仕組み
各AI企業は、名前の付いたエージェントを1つ以上運用しています。robots.txt内でそのuser-agentトークンを指定して対象を絞り、何を取得してよいかを決めます。覚えておきたいのは3つの操作です。ボットを丸ごとブロックする、学習用クローラーだけをブロックしてAI検索ボットは通す、すべて開放する。以下のレシピはこの3つをカバーします。いずれもhttps://example.com/robots.txtという1つのファイルに置きます。
レシピ1:すべてのAIクローラーをブロック
これは文書化されたすべてのAIエージェントを拒否し、学習利用を左右する2つのオプトアウトトークンを追加します。そのまま貼り付けても、気にしないボットを削っても構いません。
User-agent: GPTBot
Disallow: /
User-agent: OAI-SearchBot
Disallow: /
User-agent: ChatGPT-User
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: Claude-User
Disallow: /
User-agent: PerplexityBot
Disallow: /
User-agent: Perplexity-User
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Bytespider
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
はっきり述べておくべき点があります。GPTBotをブロックしても止まるのはOpenAIの学習用クローラーだけで、ChatGPT検索(それはOAI-SearchBot)やユーザー起点の閲覧(それはChatGPT-User)は止まりません。上のレシピは3つすべてをカバーするため、それぞれに独立したブロックを設けています。
レシピ2:AI検索は許可し、AI学習はブロック
よくある目標は、AI回答エンジンでの露出を保ちつつ、自分のコンテンツをモデル学習から外すことです。検索ボットを許可し、学習用クローラーとトークンを拒否します。
# Allow AI search engines
User-agent: OAI-SearchBot
Allow: /
User-agent: PerplexityBot
Allow: /
# Block AI training
User-agent: GPTBot
Disallow: /
User-agent: ClaudeBot
Disallow: /
User-agent: CCBot
Disallow: /
User-agent: Google-Extended
Disallow: /
User-agent: Applebot-Extended
Disallow: /
この切り分けの鍵はGoogle-ExtendedとApplebot-Extendedです。これらは別個のクローラーではなくrobots.txtのトークンです。拒否すればコンテンツはGeminiとAppleのAI学習から外れ、その一方でGooglebotとApplebotは通常検索のためのインデックスを続けます。
レシピ3:すべて許可(デフォルト)
何もしなければ、これが実際の状態です。空のDisallowは、どのクローラーにもあらゆるパスの取得を許します。
User-agent: *
Disallow:
robots.txtが存在しない場合も同じ意味です。何かを制限したいときにだけ、明示的なルールが必要になります。
11のAIクローラー比較
| ボット | 企業 | 目的 | ブロックで止まるもの… |
|---|---|---|---|
| GPTBot | OpenAI | モデル学習のためにクロール | あなたのコンテンツでの学習 |
| OAI-SearchBot | OpenAI | ChatGPT検索の結果を生成 | ChatGPT検索への表示 |
| ChatGPT-User | OpenAI | ユーザー起点の閲覧と操作 | ChatGPTからのユーザー起点の取得 |
| ClaudeBot | Anthropic | モデル学習のためにクロール | あなたのコンテンツでの学習 |
| Claude-User | Anthropic | ユーザー起点の取得 | Claudeからのユーザー起点の取得 |
| PerplexityBot | Perplexity | 回答エンジン向けにインデックス | Perplexityでのインデックス |
| Perplexity-User | Perplexity | ユーザー起点の取得 | Perplexityからのユーザー起点の取得 |
| Google-Extended | Gemini/Vertex AI学習利用を制御するトークン | Gemini/Vertex AI学習へのコンテンツ利用 | |
| Applebot-Extended | Apple | Apple AI学習利用を制御するトークン | Apple AI学習へのコンテンツ利用 |
| CCBot | Common Crawl | AI学習に広く使われる公開データセットを構築 | Common Crawlデータセットへの収録 |
| Bytespider | ByteDance (TikTok) | AIクローラー | ByteDanceによるAIクロール |
robots.txtにできることとできないこと
いくつかのルールが、そもそもファイルが機能するかを決めます。
- ドメインのルートに置く。 クローラーは
https://example.com/robots.txtだけを読み、それ以外は読みません。サブフォルダのファイルは無視され、サブドメインごとに専用のものが必要です。 - トークンは大文字小文字を区別しない。
GPTBotとgptbotは同じクローラーに一致します。可読性のため文書化された表記を保ちますが、厳密な一致を気にする必要はありません。 - 一部の項目はクローラーではなくトークン。
Google-ExtendedとApplebot-Extendedは何も取得しません。GoogleとAppleがすでにクロール済みのコンテンツをAI学習に使ってよいかを示すだけです。 - これは勧告であり、壁ではない。 robots.txtは任意です。まっとうなボットは従いますが、アクセス制御ではなく、無視すると決めたクローラーは止められません。確実に遮断するには、ファイアウォールのルール、認証、またはエッジでのuser-agentとIPによるブロックを使います。
llms.txtファイルと組み合わせる
robots.txtはクロールしてよい相手を決めます。llms.txtファイルはその逆で、読んで理解してほしいコンテンツをAIシステムに指し示します。両者は連携し、llms.txtジェネレーターで作成できます。サイト全体がAIクローラーからどう見えるかを確認するには、AI対応チェックを実行してください。