Robots.txtジェネレーター
ウェブサイトのrobots.txtファイルを素早く構築します。
クイックスタートプリセット
使い方
- プリセットを選択するか、ルールを手動で構築します。
- Allow/Disallowパスを持つuser-agentグループを追加します。
- サイトマップURLを追加します。
- ファイルをコピーまたはダウンロードして、サイトのルートディレクトリに配置します。
よくある質問
robots.txtファイルをどこに配置すべきですか?
ドメインのルートに配置する必要があります: https://yourdomain.com/robots.txt。サブディレクトリでは機能しません。
robots.txtはGoogleがページをインデックス化するのを防ぎますか?
robots.txtはボットがページをクロールするのを防ぎますが、検索結果から削除しません。それには、noindexメタタグを使用します。
AIボットとは?
GPTBot、CCBot、Google-ExtendedなどのAIボットは、AIモデルをトレーニングするためにコンテンツを収集します。robots.txtでそれらを特別にブロックできます。
1994年に誕生し2022年に標準化された規格
Robots Exclusion Protocolは1994年2月にMartijn Kosterによって設計され、約30年後の2022年9月にようやくRFC 9309として成文化された。28年間、誰もが詳細の合意なしに従うことに合意したデファクトスタンダードだった。RFCは構文(User-agent / Disallow / Allowの行)・優先順位ルール・ファイルサイズ制限(パーサーは少なくとも500KiBを受け入れる必要がある)・エラーの処理方法(4xx → クローラーは何にでもアクセス可能;5xx → クローラーは完全なdisallowを仮定する必要がある)を確定した。主要な検索エンジンのクローラーのほとんどはRFC以前から概ね同じ動作に準拠していたが、細かな違いが重要だった。
ファイルの置き場所
robots.txtファイルはオリジン(スキーム + ホスト + ポートごとに1つ)のルートから正確に/robots.txtというURLで提供される必要がある。サブディレクトリは機能しない;/blog/robots.txtはクローラーにとって単なる404だ。各サブドメインには独自のものが必要だ(www.example.com/robots.txtとblog.example.com/robots.txtは独立したファイルだ)。ファイルはプレーンテキストで、text/plainとして提供され、UTF-8でエンコードされる(BOMは許可されているが強く非推奨だ)。
1ページに収めた構文
# Comments start with #
User-agent: * # Apply to all crawlers
Disallow: /admin/ # Block this directory
Disallow: /search # Block search results
Allow: /admin/login # Allow this path even within /admin/
User-agent: Googlebot # Specific Googlebot rules
Disallow: /test/
Sitemap: https://example.com/sitemap.xml
Sitemap: https://example.com/news-sitemap.xml
主なルール:
- グループ構造。「グループ」は1行以上の
User-agent:行から始まり、Allow:/Disallow:ルールが続き、次のUser-agent:が新しいグループを開始するまで続く。 - より具体的なものが優先。最も具体的なユーザーエージェントグループが特定のクローラーに適用される。Googlebotは
User-agent: Googlebotのルールを読み、User-agent: *のルールを完全に無視する。 Disallow:が空の場合は「すべてを許可」を意味する。Disallow: /は「すべてをブロック」を意味する。スラッシュの有無が重要だ。- ワイルドカード。
*は任意の文字列に一致し;$はURLの末尾に一致する。Disallow: /*.pdf$はすべてのPDFをブロックする。公式にはこれらはGoogleの拡張機能だが、ほとんどの主要なクローラーが受け入れる。 - 大文字・小文字の区別。ユーザーエージェント名は大文字・小文字を区別しない(Googlebot = googlebot)。ルール内のURLパスは大文字・小文字を区別するファイルシステムでは区別される(
/Page≠/page)。
robots.txtがしないこと
最も一般的な誤解であり、Googleが自社のドキュメントで直接指摘していること:robots.txtはクロールを防ぐが、インデックスを防がない。ウェブ上の他の場所からページがリンクされている場合、Googleはそのページ自体をクロールしなくても、URLをインデックスに登録し(「このページの情報はありません」というスタブで検索結果に表示)する可能性がある。ページを本当に検索結果から除外するには、ページ自体に<meta name="robots" content="noindex">タグを使うか、X-Robots-Tag: noindex HTTPヘッダーを使うこと。クローラーはnoindexディレクティブを見るためにページにアクセスできる必要がある。つまり、noindexを追加したページはrobots.txtでDisallowすべきではない。クローラーがnoindexを見ることができなくなるためだ。
robots.txtがしないその他のこと:
- 機密URLを隠す。ファイルは公開されて読み取り可能で、誰でも
yoursite.com/robots.txtを取得できる。/admin/や/internal-tools/のようなパスを列挙することは、それらのURLが存在することを世界に教えてしまう。本当の秘密のためには認証を使い;「インデックスされたくない」だけならnoindexを使うこと。 - 悪意のあるクローラーを止める。悪意のあるアクターはrobots.txtを完全に無視する。これは行儀のよいクローラーへのリクエストであり、強制力はない。
- 埋め込みカードクローラーを確実にブロックする。Facebookの
facebookexternalhit・TwitterのTwitterbot・LinkedInのLinkedInBot・SlackとDiscordのボットはすべてrobots.txtを読む。これらをブロックすると、共有リンクがそれらのプラットフォームでプレビューをレンダリングしなくなる。シェアカードが必要なら明示的に許可すること。
知っておくべきユーザーエージェント
| ユーザーエージェント | 所有者 | クロール目的 |
|---|---|---|
Googlebot | ウェブ検索インデックス | |
Bingbot | Microsoft | Bing検索インデックス |
DuckDuckBot | DuckDuckGo | DuckDuckGo検索 |
Slurp | Yahoo | Yahoo検索 |
YandexBot | Yandex | ロシア語検索 |
Baiduspider | Baidu | 中国語検索 |
facebookexternalhit | Meta | Facebookシェアカードのメタデータ |
LinkedInBot | LinkedInシェアプレビュー | |
Twitterbot | X / Twitter | ツイートカードのメタデータ |
Slackbot | Slack | Slackリンクのアンファーリング |
Discordbot | Discord | Discordリンクプレビュー |
AIクローラー問題
2023年以降、AI学習クローラーの波が押し寄せ、多くのサイトがAI学習をオプトアウトするためのrobots.txtルールを追加している。知っておくべき主なもの:
- GPTBot:OpenAIの学習クローラー。
- ChatGPT-User:ChatGPTユーザーがURLの取得を求めたときのOpenAIのオンデマンドクローラー。
- OAI-SearchBot:OpenAIの検索プロダクトクローラー。
- Google-Extended:GoogleのAI学習(Bard / Gemini)用の独立したトークン、Googlebotとは別。検索は許可しつつAI学習をブロックできる。
- ClaudeBot / Claude-User / Claude-SearchBot:Anthropicの各種クローラー。
- PerplexityBot:Perplexity AI。
- CCBot:Common Crawl。ほとんどのLLMが学習する公開データセット。
- Bytespider:ByteDance / TikTok。
- Applebot-Extended:Apple Intelligenceの独立したトークン、Google-Extendedに似ている。
2つの重要なことを知っておく:(1)このオプトアウトは任意で、robots.txtを尊重するクローラーのみが影響を受ける;(2)「検索」と「AI学習」の境界は急速に曖昧になっているため、すべてのAIクローラーをブロックするとAI要約検索結果でのコンテンツの表示にも影響する可能性がある。上の「AIクローラーをブロック」プリセットを出発点として使い、自分のサイトに合ったトレードオフを決めること。
Crawl-DelayとGoogleが無視する理由
非標準のCrawl-delay:ディレクティブは、クローラーにサーバーへのリクエスト間にN秒待つよう求める。Bing・Yandex・多くの小規模クローラーはこれを尊重する。Googleは尊重しない。Googleのドキュメントには、GooglebotがCrawl-delayを無視すると明示されている。Search ConsoleはかつてCrawlレートの手動設定を公開していたが、Googleは2024年初頭にほとんどのサイトでそれを廃止し、サーバーの応答に基づいてCrawlレートを自動調整するようになった。Googlebot専用に遅くすることが目的なら、robots.txtは間違ったツールだ。
Sitemapディレクティブ
robots.txtにサイトマップを列挙することは、URLリストの場所をクローラーに伝えるヒントだ。絶対URL(完全なhttps://)を1行に1つ使うこと。コンテンツを別々のサイトマップに分割するサイト(メインサイトマップ・ニュースサイトマップ・ビデオサイトマップ・画像サイトマップ)には複数のサイトマップを列挙できる。Sitemapディレクティブは元のrobots.txtプロトコルの正式な部分ではないが、すべての主要な検索エンジンが読み取る。
よくある間違い
- CSS / JavaScriptファイルのDisallow。Googleはレンダリングされたコンテンツをランキングに使用する。Googlebotが
/css/や/js/を取得できない場合、ページを正しくレンダリングできず、SEOに悪影響が出る。リソースディレクトリをブロックしないこと。 - Disallowとnoindexの混同。Disallowはクロールを止めるが、ページはインバウンドリンクを通じて検索に表示される可能性がある。実際のインデックス制御にはnoindexメタタグを使うこと。
- プライベートURLの列挙。robots.txtの内容はすべて公開されて読み取り可能だ。攻撃者に存在を知らせたくない場合は
/admin/や/wp-admin/をアドバタイズしないこと;代わりに適切な認証を使いnoindexに頼ること。 Disallow:が空のとき、Disallow: /を意図していた。空はすべてを許可する;Disallow: /はすべてをブロックする。これらは逆だ。- 埋め込みクローラーをブロックしてからシェアプレビューが機能しないと不思議に思う。facebookexternalhitをDisallowすると、共有リンクがFacebookカードをレンダリングしなくなる。プレビューが必要なら、ソーシャルメディアのボットを明示的に許可すること。
- Sitemapの行を追加するのを忘れる。無料で有用だが、ほとんどのジェネレーターはこれを省略する。
- Crawl-delayでGoogleをスロットルしようとする。機能しない。Search Consoleを使うこと。
- robots.txtでIP / 地域 / デバイスによるブロックに使う。プロトコルにはこれらの概念がない。代わりにサーバーサイドのルールを使うこと。
- ファイルをテストしない。Googleは2023年11月にスタンドアロンのrobots.txtテスターを廃止し、Search Console内のrobots.txtレポートに置き換えた;そのレポートは構文エラーをフラグ立てし、最新のクロールを表示する。デプロイ前に必ず確認すること(またはオープンソースのrobots.txtバリデーターで)。
よくある質問
ファイルはどこに置けばよいですか?
ドメインのルート、正確にhttps://yoursite.com/robots.txtでアクセス可能な場所だ。ほとんどのホストでは、robots.txtをpublic / htdocs / wwwのルートディレクトリに置くことを意味する。WordPressや多くのCMSは動的に生成する;静的ファイルを追加する前に自分のCMSが生成しているか確認すること(両方存在する場合は静的なものが勝つ)。
robots.txtは必要ですか?
技術的には不要だ。ないとクローラーはデフォルトで「すべてを許可」になる。ほとんどの公開サイトにはそれで問題ない。しかし、サイトマップを指示するため・明らかなクロールトラップ(検索結果ページ・ページネーションされたアーカイブ・パラメトリックURL)をブロックするため・そしてAI学習をオプトアウトするために、ほぼ常に必要になる。空またはデフォルト許可のrobots.txtでも、Sitemapの行を置く場所として有用だ。
robots.txtはどれくらい大きくできますか?
RFC 9309はパーサーが少なくとも500KiB(約500,000バイト)を受け入れることを要求している。Googleは500KiBの制限を設け、それを超えるものは無視する。robots.txtファイルの大多数は1KiB未満だ。制限に近づいている場合、おそらく特定のURLを多すぎるほど列挙しており、代わりにワイルドカードパターンを使うべきだ。
robots.txtが500エラーを返した場合はどうなりますか?
RFC 9309によると、クローラーがサーバーエラー(5xx)でrobots.txtを取得できない場合、完全なdisallowを仮定する必要がある。つまりGoogleなどの準拠クローラーは、ファイルが再び到達可能になるまでサイトのクロールを完全に停止する。robots.txtのエンドポイントがダウンすると、検索の可視性も低下する。利用可能な状態に保つこと。
GoogleのCrawl-delayはどうなりますか?
GoogleはCrawl-delayを明示的に無視する。このディレクティブはBing・Yandex・ほとんどの他のクローラーには機能する。Search Consoleがかつて公開していた手動のCrawlレート設定は、2024年初頭にほとんどのサイトで廃止された;Googleはサーバーの応答に基づいてCrawlレートを自動調整するようになった。robots.txtでCrawl-delayを設定しても何も壊れない;ただGooglebotの動作は変わらない。
AIクローラーはブロックすべきですか?
トレードオフだ。GPTBot・Google-Extended・ClaudeBotなどをブロックすると、それらのモデルの学習データからコンテンツをオプトアウトできる。コンテンツの再利用を制限したい場合には正しい選択だ。コスト:AI要約検索結果が普及するにつれて、ブロックされたコンテンツは引用または表示されにくくなる可能性がある。多くの出版社はAI学習クローラーをブロックしつつ、AI検索クローラー(OAI-SearchBotなど)は引用可能に保つために許可する。「AIクローラーをブロック」プリセットは最大限のアプローチを採用している;自分の優先順位に合わせて調整すること。