omneralab
L-001 / How-to

GSCとGA4を使って改善候補ページを見つける自動レポート設計

検索表示、CTR、記事後の行動、取得失敗時の代替判断までつなぎ、毎朝1ページを直すためのレポート設計をまとめます。

このページはAI自動化ワークフローの実装判断に役立つよう、公式ドキュメント、価格ページ、実際の運用課題をもとに更新します。

目的: 検索前の需要と記事後の行動を1つの改善リストにする

GSCとGA4を別々に見るだけでは、次に直すべきページが見えにくくなります。GSCは検索結果での表示、クリック、CTR、平均掲載順位を見せてくれますが、記事を読んだ後にCTAを押したか、外部リンクへ進んだかまでは分かりません。

GA4はページ閲覧、イベント、流入経路、エンゲージメントを見られます。そこで、自動レポートではGSCを「検索面の機会」、GA4を「サイト内の反応」として扱い、同じURL単位で並べます。

最小構成は、GSCのページ別データとGA4のページ別データ

最初に必要なのは、GSCのpage/queryデータと、GA4のpagePath別ビュー・ユーザー・イベントです。いきなり複雑なダッシュボードを作るより、CSVやJSONを日次で保存し、前回との差分を見られる状態にするほうが運用は安定します。

URLの正規化も重要です。末尾スラッシュ、言語prefix、canonicalの違いが残ったままだと、同じページが別行として扱われます。L-001のように /ja/ai-automation/ を範囲に固定している場合は、最初にURL prefixで絞り込みます。

改善候補は4つの型に分ける

1つ目は、表示回数はあるのにCTRが低いページです。タイトル、description、検索意図とのズレ、FAQの有無を見直します。2つ目は、平均掲載順位が11位から30位付近で、少しの追記や内部リンクで上がる可能性があるページです。

3つ目は、GA4で閲覧はあるのにCTAクリックが少ないページです。比較表、次に読む記事、チェックリスト、外部リンクの位置を見直します。4つ目は、GSCには出ていないが記事として空または薄いページです。初期運用ではこの品質ギャップを先に埋めるほうが、将来の計測対象を増やせます。

スコアは単純でよい: 表示機会、改善余地、収益導線

改善候補に点数を付けるなら、まずは3軸で十分です。表示機会はimpressions、改善余地はCTRやposition、収益導線はCTAクリックや関連ツール比較への接続で見ます。

たとえば、impressionsが増えていてpositionが15位前後なら本文追加や内部リンクの優先度を上げます。viewsはあるのにCTAが少ないなら、導入文ではなく記事末尾と中盤の導線を見直します。数字を増やしすぎると毎日の判断が遅くなるため、最初は少数の指標に絞ります。

自動化フローは、取得、分類、提案、記録に分ける

実装では、GSCとGA4のAPI取得を1つのスクリプトにまとめ、出力を latest-* と履歴ファイルに分けます。次に、対象URL範囲で絞り込み、改善候補を「CTR改善」「順位改善」「CTA改善」「品質ギャップ」のように分類します。

最後に、提案された改善をそのまま公開せず、記事データやテンプレートに反映してからtypecheck、build、deploy、smokeを通します。自動化の役割は、更新を勝手に量産することではなく、毎日同じ判断材料をそろえて改善漏れを減らすことです。

実装例: 毎朝のCSV/JSON出力→差分→改善タスク化

最初の運用は「ダッシュボード」より「出力ファイルの安定化」を優先します。最低限、GA4のページ別と、GSCのページ別、そして要約JSONを毎朝更新できれば、改善判断は回せます。

例: latest-ga4-pages.csv(pagePath別 views/activeUsers/sessions)と latest-gsc-pages.csv(page別 clicks/impressions/ctr/position)を同じ日に出力し、latest-growth-snapshot.json に全体要約(ユーザー数、views、上位ページ、RGLイベント)を残します。

差分は難しく考えず、(1) 前回より impressions が増えたページ、(2) CTR が低いページ、(3) views はあるのに CTA が弱いページ、の3種類だけを抽出して、直すURLを1つ決めます。

朝の優先順位テンプレ: 1ページだけ選ぶ判断表を先に固定する

毎朝の運用で迷う最大の原因は、候補ページが増えたときに“どれから直すか”が毎回ぶれることです。先に判断表を決めておくと、出力が多少荒くても意思決定は安定します。

最小の優先順位表(例):

状況今日のアクション理由
impressions 増 / CTR 低title・description・FAQ見直し検索面の取りこぼしが大きい
position 11〜20比較表・内部リンク・追記少しの改善で1ページ目に寄せやすい
views あり / CTA 弱い中盤と末尾のCTA改善読まれているのに行動へつながっていない
GSC 0 / 本文が薄い表・FAQ・実装手順を追加将来の計測対象そのものを育てる
計測が壊れているexport/イベント修復を先に行う数字の前提が崩れると改善判断も崩れる

L-001 の初期段階では、GSCの表示がまだ少ない日があります。その場合は“品質ギャップ”を優先し、比較表、チェックリスト、FAQ、同一ループ内リンクを増やして、次にデータが出たときの受け皿を先に作ります。

改善リストの最低限カラム: URL・表示機会・改善余地・導線

改善候補は「ページ単位」で並べるだけで十分です。最初から複雑なスコアリングにせず、毎日判断できる最小カラムに絞ります。

おすすめの列:

目的
pagePath/ja/ai-automation/n8n-make-zapier-comparison改善対象を一意にする
impressions(GSC)120表示機会(需要)
ctr(GSC)0.8%タイトル/description/FAQの改善余地
position(GSC)14.2追記・内部リンクで上がる余地
views(GA4)25既存流入の強さ
rgl_cta_click(GA4)2導線の強さ
actionCTA改善 / FAQ追加 / 比較表追加今日やることを固定する

「impressionsが伸びているのにctrが低い」→タイトル/description/FAQ、「viewsはあるのにctaが弱い」→比較表/次に読む導線、「positionが11〜30」→追記/内部リンク、のようにルール化すると迷いません。

API取得が失敗した日も止めない: stale snapshot を使う運用ルール

現実の運用では、OAuth refresh の invalid_grant、権限切れ、クォータ、API障害などで GSC/GA4 export が止まる日があります。そのたびに改善自体を止めると、日次ループが切れます。

止めないための最小ルール:

  • latest-growth-snapshot.json の generatedAt を見て、最終成功日を明記する
  • 最新exportが壊れていても、直近成功スナップショットを“暫定シグナル”として使う
  • stale data の日は、新規流入最適化より品質ギャップ(表、FAQ、内部リンク、比較軸)を優先する
  • run log に「export失敗理由」と「代替シグナル」を必ず残す
  • OAuth/計測修復は別タスクで追い、当日の記事改善は1件完了させる

特に invalid_grant は“記事を直すかどうか”の判断とは分けて扱うのが重要です。計測修復は必要ですが、コンテンツ改善まで止める理由にはしません。L-001 のような立ち上げ期は、stale snapshotでも「どの記事が薄いか」「どの内部リンクが足りないか」は十分判断できます。

運用ログを残すと、翌日の改善が速くなる

日次運用では、どの数字を見て、なぜそのページを直したのかを必ず記録します。たとえば「L-001のGSC表示はまだ0、A003が空本文だったため品質ギャップを優先」のように書くと、翌日の担当者や自動化エージェントが同じ判断を繰り返さずに済みます。

GA4のcustom dimensionで loop_idarticle_slug を登録しておくと、RGLイベントをループ別・記事別に追えます。登録直後は過去イベントが (not set) になることがありますが、新規イベントから記事単位の反応が見えるようになります。

ログには最低でも「analytics snapshot日時」「見た指標」「選んだURL」「実施した改善」「検証結果」「deploy結果」を残します。日報の粒度を固定すると、どの改善が効いたかを後から比較しやすくなります。

よくある質問(FAQ)

GSCとGA4でURLが一致しません。どう揃えますか?

末尾スラッシュ、言語prefix、canonical、クエリパラメータを正規化します。最初は /ja/ai-automation/ のようにprefixで絞り、同一ページが別行になる要因を潰します。

RGLイベントの loop_id / article_slug が (not set) になります。

イベントパラメータが送られていない、またはGA4側でカスタムディメンション登録が必要なケースがあります。運用では「まず送信できているか(本番でイベントが発火しているか)」を確認し、必要ならGA4 Admin APIで loop_id / article_slug を登録してから数日待って再確認します。

export が invalid_grant で失敗した日は何を見ればいいですか?

直近成功した latest-growth-snapshot.json と既存CSVを使い、当日は品質ギャップの改善に寄せます。同時にOAuth再認証を別タスクで追い、run logに失敗理由を明記します。

最初に見るべきページはどれですか?

まずは表示機会が増え始めたページ(impressions増)か、viewsが出ているのに行動が弱いページ(CTAが弱い)です。データが薄い日は、本文が最も薄いページを1つ選び、比較表・FAQ・内部リンクを足します。

参照した一次情報・公式情報

次のアクション

このループでは、記事を読んだ後に比較、テンプレ、改善レポートへ進める導線を増やしていきます。

同じループの記事