ChatGPT や Claude は、JavaScript で作られた私のサイトを読めますか?
読めるのは、サーバーが送る HTML にすでに含まれているテキストだけです。Vercel のネットワークを対象にした2024年12月の調査では、OpenAI、Anthropic、Perplexity のクローラーは JavaScript ファイルをダウンロードしますが、実行はしないことがわかりました。多くの React サイトや AI で作られたサイトのように、ページがブラウザで組み立てられている場合、これらのクローラーにはほぼ空のページに見えます。
ファクト
- Vercel は2024年12月17日、GPTBot、OAI-SearchBot、ChatGPT-User、ClaudeBot、PerplexityBot を含む主要な AI クローラーのいずれも JavaScript を描画しないと報告しました。 (Vercel: AI クローラーの台頭(2024年12月))
- 同じ調査では、Googlebot のインフラを使う Gemini と、AppleBot は JavaScript を描画することがわかりました。 (Vercel: AI クローラーの台頭(2024年12月))
- Vercel のネットワークでの1か月間で、ChatGPT のクローラーはリクエストの 11.50% で JavaScript ファイルを取得し、Claude のクローラーは 23.84% で取得しましたが、いずれも実行はしませんでした。 (Vercel: AI クローラーの台頭(2024年12月))
- OpenAI は、OAI-SearchBot を拒否しているサイトは ChatGPT の検索回答に表示されないと説明しています。つまり、そのクローラーが読むページが、ChatGPT が引用できるページです。 (OpenAI: Overview of OpenAI crawlers)
- Next.js の App Router では、レイアウトとページはデフォルトで Server Components となり、サーバー上で HTML にプリレンダリングされます。 (Next.js ドキュメント: Server Components と Client Components)
AI クローラーがサイトを読めるかどうかは、どう確かめますか?
ブラウザを使わずに、クローラーと同じ方法でページを取得し、その結果に主要なテキストがあるかを探します。価格、見出し、回答が見つからなければ、AI クローラーもそれを見ていません。
# AI クローラーが受け取るもの: 生の HTML、JavaScript は実行しない curl -s -A "GPTBot" https://www.example.com/pricing | grep -i "your price or headline" # 見つからない? テキストは JavaScript の実行後にしか存在しない。
どのような種類のサイトがこの問題を抱えていますか?
ページが読み込まれた後にブラウザで JavaScript によってコンテンツが作られるサイトです:
- サーバー描画なしで、React、Vue、Angular と Vite で作られたシングルページアプリ
- クライアント側で描画されるアプリを出荷する、AI アプリビルダーで生成されたサイト
- 最初の描画の後に API からテキストを読み込むページ
- 実際の <a href> リンクではなく、クリックハンドラーで作られたメニューやリンク
構成ごとの直し方は何ですか?
完成したテキストを、最初の HTML の応答で送ることが直し方です。
| 構成 | コーディングエージェントに頼む内容 |
|---|---|
| Next.js App Router | ページは Server Components のままにし、対話が必要な部分だけ "use client" で示す |
| Vite を使う React や Vue | 公開ページをビルド時に静的な HTML へプリレンダリングするか、サーバー描画のあるフレームワークに移す |
| API から読み込むコンテンツ | useEffect の中ではなく、サーバーかビルド時に取得する |
| どのフレームワークでも | 実際の <a href> リンク、sitemap.xml、クリックせずに見えるテキスト |
Google も同じ問題を抱えていますか?
それほどではありません。Google のクローラーは JavaScript を実行するため、Google 検索と Gemini は、クライアントで描画されたテキストも、通常の HTML より遅れてですが見ることができます。ChatGPT、Claude、Perplexity は、生の HTML だけを読むものです。
easyIndex はこれをどう確認しますか?
easyIndex は、公開された各ページを、AI クローラーと同じように、JavaScript を実行せずに自ら読みます。コーディングエージェントが作ったページは、監査されたテキストが公開中のサイトの生の HTML にある場合にだけ、完了とみなされます。
ステップごとの手順
- 主要なページを確認する. ホーム、料金、主なサービスのページで curl のテストを実行し、主要なテキストを探します。
- テキストがどこで組み立てられているかを見つける. どのページがブラウザでコンテンツを描画しているか、またその理由を、コーディングエージェントに尋ねます。
- テキストをサーバーに移す. エージェントにそれらのページをサーバー描画または静的プリレンダリングに切り替えてもらい、対話機能は必要な場所だけに残します。
- リンクとサイトマップを直す. 内部リンクはすべて実際の <a href> にし、公開ページはすべて sitemap.xml に載せます。
- 公開中のサイトで再テストする. デプロイ後に curl のテストを繰り返します。テキストが生の HTML に現れている必要があります。
よくある間違い
- JavaScript を実行するブラウザでページを確認し、クローラーも同じものを見ていると思い込むこと。
- ホームはサーバーで描画しているのに、料金ページやサービスのページはブラウザで描画したままにすること。
- 描画を直している間に、robots.txt や CDN で AI クローラーを誤ってブロックすること。
- フレームワークがすでにサーバーで描画している場合に、プリレンダリングの層に費用を払うこと。
easyIndex での解決方法
コーディングエージェントが、MCP で案内されながら、リポジトリ内の描画を直します。easyIndex は、AI クローラーと同じく JavaScript を実行せずに各ページを公開中のサイトで読み、その後、AI クローラーが実際に読んだページを記録します。料金は1サイトあたり月額 US$30 で、7日間の無料トライアルがあります。
よくある質問
Next.js のサイトは初期設定で安全ですか?
ほとんどの場合は安全です。App Router のページはデフォルトでサーバー描画されます。ただし、読み込み後に Client Component の中で取得されたテキストは、今も AI クローラーには見えません。
llms.txt ファイルは JavaScript の問題を解決しますか?
いいえ。短いテキストファイルにすぎません。クローラーがページを読んで引用するには、ページ自体のテキストが HTML に含まれている必要があります。
AI クローラーは今後 JavaScript を実行するようになりますか?
誰にもわかりません。2024年12月の調査の時点では実行していませんでした。安全なのは、テキストを HTML で送ることです。
これは ChatGPT から来た訪問者に影響しますか?
いいえ。人は JavaScript を実行する通常のブラウザでサイトを開きます。問題になるのは、引用の前にクローラーが読む内容だけです。
続きを読む
- easyIndex はどのように機能しますか。何が必要で、結果が出るまでどのくらいですか?
- easyIndex の料金はいくらですか?
- AI クローラーにはどんな種類があり、robots.txt でどう許可しますか?
- llms.txt は効果がありますか?
- Claude Code や Codex で GEO を行うには、どうすればよいですか?
- Cloudflare は、ChatGPT など AI クローラーを自社サイトからブロックしていますか?
最終確認日 .