
毎日の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までお問い合わせください。