SlackからClaude Codeを使用できるボットのセットアップガイドです。
- macOS
- Node.js 18以上
- Claude Code CLI(インストール済み&ログイン済み)
- Claude MAXプラン(またはAnthropic API Key)
# Node.jsバージョン確認
node -v # v18以上であること
# Claude Code確認
claude --version
claude whoami # ログイン済みであることもしClaude Codeにログインしていない場合:
claude /login- https://api.slack.com/apps にアクセス
- 「Create New App」をクリック
- 「From scratch」を選択
- App Name:
Claude Code Bot(任意の名前) - ワークスペースを選択して作成
- 左メニュー「Socket Mode」をクリック
- 「Enable Socket Mode」をON
- App-Level Token名を入力(例:
socket-token) - Scopeに
connections:writeを追加 - 「Generate」をクリック
- 生成された
xapp-で始まるトークンをメモ
- 左メニュー「OAuth & Permissions」をクリック
- 「Bot Token Scopes」セクションで以下を追加:
app_mentions:readchannels:historychat:writeim:historyim:readim:writereactions:readreactions:write
- 左メニュー「Event Subscriptions」をクリック
- 「Enable Events」をON
- 「Subscribe to bot events」で以下を追加:
app_mentionmessage.im
- 左メニュー「App Home」をクリック
- 「Show Tabs」セクション:
- 「Messages Tab」をON
- 「Allow users to send Slash commands and messages from the messages tab」にチェック
- 左メニュー「OAuth & Permissions」をクリック
- 「Install to Workspace」をクリック
- 権限を許可
- 生成された
xoxb-で始まるBot User OAuth Tokenをメモ
- 左メニュー「Basic Information」をクリック
- 「App Credentials」セクションの「Signing Secret」をメモ
cd ~
git clone https://github.com/mpociot/claude-code-slack-bot.git
cd claude-code-slack-bot./scripts/setup.shスクリプトが以下を確認・実行します:
- Node.jsバージョンの確認
- Claude Code CLIの確認
- npm依存関係のインストール
- Claude Code SDKの更新
- Slackトークンの入力(対話式)
- バックアップディレクトリの作成
- launchd設定の作成
- サービスの起動
npm install
npm update @anthropic-ai/claude-codecat > .env << EOF
SLACK_BOT_TOKEN=xoxb-your-token-here
SLACK_APP_TOKEN=xapp-your-token-here
SLACK_SIGNING_SECRET=your-signing-secret-here
# セッションタイムアウト(時間単位、0=無期限)
SESSION_TIMEOUT_HOURS=0
EOFmkdir -p ~/.claude-code-slack-bot/backupsnpm run dev正常に起動したらCtrl+Cで停止。
~/Library/LaunchAgents/com.claude-code-slack-bot.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.claude-code-slack-bot</string>
<key>ProgramArguments</key>
<array>
<string>/opt/homebrew/bin/node</string>
<string>/Users/YOUR_USERNAME/claude-code-slack-bot/node_modules/.bin/tsx</string>
<string>/Users/YOUR_USERNAME/claude-code-slack-bot/src/index.ts</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/YOUR_USERNAME/claude-code-slack-bot</string>
<key>EnvironmentVariables</key>
<dict>
<key>HOME</key>
<string>/Users/YOUR_USERNAME</string>
<key>PATH</key>
<string>/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin</string>
<key>SLACK_BOT_TOKEN</key>
<string>xoxb-your-token</string>
<key>SLACK_APP_TOKEN</key>
<string>xapp-your-token</string>
<key>SLACK_SIGNING_SECRET</key>
<string>your-secret</string>
<key>SESSION_TIMEOUT_HOURS</key>
<string>0</string>
</dict>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/claude-code-slack-bot.log</string>
<key>StandardErrorPath</key>
<string>/tmp/claude-code-slack-bot.error.log</string>
</dict>
</plist>※ YOUR_USERNAME を自分のユーザー名に置き換えてください。
launchctl load ~/Library/LaunchAgents/com.claude-code-slack-bot.plistlaunchctl list | grep claude-code-slack-bot出力例: 12345 0 com.claude-code-slack-bot
- 2番目の数字が
0なら正常動作 -や0以外ならエラー
# 標準出力
tail -f /tmp/claude-code-slack-bot.log
# エラー出力
tail -f /tmp/claude-code-slack-bot.error.log-
ボットにDMを送信またはチャンネルで**@メンション**
-
作業ディレクトリを設定:
cwd /path/to/your/project -
質問やタスクを依頼:
このプロジェクトの構造を教えてREADMEを作成して
- 同じスレッド内では会話のコンテキストが維持されます
- 新しいスレッドを開始すると、新しいセッションになります
- セッションは30分ごとに自動バックアップされます
- サービス停止時にもバックアップが保存されます
- バックアップ先:
~/.claude-code-slack-bot/backups/
SESSION_TIMEOUT_HOURS=0でセッションが無期限になります- サービスを再起動してもセッションが復元されます
Slackで行っていた会話をターミナルで続けることができます。
# セッション一覧を表示
~/claude-code-slack-bot/scripts/resume-session.sh
# 最新のセッションを再開
~/claude-code-slack-bot/scripts/resume-session.sh --latest
# 特定のセッションを再開
~/claude-code-slack-bot/scripts/resume-session.sh <session-id># バックアップからセッションIDを確認
cat ~/.claude-code-slack-bot/backups/sessions.json | grep sessionId
# セッションを再開
cd /path/to/working/directory
claude --resume <session-id>ターミナルで作業した後、Slackの同じスレッドで会話を続けることもできます。セッションIDが同じであれば、会話は継続されます。
# サービス起動
launchctl load ~/Library/LaunchAgents/com.claude-code-slack-bot.plist
# サービス停止
launchctl unload ~/Library/LaunchAgents/com.claude-code-slack-bot.plist
# サービス再起動
launchctl unload ~/Library/LaunchAgents/com.claude-code-slack-bot.plist && \
launchctl load ~/Library/LaunchAgents/com.claude-code-slack-bot.plist
# ステータス確認
launchctl list | grep claude-code-slack-bot
# ログ監視
tail -f /tmp/claude-code-slack-bot.log
# バックアップ確認
cat ~/.claude-code-slack-bot/backups/sessions.json- Slack App設定 → App Home → Messages TabをON
- 「Allow users to send Slash commands...」にチェック
- トークンが正しいか確認
- Slack Appを再インストール
- plistファイルのトークンを更新してサービス再起動
- Claude Codeにログインしているか確認:
claude whoami - ログインしていなければ:
claude /login - plistにHOME環境変数が設定されているか確認
- サービスを再起動
- ターミナルで
claudeを実行してセッションを更新 - サービスを再起動
- Slack App設定 → Socket Mode → Enable Socket ModeをON
- バックアップファイルが存在するか確認:
ls ~/.claude-code-slack-bot/backups/ - ログでエラーを確認:
grep -i "backup\|restore" /tmp/claude-code-slack-bot.log
./scripts/uninstall.shまたは手動で:
# サービス停止
launchctl unload ~/Library/LaunchAgents/com.claude-code-slack-bot.plist
# 設定ファイル削除
rm ~/Library/LaunchAgents/com.claude-code-slack-bot.plist
# ログ削除
rm /tmp/claude-code-slack-bot.log
rm /tmp/claude-code-slack-bot.error.log
# バックアップ削除(任意)
rm -rf ~/.claude-code-slack-bot
# アプリケーション削除(任意)
rm -rf ~/claude-code-slack-bot~/claude-code-slack-bot/
├── .env # 環境変数(Slackトークン)
├── src/
│ ├── index.ts # エントリーポイント
│ ├── claude-handler.ts # Claude Code SDK連携
│ ├── slack-handler.ts # Slackイベント処理
│ ├── session-backup.ts # セッションバックアップ機能
│ └── ...
├── scripts/
│ ├── setup.sh # セットアップスクリプト
│ ├── uninstall.sh # アンインストールスクリプト
│ └── resume-session.sh # セッション再開スクリプト
└── package.json
~/.claude-code-slack-bot/
└── backups/
├── sessions.json # 最新のバックアップ
└── sessions-YYYY-MM-DDTHH-MM.json # タイムスタンプ付きバックアップ
~/Library/LaunchAgents/
└── com.claude-code-slack-bot.plist # launchd設定
/tmp/
├── claude-code-slack-bot.log # 標準出力ログ
└── claude-code-slack-bot.error.log # エラーログ
| 変数名 | 必須 | 説明 |
|---|---|---|
SLACK_BOT_TOKEN |
Yes | Bot User OAuth Token (xoxb-...) |
SLACK_APP_TOKEN |
Yes | App-Level Token (xapp-...) |
SLACK_SIGNING_SECRET |
Yes | Signing Secret |
SESSION_TIMEOUT_HOURS |
No | セッションタイムアウト時間(デフォルト: 24、0=無期限) |
BASE_DIRECTORY |
No | 相対パスの基準ディレクトリ |
DEBUG |
No | デバッグモード(true/false) |
- このボットはローカルマシンで動作し、Claude Code CLIを使用します
- Claude MAXプランまたはAnthropic API Keyが必要です
- ボットが動作しているマシンがオンラインである必要があります
- セキュリティ上、Slackトークンは適切に管理してください
- セッションバックアップには会話履歴は含まれません(セッションIDのみ)