Claude CodeでGoogleカレンダーの予定を毎朝Slack通知する方法

Claude Code カレンダー通知のイメージ画像

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を端末で実行し、予定が取得できるか確認する

この記事の著者
川島陸

株式会社Nexa 代表取締役川島 陸

一橋大学経済学部卒業後、フォーティエンスコンサルティング株式会社(旧 株式会社クニエ)にて法人向けAI導入支援等を経験。独立後、AI系メディア運営やDify/n8nの導入支援を経て、株式会社Nexaを創業。法人向けAI研修・AI導入支援・AI関連メディア運営を手掛ける。

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.idDで始まるID)をcronジョブの送信先として使用します。


Claude Codeの設定方法でお困りの場合は、個別サポートをご利用いただけます。「どこから設定すればいいかわからない」という段階からご対応しています。

法人向け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"でもlastDeliveredfalseの場合、ジョブは実行されたが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.jsonscheduleフィールドを編集するか、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.jsondaily-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ジョブのエラーを解消したい」といった具体的な技術課題から、「どの業務を自動化すべきか」という戦略的な相談まで、幅広くご支援しています。

法人向けClaude Code個別指導の無料相談はこちら|まずはお困りごとをプロに相談 →



関連記事

AIの力で、ビジネスを次のステージへ

まずはお気軽にご相談ください。貴社に最適なAI活用プランをご提案します。

Claude Codeのプロに無料相談 30秒で日程調整完了