mcpField
S
slack-messaging

slack-messaging

github.com/obra生产力435223 次安装22 周前更新
代码仓库

关于 slack-messaging

slack-messaging 是通过 slackcli 在命令行读写 Slack 消息的技能,使用浏览器会话令牌认证,无需创建 Slack 应用。它支持多个工作区,并可按频道 ID 自动路由消息。

主要功能

  1. 01列出频道、私信及其 ID
  2. 02发送频道或私信消息
  3. 03在消息线程中回复
  4. 04读取频道和线程消息
  5. 05管理多个工作区认证

适用场景

  1. 01从命令行向 Slack 频道发送消息
  2. 02读取频道消息并以 JSON 处理
  3. 03回复已有消息线程
  4. 04验证集成是否成功发帖

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/obra/superpowers-lab --skill slack-messaging

安装后在 Claude Code 中输入/slack-messaging确认已加载。

附带文件scripts/extract-tokens

详细介绍

通过 slackcli 发送 Slack 消息

使用 slackcli(shaharia-lab/slackcli)通过命令行发送和读取 Slack 消息。

安装

下载二进制文件:

curl -sL -o /usr/local/bin/slackcli \
  "https://github.com/shaharia-lab/slackcli/releases/download/v0.1.1/slackcli-linux"
chmod +x /usr/local/bin/slackcli

macOS(Intel):将 slackcli-linux 替换为 slackcli-macos macOS(Apple Silicon):替换为 slackcli-macos-arm64

身份验证

slackcli 使用浏览器会话令牌(xoxc + xoxd),无需创建 Slack 应用。

交互式设置
./scripts/extract-tokens <workspace-url>

此流程将引导用户从浏览器 DevTools 中提取令牌。

手动设置
slackcli auth login-browser \
  --xoxd="xoxd-..." \
  --xoxc="xoxc-..." \
  --workspace-url=https://your-workspace.slack.com
验证身份验证
slackcli auth list

查找频道

使用 slackcli conversations list 查找频道及其 ID:

# List all channels
slackcli conversations list

# Filter output
slackcli conversations list | grep -i "channel-name"

发送消息

# Send to a channel (use channel ID from conversations list)
slackcli messages send --recipient-id=C0XXXXXXXX --message="Hello from CLI"

# Send to a DM (use user's DM channel ID)
slackcli messages send --recipient-id=D0XXXXXXXX --message="Hey"

# Reply in a thread
slackcli messages send --recipient-id=C0XXXXXXXX --message="Thread reply" --thread-ts=1769756026.624319

--recipient-id 始终是频道 ID(C...)或私信频道 ID(D...)。

读取消息

# Read last N messages from a channel
slackcli conversations read C0XXXXXXXX --limit=10

# Read as JSON (for parsing)
slackcli conversations read C0XXXXXXXX --limit=10 --json

# Read a thread
slackcli conversations read C0XXXXXXXX --thread-ts=1769756026.624319

列出频道

slackcli conversations list

返回所有公开频道、私密频道和私信及其 ID。

测试 Slack 集成

验证机器人或集成是否正确发送了消息:

# Read the channel, check for the expected message
slackcli conversations read CHANNEL_ID --limit=5 --json | jq '.messages[] | select(.text | contains("expected text"))'

发送测试消息并验证往返是否成功:

# Send
slackcli messages send --recipient-id=CHANNEL_ID --message="integration test $(date +%s)"

# Read back
slackcli conversations read CHANNEL_ID --limit=1 --json

多个工作区

slackcli 支持多个工作区。请为需要的每个工作区运行身份验证流程:

# Add first workspace
./scripts/extract-tokens https://workspace-one.slack.com

# Add second workspace
./scripts/extract-tokens https://workspace-two.slack.com

# List all authenticated workspaces
slackcli auth list

发送消息时,slackcli 会根据频道 ID 自动路由到正确的工作区。

令牌说明

  • 浏览器令牌(xoxc/xoxd)以登录用户的身份运行,而非机器人
  • 发送的消息显示为用户发送,而非应用发送
  • 用户退出浏览器会话后,令牌将过期
  • 若要刷新:从已登录的浏览器会话中重新提取令牌
  • 所有工作区凭据都存储在 ~/.config/slackcli/workspaces.json

评论

支持 Markdown