インディーハッカー道
ChatGPTからのアクセスが急増!理由はクローラーがJavaScriptを実行するようになったから?
海外AI動向

ChatGPTからのアクセスが急増!理由はクローラーがJavaScriptを実行するようになったから?

·9分で読める
平城寿
平城 寿(ひらじょう ひさし)
@SOHO創業者 / インディーハッカー

この記事のポイント

  • ✓2026年9月25日から
  • ✓OpenAI の OAI-SearchBot と GPTBot が JavaScript を実行してページを描画し始めました
  • ✓サーバーログの実測で何が起きたかを示し

2026年9月25日の明け方、私たちが運営するサイトのサーバーログで、OpenAI のクローラーの読み方がはっきり変わりました。 検索用の OAI-SearchBot と学習用の GPTBot が、HTML を取るだけでなく、JavaScript を実行してページを描画するようになったのです。

「AI のクローラーは JavaScript を実行しない」というのが、これまでの定説でした。 2024年12月に Vercel と MERJ が公開した調査でも、OpenAI の3種のボットはいずれも JavaScript を実行しないと報告されています。 今回の観測は、そこからの変化にあたります。

この記事では、実際のログで何が起きたかを示したうえで、今わかっている範囲で「ChatGPT に紹介されるために何をしておけばよいか」を分けて書きます。 OpenAI からの公式な発表は見つかっていないので、推測が混ざる部分はそう書いています。

何が起きたか

対象は、フリーランス向けのマッチングサイト @SOHO(atsoho.com、Next.js の App Router)と、同じサーバーで動く製品サイトです。 ボットは UA の文字列だけでなく、OpenAI が公開している IP の範囲(gptbot.json、searchbot.json、chatgpt-user.json)と照合し、名前を偽ったものを除いています。

通信の回数(atsoho.com、1日あたり)

日付OAI-SearchBotGPTBotChatGPT-User
9月10日1,1083413,538
9月22日1,25383657
9月24日7,0825911
9月25日41,44428,4841,645
9月28日14,339152,0091,071

OAI-SearchBot は9月25日の4時(日本時間)に段差がつき、GPTBot は同じ日の12時から急増しました。 GPTBot の送り元の IP は、9月24日まで1日1つだったのが、9月25日から1日36〜131に分かれています。

増えたのは「先読み」の通信だった

中身を見ると、増えた通信のほとんどは Next.js がブラウザの中で出すリンクの先読みでした。 URL の末尾に ?_rsc=ランダム5文字 が付くもので、HTML の中には書かれていません。 ページを描画して JavaScript が動いたときにだけ出てくる通信です。

  • 9月22日:OAI-SearchBot の通信の80%はふつうの HTML の取得で、先読みは2%
  • 9月28日:OAI-SearchBot の84%、GPTBot の97%が先読み

1日15万回という数字の大半は、描画されたページの中で自動的に出る先読みです。 読まれたページの数そのものではありません。

実際に描画されたページの数

先読みの通信には、それを出したページが Referer として残ります。 Referer の種類を数えると、ボットが描画したページの数が分かります。

日付OAI-SearchBot が描画うち求人ページGPTBot が描画
9月18日56217
9月25日8611081,994
9月28日539364,395

検索用で約10倍、学習用では100倍を超えて増えています。

描画しているのは、保存済みの HTML

9月28日に GPTBot が描画した4,309ページのうち、同じ日にこちらのサーバーから HTML を取った記録があるのは28%だけでした。 HTML はキャッシュしていない設定なので、CDN が代わりに返した可能性もありません。 OpenAI は、以前に取得して保存していた HTML を自分たちのヘッドレスブラウザで描画し直し、その瞬間に出る先読みだけがこちらに届いている、と見ています。

OpenAI の公式説明には「両方のボットを許可しているサイトでは、重複を避けるため、1回の取得結果を両方の用途に使うことがある」と書かれています。 検索用が取った HTML を学習用が描画している、という見方とも合います。

世の中全体の動きか

同じサーバーの記事のある Next.js サイト4つでは、どれも同じ9月24〜25日に OAI-SearchBot が5〜15倍に増えました。 4サイトは Next.js の版も配信の手順も別々で、この時期にこちら側で変えたものはありません。 変化は OpenAI 側から来ています。

一方で、Cloudflare Radar で見ると、AI ボット全体に占める OpenAI のボットの割合は9月を通して横ばいでした。 描画の対象は一部のサイトに絞られている、と見るのが自然です。

Next.js を使っていない静的なサイトでも、9月25日に OAI-SearchBot が画像や CSS まで読み込んだ跡がありました。 描画は静的なサイトにも来ています。 ただ、静的なページは描画しても先読みが出ないので、通信の回数にはほとんど表れません。 Next.js のサイトで回数が跳ね上がって見えたのは、先読みによる増幅が大きいためです。

同じ時期に起きたこと

同じ時期に、ChatGPT から @SOHO の求人ページへの流入が増え、会員登録が1日あたり約1.7倍になりました。 ChatGPT から来る人の数は増えておらず、変わったのは行き先です。 ブログ記事が中心だったのが、9月25日ごろから求人ページが中心になりました。 描画された求人ページが1日2ページから36〜108ページに増えたことと、時期が一致しています。 ただし、因果までは証明できていません。

ChatGPT に紹介されるためにやっておくこと

ここからは、今回の観測と OpenAI の公式説明から言えることを、やることごとに分けて書きます。

1. OAI-SearchBot を通す

OpenAI の公式説明には、OAI-SearchBot を拒否したサイトは ChatGPT の検索の回答に出なくなる(ナビゲーションのリンクとしては出ることがある)とあります。 そのうえで、robots.txt で OAI-SearchBot を許可し、公開している IP の範囲からの通信を通すよう勧めています。

確かめることは3つです。

  • robots.txt:OAI-SearchBot を Disallow していないか
  • WAF やボット対策:Cloudflare のボット対策や、自前のレート制限で OpenAI の IP を弾いていないか。私たちのサイトでも、9月22〜24日に一部の通信へ 403 を返していました
  • IP の照合:OpenAI の IP 一覧は更新されます(今回も gptbot.json が9月22日、chatgpt-user.json が9月25日に更新されていました)。許可リストを手で持っている場合は、一覧の URL から取り直す仕組みにしておく

学習に使われたくない場合は、GPTBot だけを拒否できます。 検索への露出を保ったまま学習を断る、という分け方ができます。

2. 本文を最初の HTML に入れておく

今回、OpenAI は描画を始めましたが、描画しているのは一部のサイトのようです。 描画されないサイトでは、これまでどおり最初の HTML しか読まれません。 また、描画されるサイトでも、描画の元になっているのは保存済みの HTML です。

本文、題、価格、日付のように紹介してほしい情報は、JavaScript を実行しなくても読める最初の HTML に入れておくのが確実です。 Next.js ならサーバー側で描画する形(SSR や静的生成)、それ以外のサイトでも、画面を開いたあとに API から読み込んで表示する作りは避けます。

3. 読ませたいページへ、サイトの中からリンクを張る

今回、OpenAI のボットは描画したページの中の先読みまで読んでいました。 リンクが多く集まるページほど、読まれる機会が増えます。

これは Google でも同じです。 私たちの別の製品サイトでは、記事が520本あるのに、Google に登録されていたのは2.5%でした。 原因は、記事一覧がページ送りで2ページ目以降が読まれず、紹介ページ632ページが互いに37本ずつリンクし合う一方で、記事へのリンクが0本だったことです。 Google の読む回数の9割が紹介ページに使われていました。

  • 記事一覧は、ページ送りの奥に記事を沈めない
  • 関係するページどうし(製品の紹介ページとその製品の記事など)をリンクでつなぐ
  • サイトマップに載せるだけで満足しない。サイトマップにしか載っていないページは後回しにされる

4. Next.js の先読みは塞がない

Next.js には、ボットだと分かったときに先読みを止める仕組みがあります。 ただ、その判定の一覧に入っているのは Google や Bing などで、OpenAI のボットは入っていません(Next.js 14.2 と 16 のソースで確認)。 そのため、OpenAI のボットが描画すると、先読みがそのまま大量に出ます。

ここで robots.txt で ?_rsc= を塞いだり、429 を返したりするのは勧めません。 先読みの応答には、リンク先のページの中身が入っています。 描画するクローラーにとっては、本文を読む経路の1つになっています。 書き方を誤ると、ページ本体まで塞ぐおそれもあります。

サーバーの負荷が問題になった場合は、全ページに出るナビのリンクだけ先読みを止める(prefetch={false})のが、本文と通常のリンクを残したまま通信を減らせる手です。 私たちのサイトでは、先読みの大半が全ページのナビにあるカテゴリ一覧のリンクから出ていました。

5. 情報の新しさを機械に伝える

@SOHO では、募集が終わった求人にも ChatGPT からの流入がありました。 ChatGPT がその情報をいつのものと受け取っているかは、外からは分かりません。 利用者を古い情報へ送らないためにも、公開日や更新日、受付中かどうかを、構造化データ(JSON-LD)とページの本文の両方で伝えておきます。 求人なら、受付中のものだけを JobPosting にし、終わったものには公開日(datePublished)を入れる、という分け方があります。

6. llms.txt は後回しでよい

@SOHO では9月20日に llms.txt を置きましたが、OpenAI のボットが読みに来たのは数日に1回でした。 いまのところ、ChatGPT に紹介されるかどうかを左右しているようには見えません。 置いて損はありませんが、上の1〜5より優先する理由はありません。

自分のサイトで確かめる方法

サーバーのログ(nginx など)があれば、次の手順で同じことを確かめられます。

  • ボットの見分け:UA の文字列(OAI-SearchBot、GPTBot、ChatGPT-User)で拾い、IP を openai.com の3つの一覧と照合する。一覧に無い IP は名前を偽ったもの
  • 描画されているか:URL に _rsc= が付いているか(Next.js の場合)。静的なサイトなら、ボットが画像や CSS まで取りに来ているか
  • 描画されたページの数:_rsc= 付きの通信の Referer を、重複なしで数える。通信の回数で判断しない
  • ChatGPT からの流入:ChatGPT はリンクに utm_source=chatgpt.com を付ける。Referer では取りこぼすので、リクエスト URL のほうで数える
  • 世の中全体との比較:Cloudflare Radar の API で、AI ボットごとの割合を日ごとに取る

Cloudflare だけで配信しているサイトは、サーバーのログがありません。 その場合は Cloudflare の GraphQL Analytics API(httpRequestsAdaptiveGroups を UA で絞る)で、無料プランでも日ごと・パスごとに数えられます。

まだ分かっていないこと

  • OpenAI が描画の対象をどう選んでいるか
  • 描画に使う HTML を、いつ、どの経路で取っているか
  • 描画が ChatGPT の回答での紹介のされやすさに、どれだけ効いているか

分かり次第、この記事に書き足します。

参考

  • OpenAI「Overview of OpenAI Crawlers」
https://developers.openai.com/api/docs/bots

  • Vercel「The rise of the AI crawler」(2024年12月)
https://vercel.com/blog/the-rise-of-the-ai-crawler

  • Next.js「Prefetching」
https://nextjs.org/docs/app/guides/prefetching

シェア
#ChatGPT#SEO#LLMO#Next.js#クローラー
平城寿
平城 寿(ひらじょう ひさし)
インディーハッカー。2004年に@SOHOを創業し、20年間1人で運営。
フォロー

関連記事