第30回: 日報・週報の自動生成 — cronで定時レポートを作る
この回で学ぶこと
日報の自動生成設定(cronを使う方法)
週次サマリーの設定
レポートのフォーマット指定方法
前回のおさらい
前回、Googleカレンダーと連携し、予定の30分前にリマインドを自動送信する設定を行った。今回は別の自動化として、日報と週報の自動作成を設定する。
なぜ日報にはHeartbeatではなくcronを使うのか
第28回で学んだ通り、Heartbeatは「30分ごとの見回り」であり、特定の時刻に正確に動く仕組みではない。「毎晩22時に日報を送って」のような時刻指定のタスクは、cron(第19回で学んだタイマー予約)の出番になる。
おさらい:
Heartbeat: 30分ごとに巡回して異常を監視する「番犬」→ 予定リマインドや障害検知向き
cron: 決まった時刻に正確に実行する「目覚まし時計」→ 日報・週報のような定時タスク向き
日報を「毎日22時ちょうど」に生成したいなら、cronを使うのが正しい方法。
日報の自動生成
Part 4(第19回)で学んだ通り、秘書は1日を通してやりとりした内容を日次ノート(memory/YYYY-MM-DD.md)として記録している。この記録を毎晩22時に振り返らせて、日報を自動生成する。
設定方法:
ターミナルで以下のコマンドを実行する:
openclaw cron add \\\\
--name "日報" \\\\
--cron "0 22 * * *" \\\\
--tz "Asia/Tokyo" \\\\
--session isolated \\\\
--message "今日の日次ノート(memory/今日の日付.md)を読み返して、以下の形式でTelegramに日報を送ってください。
■ 今日やったこと(箇条書き3〜5個)
■ 明日やること(カレンダーの予定やMEMORY.mdから抽出)
■ メモ(気になった発言やアイデアがあれば)" \\\\
--announce \\\\
--channel telegram
各オプションの意味:
-name "日報": ジョブの名前(あとで管理しやすいように)-cron "0 22 * * *": 毎日22時00分に実行(cron式。第19回で学んだ書き方)-tz "Asia/Tokyo": 日本時間で指定-session isolated: メインの会話とは独立した環境で実行する(会話履歴を汚さない)-message "...": 秘書への指示内容-announce: 実行結果を通知する-channel telegram: 通知先をTelegramに指定
日報の出力例:
【日報 2026-03-06】
■ 今日やったこと
- プレゼン資料の第1稿を完成
- クライアントとの打ち合わせ(議事録あり)
- 新機能のリサーチ(3つの候補を比較)
■ 明日やること
- プレゼン資料の最終レビュー
- 14:00 チームミーティング
■ メモ
- クライアントが「納期を1週間前倒しできないか」と言及。要確認。
秘書がその日の記録を要約して構造化してくれるため、自分で日報を書く時間がゼロになる。前回設定したGoogleカレンダー連携が有効であれば、明日の予定もカレンダーから自動で取得される。
日報の精度について(条件あり):
日報の材料は
memory/YYYY-MM-DD.md(日次ノート)。秘書との会話が多い日ほど記録が充実し、日報の精度が上がる秘書と一切会話しなかった日は、記録がないため日報の中身が薄くなる(カレンダーの予定だけになる等)
-session isolatedを使っているため、メインの会話履歴は参照されない。日次ノートとMEMORY.mdが情報源になるGoogleカレンダー連携(第29回で設定)が有効であれば、「明日やること」にカレンダーの予定が自動で反映される
週次サマリーの設定
日報に加えて、週に1回のサマリーも自動生成できる。1週間分の日次ノートをまとめて、週の振り返りを作成する。
設定方法:
openclaw cron add \\\\
--name "週次サマリー" \\\\
--cron "0 20 * * 0" \\\\
--tz "Asia/Tokyo" \\\\
--session isolated \\\\
--message "今週の日次ノート(memory/ディレクトリの今週分のファイル)を読み返して、以下の形式でTelegramに週次サマリーを送ってください。
■ 今週の成果(箇条書き5〜7個)
■ 来週の目標(箇条書き3〜5個)
■ 学びや気づき(あれば)" \\\\
--announce \\\\
--channel telegram
"0 20 * * 0" は「毎週日曜日の20時」を意味する。
週次サマリーは日次ノートの蓄積に基づくため、毎日秘書と会話しているほどサマリーの精度が上がる。1ヶ月分の週次サマリーが揃えば、月次レビューの材料としても使える。
レポートのフォーマット指定
日報・週報のフォーマットは、cronの --message に書く指示内容で自由にカスタマイズできる。
カスタマイズの例:
箇条書きの数を変える: 「箇条書き3〜5個」→「箇条書き5〜10個」に変更
セクションを追加する: 「■ 課題・ボトルネック」セクションを追記
送信先を変える:
-channel telegram→-channel discordに変更ファイル保存を追加する: 指示に「レポートを
reports/YYYY-MM-DD.mdにも保存する」を追記
文体やトーンの指定:
レポートの文体を指定する方法は2つある:
cronの
-messageに直接書く: 「レポートは敬語で、簡潔に」と指示に含める。一番シンプルな方法SOUL.md(第12回で設定した人格ファイル)に書く: 「レポートは箇条書き中心で、1項目1行で完結させる」のようなスタイル指定をSOUL.mdに書いておけば、すべてのレポートに一貫して適用される
ただし条件がある:
cronで
-session isolatedを使っている場合、SOUL.mdは読み込まれる(ワークスペースのファイルは参照可能)ただし
lightContext: trueを設定している場合、SOUL.mdが読み込まれないため、文体指定がcronの-message内にしか効かなくなる特に設定を変えていなければ(デフォルト)、SOUL.mdは読み込まれるので気にしなくてOK
登録済みのcronジョブを確認・管理する
設定したcronジョブの一覧は以下で確認できる:
openclaw cron list
不要になったジョブの削除:
openclaw cron remove --name "日報"
一時的にジョブを止めたい場合:
openclaw cron disable --name "日報"
再開するとき:
openclaw cron enable --name "日報"
Heartbeatとcronの使い分け(まとめ)
ここまでPart 5〜6で両方の自動化を学んできたので、改めて整理する:
Heartbeat向きのタスク: 「異常がないか30分ごとにチェック」「カレンダーの予定が近づいたら通知」「ディスク容量が90%を超えたら警告」→ 常時監視・パトロール系
cron向きのタスク: 「毎朝7時にブリーフィング」「毎晩22時に日報」「毎週日曜に週報」→ 決まった時刻に1回だけ実行する系
迷ったときの判断基準: 「何時に動いてほしいか」が明確ならcron、「何かあったら教えて」ならHeartbeat。
ゴール状態
日報のcronジョブが登録されている(
openclaw cron listで確認できる)週次サマリーのcronジョブが登録されている
レポートのフォーマットをカスタマイズする方法を理解している
Heartbeatとcronの使い分けが説明できる