Skip to content

Instantly share code, notes, and snippets.

@fujii-yuji
Created July 26, 2025 02:19
Show Gist options
  • Select an option

  • Save fujii-yuji/bcbfc1b88b4468538335d2c11101e0c3 to your computer and use it in GitHub Desktop.

Select an option

Save fujii-yuji/bcbfc1b88b4468538335d2c11101e0c3 to your computer and use it in GitHub Desktop.
GA4のCursorルール例

Google Analytics MCP Cursor Rules - 共有版


📂 Google Analytics 分析の正確性ルール

Google Analytics分析における数値計算と分析手法の正確性を保つためのルールです。

⚠️ 重要な前提

LLM(Large Language Model)は数値計算が非常に苦手です

  • 簡単な四則演算(50÷1000など)でも間違える可能性が高い
  • パーセンテージ変換、比率計算で頻繁にエラーが発生
  • 桁数が多い計算や小数点計算は特に危険
  • 複数ステップの計算では中間計算でもエラーが蓄積

この制約により、すべての数値計算をプログラムで実行することが必須です。

🚫 禁止事項

1. 推論による数値計算の禁止

絶対に行ってはいけません

  • パーセンテージ、比率、増減率の推論計算
  • 数値の合計、平均、中央値の推論計算
  • トレンド分析における具体的な数値の推論
  • コンバージョン率、クリック率などのKPI値の推論
  • 中間計算も含めて、すべての計算ステップの推論

LLMが特に間違いやすい計算例

❌ 50 ÷ 1000 = 0.05 → 5%(一見簡単だが間違いやすい)
❌ (120 - 100) ÷ 100 = 0.2 → 20%(複数ステップでエラー蓄積)
❌ 1,234,567 × 0.032(桁数が多いとエラー頻発)
❌ 3.14159 × 2.71828(小数点計算は危険)

❌ 間違い:「セッション数が1000で、コンバージョンが50なので、コンバージョン率は約5%です」
✅ 正しい:「Pythonで計算します:conversion_rate = 50/1000 = 0.05 = 5%」

2. サンプルサイズの扱い

禁止

  • サンプルサイズが小さいことを「発見」や「洞察」として扱う
  • 「サンプルサイズが小さいので信頼性が低い」を分析の主要結果として出す
  • データ量の少なさを問題提起として強調する
  • サンプルサイズの制約を全体への汎化の妨げとして過度に言及する

許可

  • サンプルサイズを客観的事実として淡々と記載する(例:「n=50」「データ期間:7日間」)
  • 統計計算で必要な場合にサンプルサイズを使用する

理由:統計的制約は当たり前の事実であり、分析の洞察ではない

✅ 必須事項

1. Python計算の実行

すべての数値計算は必ずPythonで実行

# 例:コンバージョン率計算
conversions = 50
sessions = 1000
conversion_rate = conversions / sessions
print(f"コンバージョン率: {conversion_rate:.2%}")

2. 計算プロセスの明示

  • 計算式を明確に示す
  • 使用した数値を明記する
  • 計算結果を検証可能な形で提示する

3. データ取得から計算まで一貫性

  • GA4 MCPツールでデータ取得
  • 取得データをそのままPython計算に使用
  • 推論や概算を挟まない

4. 計算結果の必須検証

LLMの計算エラーを防ぐため、以下の検証を必ず実行

# 計算結果の逆算検証
sessions = 1000
conversions = 50
conversion_rate = conversions / sessions

# 検証: 逆算して元の値が復元されるか
check = conversion_rate * sessions
print(f"検証: {conversion_rate} × {sessions} = {check}")
print(f"元の値: {conversions}, 一致: {abs(check - conversions) < 0.001}")

# 常識的範囲の確認
if 0 <= conversion_rate <= 1:
    print("✅ コンバージョン率が妥当な範囲内")
else:
    print("❌ 計算エラーの可能性あり")

📊 推論が許可される領域

1. 数値に基づく判断・解釈

✅ OK:「コンバージョン率が5%という結果から、ランディングページの改善が必要と考えられます」
✅ OK:「前月比20%増加は、キャンペーンの効果が現れていると推測されます」

2. 仮説立て・戦略提案

✅ OK:「この傾向から、モバイルユーザー向けの施策を強化すべきでしょう」
✅ OK:「データパターンから、季節性の影響が考えられます」

3. 因果関係の推測

✅ OK:「流入チャネルの変化が、コンバージョン率に影響している可能性があります」

🔧 実装方法

1. GA4データ取得

# GA4 MCPツールを使用してデータ取得
report_data = run_report(
    property_id="your_property_id",
    dimensions=["date", "source"],
    metrics=["sessions", "conversions"]
)

2. データ処理・計算

import pandas as pd

# データフレーム化
df = pd.DataFrame(report_data)

# 計算実行
df['conversion_rate'] = df['conversions'] / df['sessions']
df['growth_rate'] = df['sessions'].pct_change()

# 結果出力
print(df[['date', 'sessions', 'conversions', 'conversion_rate']])

3. 結果の検証

# 計算結果の検証
total_sessions = df['sessions'].sum()
total_conversions = df['conversions'].sum()
overall_conversion_rate = total_conversions / total_sessions

print(f"全体コンバージョン率: {overall_conversion_rate:.4f}")
print(f"検証用計算: {total_conversions}/{total_sessions} = {overall_conversion_rate}")

📝 分析レポートの構成

1. データ取得セクション

  • 使用したGA4プロパティID
  • 取得期間・ディメンション・メトリクス
  • 取得データの概要

2. 計算セクション

  • Pythonコードの提示
  • 計算式の説明
  • 中間結果の表示

3. 結果セクション

  • 最終的な数値結果
  • 数値の意味・解釈
  • データに基づく洞察

4. 推論・提案セクション

  • 数値結果に基づく判断
  • 仮説・戦略提案
  • 次のアクションプラン

⚠️ 注意点

1. 精度の保持

  • 小数点以下の桁数を適切に管理
  • 丸め誤差を考慮した計算
  • 必要に応じてDecimal型を使用

2. データの検証

  • 異常値のチェック
  • データ型の確認
  • 欠損値の処理

3. 統計的有意性

  • サンプルサイズは考慮するが強調しない
  • 必要に応じて信頼区間を計算
  • A/Bテストの場合は適切な統計検定を実行

🎯 成功例

1. GA4 MCPでセッションデータを取得
2. Pythonでコンバージョン率を計算: 3.2%
3. 前月比較を計算: +0.8ポイント増加
4. 解釈: 「コンバージョン率が3.2%に改善し、前月から0.8ポイント向上しています。
   このトレンドから、最近実施した施策が効果を発揮していると考えられます」

このアプローチにより、数値の正確性を保ちながら、意味のある分析洞察を提供できます。


📂GA4分析 クイックリファレンス

GA4分析時にすぐに参照できる重要ポイントの要約です。

⚠️ 重要:LLMは計算が苦手

簡単な計算でもエラーが発生します。必ずPythonで計算してください。

🚫 絶対NG

推論計算の禁止

❌ 「約5%です」「だいたい20%増加」「推定で○○」
❌ 「50÷1000=5%」(一見簡単だが間違いやすい)
✅ Pythonで計算: conversion_rate = 50/1000 = 0.05 = 5%
✅ 必ず検証: print(f"検証: {0.05} × 1000 = {0.05 * 1000}")

サンプルサイズの適切な扱い

❌ 「サンプルサイズが小さいので信頼性が低い」(問題提起として)
✅ 「サンプルサイズ:n=100」(客観的事実として)
✅ 淡々と数値を報告し、洞察に集中

✅ 必須フロー

1. データ取得

# GA4 MCPツールでデータ取得
data = run_report(property_id, dimensions, metrics, date_ranges)

2. 計算実行

# 必ずPythonで計算
df = pd.DataFrame(data)
conversion_rate = df['conversions'].sum() / df['sessions'].sum()
growth_rate = (current - previous) / previous

3. 結果表示 + 検証

print(f"コンバージョン率: {conversion_rate:.2%}")
print(f"成長率: {growth_rate:.2%}")

# 必須検証
check = conversion_rate * sessions
print(f"検証: {conversion_rate} × {sessions} = {check} (元の値: {conversions})")

📊 分析の境界線

計算 → コード必須

  • パーセンテージ、比率、増減率
  • 平均、合計、中央値
  • 相関係数、統計量

解釈 → 推論OK

  • 数値の意味づけ
  • トレンドの解釈
  • 仮説・戦略提案

🔧 便利なコードスニペット

基本計算

# 成長率
growth = (new - old) / old * 100

# コンバージョン率
cvr = conversions / sessions

# 前年同期比
yoy_growth = (this_year - last_year) / last_year

データ処理

import pandas as pd
import numpy as np

# データフレーム作成
df = pd.DataFrame(ga4_data)

# 期間別集計
monthly_data = df.groupby('month').sum()

検証

# 計算結果の検証
total = df['metric'].sum()
manual_calc = sum(df['metric'])
print(f"検証: {total} == {manual_calc}")

💡 レポート構成

  1. データ取得結果: 使用したプロパティ、期間、取得データの概要
  2. 計算プロセス: Pythonコードとその結果
  3. 数値結果: 正確な計算値
  4. 洞察: 数値から読み取れる意味と提案

⚡ よく使う計算パターン

# 期間比較
def compare_periods(current, previous):
    growth = (current - previous) / previous
    return growth

# 平均値計算
def calculate_average(data_list):
    return sum(data_list) / len(data_list)

# パーセンテージ表示
def format_percentage(value):
    return f"{value * 100:.2f}%"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment