ここ最近の gadenin.com の HTML には、1日に7,000〜16,000件のリクエストが来ている。 Google Analytics(GA4) が数える訪問者は1日100人前後で、実際のアクセスログとのギャップのほとんどは bot だった。
アクセスログの数字を取れるようにしたのは今日だ。Cloudflare の API に読み取り専用のトークンを1つ作る必要があったが、割とすぐできた。
読み取り専用のトークンを1つ作った
GA4 はブラウザ上で JavaScript が動いた人しか計測することができない。もちろん一部の bot はブラウザ相当の実行エンジンを持つものも存在しており、実際にJavascriptを実行する bot も存在する。ただほとんどの bot は JS が実行できないため、リアルなアクセス数を GA4 で知ることはできない。当然、 Search Console は Google の検索結果の話しかしない。
「Google Bot がどれだけクロールしに来ているか」は、どちらにも出ない。で、サーバーの手前にいる Cloudflare で見る以外に方法はない。
そこで、Cloudflare の API トークンを使ってアクセスログを取得する仕組みを整備する。
Cloudflare のAPIトークン取得の流れ
- まずトークン名を取得する
- 権限はゾーンに切り替えるところがポイント
- ゾーンのリソースは「特定のゾーン」とし、対象のサイトを指定する
- 「概要に進む」を押すと実質これが生成指示となり、その画面でトークンをコピーして終了
迷ったのは2か所目だけだ。権限の左のプルダウンは最初「アカウント」になっている。ここを「ゾーン」に変えないと Analytics が選べない。
トークンは Read Only。APIトークンによってサイトの設定は変えられないので、漏れても被害はアクセス数を見られることだけだから安心して利用できる。
最初の集計では、「その他」が61%
中身を見たら Gadenin/62 CFNetwork/3860.700.2 だった。iPhone のアプリが API を叩いている通信。これはWEBプロダクトの方に混ざってしまうと大半がノイズになってしまうので除外しなければならない。
Cloudflare のゾーンには gadenin.com と サブドメインの api.gadenin.com の両方が入っている。ゾーン全体で数えたので、アプリの通信を Web のアクセスとして数えていた。
WEB だけのアクセスに絞りたい場合はやることは単純で、ホスト名を gadenin.comとし、中身を HTML に絞れば解決する。
結果、アクセスの9割近くが bot だった
User-Agent で分けると、こうなった。
| 日付 | 合計 | 「人」(ブラウザの UA) | その他の bot | AI クローラー | Bing | |
|---|---|---|---|---|---|---|
| 9/30 | 16,310 | 1,234 | 13,173 | 1,051 | 535 | 230 |
| 10/1 | 7,327 | 1,986 | 4,473 | 211 | 414 | 153 |
| 10/2 | 12,814 | 7,044 | 4,762 | 390 | 298 | 63 |
| 10/3 | 13,501 | 7,851 | 4,680 | 354 | 349 | 83 |
| 10/4 | 8,966 | 4,500 | 3,208 | 195 | 298 | 639 |
「人」の列は、User-Agent がブラウザの形をしているものだ。10月3日は7,851件ある。 GA4 の同じ日の訪問者は100人前後。1人が78ページ読んだことになる。そんなわけがない。
ブラウザのふりをしたスクレイパーが、この列にも混ざっている。だから Cloudflare の数字は訪問者数としては使わない。訪問者を正しく計測したければ GA4 でみるしかない。
9月30日の「その他の bot」13,173件も、ここで説明がついた。 同じ日にアフィリエイト枠の表示回数が640回に跳ねていた。人気が出たのではない。
Googlebot が少ない
一番見たかったのは右端の列だ。 Googlebot は1日63〜230回。Bing の298〜535回より少なく、AI クローラーの195〜1,051回より少ない日もある。
gadenin.com のサイトマップには13,409件の URL がある。1日83回のペースだと、全部を1回なめるのに約160日かかる。 インデックス登録が5,922件にとどまっているのは、ここが詰まっているからだ。
と書きたいところだが、まだ言い切れない。 登録済みのページは、毎日見直す必要がない。Search Console 側の数字とも、まだ突き合わせていない。この表だけでは、少ないのが原因なのか結果なのかが分からない。
10月4日にだけ639回来た
前の日の83回から、7.7倍になった。 思い当たることは3つ。
10月3日に、検索で1ページ目の下のほうに出ているページを10本書き直した。見出しを検索語に寄せ、FAQ を足し、品種ページに比較表を付けた。更新したページはサイトマップの lastmod が新しくなる。それを見て Google が来た、という筋がひとつ。
同じ日に /llms.txt を置いた。ただ、これは AI 向けの案内で、Googlebot が読むものではない。たぶん関係ない。
Cloudflare の Crawler Hints も有効にした。最初はこれが効いたと思った。 有効にしたのは10月5日だった。10月4日の数字を動かせるわけがない。そもそも Crawler Hints が通知するのは Bing などで、Google ではない。
残る筋は、Google 側の都合だ。平均掲載順位は1か月で40位から9位まで上がった。評価が上がってクロールの枠が増え、それがたまたま10月4日だった、という見方もできる。
1日だけの跳ねは、ただの揺れのことも多い。
今後の方針
Search Console には「クロールの統計情報」という画面がある。Google が自分で数えたクロール数。これと Cloudflare の数字を並べて、ずれ方を見る。
見る数字は3つに絞った。
- Googlebot の1日あたりのクロール数
- インデックス登録数 (いまは5,922件)
- 10月3日に書き直した10本の順位
毎週月曜にこの3つを記録する。639回が続くのか、83回に戻るのかは、来週の月曜に分かる。またブログにポストしようと思う。