xangi を Slack で使用するための App 作成手順。
Slack アカウントでログイン。
- 「Create New App」 をクリック
- 「From scratch」 を選択
- App Name:
xangi(任意の名前) - ワークスペースを選択
- 「Create App」 をクリック
xangi は Socket Mode で動作します(Webhook 不要)。
- 左メニュー 「Socket Mode」 をクリック
- 「Enable Socket Mode」 を ON
- App-Level Token を作成:
- Token Name:
xangi-socket - Scopes:
connections:write - 「Generate」 をクリック
- Token Name:
- 表示された App Token(xapp-...)をコピー
- 左メニュー 「Event Subscriptions」 をクリック
- 「Enable Events」 を ON
- 「Subscribe to bot events」 で以下を追加:
| Event | 説明 | 用途 |
|---|---|---|
app_mention |
メンションされた時 | 必須 |
message.im |
DM を受け取った時 | DM対応時 |
message.channels |
パブリックチャンネルのメッセージ | メンションなし応答時 |
message.groups |
プライベートチャンネルのメッセージ | メンションなし応答時 |
SLACK_AUTO_REPLY_CHANNELS を使う場合は message.channels / message.groups が必要です
- 左メニュー 「OAuth & Permissions」 をクリック
- 「Scopes」 → 「Bot Token Scopes」 で以下を追加:
| Scope | 説明 | 用途 |
|---|---|---|
app_mentions:read |
メンションの読み取り | 必須 |
chat:write |
メッセージ送信 | 必須 |
reactions:write |
リアクション追加(👀など) | 必須 |
im:history |
DM の履歴読み取り | DM対応時 |
im:read |
DM の読み取り | DM対応時 |
im:write |
DM の送信 | DM対応時 |
channels:history |
パブリックチャンネルの履歴読み取り | メンションなし応答時 |
groups:history |
プライベートチャンネルの履歴読み取り | メンションなし応答時 |
- 左メニュー 「Slash Commands」 をクリック
- 以下のコマンドを作成:
| Command | Description |
|---|---|
/new |
新しいセッションを開始 |
/skills |
利用可能なスキル一覧 |
/skill |
スキルを実行(Usage Hint: <スキル名> [引数]) |
- 左メニュー 「Install App」 をクリック
- 「Install to Workspace」 をクリック
- 権限を確認して 「許可する」
- 表示された Bot User OAuth Token(xoxb-...)をコピー
# .env を編集
vim .env# Slack Bot Token(xoxb-...)
SLACK_BOT_TOKEN=xoxb-your-bot-token
# Slack App Token(xapp-...)Socket Mode 用
SLACK_APP_TOKEN=xapp-your-app-token
# 許可するユーザー ID(Slack の User ID)
ALLOWED_USER=U01234567# ビルド
npm run build
# Docker で起動
docker compose up -d --build
# ログ確認
docker logs -f xangiSlack で以下を試す:
- Bot をメンション:
@xangi こんにちは! - DM を送信
/newコマンド/skillsコマンド
- ユーザーのプロフィールを開く
- 「︙」(その他)→ 「メンバーIDをコピー」
方法1: リンクから取得
- チャンネル名を右クリック → 「リンクをコピー」
- URLの末尾がチャンネルID:
https://xxx.slack.com/archives/C01234567←C01234567がID
方法2: チャンネル情報から取得
- チャンネルを開く → チャンネル名をクリック
- 一番下に チャンネルID が表示される
- Socket Mode が有効になっているか確認
- Event Subscriptions で
app_mention,message.imが設定されているか確認 - Bot がチャンネルに招待されているか確認(
/invite @xangi) ALLOWED_USERが Slack の User ID になっているか確認
- Slash Commands でコマンドが登録されているか確認
- アプリを再インストール(権限変更後は必要)
.env の SLACK_BOT_TOKEN と SLACK_APP_TOKEN が設定されているか確認。
- OAuth Scopes に
im:history,im:readがあるか確認 - Event Subscriptions で
message.imが設定されているか確認
Bot をチャンネルで使うには、チャンネルに招待する必要があります:
/invite @xangi
- トークンを Git にコミットしない(
.gitignoreに.envを追加済み) - トークンを公開しない(漏洩した場合は Slack App 設定で再生成)
ALLOWED_USERで使用できるユーザーを1人に制限(Claude Code 利用規約遵守)