第28回: モーニングブリーフィング — 毎朝の自動配信
この回はレクチャー動画はありません。テキストのみとなります。
この回で学ぶこと
モーニングブリーフィングの設定方法
「1日1回だけ実行」を実現する方法
ブリーフィング内容のカスタマイズ
前回のおさらい
前回、HEARTBEAT.mdの仕組みと書き方を学び、通知先(target)と営業時間(activeHours)の設定方法を確認した。今回はこれを応用して、毎朝の「モーニングブリーフィング」を構築する。
モーニングブリーフィングとは
モーニングブリーフィングとは、毎朝決まった時間に秘書が自動で配信する情報パッケージのこと。朝起きてスマホを見るだけで、今日必要な情報がまとまっている状態を作る。
配信する情報の例:
今日と明日の天気予報
ニュースヘッドライン3本(ジャンルを指定可能)
今日のカレンダー予定(MEMORY.mdに書いてある予定)
「1日1回だけ」を実現する方法
ここで重要なことを先に伝える。前回の章で「1日1回だけ実行する」と書けば秘書がそのとおりにしてくれる、と思うかもしれない。しかし、Heartbeatには「今日もう実行したからスキップしよう」と判断する仕組みが内蔵されていない。
Heartbeatは30分ごとに動く。何も工夫しないと、朝の時間帯に何度もブリーフィングが送られてきてしまう。
これを防ぐ方法は2つある:
方法1: activeHoursの窓を狭くする(おすすめ)
openclaw.json の activeHours を30分幅にすると、Heartbeatがその時間帯に1回だけ動く。
{
"agents": {
"defaults": {
"heartbeat": {
"every": "30m",
"target": "telegram",
"activeHours": {
"start": "07:00",
"end": "07:30"
}
}
}
}
}
この設定なら、Heartbeatは7:00〜7:30の間に1回だけ動く。それ以外の時間はスキップされる。
ただし、この方法だとHeartbeat全体が朝しか動かなくなるので、「常時チェック」系のタスク(ディスク容量の監視など)は別途設定が必要になる。
方法2: Heartbeatではなくcron(クロン)を使う
実は、「毎朝7時ちょうどに1回だけ実行する」という用途には、Heartbeatよりもcronのほうが適している。
openclaw cron add --name "朝のブリーフィング" --cron "0 7 * * *" --tz "Asia/Tokyo" --message "天気予報・ニュースヘッドライン3本・今日の予定をまとめて簡潔に送って"
cronは「指定した時刻に、指定したメッセージを秘書に渡して実行させる」仕組み。Heartbeatとの違い:
Heartbeat — 30分ごとに繰り返しチェック。「監視・パトロール」向き
cron — 指定した時刻に1回だけ実行。「定時の仕事」向き
モーニングブリーフィングのような「毎朝1回の配信」はcron向き。「ディスク容量が90%超えたら警告」のような常時監視はHeartbeat向き。
この講座では方法1(activeHoursを狭める)で進める。 cronの詳細は公式ドキュメントに記載がある。
HEARTBEAT.mdの設定
前回作成したHEARTBEAT.mdを書き換える。
# Heartbeat タスク
## モーニングブリーフィング
- [ ] 以下の情報をまとめて簡潔な箇条書きで送信する:
- 今日と明日の天気予報(地域: 東京)
- ニュースヘッドライン3本(IT・ビジネス系)
- 今日の予定(MEMORY.mdに書いてある予定を参照)
書き方のポイント:
「地域: 東京」のように具体的な条件を書くと、秘書が迷わず実行できる
ニュースのジャンル指定も自然言語で書ける(「IT・ビジネス系」「スポーツ」「政治経済」など)
「簡潔な箇条書き」のようにフォーマット指定もできる。秘書はこの指示に従って出力する
インデント(字下げ)して書いた箇条書きは、秘書が「上の項目の詳細」として解釈する
openclaw.jsonの設定(方法1の場合):
{
"agents": {
"defaults": {
"heartbeat": {
"every": "30m",
"target": "telegram",
"activeHours": {
"start": "07:00",
"end": "07:30"
}
}
}
}
}
設定を保存したら openclaw gateway restart で再起動する。HEARTBEAT.mdの内容だけを変更した場合は再起動不要(次のtickで自動反映される)。
ニュースや天気を取得するための前提条件
HEARTBEAT.mdに「ニュースを調べて」「天気予報を送って」と書くだけでは、秘書がその情報を取りに行けない場合がある。
秘書がウェブ検索を使えるかどうかは、ツールやスキルの設定状況に依存する。
ウェブ検索ツール(
web_search)が有効 — OpenClawにはBrave Searchを使ったウェブ検索機能が組み込まれている。第6回で紹介したウェブ検索がそれ。有効になっていれば、天気もニュースも検索できる有効でない場合 — 秘書は「天気予報を調べたいのですが、ウェブ検索ツールが使えません」と返してくる
ウェブ検索が有効かどうかは、秘書に「ウェブ検索は使える?」と聞けば確認できる。
動作確認の方法
設定後すぐに動作を確認するには、CLIコマンドを使う:
openclaw heartbeat --dry-run
-dry-runは「実際にはチャネルに送信せず、結果だけ表示する」テストモード。ブリーフィングの内容が正しく生成されるか確認できる。
問題なければ、翌朝7時台にTelegramにブリーフィングが届く。
補足: Telegramで「今朝のブリーフィングを送って」と話しかけても、秘書は同じような情報をまとめて返してくれる。ただしこれはHeartbeatの自動実行ではなく、通常の会話として処理されている。自動配信のテストとは異なるので注意。
カスタマイズのヒント
モーニングブリーフィングの内容は自由にカスタマイズできる。HEARTBEAT.mdに追記・変更するだけ。
株価情報を追加 → 「日経平均株価と為替(ドル円)を含める」
英語ニュースを追加 → 「英語ニュースヘッドライン1本(BBC等)を含める」
配信時間を変更 →
openclaw.jsonのactiveHoursを変更(例:"start": "06:00", "end": "06:30")地域を変更 → 「地域: 東京」→「地域: 大阪」に変更
曜日限定にする → 「平日のみ実行する」を追記(AIが曜日を判断してスキップする)
HEARTBEAT.mdは設定ファイルだが、自然言語で書けるため、プログラミングの知識がなくてもカスタマイズできる。
まとめ
Heartbeatには「1日1回だけ」を保証する仕組みがないため、
activeHoursを30分幅にするか、cronを使うニュース・天気の取得にはウェブ検索ツールが有効になっている必要がある
HEARTBEAT.mdの内容変更は再起動不要。
openclaw.jsonの変更は再起動が必要openclaw heartbeat --dry-runでテストできる
ゴール状態
モーニングブリーフィングが設定されている
「1日1回だけ」を実現する方法を理解している
カスタマイズの方法を知っている
Heartbeat(監視向き)とcron(定時実行向き)の違いを理解している