なぜ「スケジュール自動化」がAIエージェントに必要なのか
前回のEp.5では、マルチエージェント設計について解説しました。複数のエージェントを効率よく協調させるための設計パターンを学びましたが、実際の運用では「いつ、どのタイミングでエージェントを動かすか」が極めて重要です。
SESエンジニアの日常業務を考えてみましょう。毎朝のメールチェック、週次の進捗レポート作成、月末の稼働報告書の生成——これらはすべて決まったタイミングで繰り返される定型業務です。OpenClawのcronジョブ機能を使えば、こうしたタスクを24時間365日、完全に無人で実行し続けることができます。

1. OpenClawのcronジョブとは
OpenClawのcronジョブは、Unix系OSの伝統的なcron(定期実行デーモン)の考え方をAIエージェントに応用した機能です。指定した時刻やインターバルで、エージェントに特定のタスクを自動実行させることができます。
基本的な仕組み
OpenClawのゲートウェイプロセスがスケジューラーとして機能し、設定されたスケジュールに基づいてエージェントセッションを起動します。各cronジョブは独立したセッションとして実行されるため、メインセッションの履歴やコンテキストに影響を与えません。
{
"agents": {
"my-agent": {
"crons": [
{
"name": "daily-report",
"schedule": "0 9 * * *",
"prompt": "今日のGA4レポートを作成してSlackに投稿してください",
"model": "anthropic/claude-sonnet-4-20250514"
}
]
}
}
}
cronスケジュール記法
OpenClawのcronスケジュールは、標準的なcron式(5フィールド)に準拠しています。
| フィールド | 値の範囲 | 説明 |
|---|---|---|
| 分 | 0-59 | 実行する分 |
| 時 | 0-23 | 実行する時(24時間表記) |
| 日 | 1-31 | 実行する日 |
| 月 | 1-12 | 実行する月 |
| 曜日 | 0-7 | 実行する曜日(0,7=日曜) |
よく使うパターン:
0 9 * * * → 毎日9:00
0 9 * * 1-5 → 平日9:00
*/30 * * * * → 30分おき
0 9 1 * * → 毎月1日の9:00
0 0 * * 0 → 毎週日曜0:00
2. cronジョブ vs ハートビート:適切な使い分け
OpenClawには定期実行の仕組みとして「cronジョブ」と「ハートビート」の2つがあります。どちらを使うべきかは、タスクの性質によって異なります。
ハートビートが適しているケース
- 複数のチェックをバッチ処理したい場合(メール+カレンダー+通知を1回のターンで確認)
- 直近の会話コンテキストが必要な場合
- タイミングに多少のずれが許容される場合(30分おき程度)
cronジョブが適しているケース
- 正確なタイミングが重要な場合(「毎週月曜9:00きっかり」など)
- メインセッションからの独立性が必要な場合
- タスクごとに異なるモデルやthinkingレベルを使いたい場合
- ワンショットのリマインダー(「20分後に教えて」)
- 結果を特定のチャンネルに直接配信したい場合
比較表
| 観点 | cronジョブ | ハートビート |
|---|---|---|
| 実行タイミング | 正確(cron式) | おおよそ(ポーリング間隔依存) |
| セッション | 独立セッション | メインセッション内 |
| 会話コンテキスト | なし(毎回新規) | あり(直近の会話を参照可能) |
| モデル指定 | 個別に設定可 | メインセッションのモデル |
| API呼び出し | タスクごとに1回 | バッチ処理で効率化 |
3. 実践:openclaw.json でのcronジョブ設定
基本設定
openclaw.jsonの各エージェント定義内にcronジョブを追加します。
{
"agents": {
"ses-base": {
"model": "anthropic/claude-sonnet-4-20250514",
"workspace": "workspace-ses-base",
"crons": [
{
"name": "ga4-daily-report",
"schedule": "0 8 * * *",
"prompt": "GA4の日次レポートを作成し、Slackに投稿してください。",
"model": "anthropic/claude-sonnet-4-20250514"
},
{
"name": "weekly-summary",
"schedule": "0 10 * * 1",
"prompt": "先週のブログ記事パフォーマンスを分析し、週次サマリーを作成してください。",
"model": "anthropic/claude-sonnet-4-20250514",
"thinking": "low"
}
]
}
}
}
設定パラメータの詳細
| パラメータ | 必須 | 説明 |
|---|---|---|
name | ✅ | ジョブの一意な識別名 |
schedule | ✅ | cron式でのスケジュール |
prompt | ✅ | エージェントに渡すプロンプト |
model | - | 使用するLLMモデル(省略時はエージェントのデフォルト) |
thinking | - | 思考レベル(off / low / medium / high) |
channel | - | 結果の出力先チャンネル |
ゲートウェイの再起動
cronジョブの設定を変更した後は、ゲートウェイを再起動して設定を反映させます。
openclaw gateway restart
4. SES現場で使える実践レシピ集
レシピ1:毎朝のメール&カレンダーダイジェスト
{
"name": "morning-digest",
"schedule": "0 8 * * 1-5",
"prompt": "以下を確認してSlackにダイジェストを投稿してください:\n1. 未読の重要メール(件名・送信者・要約)\n2. 今日のカレンダー予定\n3. 直近24時間のGitHub通知",
"model": "anthropic/claude-sonnet-4-20250514"
}
このレシピでは、平日の毎朝8時にエージェントが起動し、メール・カレンダー・GitHub通知を横断的にチェックしてSlackに要約を投稿します。SESエンジニアにとって、朝一番でその日の全体像を把握できるのは大きなメリットです。
レシピ2:ブログ記事の定期パフォーマンス分析
{
"name": "blog-performance",
"schedule": "0 9 * * 1",
"prompt": "GA4 APIを使って先週のブログ記事パフォーマンスを分析してください。PV数TOP10、流入元内訳、前週比の変化をmarkdown形式でまとめ、Slackに投稿してください。",
"model": "anthropic/claude-sonnet-4-20250514",
"thinking": "low"
}
レシピ3:月末の稼働時間レポート自動生成
{
"name": "monthly-timesheet",
"schedule": "0 18 28-31 * *",
"prompt": "今月の稼働実績をまとめ、請求書のドラフトを作成してください。Google Calendarから稼働時間を集計し、テンプレートに基づいて出力してください。",
"model": "anthropic/claude-opus-4-6",
"thinking": "medium"
}
月末の稼働報告は、SES事業において毎月必ず発生する業務です。カレンダーからの自動集計により、手作業によるミスや漏れを防ぎます。
レシピ4:セキュリティ監視の定期スキャン
{
"name": "security-scan",
"schedule": "0 3 * * *",
"prompt": "healthcheckスキルを使ってホストのセキュリティスキャンを実行してください。問題が見つかった場合はSlackに通知してください。問題がなければログファイルに記録のみでOKです。",
"model": "anthropic/claude-sonnet-4-20250514"
}
深夜3時に自動でセキュリティスキャンを実行し、異常があった場合のみSlackに通知するパターンです。セキュリティハードニングの記事で解説した内容と組み合わせることで、堅牢な運用体制を構築できます。
レシピ5:RSS/ブログの競合監視
{
"name": "competitor-watch",
"schedule": "0 12 * * *",
"prompt": "blogwatcherスキルで登録済みのSES関連ブログの新着記事をチェックし、キーワードに関連する記事があればSlackに通知してください。",
"model": "anthropic/claude-sonnet-4-20250514"
}
5. cronジョブの監視とデバッグ
ログの確認
cronジョブの実行結果は、OpenClawのセッションログに記録されます。問題が発生した場合は、ログを確認して原因を特定しましょう。
# 最近のcronジョブセッションを確認
ls -la ~/.openclaw/sessions/ | grep cron
# 特定のジョブのログを確認
cat ~/.openclaw/sessions/<session-id>/log.jsonl | jq '.content' | head -20
よくあるトラブルと対処法
ジョブが実行されない場合:
openclaw gateway statusでゲートウェイが起動しているか確認openclaw.jsonのJSON構文エラーがないか確認(jq . openclaw.json)- タイムゾーンの設定を確認(cronのスケジュールはホストのタイムゾーンに依存)
ジョブが途中で止まる場合:
- モデルのレート制限に達していないか確認
- APIキーの有効期限を確認
- プロンプトが曖昧すぎてエージェントが迷っていないか確認(プロンプトを具体的にする)
実行結果が期待と異なる場合:
- プロンプトに具体的な出力形式を指定する
thinkingパラメータを上げて推論品質を向上させる- 適切なモデルを選択する(コスト重視ならSonnet、品質重視ならOpus)
6. 高度なテクニック
条件付き実行パターン
cronジョブのプロンプト内で条件分岐を指示することで、状況に応じた柔軟な処理が可能です。
{
"name": "conditional-report",
"schedule": "0 17 * * 5",
"prompt": "今週のPV数を確認してください。前週比で10%以上増加している記事がある場合は、その記事の分析レポートを作成してSlackに投稿してください。特に変化がない場合は、簡潔なサマリーのみで構いません。"
}
チェーン実行(cronからサブエージェントを起動)
cronジョブ内でサブエージェントを起動することで、複雑なワークフローを実現できます。
{
"name": "content-pipeline",
"schedule": "0 6 * * 1",
"prompt": "以下の手順でコンテンツパイプラインを実行してください:\n1. GA4で先週のトレンドキーワードを分析\n2. サブエージェントを起動して記事の下書きを作成\n3. 下書きのレビューを行い、問題がなければ公開準備完了としてSlackに通知",
"model": "anthropic/claude-opus-4-6",
"thinking": "medium"
}
複数エージェント間の協調スケジューリング
マルチエージェント設計の記事で解説した複数エージェント構成と組み合わせることで、エージェント間の協調的なスケジューリングが可能になります。
{
"agents": {
"data-collector": {
"crons": [{
"name": "collect-data",
"schedule": "0 7 * * *",
"prompt": "各種データソースからデータを収集し、共有ディレクトリに保存してください。"
}]
},
"analyst": {
"crons": [{
"name": "analyze-data",
"schedule": "0 8 * * *",
"prompt": "共有ディレクトリのデータを分析し、レポートを作成してください。"
}]
}
}
}
データ収集エージェントが7時に動き、分析エージェントが8時に動くことで、時間差による協調処理を実現しています。
7. コスト管理とベストプラクティス
トークンコストの最適化
cronジョブは自動で実行されるため、気づかないうちにトークンコストが膨らむリスクがあります。以下のベストプラクティスを守りましょう。
- 適切なモデル選択: 定型的なレポート作成にはSonnet、複雑な分析にはOpusを使い分ける
- プロンプトの最適化: 不要なコンテキストを含めず、簡潔かつ具体的に指示する
- 実行頻度の見直し: 本当に毎日必要か?週次で十分ではないか?を定期的に見直す
thinkingレベルの調整: 単純なタスクにはoff、複雑なタスクにのみmedium以上を使用
運用チェックリスト
cronジョブを本番運用に投入する前に、以下のチェックリストを確認してください。
- プロンプトが具体的で曖昧さがないか
- スケジュールが意図通りか(タイムゾーンに注意)
- エラー時の通知先が設定されているか
- 月間のトークンコスト見積もりが予算内か
- ゲートウェイの自動起動が設定されているか(マシン再起動時)
まとめ
OpenClawのcronジョブ機能は、AIエージェントを**「聞いたら答えてくれるアシスタント」から「勝手に仕事を片付けてくれるチームメイト」へと進化**させる重要な機能です。
本記事で紹介した内容をまとめると:
- cronジョブの基本:
openclaw.jsonで簡単に設定でき、独立セッションとして実行される - ハートビートとの使い分け: 正確なタイミングが必要ならcron、バッチ処理ならハートビート
- 実践レシピ: 朝のダイジェスト、週次分析、月末レポート、セキュリティスキャン、競合監視
- 高度なテクニック: 条件付き実行、チェーン実行、マルチエージェント協調
- コスト管理: モデル選択、プロンプト最適化、実行頻度の見直し
SESエンジニアとして現場で求められる定型業務を自動化することで、より価値の高い創造的な仕事に集中できるようになります。ぜひOpenClawのcronジョブを活用して、24時間働くAIチームメイトを手に入れてください。
OpenClaw 完全攻略シリーズの他の記事もぜひご覧ください: