- OpenClawのcronジョブとスキルを組み合わせて完全自動のレポート配信パイプラインを構築できる
- GA4・スプレッドシート・データベースなど複数データソースを統合した集計レポートが可能
- Slack・メール・ドキュメントなど配信先を柔軟にカスタマイズし、チーム全体の情報共有を効率化
「毎朝のレポート作成に30分かかっている」「月次レポートのデータ収集が手作業で辛い」——こうした悩みを抱えるSES現場は少なくありません。結論から言うと、OpenClawを使えば、複数データソースの集計からレポート生成・配信までを完全自動化できます。
この記事はOpenClaw活用シリーズの第36回として、レポート自動生成に特化した設計パターンとcronジョブの実装方法を解説します。
- OpenClawのcronジョブでレポートを定期自動生成する方法
- GA4のデータをAPI経由で自動取得・集計するテクニック
- Slack・メール・スプレッドシートへの配信パイプライン構築
- レポートテンプレートの設計とカスタマイズ方法
- エラーハンドリングとリトライ設計のベストプラクティス
OpenClawでレポートを自動化するメリット
従来のレポート作成の課題
多くのSES現場でレポート作成は手作業で行われています。
| 課題 | 影響 |
|---|---|
| データ収集に時間がかかる | GA4・DB・スプレッドシートを手動で確認 |
| フォーマット統一が難しい | 担当者によって品質がバラバラ |
| 配信忘れ | 毎日/毎週の作業が属人化 |
| 過去データとの比較が面倒 | 前月比・前年比の計算が手作業 |
OpenClawの自動化アーキテクチャ
OpenClawはcronジョブ × スキル × 外部API連携の3つの仕組みを組み合わせて、レポート自動化パイプラインを構築します。
[cronジョブ]
↓ 毎朝8:00に起動
[データ収集]
├── GA4 API → PV・セッション・流入元
├── Database → 売上・登録数
└── Spreadsheet → 予算・KPI目標
↓
[集計・分析]
├── 日次サマリー
├── 前日比・前週比の計算
└── 異常値検知
↓
[レポート生成]
├── Slack配信(リッチフォーマット)
├── メール配信
└── スプレッドシート更新
cronジョブの設定方法
基本的なcronジョブの定義
OpenClawのcronジョブはopenclaw.jsonで定義します。
{
"cron": [
{
"name": "daily-report",
"schedule": "0 8 * * *",
"timezone": "Asia/Tokyo",
"prompt": "日次レポートを生成してSlackに配信して。GA4データ・売上データ・KPI進捗を含めて。",
"channel": "slack:C0AF55LV0B0",
"model": "anthropic/claude-sonnet-4-20250514"
}
]
}
この設定により、毎朝8時(JST)に自動でレポートが生成・配信されます。cronジョブの基本についてはOpenClaw cronジョブスケジューリングガイドも参照してください。
週次・月次レポートの設定
{
"cron": [
{
"name": "weekly-report",
"schedule": "0 9 * * 1",
"timezone": "Asia/Tokyo",
"prompt": "先週の週次レポートを生成して。日次データの集約・トレンド分析・来週のアクションアイテムを含めて。"
},
{
"name": "monthly-report",
"schedule": "0 10 1 * *",
"timezone": "Asia/Tokyo",
"prompt": "先月の月次レポートを生成して。KPI達成率・前月比・前年同月比を含む詳細分析をお願い。"
}
]
}
GA4データの自動取得
GA4 APIとの連携
OpenClawからGA4 APIを呼び出してアクセスデータを取得する方法を解説します。
# GA4 Data API v1betaの呼び出し例
curl -X POST \
"https://analyticsdata.googleapis.com/v1beta/properties/${GA4_PROPERTY_ID}:runReport" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
"dateRanges": [{"startDate": "yesterday", "endDate": "yesterday"}],
"dimensions": [
{"name": "sessionDefaultChannelGroup"},
{"name": "sessionSource"},
{"name": "sessionMedium"}
],
"metrics": [
{"name": "sessions"},
{"name": "totalUsers"},
{"name": "screenPageViews"},
{"name": "averageSessionDuration"},
{"name": "bounceRate"}
]
}'
レポートデータの構造化
取得したGA4データをレポート形式に整形するワークフローを設計します。
# 日次レポートのテンプレート
## 📊 SES BASE 日次レポート({date})
### 基本指標
| 指標 | 今日 | 前日 | 前日比 |
|------|------|------|--------|
| ユーザー数 | {users} | {prev_users} | {diff}% |
| セッション数 | {sessions} | {prev_sessions} | {diff}% |
| PV数 | {pageviews} | {prev_pageviews} | {diff}% |
| 平均滞在時間 | {avg_duration} | {prev_duration} | {diff}% |
### 流入元内訳
| チャネル | セッション | 割合 |
|----------|-----------|------|
| Organic Search | {organic} | {pct}% |
| Direct | {direct} | {pct}% |
| Social | {social} | {pct}% |
| Referral | {referral} | {pct}% |
### 📈 注目ポイント
- {highlight_1}
- {highlight_2}

Slack配信のリッチフォーマット
Block Kit形式でのレポート配信
OpenClawのmessageツールを使って、Slackにリッチなレポートを配信します。
// OpenClawスキルでのSlack配信ロジック
const reportMessage = `
📊 *SES BASE 日次レポート(${date})*
*基本指標*
• ユーザー数: *${users}* (${usersDiff > 0 ? '📈' : '📉'} ${usersDiff}%)
• セッション: *${sessions}* (${sessionsDiff > 0 ? '📈' : '📉'} ${sessionsDiff}%)
• PV: *${pageviews}* (${pvDiff > 0 ? '📈' : '📉'} ${pvDiff}%)
*流入元TOP3*
1. ${topChannels[0].name}: ${topChannels[0].sessions}セッション
2. ${topChannels[1].name}: ${topChannels[1].sessions}セッション
3. ${topChannels[2].name}: ${topChannels[2].sessions}セッション
*ブログ記事TOP5*
${topArticles.map((a, i) => `${i+1}. ${a.title} (${a.pv} PV)`).join('\n')}
${anomalies.length > 0 ? `⚠️ *異常検知*\n${anomalies.join('\n')}` : '✅ 異常なし'}
`;
異常値検知とアラート
レポート生成時に異常値を自動検知し、通常のレポートに加えてアラートを送信する仕組みを構築できます。
# ワークスペース設定: レポート用のチェックリスト
## 異常検知ルール
- PVが前日比50%以上減少 → ⚠️ アラート
- エラーレート(4xx/5xx)が5%以上 → 🚨 緊急アラート
- 特定ページの応答時間が3秒超 → ⚠️ パフォーマンスアラート
- 新規登録数がゼロの日 → ⚠️ コンバージョンアラート
スプレッドシート連携
Google Sheets APIでの自動更新
OpenClawからGoogle Sheets APIを使って、レポートデータをスプレッドシートに自動書き込みできます。
OpenClaw設定例:
「gogツールを使ってスプレッドシートを更新して。
スプレッドシートID: {sheet_id}
シート名: 日次データ
書き込みデータ:
- A列: 日付
- B列: ユーザー数
- C列: セッション数
- D列: PV数
- E列: 平均滞在時間
- F列: 直帰率
最終行の次の行に追記して。」
この連携により、レポートデータが自動的にスプレッドシートに蓄積され、月次・四半期のトレンド分析にも活用できます。
マルチソースデータの統合
データベースとの連携
売上データやユーザー登録データなど、データベースからの情報も統合できます。
OpenClawプロンプト例:
「以下のデータソースを統合した日次レポートを生成して。
1. GA4: アクセスデータ(PV・セッション・流入元)
2. PostgreSQL: 売上データ(注文数・売上金額・客単価)
3. スプレッドシート: KPI目標値
各指標を前日比・目標比で評価し、アクションアイテムを3つ提案して。」
メモリファイルによるデータ蓄積
OpenClawのメモリ機能を使って、レポートデータを日次で蓄積し、週次・月次の集計に活用します。
# memory/ga4-daily-log.md
## 2026-03-16
- Users: 1,234 (+5.2%)
- Sessions: 1,856 (+3.1%)
- PV: 4,521 (+7.8%)
- Top Article: claude-code-guide (342 PV)
## 2026-03-15
- Users: 1,173 (-2.1%)
...
データ蓄積の設計についてはOpenClawメモリ管理ガイドも参考になります。
レポートテンプレートのカスタマイズ
ロール別テンプレート
受信者の役割に応じてレポートの粒度を変えることが重要です。
経営層向け(エグゼクティブサマリー):
## 📊 週次サマリー
- 売上: ¥{revenue}(目標比{pct}%)
- 新規リード: {leads}件
- 主要KPI: {status_emoji} {status}
- 今週のアクション: {action_items}
マーケティング担当向け:
## 📊 マーケティング週次レポート
- チャネル別流入詳細(前週比付き)
- コンテンツパフォーマンスTOP10
- SEOキーワードランキング変動
- 広告ROAS
- A/Bテスト結果
エンジニア向け:
## 📊 技術レポート
- インフラ稼働率: {uptime}%
- 平均応答時間: {latency}ms
- エラーレート: {error_rate}%
- デプロイ回数: {deploys}
- インシデント件数: {incidents}
エラーハンドリングとリトライ設計
API呼び出しの失敗対策
レポート生成パイプラインでは、外部APIの一時的な障害に対する耐性が重要です。
# エラーハンドリング戦略
1. リトライポリシー
- 最大3回リトライ
- Exponential backoff(1秒 → 2秒 → 4秒)
- レート制限(429)の場合はRetry-Afterヘッダーに従う
2. フォールバック
- GA4 APIが失敗 → 前日のキャッシュデータを使用
- DB接続が失敗 → スプレッドシートのバックアップデータを使用
- 全データソース失敗 → 管理者にアラート通知のみ
3. 部分的成功
- 一部データソースが取得できた場合はそのデータのみでレポート生成
- 取得できなかったデータソースは「データ取得失敗」と明記
実行ログの管理
cronジョブの実行結果を記録し、問題発生時に素早く原因を特定できるようにします。
{
"reportLog": {
"timestamp": "2026-03-16T08:00:15+09:00",
"status": "success",
"dataSources": {
"ga4": {"status": "ok", "latency": "1.2s"},
"database": {"status": "ok", "latency": "0.3s"},
"spreadsheet": {"status": "ok", "latency": "0.8s"}
},
"delivery": {
"slack": {"status": "ok", "channel": "C0AF55LV0B0"},
"email": {"status": "skipped", "reason": "not configured"}
}
}
}
エラーハンドリングの詳細はOpenClawエラーハンドリングガイドを参照してください。
SES現場での活用シナリオ
シナリオ1: 開発プロジェクトの進捗レポート
OpenClawプロンプト例:
「GitHub APIから以下の情報を取得して週次進捗レポートを生成して。
- 完了したIssue数
- マージされたPR数
- オープン中のバグ数
- スプリントバーンダウンチャート(テキスト版)
Slackの#project-statusチャンネルに配信して。」
シナリオ2: SESエンジニアの稼働レポート
OpenClawプロンプト例:
「以下のデータから月次稼働レポートを生成して。
- 出勤データ(スプレッドシート)
- プロジェクト別工数(Redmine/Jira API)
- スキルシート更新状況
エンジニアごとのサマリーと全体傾向を含めて。」
まとめ
OpenClawを使ったレポート自動生成は、SES現場の定型業務を大幅に効率化できる強力なソリューションです。
レポート自動化で押さえるべきポイント:
- cronジョブの定期実行で「毎朝手動でレポートを作成する」作業から解放される
- GA4・DB・スプレッドシートなど複数データソースを統合した横断的なレポートが可能
- 異常値の自動検知とアラート通知で問題の早期発見が実現する
- テンプレートのカスタマイズで受信者の役割に応じた最適な情報を配信する
- エラーハンドリングとリトライ設計で安定した自動化パイプラインを構築する
まずは日次レポートの自動化から始めて、段階的に週次・月次レポートへ拡張していきましょう。