📚 この記事は「OpenClaw 完全攻略シリーズ」の Episode 14 です。
OpenClawの強みの一つが、Cronジョブによるタスクスケジュール自動化です。毎朝のレポート生成、定期的なデータバックアップ、SNS投稿の自動化など、繰り返しタスクをAIエージェントに任せることで、人間は本当に重要な仕事に集中できます。
本記事では、OpenClawのCronジョブ機能の設定方法から、Heartbeat機能との使い分け、SES現場で活用できる実践的なユースケースまでを徹底解説します。

OpenClaw Cronジョブとは
基本概念
OpenClawのCronジョブは、指定した時刻やスケジュールでAIエージェントのタスクを自動実行する仕組みです。Linux/macOSの cron と同じ概念ですが、実行されるのは「シェルコマンド」ではなく「AIエージェントへの指示(プロンプト)」です。
通常のcronとの違いを整理すると以下の通りです。
| 項目 | 通常のcron | OpenClaw Cron |
|---|---|---|
| 実行内容 | シェルコマンド | AIプロンプト |
| 柔軟性 | 固定のコマンド | 状況に応じた判断が可能 |
| エラー対応 | スクリプトで定義 | AIが自律的に対処 |
| 出力先 | ログファイル | Slack、Discord等 |
| 環境 | ローカルシステム | OpenClawエージェント |
ユースケース
Cronジョブが特に有効なのは以下のような場面です。
- 定時レポート: 毎朝のアクセスレポート、売上サマリー
- モニタリング: サーバー稼働状況の定期チェック
- データバックアップ: 定期的なデータエクスポート
- SNS運用: 投稿スケジュールの自動化
- リマインダー: 会議前の通知、タスク期限のアラート
Cronジョブの設定方法
openclaw.json での設定
Cronジョブは openclaw.json の cron セクションで定義します。
{
"agents": {
"my-agent": {
"workspace": "~/.openclaw/workspace-my-agent",
"cron": [
{
"name": "daily-report",
"schedule": "0 9 * * *",
"prompt": "今日のGA4レポートを生成してSlackに投稿してください",
"channel": "slack:C0AF55LV0B0"
}
]
}
}
}
スケジュール記法(cron式)
OpenClawのCronはLinux標準のcron式に準拠しています。
┌───────────── 分 (0-59)
│ ┌─────────── 時 (0-23)
│ │ ┌───────── 日 (1-31)
│ │ │ ┌─────── 月 (1-12)
│ │ │ │ ┌───── 曜日 (0-7, 0と7=日曜)
│ │ │ │ │
* * * * *
よく使うスケジュールパターンは以下の通りです。
| パターン | cron式 | 説明 |
|---|---|---|
| 毎朝9時 | 0 9 * * * | 平日・休日問わず |
| 平日9時 | 0 9 * * 1-5 | 月〜金のみ |
| 毎時0分 | 0 * * * * | 1時間ごと |
| 30分ごと | */30 * * * * | 30分間隔 |
| 毎週月曜10時 | 0 10 * * 1 | 週次レポートに |
| 月初1日9時 | 0 9 1 * * | 月次レポートに |
| 毎日21時 | 0 21 * * * | 日次サマリーに |
複数Cronジョブの設定例
{
"cron": [
{
"name": "morning-report",
"schedule": "0 8 * * 1-5",
"prompt": "GA4の昨日のアクセスデータを取得し、前日比・前週比を含むレポートをSlackに投稿してください",
"channel": "slack:C0AF55LV0B0"
},
{
"name": "weekly-summary",
"schedule": "0 10 * * 1",
"prompt": "先週のブログ記事のパフォーマンスをまとめ、改善提案を含むレポートを作成してください",
"channel": "slack:C0AF55LV0B0"
},
{
"name": "health-check",
"schedule": "*/30 * * * *",
"prompt": "サイトのヘルスチェックを実行し、異常があればアラートを送信してください",
"channel": "slack:C0AF55LV0B0"
},
{
"name": "backup-reminder",
"schedule": "0 18 * * 5",
"prompt": "週末前のバックアップリマインダーを送信してください",
"channel": "slack:C0AF55LV0B0"
}
]
}
設定の反映
Cronジョブの設定を変更した後は、ゲートウェイを再起動して反映します。
openclaw gateway restart
設定が正しく読み込まれたかは、以下のコマンドで確認できます。
openclaw gateway status
Heartbeat vs Cron:使い分けガイド
OpenClawには「Heartbeat」と「Cron」の2つの定期実行メカニズムがあります。これらの使い分けを理解することが重要です。
Heartbeatの特徴
Heartbeatは、メインセッションで定期的にポーリングする仕組みです。
- 実行コンテキスト: メインセッションの会話履歴が利用可能
- バッチ処理: 複数のチェックを1回のポーリングにまとめられる
- タイミング: おおよそ30分間隔(正確ではない)
- 用途: メール確認、カレンダーチェック、天気確認など
Cronの特徴
Cronは、独立したセッションで正確な時刻に実行されます。
- 実行コンテキスト: 独立セッション(メインセッションと分離)
- 精度: 分単位で正確なスケジュール
- モデル選択: タスクごとに異なるモデルを指定可能
- 用途: 定時レポート、バッチ処理、リマインダー
使い分けの判断基準
| 基準 | Heartbeat | Cron |
|---|---|---|
| タイミングの正確さ | ゆるくてOK | 分単位で正確 |
| メイン会話の文脈 | 必要 | 不要 |
| 実行頻度 | 2-4回/日 | 自由に設定 |
| セッション分離 | 不要 | 必要 |
| モデル指定 | メインと同じ | 個別指定可 |
| API消費 | バッチで効率的 | タスクごとに独立 |
実践的な使い分け例
Heartbeatに向いているタスク:
- 未読メールの確認(他のチェックとバッチ)
- カレンダーの今後の予定確認
- 天気チェック
- Git リポジトリのステータス確認
Cronに向いているタスク:
- 毎朝9:00のGA4レポート生成
- 毎週月曜のブログパフォーマンスレポート
- 20分後のリマインダー通知
- 月末の請求書作成タスク
実践ユースケース1:GA4日次レポートの自動化
設定例
{
"name": "ga4-daily-report",
"schedule": "0 8 * * *",
"prompt": "GA4プロパティ G-XXXXXXXXXX の昨日のデータを取得し、以下を含むレポートをSlackに投稿してください:\n1. 基本指標(ユーザー数・セッション・PV・エンゲージメント時間)\n2. 流入元詳細(チャネルグループ別 + 参照元/メディア別)\n3. ブログ記事TOP10(/articles/配下のPV順)\n4. 前日比・前週比の変動",
"channel": "slack:C0AF55LV0B0"
}
エージェントの動作フロー
- Cronがトリガーされ、新しいセッションが開始
- GA4 APIからデータを取得
- データを整形し、サマリーを生成
- 前日・前週のデータと比較
- Slackチャンネルにレポートを投稿
- セッション終了
実践ユースケース2:ブログコンテンツの自動監視
設定例
{
"name": "content-monitor",
"schedule": "0 10 * * 1",
"prompt": "以下のコンテンツ監視タスクを実行してください:\n1. 公開記事のリンク切れチェック\n2. 古い記事(6ヶ月以上未更新)のリスト作成\n3. パフォーマンスが低下している記事の検出\n4. 改善提案をSlackに投稿",
"channel": "slack:C0AF55LV0B0"
}
実践ユースケース3:サーバー・サービス監視
ヘルスチェックの自動化
{
"name": "health-check",
"schedule": "*/15 * * * *",
"prompt": "以下のエンドポイントのヘルスチェックを実行してください:\n- https://ses-base.com (200応答確認)\n- https://api.ses-base.com/health (ステータスチェック)\n異常があれば即座にSlackにアラートを送信してください。正常な場合は報告不要です。",
"channel": "slack:C0AF55LV0B0"
}
SSL証明書の有効期限監視
{
"name": "ssl-check",
"schedule": "0 9 * * 1",
"prompt": "ses-base.com のSSL証明書の有効期限を確認してください。残り30日以内の場合はSlackにアラートを送信してください。",
"channel": "slack:C0AF55LV0B0"
}
実践ユースケース4:SNS投稿の自動化
X(Twitter)の定期投稿
{
"name": "twitter-schedule",
"schedule": "0 12 * * 1-5",
"prompt": "今週公開したブログ記事の中からまだツイートしていないものを1つ選び、宣伝ツイートを投稿してください。ハッシュタグは #SES #エンジニア #プログラミング を含めてください。",
"channel": "twitter"
}
Cronジョブのデバッグとトラブルシューティング
ログの確認
Cronジョブの実行ログは、OpenClawのセッションログで確認できます。
# 最近のCronジョブ実行を確認
openclaw sessions list --label "cron:*"
よくある問題と対処法
問題1: Cronジョブが実行されない
# ゲートウェイが起動しているか確認
openclaw gateway status
# 設定ファイルのシンタックスエラーを確認
cat ~/.openclaw/openclaw.json | jq .
問題2: タイムゾーンのずれ
OpenClawのCronはシステムのタイムゾーンに従います。JSTで設定する場合、システムのタイムゾーンがAsia/Tokyoであることを確認してください。
# タイムゾーン確認
date +%Z
# → JST であることを確認
問題3: Cronジョブが重複実行される
同じ時刻に同じCronジョブが重複実行される場合は、前回のセッションが終了する前に次のトリガーが発火している可能性があります。スケジュール間隔を広げるか、実行時間の短縮を検討してください。
テスト実行
Cronジョブをスケジュール通りに待たずにテスト実行するには、同じプロンプトを手動で実行します。
openclaw run --agent my-agent --prompt "GA4の昨日のアクセスデータを取得し..."
高度な設定テクニック
モデルの指定
タスクの重要度や複雑さに応じて、Cronジョブごとにモデルを変更できます。
{
"name": "simple-check",
"schedule": "*/30 * * * *",
"prompt": "サイトのヘルスチェック",
"model": "anthropic/claude-sonnet-4-20250514"
}
コストを抑えたい定型チェックには軽量モデル、複雑な分析には高性能モデルを使い分けましょう。
条件付き実行
プロンプト内に条件分岐を記述することで、状況に応じた実行が可能です。
{
"name": "conditional-report",
"schedule": "0 9 * * *",
"prompt": "今日が月初(1日)の場合は月次レポートを生成してください。それ以外の日は日次レポートのみ生成してください。"
}
ワークスペースファイルの活用
Cronジョブからワークスペースのファイルを読み書きすることで、状態を持った自動化が実現できます。
{
"name": "trend-analysis",
"schedule": "0 9 * * 1",
"prompt": "memory/ga4-daily-log.md から過去7日分のデータを読み取り、トレンド分析を行ってください。結果を memory/weekly-trend.md に記録し、サマリーをSlackに投稿してください。"
}
SES業務での活用パターン
パターン1:SES案件の進捗管理自動化
{
"name": "project-status",
"schedule": "0 17 * * 5",
"prompt": "今週のGitコミット履歴とPRの状態を確認し、週次進捗レポートを生成してください。完了タスク・進行中タスク・ブロッカーを整理してSlackに投稿してください。"
}
パターン2:技術ブログの更新スケジュール管理
{
"name": "blog-schedule",
"schedule": "0 9 * * 1",
"prompt": "今週のブログ記事公開スケジュールを確認してください。下書きの進捗状況、予定されている公開日、必要なアクションをまとめてSlackに報告してください。"
}
パターン3:スキルアップ学習のリマインダー
{
"name": "learning-reminder",
"schedule": "0 8 * * 1-5",
"prompt": "今日の学習テーマを提案してください。AWS認定資格の学習進捗を確認し、次に学ぶべきトピックを1つ推奨してください。"
}
まとめ:Cronジョブで実現するプロアクティブなAI活用
OpenClawのCronジョブは、AIエージェントをリアクティブ(指示待ち)からプロアクティブ(自律的に行動)へと変える強力な機能です。
導入チェックリスト
- 最初のCronジョブ: 毎朝のGA4レポート or ヘルスチェックから始める
- Heartbeatとの整理: バッチ向きのタスクはHeartbeat、正確なスケジュールが必要なものはCron
- 段階的に拡張: 1つのCronが安定したら、次のユースケースを追加
- ログの確認: 定期的に実行ログを確認し、エラーがないか監視
- コスト管理: 高頻度のCronジョブはモデルコストに注意
関連記事
OpenClaw 完全攻略シリーズ一覧はこちら