4b. 入口を Slack にする場合¶
🤝 はじめる前に — 詰まったときに聞ける相手を作ります
この章は、チャットAI(ChatGPT・Claude など)をサポート役に付けてから始めてください。 詰まったときに、画面のスクリーンショットを貼るだけで、どこで止まっているかを見てくれます。
| やること | |
|---|---|
| 1 | 📄 support_04b_slack.txt を開く(リンクを右クリック →「名前を付けて保存」でも構いません) |
| 2 | ChatGPT か Claude で、新しい会話を1つ開く |
| 3 | そのファイルを添付する。添付が面倒なら、開いた画面を Ctrl+A → Ctrl+C で全部コピーして貼るでも同じです |
| 4 | 送ると、この工程で何をするのかを3行で返してきます |
| 5 | その会話は開いたままにして、この章を進める。詰まったらスクリーンショットを貼る |
🔴 トークン・パスワード・鍵は、チャットに貼らないでください。 スクリーンショットに写り込むことがあります。送る前に、画面にそれらが出ていないか見てください。 貼ってしまっても、どれも作り直せます。慌てず、作り直してください。
📋 そのファイルに何が書いてあるか(ここで中身を確認できます)
# 【サポート依頼】4b. 入口を Slack にする場合
あなたは、これから下の手順を**自分の手で通す人**のサポート役です。
相手は Linux もサーバも初めてで、手元の PC は Windows です。
## 守ってほしいこと
1. 相手は下の手順書を**上から順に**やっています。**先回りして別のやり方を勧めないでください。**
どうしても別の手が要ると判断したときは、**そう判断した理由を1行**添えてください。
2. 詰まった画面のスクリーンショットや、エラーの文言が送られてきます。
**まず「下の手順書のどこで止まっているか」を特定**してから答えてください。
3. **一度に1つだけ**指示してください。結果を聞いてから次に進みます。
4. 専門用語は、初めて出たときに**かっこ書きで言い換え**を付けてください。
5. 分からないことは「**分かりません**」と答えてください。**推測でコマンドを出さないでください。**
6. この工程の「**終わりの印**」が出るまでは、次の工程の話をしないでください。
## 絶対にしないこと
- **Discord の Bot トークン・パスワード・SSH の秘密鍵**を、送るよう求めないでください。
- 相手がうっかり貼ってしまったら、**その場で作り直すよう伝えてください**(どれも作り直せます)。
## 最初にお願いすること
この工程で何をするのかを、**3行**で教えてください。
そのあと、私が「はじめます」と言ったら、**最初の1手だけ**を教えてください。
---
# 手順書(この工程の全文)
# 4b. 入口を Slack にする場合
!!! info "この章は、Slack を使う方だけ読んでください"
[4章](./04_discord_bot.md)の Discord の代わりに、**Slack を入口にする**手順です。
どちらか**片方だけ**でよく、両方は要りません。
**すでに Slack を仕事で使っている**なら、こちらの方が自然です。
新しいアプリを増やさずに済み、いつも見ている画面から右腕に話しかけられます。
!!! success "✅ この手順は 2026-09-09 に実機で1回通りました"
実際に1台のミニPC で、Slack から右腕に話しかけられるところまで確認しています。
そのとき詰まったのは**次の3つだけ**でした。どれも下に書いてあります。
| | 詰まったところ |
|---|---|
| 1 | `.env` の見本の文字(`your-bot-token` など)を**消し切っていなかった** |
| 2 | `#` を消したあと、**行頭に空白が残っていた** |
| 3 | 直したのに**古いログを見ていて**、直っていないと思い込んだ |
ただし、通したのは**この1台だけ**です。画面の文言はバージョンで変わることがあります。
詰まったところは[記録場](log/index.md)に書き足してください。
!!! success "Slack は「Socket Mode」で繋ぎます — 外から届く住所が要りません"
サーバ側から Slack へ**繋ぎに行く**方式なので、**家や事務所のネットワークに穴を開ける必要がありません。**
ルータの設定も、固定の住所も要らない、ということです。
## ① Slack アプリを作る(Manifest を貼るのが最短です)
<https://api.slack.com/apps> を開き、Slack にログインします。
1. **Create New App** → **From an app manifest** を選ぶ
2. ワークスペースを選ぶ
3. 形式は **YAML** を選び、下の内容を**まるごと貼り付ける**
4. **Next** → **Create**
??? note "📋 貼り付ける Manifest(クリックで開く)"
```yaml
display_information:
name: xangi
description: AI CLI assistant for Slack
background_color: '#2f3136'
features:
bot_user:
display_name: xangi
always_online: false
oauth_config:
scopes:
bot:
- app_mentions:read
- channels:history
- channels:read
- chat:write
- files:read
- files:write
- groups:history
- groups:read
- im:history
- im:read
- im:write
- reactions:read
- reactions:write
settings:
event_subscriptions:
bot_events:
- app_mention
- message.channels
- message.groups
- message.im
interactivity:
is_enabled: true
org_deploy_enabled: false
socket_mode_enabled: true
token_rotation_enabled: false
```
**これで、権限もイベントも Socket Mode も、まとめて設定されます。**
手で1つずつ入れる方法もありますが、**取りこぼしが起きやすい**のでこちらを推します。
## ② App-Level Token(`xapp-` で始まる方)を作る
Manifest を使っても、**この鍵だけは手で作ります。**
1. 左メニュー **Basic Information** → 下の方の **App-Level Tokens** → **Generate Token and Scopes**
2. Token Name … `xangi-socket`(何でも構いません)
3. **Add Scope** → **`connections:write`** を選ぶ
4. **Generate** → 表示された **`xapp-...` をコピー**
## ③ ワークスペースに入れて、Bot Token(`xoxb-` で始まる方)を取る
1. 左メニュー **Install App** → **Install to Workspace**
2. 権限を確認して **許可する**
3. 表示された **Bot User OAuth Token(`xoxb-...`)をコピー**
!!! danger "🔴 2つのトークンは、チャットにもメールにも貼らないでください"
置き場所は**サーバの中の `.env` ファイル1か所だけ**です([9章](./09_xangi.md))。
手元では Windows のメモ帳に一時的に置き、`.env` に入れたら消してください。
漏れてしまったときは、**同じ画面から作り直せます**(古い方は無効になります)。
## ④ 自分のユーザーID と、チャンネルID を控える
| 取る値 | 操作 |
|---|---|
| **自分のユーザーID**(`U` で始まる) | 自分のプロフィールを開く → **︙**(その他)→ **メンバーIDをコピー** |
| **チャンネルID**(`C` で始まる) | チャンネル名を右クリック → **リンクをコピー**。URL の末尾(`.../archives/C01234567` の `C01234567`)がID |
どちらも [2章の表](./02_values.md) に書いてください。
ユーザーIDは、**誰の指示なら受けるか**を決めるために使います。
## ⑤ 🔴 Bot をチャンネルに招待する
**ここを忘れると、何を書いても反応しません。**使いたいチャンネルで、こう打ちます。
```text
/invite @xangi
```
## 手元に残る4つ
[9章](./09_xangi.md)で使います。**メモ帳に並べておいてください。**
| # | 名前 | 見た目 | 置き場所 |
|---:|---|---|---|
| 1 | **Bot Token** | `xoxb-...` | 🔴 メモ帳に一時保存 → 最終的には `.env` だけ |
| 2 | **App Token** | `xapp-...` | 🔴 同上 |
| 3 | 自分のユーザーID | `U` で始まる | 2章の表 |
| 4 | チャンネルID | `C` で始まる | 2章の表 |
## ✅ ここまで出来たら
Slack のメンバー一覧に Bot が現れ、上の4つがそろえば合格です。
**Bot はまだ反応しません。**サーバ側の設定([9章](./09_xangi.md))が済むと動きます。
## 詰まったら
| 症状 | まず見るところ |
|---|---|
| 🔴 **ログに `invalid_auth` と出る** | **Bot Token(`xoxb-`)が違います。**下の「鍵が本物か確かめる」を実行してください。`xoxb-` と `xapp-` を**入れ違いに入れている**のが最も多い原因です |
| **メンションしても無反応** | 🔴 ⑤の `/invite @xangi` を、そのチャンネルでやったか |
| 権限を足したのに変わらない | **Install App から入れ直す**必要があります(権限の変更は再インストールで反映されます) |
| `xapp-` のトークンが見つからない | **Basic Information** の下の方の **App-Level Tokens** です。OAuth の画面にはありません |
| DM で反応しない | Manifest を使わず手で設定した場合、`im:history` `im:read` と `message.im` が要ります |
| IDをコピーする項目がない | プロフィールの **︙**(その他)の中にあります |
## 🔑 鍵が本物か、その場で確かめる
`.env` に入れたあと([9章](./09_xangi.md))、Slack 本体に直接聞けます。**トークンは画面に出ません。**
```bash
# どちらの鍵がどこに入っているか(先頭9文字だけ表示)
grep -E "^SLACK_(BOT|APP)_TOKEN" ~/xangi/.env | sed -E 's/=(.{9}).*/=\1…/'
```
```bash
# Bot Token が本物か
curl -s -H "Authorization: Bearer $(grep '^SLACK_BOT_TOKEN=' ~/xangi/.env | cut -d= -f2-)" \
https://slack.com/api/auth.test
```
| 返ってくるもの | 意味 |
|---|---|
| `{"ok":true,"team":...}` | ✅ Bot Token は正常です |
| `{"ok":false,"error":"invalid_auth"}` | 🔴 **Bot Token が違います。**取り直してください |
```bash
# App Token が本物か
curl -s -X POST -H "Authorization: Bearer $(grep '^SLACK_APP_TOKEN=' ~/xangi/.env | cut -d= -f2-)" \
https://slack.com/api/apps.connections.open
```
!!! danger "🔴 取り違えやすいもの"
**Bot Token は `xoxb-` で始まります。**`api.slack.com/apps` → **OAuth & Permissions** の一番上、
**Bot User OAuth Token** です。
同じ画面の周りにある **Signing Secret** や **Client Secret** を入れると、
このエラー(`invalid_auth`)になります。**`xoxb-` で始まっていない時点で間違いです。**
次は [5. USB インストーラをつくる](./05_usb.md) です。
(サーバ側で Slack を繋ぐ設定は [9章](./09_xangi.md) で行います。)
この章は、Slack を使う方だけ読んでください
4章の Discord の代わりに、Slack を入口にする手順です。 どちらか片方だけでよく、両方は要りません。
すでに Slack を仕事で使っているなら、こちらの方が自然です。 新しいアプリを増やさずに済み、いつも見ている画面から右腕に話しかけられます。
✅ この手順は 2026-09-09 に実機で1回通りました
実際に1台のミニPC で、Slack から右腕に話しかけられるところまで確認しています。 そのとき詰まったのは次の3つだけでした。どれも下に書いてあります。
| 詰まったところ | |
|---|---|
| 1 | .env の見本の文字(your-bot-token など)を消し切っていなかった |
| 2 | # を消したあと、行頭に空白が残っていた |
| 3 | 直したのに古いログを見ていて、直っていないと思い込んだ |
ただし、通したのはこの1台だけです。画面の文言はバージョンで変わることがあります。 詰まったところは記録場に書き足してください。
Slack は「Socket Mode」で繋ぎます — 外から届く住所が要りません
サーバ側から Slack へ繋ぎに行く方式なので、家や事務所のネットワークに穴を開ける必要がありません。 ルータの設定も、固定の住所も要らない、ということです。
① Slack アプリを作る(Manifest を貼るのが最短です)¶
https://api.slack.com/apps を開き、Slack にログインします。
- Create New App → From an app manifest を選ぶ
- ワークスペースを選ぶ
- 形式は YAML を選び、下の内容をまるごと貼り付ける
- Next → Create
📋 貼り付ける Manifest(クリックで開く)
display_information:
name: xangi
description: AI CLI assistant for Slack
background_color: '#2f3136'
features:
bot_user:
display_name: xangi
always_online: false
oauth_config:
scopes:
bot:
- app_mentions:read
- channels:history
- channels:read
- chat:write
- files:read
- files:write
- groups:history
- groups:read
- im:history
- im:read
- im:write
- reactions:read
- reactions:write
settings:
event_subscriptions:
bot_events:
- app_mention
- message.channels
- message.groups
- message.im
interactivity:
is_enabled: true
org_deploy_enabled: false
socket_mode_enabled: true
token_rotation_enabled: false
これで、権限もイベントも Socket Mode も、まとめて設定されます。 手で1つずつ入れる方法もありますが、取りこぼしが起きやすいのでこちらを推します。
② App-Level Token(xapp- で始まる方)を作る¶
Manifest を使っても、この鍵だけは手で作ります。
- 左メニュー Basic Information → 下の方の App-Level Tokens → Generate Token and Scopes
- Token Name …
xangi-socket(何でも構いません) - Add Scope →
connections:writeを選ぶ - Generate → 表示された
xapp-...をコピー
③ ワークスペースに入れて、Bot Token(xoxb- で始まる方)を取る¶
- 左メニュー Install App → Install to Workspace
- 権限を確認して 許可する
- 表示された Bot User OAuth Token(
xoxb-...)をコピー
🔴 2つのトークンは、チャットにもメールにも貼らないでください
置き場所はサーバの中の .env ファイル1か所だけです(9章)。
手元では Windows のメモ帳に一時的に置き、.env に入れたら消してください。
漏れてしまったときは、同じ画面から作り直せます(古い方は無効になります)。
④ 自分のユーザーID と、チャンネルID を控える¶
| 取る値 | 操作 |
|---|---|
自分のユーザーID(U で始まる) |
自分のプロフィールを開く → ︙(その他)→ メンバーIDをコピー |
チャンネルID(C で始まる) |
チャンネル名を右クリック → リンクをコピー。URL の末尾(.../archives/C01234567 の C01234567)がID |
どちらも 2章の表 に書いてください。 ユーザーIDは、誰の指示なら受けるかを決めるために使います。
⑤ 🔴 Bot をチャンネルに招待する¶
ここを忘れると、何を書いても反応しません。使いたいチャンネルで、こう打ちます。
/invite @xangi
手元に残る4つ¶
9章で使います。メモ帳に並べておいてください。
| # | 名前 | 見た目 | 置き場所 |
|---|---|---|---|
| 1 | Bot Token | xoxb-... |
🔴 メモ帳に一時保存 → 最終的には .env だけ |
| 2 | App Token | xapp-... |
🔴 同上 |
| 3 | 自分のユーザーID | U で始まる |
2章の表 |
| 4 | チャンネルID | C で始まる |
2章の表 |
✅ ここまで出来たら¶
Slack のメンバー一覧に Bot が現れ、上の4つがそろえば合格です。 Bot はまだ反応しません。サーバ側の設定(9章)が済むと動きます。
詰まったら¶
| 症状 | まず見るところ |
|---|---|
🔴 ログに invalid_auth と出る |
Bot Token(xoxb-)が違います。下の「鍵が本物か確かめる」を実行してください。xoxb- と xapp- を入れ違いに入れているのが最も多い原因です |
| メンションしても無反応 | 🔴 ⑤の /invite @xangi を、そのチャンネルでやったか |
| 権限を足したのに変わらない | Install App から入れ直す必要があります(権限の変更は再インストールで反映されます) |
xapp- のトークンが見つからない |
Basic Information の下の方の App-Level Tokens です。OAuth の画面にはありません |
| DM で反応しない | Manifest を使わず手で設定した場合、im:history im:read と message.im が要ります |
| IDをコピーする項目がない | プロフィールの ︙(その他)の中にあります |
🔑 鍵が本物か、その場で確かめる¶
.env に入れたあと(9章)、Slack 本体に直接聞けます。トークンは画面に出ません。
# どちらの鍵がどこに入っているか(先頭9文字だけ表示)
grep -E "^SLACK_(BOT|APP)_TOKEN" ~/xangi/.env | sed -E 's/=(.{9}).*/=\1…/'
# Bot Token が本物か
curl -s -H "Authorization: Bearer $(grep '^SLACK_BOT_TOKEN=' ~/xangi/.env | cut -d= -f2-)" \
https://slack.com/api/auth.test
| 返ってくるもの | 意味 |
|---|---|
{"ok":true,"team":...} |
✅ Bot Token は正常です |
{"ok":false,"error":"invalid_auth"} |
🔴 Bot Token が違います。取り直してください |
# App Token が本物か
curl -s -X POST -H "Authorization: Bearer $(grep '^SLACK_APP_TOKEN=' ~/xangi/.env | cut -d= -f2-)" \
https://slack.com/api/apps.connections.open
🔴 取り違えやすいもの
Bot Token は xoxb- で始まります。api.slack.com/apps → OAuth & Permissions の一番上、
Bot User OAuth Token です。
同じ画面の周りにある Signing Secret や Client Secret を入れると、
このエラー(invalid_auth)になります。xoxb- で始まっていない時点で間違いです。
次は 5. USB インストーラをつくる です。 (サーバ側で Slack を繋ぐ設定は 9章 で行います。)