メインコンテンツへスキップ
見出し画像

毎日のLPレポートをClaudeで全自動にした話。GA4 × Slackキャンバス連携でできたこと

    LPを公開したあと、毎日「昨日どれくらい見られたか」を確認するのが日課になっている方は多いと思います。GA4を開いて、数字をメモして、チームに共有して……その作業、地味に時間がかかります。

    今回は、Claudeを使ってこの確認作業を完全に自動化した話をまとめます。GA4のデータを毎日自動で取得して、Slackのキャンバスに更新し続ける仕組みを作ったので、その内容と、やってみてわかったことを書きます。

    きっかけは「これ、まだ手動でやってたんだ」という気づき

    新しいLPを公開したとき、チームで数値を共有するにあたり、最初はGoogleスプレッドシートの公式アドオン「GA4 Reports Builder for Google Analytics」を使って数字を管理していました。

    Googleが提供しているアドオンで、スプレッドシートの拡張機能からインストールできます。取得したいプロパティ・期間・指標・ディメンションをスプレッドシートに設定しておけば、「Run reports」ボタンひとつでGA4のデータを一気に引き出せる、かなり便利なツールです。

    設定はこんな感じです。
    「Report Cofiguration」で、集計する期間、ディメンション(集計軸)、メトリクス(指標)、フィルタを設定することができます。

    画像

    ただ、使ってみると気になる点もいくつかありました。

    GA4の標準版では1クエリあたり1,000万イベントを超えるとサンプリング(全データではなく一部を抽出して推計する処理)が発生することがあります。月間数千〜数万セッション程度の規模なら問題になりませんが、大規模サイトになるほど数字の精度に影響が出ます。そのため、この機能を使う場合は、期間で絞って、その期間だけの数値を集計しています。

    そして何より、データを取得してからSlackに共有するまでが手動でした。スプレッドシートを開いてレポートを実行する。数字を確認する。気になる点があればSlackに投稿する。毎日このサイクルを繰り返していました。

    ある日ふと「このスプレッドシートを開く作業自体、なくせるのでは」と思ったのがきっかけです。確認して共有する部分まで自動化できれば、数字は勝手に届いてくるはずです。試してみたら、思ったよりずっと簡単にできました。

    作った仕組みの全体像

    まずは、GA4 MCPで、ClaudeからGA4に接続させます。
    ここについては、こちらの記事を参考に連携しました。

    つぎに、Claude Coworkで、スケジュールタスクを作成します。
    タスクは、Claudeに相談しながら「このURLを分析したい」「この期間で」「経路別を見たい」などの条件を決めていきます。
    Claudeと相談しながら作成したプロンプトがこちらです。

    毎朝、LPページの最新GA4データを取得し、Slackキャンバスを最新の分析内容で更新したうえで、チャンネルに通知する。
    
    ## 目的
    `XX/xxx/xxx` のGoogle Analytics 4データ(直近30日間)を取得し、既存のSlackキャンバスを最新の分析内容で更新したうえで、`#xxxxx` チャンネルにサマリーメッセージを投稿する。
    
    ## 手順
    
    ### 1. GA4データの取得(すべてのクエリで `mcp__google-analytics__runReport` を使用)
    
    以下の3つのレポートを並列で実行する。日付は動的に算出すること:
    - startDate: 今日の30日前(フォーマット: YYYY-MM-DD)
    - endDate: 昨日(フォーマット: YYYY-MM-DD)
    - すべてのレポートに共通する dimensionFilter: pagePath が "Xxxx" を含む
    
    **レポートA – 日別PV・ユーザー数:**
    - dimensions: [date]
    - metrics: [screenPageViews, totalUsers]
    
    **レポートB – GTMイベント(ファネル):**
    - dimensions: [eventName]
    - metrics: [eventCount, totalUsers]
    
    **レポートC – 流入元の詳細:**
    - dimensions: [sessionDefaultChannelGroup, sessionSource, sessionMedium]
    - metrics: [sessions, totalUsers, bounceRate, averageSessionDuration]
    
    ### 2. サマリー指標の算出
    レポートAから:合計PV、合計ユーザー数、PV上位3日
    レポートBから:イベント名に "xxxx" を含むものだけを残し、page_viewをベースラインとする。ファネルを構築:page_view → top_arrival → lp_cta_click → lp_view_trial → lp_view_contact(ユーザー数および page_view 比の%)
    レポートCから:
    - チャネル別サマリー表(セッション数、直帰率、平均滞在時間)
    - Facebook / Instagram の配置別内訳(セッション数、直帰率、平均滞在時間、評価 ◎/○/△/✕)
    - sessionMedium に "{{" を含む行があればフラグを立てる → GTM変数の置換不具合
    
    ### 3. 既存のSlackキャンバスを更新(必ず上書き、新規作成は不可)
    - キャンバスID: xxxxxxxxxx
    - 使用ツール: `slack_update_canvas`(action: "replace")
    - 言語: すべて日本語
    - レポート期間と本日の日付を必ず記載
    
    キャンバスの構成:
    1. **概要** – 期間、合計PV、合計ユーザー数、1行サマリー
    2. **主要指標サマリー** – メインLP / トライアル(/trial/) / お問い合わせ(/contact/) のPV・ユーザー数・セッション数・直帰率・平均滞在時間を比較する表
    3. **GTMイベント ファネル分析(xxxイベントのみ)** – 列:ステップ|イベント名|ユーザー数|到達率(page_view比)。行:page_view(100%) → lp_top_arrival → lp_cta_click → lp_view_trial → lp_view_contact。1〜2文の所感を添える。
    4. **流入元別 詳細分析** – サブテーブル2つ:
       - チャネル別パフォーマンス(Google Organic、Direct、ブログ内部 など):セッション数、直帰率、平均滞在時間、評価
       - Facebook / Instagram 配置別パフォーマンス:セッション数、直帰率、平均滞在時間、評価(GTM変数の不具合が検知された場合は ⚠️ を付ける)
    5. **⚠️ GTM 計測不備の検知** – sessionMedium の値に "{{" を含むものをセッション数とともに列挙する。該当なしの場合はこのセクションを省略する。
    6. **改善提案** – サブセクション:ページ構造・UX / SEO強化 / AIO(AI Overview)対策 / Meta広告改善 / ブログ・コンテンツ内部リンク強化 /
    7. フッター: *データ取得元: Google Analytics 4 / 集計期間: YYYY年MM月DD日〜YYYY年MM月DD日(30日間)*
    
    ### 4. Slack通知の投稿
    - チャンネルID: xxxxxx
    - 使用ツール: `slack_send_message`(パラメータは `message`)
    - メッセージ本文(プレーンテキスト、太字は `**` を使用):
      ```
      LP分析レポートを更新しました(集計期間)
    
      **ハイライト**
      - PV: [合計] |ユーザー: [合計]
      - 主要流入: [トップチャネル] [%]
      - 直帰率: [直帰率]
      - CTAクリック: [件数]ユーザー([%])
    
      詳細はキャンバスでご確認ください → https://xxxx
      ```
    
    ## 制約事項
    - GTMイベント:イベント名に "xxx" を含むものだけを対象とする(page_view はベースラインとして含める)
    - キャンバス:既存のキャンバス xxxxx を必ず上書きする。新規作成はしない。
    - キャンバスの内容はすべて日本語
    - 期間:常に昨日を終端とする直近30日間(動的に算出)
    - 直帰率の表示:パーセント形式(例:62.9%)
    - 平均滞在時間の表示:M分SS秒

    編集画面の下部にある、頻度で「毎日9:00」と設定することで、毎朝自動更新される仕組みです。変更が可能です。

    画像


    スケジュールタスクを設定したら、あとは毎日決まった時間にClaudeが動き、GA4から過去30日分のデータを取得します。セッション数・PV・CTA クリック数・流入経路といった指標を集計して、Slackの特定キャンバスに上書き更新する。同時に、チャンネルに「今日の数字が更新されました」と通知を送る。これだけです。

    Slack通知の画面。

    画像

    Canvasの画面。
    Slackテキストだと、読みづらい場合もありますが、表になっていることで、視認性が高く、レポート閲覧者が読み取りやすくなる利点があります。

    また上書き保存されるため、同じURLで共有することができるところは、エンジニアではないマーケターにとって、簡易的ではありますが、サーバー等を使うことなくダッシュボードを構築できるところは、Slack Canvasのいいところだと思います。

    画像


    一度設定してしまえば、毎朝Slackを開いたときにはすでに最新のデータが並んでいます。GA4を自分で開く必要がなくなりました。

    なお、ClaudeもGA4 Reports Builderと同様にGA4のData APIを通じてデータを取得するため、サンプリングの仕組み自体は変わりません。月間数千〜数万セッション程度の規模であれば、どちらの方法でもサンプリングは発生しないので、今回のLPの運用では実質的な違いはありませんでした。
    大規模サイトでサンプリングを根本的に回避したい場合は、GA4とBigQueryを連携させて生データを取得する方法が有効です。

    Slackキャンバスの設定について一点補足があります。
    キャンバスを新しく作成した直後は、作成者以外には非公開の状態になっています。チームメンバー全員がキャンバスを見られるようにするには、最初に一度だけ「共有」または「公開」の設定を手動で変更する必要があります。ここだけは自動化できない手順なので、初回セットアップ時に忘れずに行いましょう。

    画像

    実際にどんな数字が見えているか

    実際に集計されている期間(30日間)のデータで言うと、Google検索からのオーガニック流入のユーザーは、直帰率が低く、明らかに内容をしっかり読んでいる人が集まっていました。

    一方で課題も見えました。CTAのクリックが低かったため、CTAの配置や文言を見直す余地があることが、データから具体的にわかりました。

    こうした気づきが毎日自動で手元に届くのが、この仕組みの一番の価値だと感じています。

    思わぬ副産物:GTMのバグを発見できた

    自動化してよかったことのひとつが、データの異常に気づきやすくなったことです。

    毎日キャンバスを確認していると、ある日「流入経路が {{placement}} と表示されているセッションがX件ある」という記録が残っていました。{{placement}} はGoogle タグマネージャーの変数記述で、本来は広告の配信面(フィード・ストーリーズなど)に変換されるはずです。変換されずにそのままGA4に飛んでいたということは、GTMのタグ設定にミスがあったことを意味します。

    手動でGA4を確認しているだけでは、こういう細かい異常はなかなか目に入りません。毎日自動で集計・記録される仕組みがあると、変化や違和感に気づくタイミングが早くなります。

    そのまま、Claude CoworkでGTMの設定も修正することができました。

    マーケター視点で感じたこと

    この自動化を作るのに、コードを自分で書く必要はほとんどありませんでした。「毎日GA4のデータを取ってSlackのキャンバスに更新したい」という要件を伝えると、Claudeが必要な処理を組み立ててくれます。

    大事なのは「どんな数字を、どんな形で見たいか」を自分の言葉で整理することです。「CTA クリック数とセッション数の比率を出したい」「流入チャネルごとに直帰率を並べたい」といった要件が明確であれば、あとは実行してもらうだけです。

    さらに、「何を見れば意思決定に役立つか」を考えることで、多くの人が今悩まされている、AIトークンの消費を減らすことができます。

    まとめ

    毎日の確認作業を自動化したことで、数字を「見に行く」必要がなくなり、「気づいたことに集中する」時間が増えました。CTA配置の改善やGTMバグの発見も、仕組みがなければもっと後回しになっていたと思います。

    LPの運用を定常的にやっている方であれば、GA4とSlackの組み合わせは試してみる価値があります。一度作ってしまえば、あとは毎日勝手に動き続けてくれます。

    Claudeを使った広告集計、レポートについての相談はぜひRobomaまでお問い合わせください。


    この記事が参加している募集

    あなたへのおすすめ