Discussion Technical SEO AI Crawlers

AIクローラーはインフィニットスクロールをどう処理する?当社のコンテンツがインデックスされない問題

FR
FrontendDev_Marcus · フロントエンド開発者
· · 78 upvotes · 10 comments
FM
FrontendDev_Marcus
フロントエンド開発者 · 2025年12月19日

私たちはブログ用にインフィニットスクロールを採用した最新のReactサイトを構築しました。ユーザー体験は素晴らしいのですが、AIの回答にはまったくコンテンツが出てきません。

Googleには(SSRの調整後)インデックスされています。でもAIプラットフォームはほとんどのコンテンツを見逃しているようです。

当社の構成:

  • React SPA+インフィニットスクロール
  • 初回ロード時はSSR
  • 追加コンテンツはスクロール時にJavaScriptでロード
  • ブログ記事500本超、AIがアクセスできているのは約50本程度

質問:

  • AIクローラーはJavaScriptを実行しますか?
  • インフィニットスクロールはAI可視性と根本的に相容れない?
  • AIクローラーへのアクセシビリティに最適な技術手法は?
  • ページネーションを全面的に再構築すべき?

同じような経験のあるフロントエンド開発者の方、いませんか?

10 comments

10件のコメント

CE
CrawlerTech_Expert Expert テクニカルSEOコンサルタント · 2025年12月19日

AIクローラーがJavaScriptをどう処理するか分解します:

AIクローラーのJavaScript対応状況:

クローラーJSレンダリングスクロールシミュレーション待機時間
GPTBot制限あり/なしなし最小限
Google-Extended優秀(Googlebot同等)なし標準
ClaudeBot制限ありなし最小限
PerplexityBot状況によるなし制限あり
Common Crawlなしなしなし

根本的な問題:

インフィニットスクロールには、

  1. JavaScriptの実行
  2. スクロールイベントのトリガー
  3. 追加HTTPリクエスト
  4. 新規コンテンツのレンダリング が必要です。

ほとんどのAIクローラーは1か2で失敗します。

SSRだけでは不十分な理由:

SSRは初回ページしか返しません。インフィニットスクロールのコンテンツは「初期」ではなく、操作時にロードされます。SSRだけでは操作依存を解消できません。

根本的な課題:

インフィニットスクロールは現状のAIクローラーの能力とは根本的に相容れません。別のアプローチが必要です。

FM
FrontendDev_Marcus OP · 2025年12月19日
Replying to CrawlerTech_Expert
つまり、基本的には作り直しが必要ということですか?推奨されるアプローチは何でしょうか?
CE
CrawlerTech_Expert Expert · 2025年12月19日
Replying to FrontendDev_Marcus

推奨されるアプローチ(AIフレンドリー順):

オプション1: 従来型ページネーション(最もAIフレンドリー)

/blog/page/1
/blog/page/2
/blog/page/3
  • 各ページに固有のURL
  • コンテンツは初期HTMLに含まれる
  • サイトマップに全ページ記載
  • AIクローラーがすべてアクセス可能

オプション2: ハイブリッド方式

  • ユーザー向けにはインフィニットスクロール
  • ただしページネーションURLも用意
  • サイトマップはページネーション版を指す
  • canonicalで重複回避
<!-- インフィニットスクロールページ -->
<link rel="canonical" href="/blog/page/1" />

<!-- ページネーション常設 -->
<nav>
  <a href="/blog/page/1">1</a>
  <a href="/blog/page/2">2</a>
</nav>

オプション3: AIクローラー向けプリレンダー

  • AIユーザーエージェント検出
  • プリレンダーしたHTMLを返す
  • 初回レスポンスに全コンテンツを含める

どの選択肢にもトレードオフがありますが、オプション1が最もシンプルで確実です。オプション2ならUXを保ちつつAIアクセシビリティも両立できます。

RS
ReactDev_Sarah React開発者 · 2025年12月19日

まったく同じ課題に直面しました。私たちの解決策はこれです:

ハイブリッド方式の実装例:

// URL構造
/blog              // インフィニットスクロールユーザー向けデフォルト
/blog/archive/1    // ページ分割(クローラー用アクセス可能)
/blog/archive/2

実装のポイント:

  1. サイトマップにはページネーションURLのみ記載

    • AIクローラーは /blog/archive/* ページを発見
    • これらはサーバーサイドで全コンテンツをレンダリング
  2. インフィニットスクロールページも同じAPIでデータ取得

    • 裏側はページネーションAPI
    • 人間にとってUXが向上
  3. 内部リンクは各記事個別URLに誘導

    • インフィニットスクロールの位置ではなく
    • 各記事に固有URL
  4. robots.txtの指示例:

# クローラーには個別記事を優先して発見させる
# インフィニットスクロールのコンテナページは対象外
Sitemap: /sitemap.xml

結果:

  • ヒューマン向けUXはそのまま(インフィニットスクロール)
  • AIクローラーはアーカイブページ経由ですべてのコンテンツにアクセス
  • 記事単体も全てインデックス
  • 実装後、引用率は4倍に向上
NK
NextJSDev_Kevin · 2025年12月18日

Next.jsでのアプローチ:

getStaticPaths + getStaticPropsを使用:

// pages/blog/page/[page].js
export async function getStaticPaths() {
  const totalPages = await getTotalPages();
  const paths = Array.from({ length: totalPages }, (_, i) => ({
    params: { page: String(i + 1) }
  }));
  return { paths, fallback: false };
}

export async function getStaticProps({ params }) {
  const posts = await getPostsForPage(params.page);
  return { props: { posts, page: params.page } };
}

利点:

  • ページごとに静的ページ生成
  • HTMLに全コンテンツがビルド時点で含まれる
  • AIクローラーにも完全な内容を提供
  • 高速(静的)

インフィニットスクロールは強化として追加:

  • クライアント側は同じAPIで無限スクロール
  • プログレッシブエンハンスメント
  • JSなしでも動作

これで両立可能です。

PS
Prerender_Specialist Expert · 2025年12月18日

プリレンダー方式も一つです:

AIクローラー向けプリレンダーサービス:

AIクローラーのユーザーエージェント検出→プリレンダー版コンテンツの配信が可能です。

// ミドルウェア例
if (isAICrawler(req.headers['user-agent'])) {
  return servePrerenderedVersion(req.url);
}

AIクローラー検出例:

const aiCrawlers = [
  'GPTBot',
  'ChatGPT-User',
  'Google-Extended',
  'ClaudeBot',
  'PerplexityBot',
  'anthropic-ai'
];

function isAICrawler(userAgent) {
  return aiCrawlers.some(crawler =>
    userAgent.includes(crawler)
  );
}

プリレンダーの選択肢:

  • Prerender.io
  • Rendertron
  • Puppeteerベースのカスタム
  • ビルド時プリレンダー

注意:

全てのAIクローラーが明確なユーザーエージェントを名乗るとは限りません。一部は見逃されるので、補助策として考え、本命は正規のページネーションです。

SL
SEODevOps_Lisa · 2025年12月18日

AIクローラーアクセシビリティのテスト手法:

手動テスト:

  1. JavaScript無効テスト:

    • ブラウザでブログを開く
    • JavaScriptを無効化
    • どこまで表示されるか確認
    • JS非対応クローラーの見え方に近い
  2. ソース表示テスト:

    • ページのソース(要素の検証ではなく)を確認
    • HTML内にコンテンツは含まれているか?
    • それともJSのプレースホルダーだけか?
  3. curlテスト:

    curl -A "GPTBot/1.0" https://yoursite.com/blog/
    
    • 実際のコンテンツがレスポンスに含まれるか?

自動テスト:

  1. Google Search Console:

    • URL検査ツール
    • 「レンダリングされたページ」を確認
    • (AIクローラーではないが、JSレンダリング挙動は近い)
  2. Lighthouse監査:

    • 「SEO」カテゴリをチェック
    • クロール可能性の問題を検出

理想の状態:

  • 初回HTMLレスポンスにコンテンツが含まれる
  • すべてのページへのリンクが発見できる
  • コンテンツの可視化にJS不要
E
EcommerceDevSEO · 2025年12月17日

ECサイトの観点:

当社は1万点以上の商品で「もっと見る」機能を使っています。以下が私たちの解決事例です:

カテゴリーページ構成:

/category/shoes                    # 最初の24商品+もっと見る
/category/shoes?page=2            # 25-48商品
/category/shoes?page=3            # 49-72商品

実装のポイント:

  1. 初回ページにも必ずページネーションリンク

    • インフィニットスクロール使用時でも
    • フッターに1,2,3…のリンク
  2. ?page=パラメータはcanonical

    • 各ページは固有のコンテンツ
    • メインページの重複ではない
  3. サイトマップに全ページネーションURLを記載

    • インフィニットスクロールのベースURLだけでなく
  4. 商品は個別URL

    • カテゴリページは発見用
    • 商品ページが本来のコンテンツ

結果:

AIプラットフォームはページネーション構造経由で個別商品ページを発見・引用しています。

FM
FrontendDev_Marcus OP フロントエンド開発者 · 2025年12月17日

非常に参考になりました。私の実装計画は以下です:

ハイブリッドページネーション方式

フェーズ1: ページネーションルート追加(1~2週目)

  • /blog/archive/[page]ルート作成
  • SSRでHTMLに全コンテンツ含む
  • ページネーションナビゲーション追加
  • サイトマップも対応

フェーズ2: 既存インフィニットスクロール更新(3週目)

  • /blogはインフィニットスクロール維持
  • アーカイブページをデータソース化
  • /blogから/blog/archive/1へcanonical

フェーズ3: テストと検証(4週目)

  • JS無効でテスト
  • AIユーザーエージェントでcurlテスト
  • AIへの引用率を監視

技術的構成:

/blog                 → インフィニットスクロール(人間用、canonicalはarchive/1)
/blog/archive/1       → ページ分割(クローラー用、canonicalはself)
/blog/archive/2       → ページ分割(クローラー用)
/blog/[slug]          → 各記事(本来のコンテンツ)

重要な原則:

  • JSなしでコンテンツにアクセスできること
  • すべてのコンテンツが固有URLを持つこと
  • サイトマップに全ページを記載
  • インフィニットスクロールはあくまでエンハンスメント

皆さま、詳細な技術アドバイスをありがとうございました。

Have a Question About This Topic?

Get personalized help from our team. We'll respond within 24 hours.

Frequently Asked Questions

AIクローラーはインフィニットスクロールのコンテンツを処理できますか?
ほとんどのAIクローラーはJavaScriptのレンダリング機能が限定的です。ユーザー操作(スクロール)が必要なコンテンツは、多くの場合AIシステムには見えません。サーバーサイドレンダリングやハイブリッドな手法が推奨されます。
AIクローラー向けで最適なページネーションの方法は?
各ページごとに異なるURLを持つ従来型のページネーションが最もAIフレンドリーです。全てのページが直接URLでアクセス可能であり、サイトマップにも含まれ、JavaScript不要でコンテンツが表示できる必要があります。
AIクローラーはJavaScriptをレンダリングしますか?
AIクローラーのJavaScriptレンダリング能力は大きく異なります。GPTBotはJS対応が限定的です。一部のクローラーは初期HTMLしか見ません。AIへの可視性のためには、重要なコンテンツは初期のサーバーレスポンス内に置き、JavaScriptでのみ読み込まれないようにしましょう。
AIクローラーが自分のコンテンツにアクセスできるかどうかをテストするには?
JavaScriptを無効化してページを表示—これが多くのAIクローラーが見るものに近いです。またrobots.txtでAIクローラーがブロックされていないか確認し、コンテンツが初期HTMLソースに表示されているか確かめてください。

あなたのコンテンツがAIにどれだけ見られているかを監視

どのページがAIプラットフォームに発見・引用されているかを追跡しましょう。クロールに関する問題点を特定し、可視性向上に役立てます。

詳細はこちら

JavaScriptはAIの可視性を損ねているのか?AIクローラーは動的コンテンツを見逃しているようです

JavaScriptはAIの可視性を損ねているのか?AIクローラーは動的コンテンツを見逃しているようです

JavaScriptがAIクローリングに与える影響についてのコミュニティディスカッション。ChatGPTやPerplexityでの可視性に関する開発者やSEO専門家の実体験を紹介します。...

2 分で読める
Discussion Technical SEO +1
AIクローラーはJavaScriptをレンダリングしますか?当サイトはReact製で心配です

AIクローラーはJavaScriptをレンダリングしますか?当サイトはReact製で心配です

AIクローラーによるJavaScriptレンダリングに関するコミュニティディスカッション。開発者がReact、Next.js、その他JSフレームワークでのAI可視性について経験を共有しています。...

3 分で読める
Discussion Technical SEO +2
AI検索にプリレンダリングは必要?ReactサイトがAIに全く認識されない理由

AI検索にプリレンダリングは必要?ReactサイトがAIに全く認識されない理由

AI検索の可視性向上のためのプリレンダリングについてのコミュニティディスカッション。開発者たちがJavaScriptフレームワークやAIクローラーによるアクセス経験を共有します。...

3 分で読める
Discussion Pre-rendering +2