Scanverra

AIクローラーをブロックするrobots.txtを修正する方法

robots.txtは、ドメインのルートに置かれるプレーンテキストファイルで、クローラーがどのパスをリクエストしてよいかを伝えます。ステージング環境からコピーされた、あるいは特定の不正なボットを止めるために書かれた、過度に広範な単一のDisallowルールが、サイト全体からすべてのAIクローラーを気づかぬうちにブロックしてしまい、何の警告もなくAI駆動の検索やアシスタントの結果から締め出されてしまうことがあります。

これが起こる理由

  • ステージング用のDisallow: /が本番環境にまで反映されてしまう。 公開前のサイトを検索エンジンから隠すための包括的なブロックが、公開後も削除されずに残ってしまうケースです。
  • 1つの悪質なスクレイパー向けのルールが、すべてに適用されてしまう。 チームが1つの悪質なボットを止めるためにすべてのクローラーをブロックし、正当なAIエージェントまで巻き込んでしまうケースです。
  • 古いブロックリストが、今日のAIクローラーを想定していない。 何年も前に固定の「悪質なボット」のリストに基づいて書かれたrobots.txtが、誰も例外を追加しようとは考えなかった新しいAIユーザーエージェントを意図せず巻き込んでしまうケースです。
  • 機密パスが、アクセス制御であるかのようにrobots.txtに列挙されてしまう。 チームがディレクトリを隠す意図でDisallow: /admin-backup/を追加しますが、そのファイル自体が公開されており、まさにどこを見ればよいかを公開してしまっていることに気づいていないケースです。

問題の特定方法

Scanverraは、robots.txtを一般的な構文チェックから、AI時代特有の2つの具体的な失敗パターンまで、3つの方法でチェックします。

  • 構文と到達可能性。 Website AuditのSEOスコアには、Lighthouseの標準的なrobots.txtチェックが含まれます。ファイルが実際に到達可能であること(4xx/5xxレスポンスでないこと)、含まれるすべてのディレクティブがクローラーに認識される形式であることを確認し、不正な形式のルールをSEO上の問題としてフラグします。
  • AIクローラーの包括的ブロック。 Scanverra独自の別チェックが、GPTBot、ClaudeBot、CCBot、Google-Extended、PerplexityBotといった既知のAIクローラーを狙った包括的なDisallow: /Disallow: /*を検出し、Website AuditのAgent Readinessスコア内の問題として提起します。
  • howToRobotsTxt.identifyItem3

実際に残るギャップがひとつあります。3つのチェックのいずれも、Sitemap:ディレクティブが実際に稼働しているサイトマップを指しているかどうかまでは確認しません。あくまで、その行自体が構文として認識されているかどうかだけです。

修正方法

1. どうしてもブロックするなら、包括的なAIブロックをターゲットを絞ったルールに置き換える

そもそもどのAIクローラーを実際に締め出したいのかを意図的に決め、サイト全体ではなく、本当に重要な特定のパスだけを制限してください。

変更前: すべてのAIクローラーをあらゆる場所からブロックしているtypescript
1User-agent: GPTBot
2Disallow: /
3
4User-agent: ClaudeBot
5Disallow: /
6
7User-agent: CCBot
8Disallow: /
変更後: AIクローラーを許可しつつ、1つの内部パスだけを除外するtypescript
1User-agent: *
2Allow: /
3Disallow: /internal-search/
4
5Sitemap: https://example.com/sitemap.xml

2. 機密パスを隠すためにrobots.txtを使わない

あるパスが本当に非公開である必要があるなら、そのパス自体に認証やnoindexメタタグをかけて保護してください。単にその存在を公表してしまうだけの公開されたrobots.txtルールで対応してはいけません。管理画面やバックアップ、ステージング用ディレクトリを指すDisallowエントリはすべて削除してください。

3. 修正が反映されたことを確認する

robots.txtを編集したら、Website Auditを再実行してください。Agent Readinessスコアの「AI crawlers not blocked」チェックは、スキャンのたびに稼働中のファイルを読み取るため、変更が即座に反映されます。

Scanverraがこれをどう検出するか

Website AuditのSEOスコアは、すべてのスキャンで標準的なrobots.txtの構文と到達可能性のチェックを実行します。それに加えて、専用のAIクローラーチェックが同じ稼働中のファイルを読み取り、既知のAIユーザーエージェントを狙った包括的なDisallowを特に探し、その結果をAgent Readinessスコアの一部として表面化させます。さらに、セキュリティスキャン内の別のチェックが、Disallowルールに記載された機密性の高そうなパスにフラグを立てます。それぞれ異なる失敗パターンを探す、3つのチェックです。

FAQ

Frequently asked questions

Scanverraはrobots.txtファイル全体を検証してくれますか?

はい、2つの層で検証します。Website AuditのSEOスコアには本物のrobots.txt構文チェックが含まれており、認識されないディレクティブ、ファイル取得時の不正なHTTPステータス、その他同様の形式不備を検出します。それに加えて、より的を絞った2つのチェックが実行されます。既知のAIクローラーを包括的にブロックしていないか、そして管理画面やバックアップディレクトリのような機密性の高そうなパスを、ファイルを読む誰にでも露出させるDisallowルールがないかです。行っていないのは、Sitemap:ディレクティブが実際に機能するサイトマップを指しているかどうかのチェックです。

ブロック済みクローラーチェックは、どのAIクローラーを対象としていますか?

GPTBot、ClaudeBot、CCBot、Google-Extended、PerplexityBotなど、既知のAIエージェントです。このチェックは、これらのユーザーエージェントを狙った包括的なDisallow: /やDisallow: /*を特に探すものであり、特定のパスに対する意図的で限定的な制限を対象とするものではありません。

AIクローラーをブロックすると、なぜサイトに悪影響があるのですか?

検索や発見のますます多くの部分が、ユーザーに代わってウェブを閲覧・引用するAIアシスタントを経由するようになるにつれ、そうしたクローラーを包括的にブロックするサイトは、たとえ従来の検索では上位表示されていても、そのチャネル全体から見えなくなってしまいます。多くのチームが指摘されるまで気づいていない、見えにくいコストです。

robots.txtに機密パスを列挙すれば、それらを隠せるのではないですか?

いいえ——これはよくある誤解です。robots.txtは誰でもyoursite.com/robots.txtでリクエストできる公開ファイルです。Disallowルールはアクセスを制限するものではなく、行儀の良いクローラーにそのパスをインデックスしないよう依頼するだけのものです。そのため、/admin-backup/をそこに列挙すると、ファイルを読む誰にでも、まさにどこを見ればよいかの地図を渡してしまうことになります。

特定のパスだけをAIクローラーから除外し、完全にはブロックせずに済ませるにはどうすればよいですか?

包括的なルールではなく、特定のユーザーエージェントとパスをターゲットにしてください。詳しくは以下のコード例を参照してください。これにより、たとえばGPTBotだけを内部の検索結果ページから締め出しつつ、サイトの他の部分からはブロックせずに済ませることができます。

Free - no sign-up required

AIクローラーをブロックしていないか確認しましょう

無料のWebsite Auditを実行し、robots.txtがAIエージェントをブロックしていないかを含むAgent Readinessスコアを確認しましょう。

Run free audit