Next.js・ReactのGEO:JavaScriptフレームワークをAIクローラーに見せる

React・Next.js などのフレームワークは優秀です——でも、人には完璧に見えてAIクローラーには真っ白、というページを作ってしまうことがあります。違いは結局どこで本文を描画するかです。本ガイドは、それを決めるたったひとつの問いと、正しい側に着地する方法を説明します。

すべてを決めるたったひとつの問い

AIクローラー(GPTBot・ClaudeBot・PerplexityBot・Google-Extended)がページを取得するとき、読むのはサーバーが返すHTMLです。ブラウザのようにJavaScriptを実行することは通常ありません。だから重要な問いはこれだけです:

あなたの本文は、サーバーが送るHTMLに既に入っているか——それとも、ブラウザでJavaScriptが動いた後にしか現れないか?

本文がブラウザ側で組み立てられているなら、クローラーにはほぼ空の殻しか見えません。→ JavaScriptとAIクローラー

Next.js:サーバー側で描画させればたいてい大丈夫

Next.js はサーバー側で描画するように作られているので、とてもAIフレンドリーになり得ます:

罠は、ブラウザ側だけで取得するデータ——たとえば useEffect の中や、クライアント側のデータ取得ライブラリで、ページが空のまま届き、読み込み後に埋まるもの——です。"use client" コンポーネントは対話性のためなら問題ありませんが、肝心の言葉がブラウザでの取得後にしか来ないなら、それはクローラーが読むHTMLには入っていません。本文はサーバー経路に載せましょう。

素のReact SPA:難しいケース

クライアント専用のReactアプリ(Create React App や、サーバー描画なしのVite)は、通常 空の <div id="root"></div> を送り、すべてをブラウザ側で描きます。人にはフルのページ、AIクローラーには真っ白です。選択肢:

メタデータと構造化データも忘れずに

本文をサーバー側で描画できれば大半は片付きますが、仕上げも:

正直なところ

Reactを捨てる必要はありません。ハイドレーションや豊かな対話性はまったく問題ありません——AIが読むのは最初のHTMLで、その上でアプリは好きなだけ動的にできます。直し方は「JavaScriptを減らす」ではなく「最初のHTML応答に最初から言葉を含める」です。サーバー描画・静的生成・React Server Components はどれもそれを実現します。

確かめ方

「ソースを表示」(インスペクタではない——あれはJS実行後のライブDOMを見せます)を開くか、curl https://あなたのサイト.com を実行し、実際の段落本文を探します。見出しと本文が見えれば、クローラーにも見えます。空の <div id="root"> とスクリプトタグの山しか見えなければ、本文はブラウザ専用です。あるいは、無料のAI可視性チェックにURLを通せば一目で確認できます。

まとめ

ReactやNext.jsは敵ではありません——ブラウザ専用の描画が敵です。本文をサーバー側に保ち(SSR・SSG・Server Components)、メタデータと構造化データをサーバーHTMLに入れ、「ソースを表示」で検証しましょう。まずGEOの全体像JavaScriptとAIクローラーから。それでもAIが引用しないならAIに自分のサイトが出ない理由を参照してください。

← ガイド一覧へ