分析 & モニタリング
データで継続的な改善を回す
これまでのレイヤーはすべて「実行する」ことが主題でした。クロール性の修正、より良いページの執筆、リンクの獲得などです。このレイヤーが扱うのは「知る」ことです。つまり、それらの施策は本当に効果があったのか? Analytics と Monitoring は、サイトに取り付けられた計器パネルです。これがなければ、あなたは計器なしで飛んでいるようなもので、先月のリライトが助けになったのか害になったのか、順位下落は自分のせいなのか Google のせいなのか、獲得したトラフィックが本当にコンバージョンする種類のものなのか、すべてを当て推量するしかなくなります。
しかし「計器パネル」という表現では過小評価です。Analytics は直線的なパイプラインの最後の停車駅ではなく、すべてを貫いて回り続けるループです。変更をリリースし、データを読み、そのデータに次の変更を決めさせる。SEO は直感で舵を取るには遅すぎ、ノイズが多すぎます。成果を出す人と行き詰まったままの人を分ける唯一の習慣は、このループを一定の周期で閉じ続けることです。データ駆動のループをあなたの標準的な動作モードにしてしまえば、SEO のそれ以外の部分は、小さく検証可能な賭けの連続へと変わります。
このサイト自体が、説いていることを実践しています。GA4 と Google Search Console を初日から組み込んだ状態で出荷されているため、ここで読む数値は、このサイトのロードマップを操縦しているのと同じ数値なのです。
GSC & GA4
Google の 2 つの無料ツールが、ほぼすべての SEO 判断の土台を形成します。両者は異なる問いに答えるものであり、その両方が必要です。
Google Search Console (GSC) は物語の検索エンジン側、つまりユーザーがあなたのサイトに到達する前に何が起きるかを扱います。代表的な 4 つの指標は次のとおりです。
- 表示回数 (Impressions) — あなたの URL のいずれかが検索結果に現れた回数。
- クリック数 (Clicks) — それらの表示のうち、訪問につながった数。
- 平均掲載順位 (Average position) — あなたの URL が通常どの順位にランクしたか(低いほど良く、1.0 がオーガニックの最上位)。
- インデックス登録 (Indexing) — どのページが実際に Google に保存され表示対象となっているか、そして残りがなぜ除外されたか。
GSC はまた、Build レイヤーですでに出会ったワークフローも担います。すなわち、sitemap の送信、新しい URL のインデックス登録のリクエスト、そして ページ (Index Coverage) レポートを読んで、あるページがなぜ「クロール済み - インデックス未登録」あるいは「検出 - インデックス未登録」になっているのかを正確に把握することです。
Google Analytics 4 (GA4) はユーザー側、つまり誰かが到着した後に何が起きるかを扱います。チャネル別のトラフィック、ユーザーがページ間をたどる経路、そしてコンバージョン(目標として設定したイベント、たとえばサインアップ、購入、フォーム送信)。GSC は「Google があなたの料金ページに 1,000 クリックを送った」ことを教えてくれます。GA4 は「そのうち 40 人の訪問者が試用を開始した」ことを教えてくれます。
💡 ヒント: イメージとしてはターンスタイル(回転式ゲート)です。GSC は外側に立って、ドアへ向かって歩いてくる人(表示回数)と実際に入ってくる人(クリック)を数えています。GA4 は内側に立って、ゲートを抜けた後の彼らの行動を見ています。どちらか一方の視点だけでは、絵の半分にすぎません。
セットアップ
GSC の確認 — DNS はすべてのサブドメインとプロトコルを一度にカバーするため、最も堅牢な方法です。
# Add a TXT record at your DNS provider, then verify in GSC
google-site-verification=AbCdEf123456_yourVerificationToken
GA4 — gtag.js スニペットをすべてのページに埋め込みます(Astro では共有レイアウトの head に置けば、サイト全体でレンダリングされます)。
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXXXXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
</script>
そして両者を連携させます。GA4 で 管理 → サービス間のリンク設定 → Search Console からあなたの GSC プロパティをリンクします。これにより、「クリックを獲得したクエリ」(GSC)と「ユーザーがその後何をしたか」(GA4)を結合したレポートが解放されます。無料で手に入る、エンドツーエンドのファネルに最も近いものです。
🧑💻 開発者視点: 毎日 UI を手作業で回すのはやめましょう。GSC には公式の Search Analytics API があります。表示回数・クリック数・順位を自分のストアに取り込み、実際に見るダッシュボードを構築しましょう。
gsc-bulk-exportを使った最小限のクエリ、あるいは生の呼び出しはこのようになります。curl -s -X POST \ "https://searchconsole.googleapis.com/webmasters/v3/sites/https%3A%2F%2Fexample.com%2F/searchAnalytics/query" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"startDate":"2026-05-01","endDate":"2026-05-31","dimensions":["query","page"],"rowLimit":1000}'より大規模なサイトでは、GSC の BigQuery への一括データエクスポートを設定しましょう。毎日の生データを自動でストリーミングし、UI の 1,000 行・16 か月という制限を回避できます。
頭に入れておくべき癖が 1 つあります。GSC のデータには 2〜3 日の遅延があること、そして UI はロングテールのクエリをサンプリング/切り捨てします。今日の数値は暫定値として扱い、単一の日を切り離して信用しないことです。
Rank Tracking
GSC の平均掲載順位は有用ですが粗い指標です。デスクトップとモバイル、すべての国、そしてあるページがランクするすべてのクエリを 1 つの平滑化された数値に混ぜ合わせてしまいます。専用の順位トラッキングはここをズームインします。特定のキーワードを日ごとに追跡するため、ほとんど動かないぼやけた平均値ではなく、ある語が 3 週間で 18 位から 6 位へ上昇していく様子を見ることができます。
追跡すべきもの:
- キーワード順位の変動 — 優先する 10〜30 個の語を選び、日々の揺れではなくトレンドを見ます。順位は自然に 1〜2 ポジション揺らぐもので、重要なのは数週間にわたる方向性です。
- SERP 機能の占有 — 現代の検索結果ページは 10 本の青いリンクどころではありません。強調スニペット (featured snippets)、他の人はこちらも質問 (People Also Ask) ボックス、画像・動画パック、ローカルパック、そしてますます増えている AI Overviews があります。これらの枠をあなたが押さえているのか競合が押さえているのかを追跡しましょう。あなたの「順位」が問題なさそうに見えても、競合の強調スニペットがあなたのクリックを吸い取ってしまう可能性があるからです。
⚠️ 注意: 順位は絶対的なものではなく、ロケーション、デバイス、言語、パーソナライゼーションによって変動します。ベルリンでモバイルからログインしているユーザーが見る SERP は、ニューヨークのまっさらなデスクトップセッションが見るものとは異なります。比較に意味を持たせるには、これらのパラメータを固定し、毎回同じ構成で確認することです。
これを行う方法は 2 つあります。
- ツールを買う — Ahrefs、Semrush、あるいは AccuRanker のような特化型トラッカーは、ロケーション/デバイスの組み合わせを処理し、履歴を保存し、トレンドをチャート化してくれます。キーワードがひと握りを超えたら、これが実用的なデフォルトです。
- 自分で作る — スクリプトをスケジュール実行(cron、GitHub Actions、cron トリガーで動く Cloudflare Worker)して、順位を時系列で記録します。誠実なやり方は、Google を直接スクレイピングする(規約に違反しブロックされます)のではなく、SERP API を使うことです。
# Daily rank check via a SERP API, appended to a CSV you can chart later
curl -s "https://serpapi.com/search.json?q=astro+seo+guide&location=United+States&device=desktop&api_key=$SERP_KEY" \
| jq -r '.organic_results[] | select(.link|test("yoursite.com")) | "\(now|strftime("%Y-%m-%d")),\(.position),\(.link)"' \
>> rank-history.csv
公開する前に1 つのページが検索結果でどう見えるか(タイトル、説明、ピクセル切り捨て)を確認したいなら、自前の SERP プレビューツールを使うほうが、ランクするのを待つより速いです。
Key Metrics
ダッシュボードが多ければインサイトが増えるわけではありません。指標に溺れることは、それ自体が 1 つの失敗パターンです。まずは下記のひと握りから始め、それぞれが何を告げているのかを理解し、これらが週次の習慣の一部になってから、初めて他の指標を追加しましょう。
| 指標 | 定義 | 何を教えてくれるか | どこで読むか |
|---|---|---|---|
| オーガニックトラフィック | 無償の検索から到着したセッション | SEO 全体の通信簿 — トップラインのトレンド | GA4(チャネル: Organic Search) |
| CTR | クリック数 ÷ 表示回数 | タイトルとメタディスクリプションがクリックを獲得できているか | GSC |
| 直帰率 | エンゲージメントのない単一ページセッションの割合 | コンテンツが検索者の意図に合っていたか | GA4 |
| 滞在時間 (Dwell time) | ユーザーが SERP に戻るまで留まる時間 | コンテンツの品質と満足度の代理指標 | GA4(平均エンゲージメント時間) |
| コンバージョン率 | 目標アクションを完了した訪問者の割合 | そのトラフィックに実際に価値があるか | GA4 |
生の数字を意思決定に変える、いくつかの読み方:
- 表示回数は多いが CTR が低い → ランクはしているが、スニペットに訴求力がない。これはコンテンツの問題ではなく、タイトル/説明のリライトです。修正は安く、見返りは即座にあります。
- CTR は良いが直帰率が高く滞在時間が短い → スニペットが過剰な約束をしている。ユーザーはクリックし、ミスマッチに気づき、即座に戻る。直すべきはタイトルではなく意図の整合性です。
- トラフィックは増えているがコンバージョンは横ばい → 間違った人々を引き寄せている。キーワードの意図が的を外しています。トラフィックは虚栄の数字であり、スコアボードはコンバージョンです。
💡 ヒント: GA4 では「直帰率」が再定義されました。今やエンゲージメント率の逆数です(セッションは、10 秒以上続く、コンバージョンを発生させる、または 2 ページ以上の閲覧があれば、エンゲージメント済みとカウントされます)。旧 Universal Analytics の数字と一対一で比較しないでください。理由もなく自分を怖がらせるだけです。
より深い要点はこうです。どの単一指標も目標ではありません。それらはファネルを形成します。表示回数 → クリック (CTR) → エンゲージメント(直帰/滞在)→ コンバージョン。どこか一か所でも弱い環があれば、その下流すべてに上限がかかります。鎖として読み、最も細い箇所を見つけ、そこを直すのです。
Algorithm & Competitors
あなたの順位は、自分自身の編集とは無関係な 2 つの理由で動きます。Google がルールを変えた、または競合があなたを追い抜いた。その両方を監視することが、見当違いの対象でパニックに陥るのを避ける方法です。
Core Update を生き延びる
Google は年に複数回の Core Update(コンテンツ品質の判断方法に対する広範な再評価)を出荷します。数週間にわたる展開の間、順位は両方向に大きく振れることがあります。
アップデートと自業自得を見分ける方法を、順番に:
- 何かを壊さなかったか? まずこれを確認します。デプロイの失敗、うっかりの
noindex、robots.txt のタイプミス、間違った URL を指す canonical は、アルゴリズムよりもはるかに多くの「謎の下落」を説明します。 - 公表された期間に当たったか? 日付を Google の Search Status Dashboard と公式の Search Central アップデートログと照合します。
- ニッチ全体が動いているか? 競合が同じタイミングで振れていれば、それはあなた特有の問題ではなくアルゴリズムのイベントです。
⚠️ 注意: 変動が直撃したその日に慌てて変更を加えてはいけません。Core Update は完全に展開されるまで 1〜2 週間かかり、落ち着くまで順位はノイジーです。展開の途中で反射的に編集すると 2 つ目の変数を足すだけになり、実際に何が効いたのかが永遠にわからなくなります。塵が落ち着くのを待ち、それから本当に弱いページを改善しましょう。
持続的な防御は、巧妙な反応ではなく E-E-A-T(Experience: 経験、Expertise: 専門性、Authoritativeness: 権威性、Trustworthiness: 信頼性)です。本物の一次経験、明確な著者性、そして獲得した信頼を備えたページは、最も波風なくアップデートを乗り切ります。Content レイヤーで扱ったように、その水準を継続的に高め続ければ、アップデートは大惨事ではなく天候のようなものになります。
競合とのギャップを埋める
自分自身のデータはあなたの調子を教えてくれます。競合分析は、天井がどれだけ高いかを教えてくれます。
- コンテンツギャップ — 競合がよくランクしていて、あなたがまったくカバーしていないキーワードやトピック。これらはあなたが持つ最も直接的な成長機会です。すでに存在する需要が、他者のトラフィックによって証明されており、そこにあなたの名前はどこにもないのです。
- 被リンクギャップ — 複数の競合にリンクしているが、あなたにはリンクしていない高品質な参照ドメイン。これは Link Building レイヤーでのリンク構築作業のための、すぐ使える見込みリストです。
仕組みは差集合です。競合のランキング語(またはリンク元ドメイン)をエクスポートし、自分のものを差し引けば、彼らが持っていてあなたが欠いているものが残ります。
# Content gap: keywords competitors rank for that you don't
comm -23 \
<(sort -u competitor_keywords.txt) \
<(sort -u my_keywords.txt) \
> content_gap.txt
そして容赦なく優先順位をつけます。競合がたまたまランクしている語をすべて追いかけるのではなく、ギャップのリストを価値 × 勝てる見込みで並べ替え、検索意図が高く現実的な難易度のものを先にやります。
💡 ヒント: 競合分析のアウトプットは、やることリストであるべきで、不安レポートであってはなりません。「400 キーワードが足りない」は麻痺です。「この 8 本の比較ページを書き、この 5 つのリンク元ドメインに売り込む」は計画です。すべてのギャップを具体的なコンテンツ作業またはリンク作業に変換しましょう。さもなければ、ただ恐怖を生み出しただけです。
Summary
このレイヤーの中核となる規律は、データ駆動のループです。リリース → 計測 → 判断 → リリース。他のすべてのレイヤーはこれに流れ込み、これから指示を受けます。GSC と GA4 はターンスタイルの両側を見るあなたの目です。順位トラッキングと主要指標は漠然とした感覚をトレンドに変えます。アルゴリズムと競合の監視は、ノイズではなく正しいシグナルに反応し続けさせてくれます。少数の指標をしっかり見て、ファネルとして読み、一度に 1 つだけ変え、次の一手を選ぶのはあなたの気分ではなく数値に任せましょう。
✅ チェックリスト:
- GSC でサイトを確認し(DNS を推奨)、sitemap が送信されインデックスがクリーンに進んでいることを確認する
- 共有レイアウト経由で GA4 をサイト全体に導入し、少なくとも 1 つの本物のコンバージョンイベントを定義する
- GSC を GA4 にリンクし、「クエリ」と「その後の行動」を結合できるようにする
- 5 つの中核指標(オーガニックトラフィック、CTR、直帰率、滞在時間、コンバージョン率)の週次レビューを設定する
- 優先キーワードを 10〜30 個選び、その順位トレンドを追跡する(ツール、またはロケーション/デバイスを固定したスケジュール実行スクリプト)
- Google の Search Status Dashboard をブックマークし、変動が直撃したら編集する前に診断する
- コンテンツギャップと被リンクギャップの分析を四半期ごとに実施し、そのアウトプットを具体的なタスクリストに変える