Claude CodeのcronジョブとgogcliでGoogleカレンダーの予定を毎朝Slackに自動通知できます。
- 要点1: gogcliの
gog calendar events --today --allコマンドで当日の予定を取得できる - 要点2: OpenClawのcronジョブ(
0 9 * * *)で毎日9:00に自動実行、約36秒で完了 - 要点3: announce配信の代わりにSlack APIを直接呼び出す設定で、Slack DMへの安定配信を実現
対象: OpenClawを利用中のビジネスパーソン・経営者・DX推進担当者
今日やること: gog calendar events --today --allを端末で実行し、予定が取得できるか確認する
この記事の目次
Claude Code(OpenClaw)のcronジョブとgogcliを組み合わせることで、Googleカレンダーの今日の予定を毎朝自動的にSlack DMへ通知できます。
「毎朝カレンダーを開くのが手間」「会議のリンクをその都度探している」——そうした小さなストレスを、AIを使った自動化で一度に解消できます。
この記事では、あるメディアサイトの運営者が実際に構築した手順をもとに、AWSやGASなど外部サービスを使わず、すでに動いているOpenClawの環境だけで完結する設定方法を解説します。
完成イメージ — 毎朝Slackに届く予定通知
まず、この仕組みで何が実現するかを具体的にお伝えします。
実際のSlack通知のフォーマット例
毎朝9:00になると、SlackのDMに以下のようなメッセージが届きます。
📅 今日の予定(2026年3月26日 木曜日)- 10:00〜10:30 営業チーム定例(Google Meet付き)- 13:00〜14:00 クライアント打ち合わせ(https://meet.google.com/xxx-xxx-xxx)- 15:00〜15:30 社内企画会議
予定の時刻・タイトル・MeetリンクがSlack DM上でまとめて確認できます。予定がない日は「本日の予定はありません」と通知されるため、無駄なアラートが発生しません。
あるメディアサイトの運営者は、この仕組みを導入したことで「毎朝のカレンダー確認」という習慣的な作業を完全にゼロにしました。会議への遅刻や見落としも減り、午前中の業務集中度が体感で高まったと話しています。
この仕組みの構成
| 要素 | 役割 |
|---|---|
| gogcli | Google Calendarからの予定取得CLIツール |
| OpenClaw cron | 定時実行(毎日9:00)のスケジューラ |
| Slack API(curl) | Slack DMへのメッセージ送信 |
外部のサーバーやクラウドサービスは不要です。OpenClawがPCで動いていれば、同じ環境に重ね合わせるだけで完成します。
前提条件と必要なツール
本記事の手順を実行する前に、以下の環境が整っていることを確認してください。
必要なもの一覧
| ツール | 状態 |
|---|---|
| OpenClaw | インストール済み、Gatewayが起動中 |
| gogcli | インストール済み、Googleアカウント認証済み |
| Slackワークスペース | 利用中のワークスペースがある |
| Slack Bot Token | 発行済み(xoxb-で始まるトークン) |
gogcliのインストール・認証がまだの方は、[gogcli入門 — Claude CodeからGoogle Workspaceを丸ごと操作する]を先にご確認ください。
gogcliの基本動作確認
まず、端末で以下のコマンドを実行して、Googleカレンダーへの接続が正常に動作するか確認します。
gog calendar events --today --all
今日の予定がリスト表示されれば準備完了です。予定が1件もない場合でも、エラーが出なければOKです。
ポイント
--allオプションは、複数のカレンダー(仕事用・個人用など)をまとめて取得するオプションです。特定のカレンダーのみを対象にしたい場合は、--calendar=カレンダーIDで絞り込めます。
\ Claude Codeの導入、何から始めればいいかわかります /
法人向けClaude Code個別指導の無料相談はこちらステップ1 — gogcliでカレンダー取得の動作確認
cronジョブ作成の前に、エージェントが実際に実行するコマンドを手動で試して動作確認します。
コマンドの実行
gog calendar events --today --all
出力例は以下のとおりです。
2026-03-26 10:00〜10:30 营業チーム定例 場所: Google Meet (https://meet.google.com/xxx-yyy-zzz)2026-03-26 13:00〜14:00 クライアント打ち合わせ 場所: Zoom (https://zoom.us/j/123456789)
出力内容の確認ポイント
| 確認項目 | 意味 |
|---|---|
| 予定の時刻 | 正しいタイムゾーン(JST)で表示されているか |
| 予定名 | 実際のカレンダー上の名前と一致しているか |
| MeetリンクURL | 会議URLが含まれているか |
コマンドが正常に動作することを確認できたら、次のステップに進みます。
ステップ2 — OpenClawのcronジョブを作成する
OpenClawのcronジョブは、~/.openclaw/cron/jobs.jsonファイルに定義を追加することで設定できます。Claude Codeに指示するだけで、このファイルを自動的に生成・更新してくれます。
cronジョブの基本設定
実際に動作したcronジョブの定義は以下のとおりです。
{ "id": "daily-calendar-notify", "name": "毎朝カレンダー通知", "schedule": "0 9 * * *", "enabled": true, "model": "haiku", "timeout": 120, "deliveryMode": "none", "message": "gog calendar events --today --allを実行して今日の予定を取得し、curlでSlack APIを使って私のDMに通知してください。..."}
設定項目の解説
| 項目 | 設定値 | 意味 |
|---|---|---|
schedule |
0 9 * * * |
毎日9:00(JST)に実行 |
model |
haiku |
軽量モデル。カレンダー取得のようなシンプルなタスクに最適 |
timeout |
120 |
最大120秒で完了しなければ中断 |
deliveryMode |
none |
OpenClawの内部通知を使わない(後述の理由による) |
cronスケジュール記法の読み方
0 9 * * *は以下の意味を持ちます。
分 時 日 月 曜日0 9 * * *
0: 0分(ちょうど)9: 9時*: 毎日*: 毎月*: 曜日に関わらず
平日のみ(月〜金)に限定したい場合は、0 9 * * 1-5と設定します。
モデル選択のコツ
カレンダー取得とSlack通知という比較的シンプルなタスクには、haikuなどの軽量モデルで十分です。実際に試したケースでは、実行開始から完了まで約36秒で処理が完了しました。コスト効率と速度の両面で、軽量モデルの使用が推奨されます。
\ 業務自動化のお悩み、プロが30分で整理します /
法人向けClaude Code個別指導の無料相談はこちらステップ3 — Slack通知の設定(announce配信の落とし穴と解決策)
ここが最もトラブルが起きやすいポイントです。OpenClawのannounce機能でSlackへの通知を設定しても、Slack DMへの配信が失敗するケースがあります。
announce配信が失敗する原因
OpenClawのannounce配信でよく発生するエラーは以下の2種類です。
| エラー | 原因 |
|---|---|
channel_not_found |
DMチャンネルIDがまだ開かれていない、またはIDがdm:ユーザーID形式で誤って指定されている |
user_not_found |
チャンネルIDとユーザーIDが混在している |
あるメディアサイトの運営者が実際に経験したケースでも、announce配信を設定したものの、3日間にわたりSlack DMへの通知が届かないという問題が発生しました。ゲートウェイのログを確認すると、not-deliveredのエラーが繰り返し記録されていました。
Slack APIの直接呼び出しに切り替える
解決策は、エージェント自身がcurlコマンドを使ってSlack APIを直接呼び出す方式に変更することです。
cronジョブのmessageに以下のような指示を含めます。
gog calendar events --today --allで今日の予定を取得してください。取得後、以下のcurlコマンドでSlack DMに送信してください:curl -X POST https://slack.com/api/chat.postMessage \ -H "Authorization: Bearer [SLACK_BOT_TOKEN]" \ -H "Content-Type: application/json" \ -d '{ "channel": "[SLACK_DM_CHANNEL_ID]", "text": "📅 今日の予定\n[取得した予定のリスト]" }'
Slack DM用チャンネルIDの取得方法
Slack APIで自分へのDMを送るには、ユーザーIDではなくDMチャンネルIDが必要です。
# Slack APIでDMチャンネルIDを確認curl -X POST https://slack.com/api/conversations.open \ -H "Authorization: Bearer xoxb-[YOUR_BOT_TOKEN]" \ -H "Content-Type: application/json" \ -d '{"users": "[YOUR_USER_ID]"}'
レスポンスのchannel.id(Dで始まるID)をcronジョブの送信先として使用します。
Claude Codeの設定方法でお困りの場合は、個別サポートをご利用いただけます。「どこから設定すればいいかわからない」という段階からご対応しています。
ステップ4 — テスト実行と動作確認
設定が完了したら、実際に動くかどうかをテスト実行で確認します。
手動でcronジョブを即時実行する方法
OpenClawのcronジョブは、スケジュール時刻を待たずに手動でテスト実行できます。OpenClaw CLIから以下のコマンドを実行します。
openclaw cron run daily-calendar-notify
または、OpenClawのAPI経由でも実行可能です。
実行ログの確認方法
実行後、~/.openclaw/cron/runs/フォルダ内に実行ログが保存されます。以下の項目を確認します。
| 確認項目 | 正常時の値 |
|---|---|
lastRunStatus |
"ok" |
lastDelivered |
true |
lastDeliveryStatus |
"delivered" |
lastRunStatusが"ok"でもlastDeliveredがfalseの場合、ジョブは実行されたがSlackへの配信だけが失敗しています。ステップ3の「Slack APIの直接呼び出し」設定を再確認してください。
実際に届いたSlack通知の例
あるメディアサイトの運営者が確認した実際のSlack DMメッセージは以下のとおりです。
📅 今日の予定(2026年3月2日 月曜日)- 11:00〜11:30 AIスクール | 講座開発チーム 定例 ✅ 終了済み- 15:00〜16:00 【初心者様歓迎・AI×業務効率化】相談室(Google Meet付き)
会議の開始時刻とタイトル、さらにMeetリンクの情報がSlack DM上でまとめて確認できます。朝の業務開始前にSlackを確認するだけで、1日のスケジュールを把握できる状態になります。
\ AI活用の「次の一手」を一緒に考えませんか /
法人向けClaude Code個別指導の無料相談はこちらよくある質問
Q. gogcliのSlack通知でannounceが届かない場合は?
OpenClawのannounce配信は、SlackのチャンネルIDやユーザーIDの指定形式によってはchannel_not_foundエラーが発生することがあります。ゲートウェイのログ(~/.openclaw/logs/gateway.log)でエラー内容を確認し、ステップ3で説明したcurl + Slack API直接呼び出しの方式に切り替えることをお勧めします。
Q. 毎朝の通知を平日(月〜金)だけに限定できますか?
cronのスケジュール設定を0 9 * * *(毎日)から0 9 * * 1-5(月曜から金曜)に変更するだけで対応できます。jobs.jsonのscheduleフィールドを編集するか、Claude Codeに「平日だけ通知するように変更して」と指示すれば自動的に設定されます。
Q. 通知するカレンダーを特定のカレンダーだけに絞れますか?
gogcliのコマンドに--calendar=カレンダーIDオプションを追加することで、取得対象のカレンダーを限定できます。カレンダーIDはgog calendar listコマンドで確認できます。仕事用のカレンダーのみ通知し、個人の予定は除外したい場合などに活用できます。
Q. 会議の15分前にもリマインド通知を送れますか?
現在の構成(1日1回の定時通知)とは別に、もう1つのcronジョブを追加することで実現できます。ただし、予定の時刻によって実行タイミングが変わるため、設定は複雑になります。まずは毎朝の一覧通知から始め、慣れてきたら機能を拡張することをお勧めします。
まとめ
Claude CodeのcronジョブとgogcliでGoogleカレンダーを自動通知する仕組みは、以下の4ステップで構築できます。
| ステップ | 内容 |
|---|---|
| ① gogcliの動作確認 | gog calendar events --today --allで予定取得を確認 |
| ② cronジョブの作成 | jobs.jsonにdaily-calendar-notifyジョブを定義 |
| ③ Slack通知の設定 | curl + Slack APIでDMに直接送信する方式を採用 |
| ④ テスト実行 | ログでlastRunStatus・lastDeliveredを確認 |
AWS LambdaやGASを使わず、OpenClawが動いているPCだけで完結できる点がこのアプローチの強みです。毎朝の予定確認という習慣的なルーティンをAIに任せることで、業務開始直後の集中力を本来の仕事に向けられるようになります。
gogcliはカレンダー以外にも、Gmail・Drive・Contactsなど10以上のGoogle Workspaceサービスに対応しています。今回の仕組みを応用すれば、「未読の重要メールを毎朝Slackで通知」「Driveの特定フォルダに追加されたファイルを通知」といった自動化もClaude Codeの指示だけで構築できます。
Claude Codeの導入・活用をサポートします
株式会社Nexaでは、Claude Codeを活用した業務自動化の個別指導・企業研修を提供しています。「gogcliの認証設定がうまくいかない」「cronジョブのエラーを解消したい」といった具体的な技術課題から、「どの業務を自動化すべきか」という戦略的な相談まで、幅広くご支援しています。





