𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
OpenClaw Cronジョブ完全ガイド|タスクスケジュール自動化の実践

OpenClaw Cronジョブ完全ガイド|タスクスケジュール自動化の実践

OpenClawcronタスクスケジュール自動化AIツール自動化
目次

📚 この記事は「OpenClaw 完全攻略シリーズ」の Episode 14 です。

OpenClawの強みの一つが、Cronジョブによるタスクスケジュール自動化です。毎朝のレポート生成、定期的なデータバックアップ、SNS投稿の自動化など、繰り返しタスクをAIエージェントに任せることで、人間は本当に重要な仕事に集中できます。

本記事では、OpenClawのCronジョブ機能の設定方法から、Heartbeat機能との使い分け、SES現場で活用できる実践的なユースケースまでを徹底解説します。

OpenClaw Cronジョブの仕組みと活用パターン

OpenClaw Cronジョブとは

基本概念

OpenClawのCronジョブは、指定した時刻やスケジュールでAIエージェントのタスクを自動実行する仕組みです。Linux/macOSの cron と同じ概念ですが、実行されるのは「シェルコマンド」ではなく「AIエージェントへの指示(プロンプト)」です。

通常のcronとの違いを整理すると以下の通りです。

項目通常のcronOpenClaw Cron
実行内容シェルコマンドAIプロンプト
柔軟性固定のコマンド状況に応じた判断が可能
エラー対応スクリプトで定義AIが自律的に対処
出力先ログファイルSlack、Discord等
環境ローカルシステムOpenClawエージェント

ユースケース

Cronジョブが特に有効なのは以下のような場面です。

  • 定時レポート: 毎朝のアクセスレポート、売上サマリー
  • モニタリング: サーバー稼働状況の定期チェック
  • データバックアップ: 定期的なデータエクスポート
  • SNS運用: 投稿スケジュールの自動化
  • リマインダー: 会議前の通知、タスク期限のアラート

Cronジョブの設定方法

openclaw.json での設定

Cronジョブは openclaw.jsoncron セクションで定義します。

{
  "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は、独立したセッションで正確な時刻に実行されます。

  • 実行コンテキスト: 独立セッション(メインセッションと分離)
  • 精度: 分単位で正確なスケジュール
  • モデル選択: タスクごとに異なるモデルを指定可能
  • 用途: 定時レポート、バッチ処理、リマインダー

使い分けの判断基準

基準HeartbeatCron
タイミングの正確さゆるくて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"
}

エージェントの動作フロー

  1. Cronがトリガーされ、新しいセッションが開始
  2. GA4 APIからデータを取得
  3. データを整形し、サマリーを生成
  4. 前日・前週のデータと比較
  5. Slackチャンネルにレポートを投稿
  6. セッション終了

実践ユースケース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エージェントをリアクティブ(指示待ち)からプロアクティブ(自律的に行動)へと変える強力な機能です。

導入チェックリスト

  1. 最初のCronジョブ: 毎朝のGA4レポート or ヘルスチェックから始める
  2. Heartbeatとの整理: バッチ向きのタスクはHeartbeat、正確なスケジュールが必要なものはCron
  3. 段階的に拡張: 1つのCronが安定したら、次のユースケースを追加
  4. ログの確認: 定期的に実行ログを確認し、エラーがないか監視
  5. コスト管理: 高頻度のCronジョブはモデルコストに注意

関連記事


OpenClaw 完全攻略シリーズ一覧はこちら

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修