← すべてのガイド
JavaScript SEO: GoogleがJSレンダリングされたページを確実にインデックス登録できるようにする
GoogleはJavaScriptを実行できますが、レンダリングは遅延した2回目のパスで行われます — これがインデックス登録にとって何を意味するのか、そしてよくある失敗パターンを解説します。
インデックス登録は2つの波で行われる
Googlebotはまず生のHTMLを取得し、その初回レスポンスにすでに存在するコンテンツはほぼ即座にインデックス登録できます。JavaScriptが実行された後にしか現れないものは、レンダリングと呼ばれる2回目のパスにキューイングされます。これは別のリソースを使用し、クロール制約のあるサイトでは初回クロールから数秒から、場合によってはそれよりはるかに長く遅れることがあります。コンテンツや内部リンクがその2回目のパスの後にしか存在しない場合、そもそもインデックス登録される確率がより低く不確実な経路に頼っていることになります。
実際にインデックス登録を壊すもの
- 初期HTMLに何も有意義な内容がないまま、クライアント側のフェッチの後にしかレンダリングされないメインコンテンツや内部リンク。
- クリック、スクロール、ホバーといった、Googlebotが行う理由のないユーザー操作の後ろにゲートされたコンテンツ。
- ページが正しくレンダリングするために必要なJSやCSSファイルがrobots.txtでブロックされている — ブロックがどう裏目に出るかについてはrobots.txt vs noindexをご覧ください。
- 実際のHTTPステータスを一切変えないクライアントサイドルーティング — 壊れたルートは200を返し続けながら空白または「見つかりません」というメッセージを表示することがあり、これはソフト404として現れます。
- ヘッドレスブラウザ環境でのみ発生し、通常の手動テストでは気づかれずに見過ごされるハイドレーションやレンダリングのエラー。
Googleが実際に見ているものを確認する方法
Search ConsoleのURL検査ツールには、生のレスポンスだけでなく、Googleのレンダラーが実行した後のレンダリング済みHTMLとスクリーンショットを表示する「テスト済みページ」ビューがあります。それをソースHTMLと比較してみてください。重要なコンテンツやリンクが生のレスポンスにはなく、レンダリング後にのみ存在する場合、あなたは高速な初回クロールではなく、完全にレンダリングキューに依存していることになります。
実際に役立つこと
- SEOにとって重要なコンテンツとナビゲーションリンクは、読み込み後にクライアントサイドで取得するのではなく、サーバーサイドレンダリング(または静的生成)してください。
- 内部リンクには、非アンカー要素へのクリックハンドラーではなく、実際の
<a href>要素を使用してください — Googlebotは任意のJavaScriptイベントバインディングではなく、hrefをたどります。 - ページのレンダリングに依存しているJS/CSSバンドルをブロックしないでください — Googleがページを実際にレンダリングするには、それらを取得する必要があります。
- ページを修正したら、次のレンダリングパスをただ待つのではなく、直接再インデックスをリクエストするか、IndexNow経由でURLをプッシュして、レンダラーのキューではなくあなたのスケジュールで修正版が拾われるようにしてください。
オーガニッククロールを待つだけでなく、次のページをもっと早く見つけてもらいませんか?
IndexLaunchは、キューに登録した瞬間に、送信したすべてのURLをIndexNow経由でBing、Yandex、Seznam、Naverへ直接プッシュします。
料金を見る