ブログを公開したら、まず知りたくなるのが「今日は何人くらい見てくれたのか」だと思います。
私自身、アクセス解析のイロハが分かっていなかったため、調べて二つのアクセス解析を導入しました。
その二つは、Cloudflare PagesのWeb AnalyticsとGoogle Search Consoleです。
私自身、アクセス解析のイロハが分かっていませんでした。同じような初学者に向けて、今回調べて分かったことをお伝えできればと思います。
今回は、Astroと@astrojs/sitemap で作ったブログをCloudflare Pagesへ公開し、両方の計測を始めるまでと、最初に確認できた数字をまとめます。
CloudflareとSearch Consoleは何が違うのか
それぞれのツールは以下の役割を持っています。
| ツール | 主に分かること | 数えないもの |
|---|---|---|
| Cloudflare Web Analytics | サイトへのVisits、Pageviews、参照元、閲覧されたパス、国、ブラウザ、表示速度 | 広告ブロッカーなどで計測用ビーコンが止められた閲覧 |
| Google Search Console | Google検索での表示回数、クリック数、CTR、平均掲載順位、検索クエリ | URL直打ち、ブックマーク、Google以外の検索、サイト内だけの回遊 |
CloudflareのVisitは、Google検索や外部サイトのリンク、URLの直接入力など、サイト外から入ってきた最初のページ表示を起点に数えます。
たとえばGoogle検索から記事Aを開くと、Visitが1、Pageviewも1です。そのままサイト内のリンクから記事Bを開くと、Visitは増えず、Pageviewだけが2になります。
同じ人が後から再びURLを直接開けば、別のVisitとして数えられます。そのため、Visitを「重複のない人数」として読むことはできません。
Search Consoleの表示回数は、Googleの検索結果でサイトへのリンクが表示された回数です。クリックされず、サイトへ誰も来ていなくても表示回数だけ増えます。
つまり、Cloudflareは「サイトへの訪問」、Search Consoleは「Google検索上での露出」を主に数えています。両者の数字は直接比較できません。
今回の環境
- Astro 7.0.7
@astrojs/sitemap3.7.3- Cloudflare Pages
- 独自ドメイン
- Google Search Consoleのドメインプロパティ
Cloudflare Web AnalyticsはCloudflare Pages側で有効化し、Search ConsoleにはAstroが生成したサイトマップを登録しました。
もっと詳細に確認したい場合は、Google Analytics 4(GA4)の導入も検討すべきのようです。
GA4は、ページ閲覧だけでなく、クリックやフォーム送信などの行動を「イベント」として計測できるアクセス解析サービスです。
今回は「記事が見られたか」と「Google検索に出たか」を知るのが目的で、イベント計測まで増やさずに始めたかったため、GA4は導入しませんでした。
1. Astroでサイトマップを生成する
Search Consoleへ登録する前に、公開ページの一覧をGoogleへ伝えるサイトマップを用意します。
Astroでは公式の@astrojs/sitemapインテグレーションが使えます。
npx astro add sitemap
基本の設定は次の形です。
// astro.config.mjs
import { defineConfig } from "astro/config";
import sitemap from "@astrojs/sitemap";
export default defineConfig({
site: "https://example.com",
integrations: [sitemap()],
});
siteにはローカルURLではなく、実際に公開するサイトのURLが必要です。このブログでは環境変数PUBLIC_SITE_URLから値を読み、integrationsにsitemap()を追加しています。
ビルドすると、公開物に次の2ファイルが生成されます。
sitemap-index.xml
sitemap-0.xml
Search Consoleへ送るのは、個々のURLを収めるsitemap-0.xmlではなく、それらを束ねるsitemap-index.xmlにしました。
2. Cloudflare Web Analyticsを有効にする
Cloudflare Pagesでは、プロジェクトのWeb Analyticsを有効にすると、次回デプロイ時に計測用JavaScriptが自動挿入されます。
Astroのレイアウトへ計測タグを手書きする必要はありません。
公式ドキュメント上の手順は次のとおりです。
- Cloudflareダッシュボードで「Workers & Pages」を開く
- 対象のPagesプロジェクトを選ぶ
- 「Metrics」でWeb Analyticsを有効にする
- 次のデプロイ後、Web Analytics画面でデータを確認する
ブログ側へ計測コンポーネントを追加せず、Web Analytics画面にVisitsとPageviewsが出るところまで確認できました。
なお、ダッシュボードの「Exclude bots」を有効にしても、自分の通常のブラウザ操作まで除外されるわけではありません。この点は後で触れます。
3. Search Consoleへドメインを登録する
Search Consoleでは「URLプレフィックス」ではなく「ドメイン」を選びました。
ドメインプロパティなら、https://example.comだけでなく、http/httpsやサブドメインをまとめて扱えます。
その代わり、所有権の確認方法はDNSレコードに限られます。
手順は次の流れでした。
- Search Consoleで「プロパティを追加」を開く
- 「ドメイン」に
example.comの形式で入力する - Googleから提示されたTXTレコードをコピーする
- CloudflareのDNS設定へTXTレコードを追加する
- Search Consoleへ戻り、所有権を確認する
ドメイン欄にはhttps://や末尾のパスを含めません。
4. Astroのサイトマップを送信する
所有権を確認したら、Search Consoleの「サイトマップ」を開き、次のURLを送信します。
https://example.com/sitemap-index.xml
このブログでは、2026年7月13日に送信し、7月16日に最終読み込みが行われました。確認時点のステータスは「成功しました」で、23ページが検出されています。
ここで注意したいのは、サイトマップの成功は、23ページすべてがGoogle検索へ掲載済みという意味ではないことです。
Googleがサイトマップを読み、URLをクロール対象のキューへ入れられた状態と考えるのがよいでしょう。
実際に出た数字を見比べる
設定後、2026年7月17日に両方の画面を確認しました。
| 画面 | 期間 | 確認できた数字 |
|---|---|---|
| Cloudflare Web Analytics | 直近7日、bot除外あり | 74 Visits、105 Pageviews |
| Search Console | プロパティ作成後に取得できた期間 | 表示8回、クリック0回 |
| Search Console サイトマップ | 送信後 | 23ページ検出、ステータス成功 |
Cloudflareの74 Visitsをどう読むか

確認できたのは74 Visitsと105 Pageviewsでした。
ただし、同じ人が後から再びURLを直接開けば、別のVisitとして数えられます。
Search Consoleの8回表示をどう読むか

Search Consoleでは表示8回、クリック0回でした。これは「8人がサイトを訪れた」という意味ではなく、Googleの検索結果にサイトへのリンクが8回表示されたという意味です。
Search Consoleでは、docx cliというクエリでの表示が1回あり、docx-cliでNDAをAIに編集させた記事が検索対象として認識され始めたことを確認できました。
恥ずかしながら表示8回の段階では、平均掲載順位やCTRを細かく評価しても母数が小さすぎます。まずは表示回数が0ではなくなり、どの記事がどんなクエリで出始めたかを見るくらいでよさそうです。
公開直後はどこを見ればよいか
毎日すべての数字を見る必要はありません。公開直後なら、次の順番が分かりやすかったです。
Cloudflare Web Analytics
- Pageviews: サイト内で何ページ読まれたか
- Path: どの記事が開かれたか
- Referer: 検索や外部リンクなど、どこから来たか
- Visits: 外部または直接アクセスを起点とする訪問がどれくらいあったか
Search Console
- 表示回数: Googleが記事を検索結果へ出し始めたか
- クエリ: どんな言葉で表示されたか
- ページ: どの記事に表示機会があるか
- クリック数とCTR: 表示された結果から実際に読まれたか
表示回数が増えているのにクリックされない状態が続いたら、タイトルやdescriptionが検索意図と合っているかを見直します。
表示自体がほとんどなければ、インデックス状況やテーマの需要を先に確認します。
自分のアクセスはどう扱うか
Cloudflare Web Analyticsには「サイト所有者」を識別する項目がありません。
自分が普通に公開サイトを開けば、ほかの閲覧と同じように計測対象になります。
また、FreeプランのWeb Analytics Rulesは0件で、上位プランのRulesもホスト名やパスを基準に計測用JavaScriptの挿入範囲を制御する仕組みです。
自宅IPを登録して除外する用途ではありません。
当たり前かもしれませんが、記事確認には公開URLを開くのではなく、できるだけローカルサーバーを開くようにしています。
ChromeとAdGuardで遮断できるか確かめる
公開サイトを確認するときだけ、AdGuardでCloudflareの計測用ビーコンを遮断する方法が使用できるようでしたので、今回は次の手順で確認しました。
- ChromeでAdGuard Browser Extensionの設定を開く
- 「ユーザールール」に次のルールを追加する
||static.cloudflareinsights.com^$script,domain=example.com
example.comは自分のドメインへ置き換えます。
Chrome 138以降でユーザールールの利用を求められた場合は、chrome://extensions/からAdGuardの詳細を開き、「ユーザースクリプトを許可」を有効にします。
- 公開サイトを開いて、Chrome DevToolsの「Network」を表示する
- Networkの絞り込み欄へ
cloudflareinsightsまたはbeacon.min.jsと入力する - AdGuardのルールを一度無効にしてページを再読み込みし、
beacon.min.jsへの通信が出ることを確認する - ルールを有効にして再読み込みし、通信が表示されないか、Status列が
(blocked:other)やERR_BLOCKED_BY_CLIENTになっているかを確認する
ルールを有効にして再読み込みすると、Networkにはbeacon.min.jsの行が残りました。
Statusは(blocked:other)、Sizeは0.0 kBとなっています。
これで、計測スクリプトがAdGuardによって遮断されたことを確認できました。
![]()
Networkにリクエストの行が残っていても、通信に成功したとは限りません。StatusとSizeを見て、遮断されているかを判断します。
手順5の再読み込みは計測される可能性があります。
Cloudflareのダッシュボードは反映に時間がかかることがあり、bot除外や集計処理も入るため、1回分の増減だけで判定するのは難しいです。
遮断できたかどうかは、ダッシュボードの数字ではなくNetworkで確認するのが分かりやすいでしょう。
使ってみて分かった制約
- CloudflareのVisitsはユニークユーザー数ではないため、「何人」と言い換えないほうがよいです
- bot除外を有効にしても、すべての自動アクセスを完全に除けるとは限りません
- 広告ブロッカーなどで計測用JavaScriptが動かなければ、Cloudflare側へ記録されないことがあります
- Search ConsoleはGoogle検索のデータだけで、サイト全体のアクセス解析ではありません
- サイトマップが成功しても、すべてのURLのクロールやインデックス登録は保証されません
- 公開直後の少ない表示回数では、CTRや平均掲載順位が大きく揺れます
まとめ
AstroブログをCloudflare Pagesで公開するなら、Web AnalyticsはPages側で有効にするだけで始められます。
Search Console用のサイトマップも@astrojs/sitemapで生成でき、ドメイン所有権の確認後にsitemap-index.xmlを送信すればよいです。
実際に両方を見比べると、Cloudflareの74 Visits/105 Pageviewsはサイト内の閲覧、Search Consoleの表示8回/クリック0回はGoogle検索上の露出を表しており、別のものを数えていることが分かりました。
公開直後は、Cloudflareで「どの記事が開かれたか」、Search Consoleで「どの記事がどんな検索語句に出始めたか」を見ます。
私の想像する昔のアクセスカウンターよりかなり具体的にブログの成長を追えるようになりました。
今後も必要な段階に来たときには、他のアクセス解析の調査、導入などを記事にしていこうと思います。
参考情報源
- Enable Web Analytics - Cloudflare Pages docs (en)
- High-level metrics - Cloudflare Web Analytics docs (en)
- Dimensions - Cloudflare Web Analytics docs (en)
- Web Analytics limits - Cloudflare docs (en)
- Web Analytics Rules - Cloudflare docs (en)
- Web Analytics FAQs - Cloudflare docs (en)
- Add a website property to Search Console - Google Search Console Help (en)
- Sitemaps report - Google Search Console Help (en)
- Performance report metrics - Google Search Console Help (en)
- @astrojs/sitemap - Astro Docs (en)
- Recommended events - Google Analytics Help (en)
- How to create your own ad filters - AdGuard Knowledge Base (en)
- User Scripts API - AdGuard Knowledge Base (en)
