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仮想環境共有テクニック