gog gmail watch serve -> OpenClaw webhook。
前提条件
gcloudがインストール済みで、ログイン済みであること(install guide)。gog(gogcli)がインストール済みで、対象の Gmail アカウントに対して認可済みであること(gogcli.sh)。- OpenClaw で hooks が有効になっていること(webhook を参照)。
tailscaleにログイン済みであること(tailscale.com)。サポート対象の構成では、公開 HTTPS エンドポイントに Tailscale Funnel を使用します。 他のトンネルサービスでも動作する場合がありますが、DIY かつサポート対象外で、手動での設定が必要です。 現時点でサポートしているのは Tailscale です。
deliver と必要に応じて channel/to を設定したマッピングでプリセットを上書きします。
channel と to を設定します。そうでない場合、channel: "last" は最後に使われた配信ルートを使用します(フォールバック先は WhatsApp です)。
Gmail 実行時により低コストなモデルを使わせたい場合は、マッピングで model を設定します(provider/model またはエイリアス)。agents.defaults.models を強制している場合は、その許可リストにも含めてください。
Gmail hooks 専用のデフォルトモデルと思考レベルを設定するには、設定に hooks.gmail.model / hooks.gmail.thinking を追加します。
- マッピング内のフック単位の
model/thinkingは、これらのデフォルトを引き続き上書きします。 - フォールバック順は
hooks.gmail.model→agents.defaults.model.fallbacks→ プライマリです(認証エラー、レート制限、タイムアウト時)。 agents.defaults.modelsを設定している場合、Gmail 用モデルは許可リストに含まれている必要があります。- Gmail hook の内容は、デフォルトで外部コンテンツ安全境界でラップされます。
無効化する場合(危険です)は、
hooks.gmail.allowUnsafeExternalContent: trueを設定してください。
hooks.mappings を追加するか、~/.openclaw/hooks/transforms 配下に JS / TS の transform モジュールを置いてください(webhook を参照)。
ウィザード(推奨)
OpenClaw のヘルパーを使うと、全体をまとめて配線できます(macOS では依存関係を brew 経由でインストールします)。- 公開プッシュエンドポイントには Tailscale Funnel を使用します。
openclaw webhooks gmail run用のhooks.gmail設定を書き込みます。- Gmail hook プリセットを有効化します(
hooks.presets: ["gmail"])。
tailscale.mode が有効な場合、OpenClaw は自動的に hooks.gmail.serve.path を / に設定し、公開パスは hooks.gmail.tailscale.path(デフォルトは /gmail-pubsub)に保持します。これは、Tailscale がプロキシ前に set-path プレフィックスを取り除くためです。
バックエンド側でプレフィックス付きパスを受け取る必要がある場合は、hooks.gmail.tailscale.target(または --tailscale-target)を http://127.0.0.1:8788/gmail-pubsub のような完全な URL に設定し、hooks.gmail.serve.path と一致させてください。
カスタムエンドポイントを使いたい場合は、--push-endpoint <url> または --tailscale off を使用します。
プラットフォームに関する注意: macOS では、ウィザードが gcloud、gogcli、tailscale を Homebrew 経由でインストールします。Linux では、事前に手動でインストールしてください。
ゲートウェイの自動起動(推奨):
hooks.enabled=trueかつhooks.gmail.accountが設定されている場合、ゲートウェイは起動時にgog gmail watch serveを開始し、watch を自動更新します。- 自動起動を無効にするには
OPENCLAW_SKIP_GMAIL_WATCHER=1を設定します(自分でデーモンを実行する場合に便利です)。 - 手動デーモンと同時に実行しないでください。
listen tcp 127.0.0.1:8788: bind: address already in useが発生します。
gog gmail watch serve を起動し、自動更新も行う):
初回セットアップ
gogが使用する OAuth クライアントを所有している GCP プロジェクトを選択します。
- API を有効化します。
- トピックを作成します。
- Gmail プッシュに publish 権限を付与します。
watch を開始する
history_id は保存しておいてください(デバッグ時に使います)。
プッシュハンドラーを実行する
ローカルでの例(共有トークン認証):--tokenはプッシュエンドポイントを保護します(x-gog-tokenまたは?token=)。--hook-urlは OpenClaw の/hooks/gmailを指します(マッピング済み。分離実行と main への要約を行います)。--include-bodyと--max-bytesは、OpenClaw に送られる本文スニペットを制御します。
openclaw webhooks gmail run は同じフローをラップし、watch も自動更新します。
ハンドラーを公開する(上級者向け、サポート対象外)
Tailscale 以外のトンネルが必要な場合は、手動で配線し、プッシュサブスクリプションに公開 URL を設定してください(サポート対象外で、ガードレールもありません)。テスト
監視対象の受信トレイにメッセージを送信します。トラブルシューティング
Invalid topicName: プロジェクトが一致していません(トピックが OAuth クライアントのプロジェクト内にありません)。User not authorized: トピックにroles/pubsub.publisherが付与されていません。- メッセージが空: Gmail プッシュが提供するのは
historyIdのみです。gog gmail historyで取得してください。