ReactのサイトがAIから見えない問題 — 実際に直した記録

これは他人事の解説ではなく、当サイト自身の失敗と修正の記録です。技術SEO診断ツールのサイトでありながら、生HTMLの本文はわずか8文字で、AIクローラーからはほぼ白紙に見えていました。どう発見し、どう直したかをそのまま公開します。

公開日: 2026年8月16日 / 最終更新日: 2026年9月6日

何が起きていたか

当サイトのフロントエンドはReact(Vite)のシングルページアプリケーションです。ブラウザで開けば数千字のコンテンツが表示されますが、それはJavaScriptが実行された後の姿です。

サーバーが最初に返すHTMLを確認したところ、タグを除いた本文はわずか8文字でした。GoogleはJavaScriptを実行するため検索では致命傷になっていませんでしたが、GPTBotやClaudeBotなどのAIクローラーはJavaScriptを実行しません。AI検索の視点では、本文のないサイトだったということです。

AI検索対応を診断する製品のサイトがAIから見えない。笑えない状態でした。同じ構造のサイトは世の中に大量にあります。

自分のサイトで確認する方法

ブラウザの表示ではなく、サーバーが返す生のHTMLを見ます。次のコマンドで、タグを除いた本文の文字数を数えられます。

生HTMLの本文量を確認する

curl -s https://example.com/ | sed 's/<[^>]*>//g' | tr -d ' \n\t' | wc -c

この数字が数十文字しかなければ、あなたのサイトも同じ状態です。React・Vue・Angularでクライアントサイドレンダリングのみのサイトは、ほぼ確実に該当します。

解決の選択肢と、当サイトの選択

教科書的な解決はNext.js等へのフレームワーク移行(サーバーサイドレンダリング)ですが、動いているアプリの全面書き換えは大工事です。当サイトは別の道を選びました。

「公開ページだけ、ビルド時に静的HTMLを生成する」方式です。アプリ本体(ログイン後の診断画面)はSPAのまま、検索とAIに見せたい公開ページ(トップ・料金・記事)だけ、ビルド工程でページ別の完全なHTMLを書き出します。

結果、トップページの生HTML本文は8文字から3,865字になりました。フレームワーク移行なし、アプリ本体は無変更です。

最重要の注意点: クローキングにしない

この方式には1つだけ絶対条件があります。静的に生成する内容を、実際にブラウザで表示される内容と一致させることです。

クローラーにだけ別の内容を見せる行為はクローキングと呼ばれ、Googleのスパムポリシー違反です。静的HTMLはあくまで「JSが実行される前の下書き」であり、Reactがマウントした後の画面と同じ情報でなければなりません。当サイトの実装でも、生成内容は表示内容の要約・同一情報に限定しています。

同じ問題を抱えているかの診断

Smash SEOの診断は、初期HTMLとJavaScript描画後のHTMLを両方取得し、その差分を表示します。「Googleには見えているがAIには見えていない」コンテンツがどれだけあるかを、ページ単位で確認できます。React/Vue製のサイトを運用しているなら、一度確認する価値があります。

よくある質問

Next.jsに移行すべきですか?

新規開発ならSSR/SSG対応のフレームワークを推奨します。既存SPAの場合、移行コストと得られる効果を比べてください。公開ページが少ないなら、当サイトのようなビルド時生成のほうが現実的なことが多いです。

プリレンダリングサービス(prerender等)はどうですか?

クローラー判定でレンダリング済みHTMLを返す方式は機能しますが、外部サービス依存とクローキング境界の管理が必要です。自前のビルド時生成のほうが挙動を完全に制御できます。

GoogleがJSを実行するなら、検索だけ考えれば放置でよいのでは?

Googleのレンダリングも即時ではなく、遅延や失敗はあり得ます。そしてAI検索の比重が増すほど「JSなしで読めない」ことの機会損失は拡大します。直せるなら直すべき、というのが当サイト自身の結論です。

関連記事

AI検索への対応度を無料で診断するAI検索対策の一覧技術SEOルール解説