投稿する
📚 OpenClaw基礎講座

# 第29回: Googleカレンダー連携 — 予定のリマインドを自動化する

この回で学ぶこと

  • Googleカレンダーとの連携方法

  • 予定ベースのリマインド設定

  • Heartbeatでカレンダーを監視するときの注意点


前回のおさらい

前回、モーニングブリーフィングを設定した。毎朝7時に天気・ニュース・予定がTelegramに届くようになった。今回はGoogleカレンダーと連携し、予定の直前にリマインドを自動送信する仕組みを作る。


Googleカレンダー連携の設定

OpenClawからGoogleカレンダーの予定を読み取るには、「スキル」と呼ばれる拡張機能のインストールが必要になる。

「スキル」の先取り説明: スキルとは、秘書に追加できる能力のこと。スマホにアプリを入れるのと同じ感覚で、秘書に新しい機能を追加できる。スキルの詳しい仕組みはPart 7(第32回〜)で学ぶが、今回はGoogleカレンダー用のスキルだけ先にインストールする。

ステップ1: ClawHubからスキルをインストール

まず、スキルの管理ツール(ClawHub CLI)をインストールする。ClawHubはOpenClaw公式のスキルマーケットプレイスで、13,000以上のスキルが公開されている。

ターミナルで以下を順番に実行する:

Dockerバージョン

docker compose exec -u root openclaw-gateway npm i -g clawhub
docker compose exec openclaw-gateway clawhub install gog

npmバージョン

npm i -g clawhub
clawhub install gog

1行目でClawHub CLIをインストールし、2行目で gog スキルをインストールしている。

gog はGoogle Workspace(Gmail、カレンダー、ドライブなど)と連携するための人気スキル。今回はカレンダー機能だけを使う。

注意: npmが入っていない場合: Node.jsをインストールすればnpmも一緒に入る。Node.jsのインストール方法は第3回で解説済み。

ステップ2: Googleアカウントとの認証

次に、秘書がGoogleカレンダーにアクセスする許可を与える。手順は少し多いが、一度だけやればOK。

Google Cloud Console側の設定:

  1. Google Cloud Console(https://console.cloud.google.com)にアクセスする

  2. 新しいプロジェクトを作成する(名前は何でもOK。例: 「OpenClaw」)

  3. 左メニューの「APIとサービス」→「ライブラリ」を開く

  4. 「Google Calendar API」を検索して、有効化する

  5. 「APIとサービス」→「認証情報」を開く

  6. 「認証情報を作成」→「OAuth 2.0 クライアントID」を選ぶ

  7. アプリケーションの種類は必ず**「デスクトップアプリ」**を選ぶ(「ウェブアプリケーション」ではない)

  8. 作成後、認証情報ファイル(JSONファイル)をダウンロードする

OpenClaw側の設定:

  1. ダウンロードしたJSONファイルを ~/.openclaw/credentials/ フォルダに置く

  2. ターミナルで認証を実行する:

Dockerバージョン

# 1. gog CLIをコンテナ内にインストール(初回のみ)
docker compose exec -u root openclaw-gateway sh -c 'curl -fsSL -L <https://github.com/steipete/gogcli/releases/download/v0.12.0/gogcli_0.12.0_linux_arm64.tar.gz> | tar xz -C /usr/local/bin gog'

# 2. 認証を実行
docker compose exec openclaw-gateway gog auth credentials /home/node/.openclaw/credentials/client_secret_xxxxx.json
docker compose exec openclaw-gateway gog auth add あなたのメールアドレス@gmail.com --services calendar

npmバージョン

gog auth credentials ~/.openclaw/credentials/client_secret_xxxxx.json
gog auth add あなたのメールアドレス@gmail.com --services calendar
  1. ブラウザが自動で開くので、Googleアカウントにログインしてアクセスを許可する

これで認証完了。パスワードがOpenClawに渡されることはなく、Googleアカウント側からいつでもアクセス権を取り消せる。トークンはローカルに保存され、自動で更新される。

うまくいかない場合のチェックリスト:

  • 認証情報ファイルのパスが間違っていないか

  • Calendar APIが有効化されているか(「有効なAPI」の一覧に表示されるか確認)

  • アプリケーションの種類を「ウェブアプリケーション」にしていないか(「デスクトップアプリ」が正解)

  • gog auth ではなく gog auth credentials + gog auth add の2ステップで実行しているか

#トラブルシューティング:Docker環境でのGoogle認証エラー
Docker環境で gog auth add を実行すると、Google認証後にブラウザが 127.0.0.1:34131
に接続できず、以下のエラーが表示されることがある:           

このサイトにアクセスできません
127.0.0.1 で接続が拒否されました。
ERR_CONNECTION_REFUSED

原因: OAuthのコールバック先がコンテナ内のポートを指しているため、Mac側のブラウザからアクセスできない。

解決方法: Mac側にgogを一時的にインストールし、トークンの保存先をコンテナのマウント先に向けて認証を行う。

# 1. Mac側にgogをインストール
brew install steipete/tap/gogcli

# 2. 保存先をコンテナと共有するディレクトリに指定して認証
GOG_CONFIG_DIR=/Users/あなたのユーザー名/my-secretary/config/gogcli gog auth credentials/Users/あなたのユーザー名/my-secretary/config/credentials/client_secret_xxxxx.json
GOG_CONFIG_DIR=/Users/あなたのユーザー名/my-secretary/config/gogcli gog auth addあなたのメールアドレス@gmail.com --services calendar

# 3. ブラウザが開くのでGoogleアカウントにログインして許可する
認証完了後は、コンテナ内のgogがトークンを参照できるため、以降はDocker経由で利用できる。

動作テスト

設定が正しく動作するか確認するための手順:

  1. Googleカレンダーに30分後の予定を1件入れる

  2. OpenClawのログを監視する(ターミナルで表示される)

  3. 次のHeartbeat実行時に、Telegramにリマインド通知が届くことを確認する

通知が届かない場合のチェック:

  • gog calendar list でカレンダーが読めるか確認する(認証の問題を切り分け)

  • OpenClawのログでエラーメッセージが出ていないか確認する

  • HEARTBEAT.mdの書き方に問題がないか確認する(チェックリスト形式になっているか)

  • Telegram通知の設定が有効か確認する(第26回で設定した openclaw.json の target)


ゴール状態

  • Googleカレンダーと連携できている(gog calendar list で予定が表示される)

  • テスト予定を入れて、Heartbeat経由でリマインド通知が届くことを確認済み

  • 重複通知の仕組みと限界を理解している