name: slack-notify
Slack Web API (chat.postMessage) を使ってチャネルにメッセージを送信するスキル。プロジェクト横断で利用可能。
# プロジェクトの .env.local に追加
SLACK_BOT_TOKEN=xoxb-xxxx-xxxx-xxxx
SLACK_NOTIFICATION_CHANNEL=C0XXXXXXXXX
Vercel 等のホスティングサービスにも同じ値を設定すること。
/Users/satokeita/.openclaw/openclaw.json → channels.slack.botToken| Scope | 用途 |
|---|---|
chat:write | メッセージ送信 |
chat:write.public | Bot が参加していないパブリックチャネルへの送信(任意) |
Slack デスクトップ/Web でチャネルを右クリック → 「チャネル詳細を表示」→ 最下部の「チャネル ID」をコピー。
用途に応じてパターンを選択し、lib/ 等に配置する。
| パターン | ファイル | 用途 |
|---|---|---|
| 1. シンプル通知 | scripts/notify-simple.ts | fire-and-forget 型、最小構成 |
| 2. チャネル指定付き | scripts/notify-channel.ts | 複数チャネルへの送り分け |
| 3. Block Kit リッチ | scripts/notify-rich.ts | 構造化された通知(Block Kit) |
| 4. curl(CI用) | scripts/notify.sh | シェルスクリプト / CI パイプライン |
| 5. Python | scripts/notify.py | Python プロジェクト用 |
設計ポイント(全パターン共通):
fetch のみ使用(追加ライブラリ不要、Python版は requests)catch(() => {}) で呼び出し元のエラーハンドリングを不要にプロジェクトに Slack 通知を追加する際の手順:
.env.local に SLACK_BOT_TOKEN と SLACK_NOTIFICATION_CHANNELlib/ 等に配置references/known-channels.mdreferences/api-chat-postmessage.mdnot_in_channel エラー: Botがチャネルに参加していない状態で送信すると発生する。chat:write.public スコープを追加するか、Botをチャネルに /invite @BotName で招待するtoken や channel が未設定の場合 return するだけなので、通知が届かなくても気づきにくい。本番環境で通知が来ない場合はまずVercel等のホスティング側の環境変数設定を確認するtext フィールド省略: blocks を指定しても text フィールドは必須(通知のフォールバック表示に使われる)。省略するとプッシュ通知に内容が表示されないchat.postMessage の channel パラメータにはチャネル名(#general)ではなくチャネルID(C0XXXXXXXXX)を使うこと。チャネル名でも動作する場合があるが、リネーム時に壊れる