OpenClaw Cronジョブ活用術:定期実行で自動化を極める

はじめに

OpenClawのCronジョブ機能を使うと、定期的なタスクを完全自動化できます。この記事では、Gmail監視やカレンダーリマインダーなど、実用的なCron活用例を紹介します。

OpenClaw Cronの特徴

OpenClawのCronは標準的なcrontabとは異なり、以下の特徴があります:

  • Isolated Session: メインセッションと独立した実行環境
  • AgentTurn: AIエージェントが自律的にタスクを実行
  • Delivery: 結果を特定のチャンネル(Telegram等)に配信
  • Silent Mode: 不要な通知を抑制

基本構文

systemEvent vs agentTurn

systemEvent(main session):

{
  "sessionTarget": "main",
  "payload": {
    "kind": "systemEvent",
    "text": "定期タスク実行"
  }
}

agentTurn(isolated session):

{
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "Gmail監視を実行してください"
  },
  "delivery": {
    "mode": "announce"
  }
}

実用例1: Gmail重要メール監視

15分ごとにGmailをチェックし、重要メールのみ通知します。

Cronジョブ設定

{
  "name": "Gmail重要メール監視",
  "schedule": {
    "kind": "every",
    "everyMs": 900000  // 15分 = 900秒 × 1000
  },
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "cd /Users/apple/.openclaw/workspace/gmail-watcher && source venv/bin/activate && python3 gmail_watcher.py --check --silent"
  },
  "delivery": {
    "mode": "announce"
  }
}

ポイント

  • --silent フラグで不要な出力を抑制
  • 重要メールがあった場合のみTelegramに通知
  • Isolated sessionなので、メインチャットを汚さない

実用例2: 会議30分前リマインダー

カレンダーをチェックし、30分以内に始まる予定を通知します。

Cronジョブ設定

{
  "name": "会議準備リマインダー(30分前)",
  "schedule": {
    "kind": "every",
    "everyMs": 900000  // 15分間隔でチェック
  },
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "cd ~/.openclaw/workspace/dash && bash calendar_integration.sh remind 30"
  },
  "delivery": {
    "mode": "announce"
  }
}

スクリプト内容(calendar_integration.sh)

#!/bin/bash

MINUTES=${1:-30}

# Google Calendar APIで30分以内の予定を取得
python3 << EOF
from google_calendar_api import get_upcoming_events
import datetime

now = datetime.datetime.now()
end_time = now + datetime.timedelta(minutes=$MINUTES)

events = get_upcoming_events(now, end_time)

if events:
    for event in events:
        print(f"📅 {event['summary']} が {event['start_time']} に始まります")
else:
    print("✅ 予定なし")
EOF

実用例3: Downloads週次整理

毎週日曜4時にDownloadsフォルダを自動整理します。

Cronジョブ設定

{
  "name": "Downloads週次整理",
  "schedule": {
    "kind": "cron",
    "expr": "0 4 * * 0",  // 毎週日曜 4:00 AM
    "tz": "Asia/Tokyo"
  },
  "sessionTarget": "isolated",
  "payload": {
    "kind": "agentTurn",
    "message": "cd ~/.openclaw/workspace && python3 downloads_organizer.py --run"
  },
  "delivery": {
    "mode": "announce"
  }
}

デバッグテクニック

Dry Run

本番実行前に動作確認します。

# 手動実行でテスト
cd ~/.openclaw/workspace/gmail-watcher
python3 gmail_watcher.py --check --silent

ログ確認

Cronジョブの実行ログはセッションファイルに記録されます。

# 直近のisolated session確認
ls -lt ~/.openclaw/agents/main/sessions/ | head -5
cat ~/.openclaw/agents/main/sessions/<session-id>.jsonl | jq .

エラーハンドリング

スクリプト内でエラーをキャッチし、適切に通知します。

try:
    check_gmail()
except Exception as e:
    print(f"⚠️ エラー発生: {e}")
    # Telegramに通知される

ベストプラクティス

1. Silent Modeを活用

不要な通知を抑制し、重要な情報のみ配信します。

if important_emails:
    print(f"📧 重要メール {len(important_emails)}件")
elif not silent:
    print("✅ 重要メールなし")

2. 実行間隔の調整

頻繁すぎる実行はAPI制限に抵触するリスクがあります。

  • Gmail監視: 15分(APIクォータを考慮)
  • カレンダー: 30分(急な予定変更に対応)
  • ファイル整理: 週1回(負荷分散)

3. 仮想環境の活用

Python依存パッケージは仮想環境で管理します。

source /path/to/venv/bin/activate && python3 script.py

まとめ

OpenClaw Cronを使うことで、定期的なチェック・通知・整理タスクを完全自動化できます。Isolated sessionとdelivery設定を適切に組み合わせることで、ノイズの少ない通知システムが実現できます。

関連記事:
– Gmail重要メール監視システム構築
– ダウンロードフォルダ整理・次世代版構想
– Python仮想環境共有テクニック