Communitygithub.com

superbrickstudio/website-ai-readiness

WebサイトがAI検索(ChatGPT、Claude、Perplexity、Google AI Overviews)や通常の検索で見つけられ、読み取り可能で、引用される状態かをチェックします。主要なAIクローラーごとにrobots.txtのルール、ファイアウォールによるブロック、JavaScriptが必要なコンテンツ、構造化データ、リダイレクト、サイトマップ、llms.txtを監査し、優先順位の高い修正を報告します。「ChatGPTは私のサイトを見られる?」「AIクローラーがブロックされている?」「サイトがAIの回答に表示されないのはなぜ?」といった質問に使えます。

website-ai-readiness とは?

このスキルは、AI検索エンジンや通常の検索エンジンがWebサイトをどのように認識するかをチェックし、優先順位に基づいた修正方法を平易な英語で説明します。主に、robots.txtでの主要なAIクローラー(OAI-SearchBot、Claude-SearchBot、PerplexityBot、Googlebotなど)のアクセス許可状況、ファイアウォールやCDNによるボットブロック、JavaScriptなしでコンテンツが読めるかどうか、JSON-LD構造化データの有無と正確性、リダイレクトの連鎖やループ、サイトマップの有効性、そしてllms.txtの存在と形式を監査します。各チェックは順番に実行され、結果は「AI検索を完全にブロック」「サイトの理解を損なう」「良好な管理状態」の3つのカテゴリに分類され、具体的な問題行やステータスコード、修正方法とともに報告されます。Claude Code、Cursor、CodexなどのシェルやWebフェッチツールが使えるすべてのAIエージェントで利用可能で、管理者はサイトのAEO/GEO対策やAI可視性を向上させるための具体的なアクションプランを得られます。

対応✓Claude Code✓Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/superbrickstudio/skills/tree/HEAD/skills/website-ai-readiness

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

WebサイトのAI対応状況チェック

AI検索エンジンやクローラーがWebサイトをどのように見ているかをチェックし、何を修正すべきかを優先順位順にわかりやすく説明します。

URLの取得(シェルでのcurl、またはWebフェッチツール)が必要です。丁寧に行い、サイトあたり数回のリクエストにとどめ、クロールは行わないでください。

依頼する情報

Webサイトのアドレスのみです。ユーザーが特定のページ(料金ページ、ブログ投稿など)を指定した場合は、トップページと合わせてそれらのページもチェックします。移行の場合は、古いURLのリストを依頼してください。

チェック項目

以下の順序で実行し、最後のレポートのために結果を記録します。

1. robots.txt:許可されているクローラー

https://<domain>/robots.txt を取得します。

  • ファイルなし(404): クローラーはすべて許可と見なします。問題はありませんが、Sitemap: 行を含むものを推奨します。
  • テキストファイルではなくHTMLページ: サイトに実際のrobots.txtはありません。存在しない場合と同じです。

GoogleやAI企業が文書化している方法で読み取ります:

  • ルールはグループで構成されます:1つ以上の User-agent: 行、その後に Allow: と Disallow: 行。
  • クローラーは自身を指定したグループに従います。自分を指定したグループがない場合は、User-agent: * グループに従います。これもない場合は、すべて許可されます。
  • グループ内で最も長く一致するパスが優先されます。AllowとDisallowの長さが同じ場合、Allowが優先されます。
  • 空の Disallow: は何もブロックしません。Disallow: / はサイト全体をブロックします。

以下の各クローラーについて、「許可」「一部ブロック(/aboutや/blogなどの通常のコンテンツページがブロックされており、/adminや/cartなどだけではない)」「ブロック(トップページがブロックされている)」の判定をします。

トークン企業ブロックの影響
OAI-SearchBotOpenAIサイトがChatGPTの検索結果に表示されなくなる
ChatGPT-UserOpenAIユーザーが依頼したときにChatGPTがページを開けなくなる
Claude-SearchBotAnthropicサイトがClaudeの検索に表示されなくなる
Claude-UserAnthropicユーザーが依頼したときにClaudeがページを開けなくなる
PerplexityBotPerplexityサイトがPerplexityの回答に表示されなくなる
Perplexity-UserPerplexityユーザーが依頼したときにPerplexityがページを開けなくなる
DuckAssistBotDuckDuckGoサイトがDuckDuckGoのAI回答に表示されなくなる
GPTBotOpenAIOpenAIのモデル学習をオプトアウト(検索には影響しない)
ClaudeBotAnthropicClaudeの学習をオプトアウト(検索には影響しない)
Google-ExtendedGoogleGemini学習をオプトアウト;Google検索やAI Overviewsには影響しない
Applebot-ExtendedAppleAppleのAI学習をオプトアウト
meta-externalagentMetaMetaのAI学習をオプトアウト
CCBotCommon Crawl多くのモデルが学習するオープンデータセットをオプトアウト
BytespiderByteDanceByteDanceのAI学習をオプトアウト
GooglebotGoogleGoogle検索、およびAI Overviews
BingbotMicrosoftBingとCopilot、および一部ChatGPT検索
ApplebotAppleSiriとSpotlightの提案

最も重要な区別は、検索クローラー(最初の7つとGooglebot、Bingbot)がサイトをAI回答に表示できるかどうかを決定することです。学習クローラーは、そのコンテンツが将来のモデルの学習に使われるかどうかのみを決定します。学習をブロックし検索を許可することは一般的で合理的な選択です。検索クローラーをブロックすることは、テンプレートやセキュリティプラグインから引き継いだ、通常は間違いです。

また、以下の点も指摘します:

  • Sitemap: 行がない。
  • 有効なrobots.txtディレクティブではない行(Dissallow などのタイプミス)。

2. ファイアウォールとボットブロック

robots.txtでクローラーを許可していても、サーバーやCDNが実際には拒否することがあります(CloudflareのAIボットブロックが一般的です)。

トップページを2回取得します:

# ブラウザとして
curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0 Safari/537.36" https://example.com/

# AI検索クローラーとして
curl -s -o /dev/null -w "%{http_code}\n" -A "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; OAI-SearchBot/1.3; +https://openai.com/searchbot" https://example.com/

OpenAIトークンの代わりに Claude-SearchBot/1.0; +https://www.anthropic.com と PerplexityBot/1.0; +https://perplexity.ai/perplexitybot を使って2回目のリクエストを繰り返します。

ブラウザリクエストは成功したがクローラーが401、403、429、503、またはチャレンジページ(「しばらくお待ちください...」「注意が必要です」、cf-chl)を返した場合、ファイアウォールがそのクローラーをブロックしています。ブラウザリクエストも拒否された場合は、推測せずにテストできなかったと伝えてください。

実際のクローラーは公開されているIP範囲から来るため、サーバーは実際のクローラーとは異なる扱いをする可能性があります。ブロックは「可能性が高い」と提示し、ファイアウォールまたはCDNの設定を確認することを提案します。

3. JavaScriptなしでコンテンツを読めるか

ほとんどのAIクローラーは配信されたHTMLをそのまま読み取り、JavaScriptを実行しません。トップページと1~2の主要なページを取得し、生のHTML(レンダリングされたブラウザビューではない)で以下を確認します:

  • <title> とメタディスクリプション。
  • ページの内容を示す1つの <h1>。
  • 主要な本文テキスト:見出し、主要な段落、価格や製品の詳細。

HTMLのほとんどが空の <div id="root"> や <div id="app"> とスクリプトだけの場合、コンテンツはJavaScriptの実行後にしか表示されません。AIクローラーはほとんど何も見えなくなります。サーバーサイドレンダリングまたはプリレンダリングを推奨します。

また、ページに誤って <meta name="robots" content="noindex"> や X-Robots-Tag: noindex ヘッダーが付いていないかも確認します。

4. 構造化データ

生のHTMLからすべての <script type="application/ld+json"> ブロックを抽出します。各アイテムについて、@type と以下の期待されるプロパティのうち欠落しているものを記録します:

タイプ期待されるプロパティ
Organizationname, url, logo, sameAs
LocalBusinessname, address, telephone, url, openingHoursSpecification, geo
ProfessionalServicename, address, telephone, url
WebSitename, url
WebPagename, url
FAQPagemainEntity
Article, BlogPosting, NewsArticleheadline, author, datePublished, image
Productname, image, offers, aggregateRating
Servicename, provider, areaServed, description
BreadcrumbListitemListElement
Personname, jobTitle, url, sameAs
Eventname, startDate, location

以下の点を指摘します:

  • 解析できないJSON-LD(構文エラーがあるとすべて無効になります)。
  • トップページにOrganization(またはLocalBusiness)がない。 これは事業者を明確に示す最も明確な記述です。
  • JavaScriptでのみ追加されるスキーマ。 レンダリングされたビューにスキーマが表示されても生のHTMLにはない場合、ほとんどのAIクローラーはそれを認識しません。

5. リダイレクト

トップページのバリエーションと、ユーザーから提供された古いURLを確認します:

curl -sIL -o /dev/null -w "%{num_redirects} redirects -> %{http_code} %{url_effective}\n" http://example.com/

http://、https://、www あり・なしを確認します。各ホップを確認するには、curl -sI を実行し、各 Location ヘッダーを手動で追跡します。

判定:

  • OK: リダイレクトなし、または最終ページへの1回の永続的リダイレクト(301または308)。
  • チェーン: 2回以上の連続リダイレクト。最初のアドレスを最後のアドレスに直接向けるようにします。
  • 一時的: 恒久的に移動したページに対して302または307を使用。301または308を使用します。
  • ループ: リダイレクトが循環しており、ページが読み込まれない。
  • 多すぎる: 10回以上のホップ。Googleは10回を超えると追跡を停止します。
  • 壊れている: 4xxまたは5xxで終了。
  • トップページへ: 古いページが最も近い一致ではなくトップページにリダイレクトされている。
  • メタリフレッシュ: サーバーではなくページ内で行われるリダイレクト。

6. サイトマップ

robots.txtからサイトマップを見つけるか、/sitemap.xml や /sitemap_index.xml を試します。確認項目:

  • 読み込め、XMLであること。
  • サイトの実際のページが、最終的なURL(リダイレクトや404がない)でリストされていること。
  • <lastmod> 日付があり、すべて同じ日付ではなく、実際の日付に見えること。

7. llms.txt

https://<domain>/llms.txt を取得します。

  • 存在する場合、 llmstxt.orgの形式に従っているか確認します:サイト名の # H1、> で始まる1行の要約、その後に ## セクションの - [タイトル](URL): メモ リンク。リンクが機能するか確認します。
  • 存在しない場合、 ドラフトを提案します。サイトマップやサイト内で見つけたURLのみを含めます。URLを推測しないでください。主要なページ(サービスや製品、料金、概要、お問い合わせ、最良のガイド)を明確な見出しの下にグループ化し、残りは ## Optional の下に配置します。

llms.txtが何をするかについて正直に説明します:llms.txtは提案された標準です。AIツールにサイトのクリーンなマップを提供しますが、主要なAI検索エンジンがランキングにこのファイルを使用すると発表したことはありません。

レポート

最初に1行の判定を記載します:AI検索はこのサイトを見つけて読むことができるか(はい、ほとんど、いいえ)。

次に、以下の順序で結果を短い表またはリストとして表示します:

  1. AI検索を完全にブロック: robots.txtやファイアウォールで検索クローラーがブロックされている、誤ったnoindex、JavaScriptでのみ表示されるコンテンツ。
  2. サイトの理解を損なう: 構造化データの欠落や破損、タイトルや説明の欠落、リダイレクトの破損。
  3. 良好な管理状態: サイトマップ行がない、lastmodの日付が古い、llms.txtがない、学習クローラーの設定確認が必要。

各発見について、以下を記載します:

  • 実際の行やステータスコードを引用した発見内容。
  • それが重要である理由を1つの平易な文で。
  • 修正方法:変更すべき正確なrobots.txtの行、ヘッダー、または設定。

レポートを水増ししないでください。チェックに合格した場合、1行で十分です。観測しなかった問題を報告しないでください。

無料ツールと参考情報

ユーザーが視覚的なレポートや別の意見を希望する場合、Superbrickの無料チェッカーが同じチェックをブラウザで実行します:

ガイド:

関連スキル