Community研究&データ分析github.com

GA4 ランディングページアナリスト

GA4のランディングページを分析し、エンゲージメント、主要イベント、離脱、広告費用対効果、オーガニッククリック、スクロール深度、404ページ、サイト内検索を評価します。「どのランディングページが効果的か」「トラフィックソース別にどのページがコンバージョンしているか」「404エラーが発生しているページはどれか」といった質問に答える際に使用します。

GA4 ランディングページアナリスト とは?

このスキルは、GA4プロパティに直接クエリを実行することで、ランディングページのパフォーマンスを包括的に分析します。データエクスポートを必要とせず、すべての分析結果は実際のクエリから導き出され、数値による裏付けがあります。分析は6つの主要領域(データヘルス、ランディングページパフォーマンスと離脱、トラフィックソース適合性、コンテンツエンゲージメントとスクロール、404エラーとリダイレクト、サイト内検索)をカバーし、各領域は「合格」「警告」「失敗」「不明」で評価されます。Google AdsとSearch Consoleの連携はオプションですが、有効にすると有料広告費用とオーガニッククリックのページ別分析が可能になります。このスキルはInsightfulPipe MCPを通じてGA4 Data API v1を使用し、サンプルサイズの考慮(30セッション未満のページは評価対象外)、クエリフィルターの正しい記法(camelCase)、およびレートと継続時間の適切な解釈(分数、秒)を重視します。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Insightful-Pipe/analytics-cro-skills/tree/HEAD/skills/ga4-landing-page-analyst

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

GA4 ランディングページアナリスト は何をしますか?

エクスポートを依頼する代わりにGA4を直接読み取るランディングページレビューです。すべての分析結果は、このスキルが実行するクエリから得られ、各結果の背後にある数値を示します。

開始前の準備

InsightfulPipe MCPがGA4プロパティに接続されている必要があります。Google AdsとSearch Consoleはオプションです。これらを追加すると、ページごとの費用とオーガニッククリックが表示されます。

  1. query_contexts を request="accounts"、platform="google-analytics" で呼び出します。workspace_id、brand_id、property_id をメモします。複数のプロパティがある場合は、どれを使用するか尋ねます。プロパティは properties/<id> として渡します。
  2. query_contexts を request="actions_details" で、get_report、pages、list_key_events、list_data_streams、get_enhanced_measurement_settings に対して呼び出し、返されるボディの形状に従います。
  3. ユーザーが有料またはオーガニックの詳細を希望する場合、google-ads と google-search-console でも accounts を実行し、次に gaql(platform="google-ads")と search_analytics(platform="google-search-console")に対して actions_details を実行します。このプロパティにリンクされているGoogle Adsアカウントは list_google_ads_links で確認し、Search Consoleサイトはストリームの defaultUri に一致するものを使用します。Google Adsのボディではアカウントは account_id(10桁、ダッシュなし)と呼ばれ、customer_id ではありません。
  4. 次の3つを尋ね、ユーザーがわからない場合はデフォルト値を使用します。
    • 主要コンバージョン。デフォルト: list_key_events のキーイベント。
    • サイトの404ページタイトル。デフォルト: 「not found」または「404」を含むタイトル。
    • 日付範囲。デフォルト: 過去30完全日と、その前の30日間の比較。

レポートの上部に日付、プロパティ名、タイムゾーン、通貨を明記します。

クエリの実行方法

以下のすべてのボディは、別のプラットフォームが指定されていない限り、platform="google-analytics" で query_data を介して送信されます。<WORKSPACE_ID>、<BRAND_ID>、<PROPERTY_ID>、<START>、<END> を置き換えます。APIが強制するルール:

  • フィルターはcamelCaseです。 dimensionFilter、metricFilter、orderBys を使用します。スネークケースの dimension_filter は静かに無視され、すべての行が返されるため、フィルターされたレポートが実際にフィルターされているかを確認してください。
  • 行制限。 limit を渡します。レスポンスの meta.paging.total_available が総行数です。一部しか読み取っていない場合はその旨を伝えます。
  • GA4 Data APIにexitメトリクスはありません。 離脱率を約束しないでください。リークはエンゲージメントのないセッション(下記参照)として測定されます。
  • GA4では広告費用をランディングページごとに分割できません。 advertiserAdCost と landingPage を組み合わせるとエラーが返ります。Google Adsの landing_page_view からランディングページごとの費用を取得します。
  • GA4のオーガニック検索メトリクス(organicGoogleSearchClicks など)は、Search Consoleがプロパティにリンクされている場合にのみ機能します。エラーになる場合は、代わりにSearch Consoleアクションを使用します。
  • レートは分数(0.42は42%を意味します)で返されます。継続時間は秒です。

クエリが失敗した場合は、続行します。その領域を 不明 とマークし、どのクエリが失敗したかとその理由を伝えます。推測でギャップを埋めることは絶対にしないでください。

サンプルサイズ。 期間中に30セッション未満のページは評価しません。それらのページは「判断するにはトラフィックが少なすぎる」にリストします。

6つの評価領域

各領域を 合格、警告、失敗、不明 で評価します。領域の結果は、その領域内で最悪のチェック結果になります。しきい値は出発点です。サイトのモデルが誤っている場合(ドキュメントページは読んで離れることを意図されている、お問い合わせページは短くあるべきなど)はその旨を述べてください。

1. データヘルス: 数値は信頼できるか?

{"platform": "google-analytics", "action": "get_property", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "list_key_events", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "list_data_streams", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>"}
{"platform": "google-analytics", "action": "get_enhanced_measurement_settings", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "data_stream_id": "<STREAM_ID>"}

<STREAM_ID> は、Webストリームの name の末尾の番号から取得します。

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["date"], "metrics": ["sessions", "engagedSessions", "keyEvents", "screenPageViews"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"dimension": {"dimensionName": "date"}}]}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["eventName"], "metrics": ["eventCount", "keyEvents"], "start_date": "<START>", "end_date": "<END>"}
チェック結果
キーイベントキーイベントが1つも定義されていない場合は 失敗。キーイベントは定義されているが、期間中に1つも発生しなかった場合は 警告: 領域2と3のコンバージョンチェックは不明になり、ページはエンゲージメントセッションでランク付けされます。修正はサイト側(イベントが送信されていない)であり、新しいキーイベントを作成することではありません。コンバージョンのようなイベントが発生している(eventNameレポートに表示される)がキーイベントとして設定されていない場合は、create_key_event を提案します。
"(not set)" ランディングページlandingPage が "(not set)" または空であるセッションの割合: これらのセッションはページビューなしで開始されました(同意バナー、タグの遅延発火、タイムアウトして再開したセッション)。5%超で 警告、15%超で 失敗。
欠損期間内に0セッションの日、または期間の日別中央値の20%未満の日がある場合 警告。該当する日付を特定します。
複数ストリームプロパティに複数のWebストリームがある場合に注意します(テスト用やステージング用のストリームが無関係なトラフィックを生む可能性があります)。数値が高い場合は hostName を確認します。
拡張計測機能scrollsEnabled と siteSearchEnabled がオンになっているかどうかを記録します。領域4と6はこれらに依存します。

2. ランディングページのパフォーマンスとリーク

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage"], "metrics": ["sessions", "engagedSessions", "engagementRate", "keyEvents", "sessionKeyEventRate", "newUsers", "averageSessionDuration"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}], "limit": 250}

同じ長さの前期間についても再度実行します。

  • サイトレート。 すべてのセッションのエンゲージメント率とキーイベント率("(not set)" ランディングページは除く)。
  • リーク。 30セッション以上の各ページについて: エンゲージメントなしセッション = セッション − エンゲージメントセッション。超過リーク = エンゲージメントなしセッション − セッション × (1 − サイトエンゲージメント率)。これは、平均的なページと比較してそのページが失っている訪問者数です。30セッション以上のすべてのページでこれを計算し、超過リークが正のすべてのページをランク付けします。このランキングが上位5つの修正項目に反映されます。サイトレートをわずかに下回るアクティブなページは、それを大きく下回る小さなページよりも多くの訪問者を失う可能性があります。別途、エンゲージメントがサイトレートの75%未満のページには リーク ラベルを付けます。リークラベルはこの領域の結果とランディングページテーブルの評価を決定します(修正ランキングではありません)。リークが全体のセッションの10%超を占める場合は 警告、25%超は 失敗 です。
  • コンバーター。 キーイベントが発生している場合: キーイベント率が最も高いページ(30セッション以上)、およびセッション数が最も多く、キーイベント率がサイトレートの半分未満のページ。これらが優先的に修正すべきページです。
  • 変化。 いずれかの期間で50セッション以上あり、セッション数が30%以上変動したページ。新規または消滅したページと、増加または減少したページを分けて表示します。
  • クエリ文字列。 1つのパスが landingPagePlusQueryString の下に多くのバリエーションで表示される場合、そのページは問題ありません。分割しないでください。すべての判断には landingPage(パスのみ)を使用します。

3. トラフィックソースの適合性: どのページがどの訪問者に効果的か

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage", "sessionDefaultChannelGroup"], "metrics": ["sessions", "engagedSessions", "keyEvents"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"metric": {"metricName": "sessions"}, "desc": true}], "limit": 1000}
  • 広告ソース別のレート。 30セッション以上の各チャネルグループについて: ランディングページごとのエンゲージメント率とキーイベント率。領域2と同様に、"(not set)" ランディングページはすべてのレートから除外します。これらは主にオーガニック検索とダイレクトに集中し、それらのチャネルを引き下げます。有料チャネルは、有料検索、有料ソーシャル、有料ショッピング、有料動画、有料その他、ディスプレイ、クロスネットワークです。
  • パフォーマンスの低い有料ページ。 有料セッションのエンゲージメント率が、同じページのオーガニックまたはダイレクトのレートの75%未満であるページは、メッセージミスマッチの問題があります。広告が約束する内容をページが示していないことを示します。キーイベントが発生している場合は、代わりにキーイベント率を比較します。
  • オーガニックランディングページ。 セッション数が多い上位のオーガニック検索ランディングページと、そのエンゲージメント率。1つのページがオーガニックセッションの50%超を占める場合 警告(ランキングの変動でトラフィックが減少するリスクがあります)。
  • 弱いソース。 100セッション以上あり、エンゲージメント率がサイトレートの75%未満のチャネルは、ランディングページが訪問者のニーズを満たしていないことを示します。ダイレクトはターゲットにできるソースではありません。ダイレクトのレートが低い場合は、通常、タグ付けされていないリンク(メール、アプリ、チャット)が原因であるため、修正はページではなくUTMタグです。警告 し、そのチャネルが到達している上位3つのランディングページをリストアップして、修正が適切なページ(またはそれらを送信している投稿やリンク)に向けられるようにします。修正ランキングでは、損失はチャネル全体ではなく、ページ単位でカウントします: そのチャネルからのそのページのセッション数 × サイトエンゲージメント率 − そのチャネルからのエンゲージメントセッション数。チャネルには2つのセッション数があります。すべてのセッション数と、既知のランディングページがあるセッション数(レートのベース)。完全な数を示し、その隣に除外を明記します。例:「500セッション、既知のランディングページがあるもの460」。小さい方の数だけを表示しないでください。
  • 有料シェア。 セッションに占める有料の割合を示します。有料セッションが合計30未満の場合は、有料の品質は判断できないとし、有料チェックをスキップします。

有料検索の詳細(有料検索セッションが30以上の場合のみ):

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage", "sessionGoogleAdsCampaignName"], "metrics": ["sessions", "engagedSessions", "keyEvents"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "sessionDefaultChannelGroup", "stringFilter": {"matchType": "EXACT", "value": "Paid Search"}}}, "limit": 500}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["sessionGoogleAdsCampaignName"], "metrics": ["sessions", "advertiserAdCost", "advertiserAdClicks"], "start_date": "<START>", "end_date": "<END>"}

Google Adsアカウントが接続されている場合、最終URLごとの費用とコンバージョンを取得します。<ACCOUNT_ID> をリンクされたアカウントのIDに置き換えます:

{"platform": "google-ads", "action": "gaql", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "account_id": "<ACCOUNT_ID>", "query": "SELECT landing_page_view.unexpanded_final_url, metrics.clicks, metrics.cost_micros, metrics.conversions FROM landing_page_view WHERE segments.date BETWEEN '<START>' AND '<END>' ORDER BY metrics.cost_micros DESC LIMIT 100"}
  • 最終URLをGA4の landingPage にパスでマッチングします。ホスト、クエリ文字列、{ignore} などのトラッキングテンプレートは削除します。
  • 有料ページのエンゲージメントセッションあたりの費用 = 費用 ÷ GA4のそのページでの有料エンゲージメントセッション数。費用が上位半分にあるページで、エンゲージメントセッションあたりの費用が有料平均の2倍を超えるものにフラグを立てます。
  • GA4のキーイベントとGoogle Adsのコンバージョンは、カウント方法(アトリビューション、計数、インポート)が異なります。両方を並べて報告し、決して一方から他方を減算しないでください。

Search Consoleが接続されている場合(platform="google-search-console"、action="search_analytics"):

{"platform": "google-search-console", "action": "search_analytics", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "site_url": "<SITE_URL>", "dimensions": ["page"], "start_date": "<START>", "end_date": "<END>", "row_limit": 250}
  • パスで結合します。Search Consoleのクリック数が30以上のページについて、GA4のオーガニック検索セッションがクリック数の60%未満の場合 警告: そのページはトラッキングを失っています(同意、タグの遅延、またはセッションが "(not set)" として着地)。GA4はGoogleのクリック数よりも多くのオーガニックセッションを示す可能性があります。これは、オーガニック検索チャネルがBing、DuckDuckGoなどもカウントするためで、問題ではありません。インプレッションが多くCTRが低いページは、タイトルとスニペットの問題であり、ランディングページの問題ではありません。SEOスキルに引き継ぎます。

4. コンテンツエンゲージメントとスクロール

{"platform": "google-analytics", "action": "pages", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["pagePath"], "metrics": ["screenPageViews", "activeUsers", "userEngagementDuration", "scrolledUsers"], "start_date": "<START>", "end_date": "<END>", "limit": 250}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["percentScrolled"], "metrics": ["eventCount"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "eventName", "stringFilter": {"matchType": "EXACT", "value": "scroll"}}}}
  • ビューあたりのエンゲージメント時間 = userEngagementDuration ÷ screenPageViews。100ビュー以上のページを対象とします。
  • スクロール率 = scrolledUsers ÷ activeUsers。scrollsEnabled がオンの場合のみ。100ビュー以上のページの場合、「合格」は10%以上です(ブログのように読まれることを意図したページは50%以上)。
  • コンテンツの深さ。 ユーザーがどの程度スクロールしたかを示す割合の分布。スクロールイベントが存在する場合。
  • 高バウンスのトップページ。 100ビュー以上のページで、エンゲージメント時間が10秒未満、かつスクロール率が10%未満の場合 警告。

5. 404エラーとリダイレクト

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage", "pageTitle"], "metrics": ["sessions", "screenPageViews"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "pageTitle", "stringFilter": {"matchType": "CONTAINS", "value": "<404_PAGE_TITLE>"}}}, "limit": 100}

実際の404ステータスコードはGA4にはありません。タイトルに「404」または「Not Found」が含まれるページを探します。複数の404ページがある場合は、それぞれに名前を付けます。

  • 404ページが存在する場合、それらへのセッション数を示します。
  • セッションのある404ページが1つでもある場合 警告。50セッション以上の404ページがある場合 失敗。
  • 内部リンクが404につながっている場合(リファラーパスが同じサイトである場合)、その内部リンクをリストアップします。

6. サイト内検索

{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["searchTerm"], "metrics": ["searchEventRate", "searchSessions"], "start_date": "<START>", "end_date": "<END>", "orderBys": [{"metric": {"metricName": "searchSessions"}, "desc": true}], "limit": 20}
{"platform": "google-analytics", "action": "get_report", "workspace_id": "<WORKSPACE_ID>", "brand_id": "<BRAND_ID>", "property_id": "properties/<PROPERTY_ID>", "dimensions": ["landingPage"], "metrics": ["sessions"], "start_date": "<START>", "end_date": "<END>", "dimensionFilter": {"filter": {"fieldName": "eventName", "stringFilter": {"matchType": "EXACT", "value": "view_search_results"}}}, "limit": 100}

siteSearchEnabled がオンの場合のみ。

  • 検索を実行するユーザーの割合。 検索セッションを含むセッションの割合。「合格」は15%未満(高い検索使用率は、訪問者がナビゲーションまたはコンテンツを見つけられないことを示します)。
  • 空の検索とクエリ。 検索セッションが20以上ある検索語句のうち、searchEventRate が0.5未満のものは、多くの検索が結果を返さないことを意味します。警告。
  • 検索後のランディングページ。 view_search_results イベントの上位のランディングページ(多くの人が検索せざるを得なかった場所)。

結果スコアの例:

領域スコア
データヘルス合格
ランディングページパフォーマンス警告
トラフィックソース適合性合格
コンテンツエンゲージメント警告
404エラー失敗
サイト内検索合格

提供された数値に基づいて詳細な分析を提供します。 各領域の結果は、関連するクエリを実行した後にのみ評価されます。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

関連スキル