mcpField
A
agent-slack

agent-slack

github.com/letta-ai生产力152169 次安装4 周前更新
代码仓库

关于 agent-slack

agent-slack 是用于通过命令行读取、搜索和管理 Slack 消息、频道、用户及工作流的技能,适合以 Shell 命令自动处理 Slack 事务。

主要功能

  1. 01读取消息与讨论串
  2. 02搜索消息和文件
  3. 03发送、编辑、删除消息并添加反应
  4. 04管理频道、用户和工作流
  5. 05下载消息附件

适用场景

  1. 01查找近期相关消息
  2. 02在频道发送或更新消息
  3. 03创建频道并邀请成员
  4. 04查看 Slack 工作流定义

安装

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

$npx skills add https://github.com/letta-ai/skills --skill agent-slack

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
slack-small.svg
references/
commands.md
output.md
targets.md

详细介绍

使用 agent-slack 自动化 Slack

agent-slack 是一个位于 $PATH 中的 CLI 二进制文件。可直接调用(例如 agent-slack user list)。

设置

1. 安装 CLI

如果在 $PATH 中找不到 agent-slack,请安装:

curl -fsSL https://raw.githubusercontent.com/stablyai/agent-slack/main/install.sh | sh

其他方式:npm i -g agent-slack(需要 Node >= 22.5)或 nix run github:stablyai/agent-slack。

2. 使用 Slack 进行身份验证

如果已安装并登录 Slack Desktop,身份验证会自动完成,无需设置。运行以下命令进行验证:

agent-slack auth test

如果失败(或未安装 Slack Desktop),请尝试从浏览器导入凭据:

# Try Chrome first, then Firefox
agent-slack auth import-chrome
agent-slack auth test
agent-slack auth import-firefox
agent-slack auth test

如果两种方式都不奏效,可以通过环境变量手动设置令牌:

export SLACK_TOKEN="xoxc-..."      # browser token
export SLACK_COOKIE_D="xoxd-..."   # browser cookie
agent-slack auth test
3. 验证

检查已配置的工作区:

agent-slack auth whoami

如果有多个工作区,请在命令中传入 --workspace "myteam" 以消除歧义。

标准工作流(已知 Slack 消息 URL)

  1. 获取单条消息(以及线程摘要,如有):
agent-slack message get "https://workspace.slack.com/archives/C123/p1700000000000000"
  1. 如需获取完整线程:
agent-slack message list "https://workspace.slack.com/archives/C123/p1700000000000000"

浏览频道近期消息

查看频道中近期发布的内容(频道历史记录):

agent-slack message list "general" --limit 20
agent-slack message list "C0123ABC" --limit 10
agent-slack message list "general" --with-reaction eyes --oldest "1770165109.000000" --limit 20
agent-slack message list "general" --without-reaction dart --oldest "1770165109.000000" --limit 20

这会按时间顺序返回最近的消息。使用 --limit 控制返回数量(默认值为 25)。 使用 --with-reaction 或 --without-reaction 时,还必须传入 --oldest 以限定扫描范围。

附件(片段/图片/文件)

message get/list 和 search 会自动将附件下载到 ~/.agent-slack/tmp/downloads/,并在 message.files[] 中返回元数据(包括 name 和 path)。下载失败时会包含 message.files[].error 字段。

撰写消息草稿(浏览器编辑器)

在浏览器中打开类似 Slack 的富文本编辑器,用于撰写带格式的消息。编辑器提供格式工具栏(粗体、斜体、删除线、链接、列表、引用、代码、代码块)。发送后会显示一个“View in Slack”链接。

agent-slack message draft "general"
agent-slack message draft "general" "initial text"
agent-slack message draft "https://workspace.slack.com/archives/C123/p1700000000000000"

发送、编辑、删除或添加反应

agent-slack message send "https://workspace.slack.com/archives/C123/p1700000000000000" "I can take this."
agent-slack message send "alerts-staging" "here's the report" --attach ./report.md
agent-slack message edit "https://workspace.slack.com/archives/C123/p1700000000000000" "I can take this today."
agent-slack message delete "https://workspace.slack.com/archives/C123/p1700000000000000"

agent-slack message send "general" "Here's the plan:
- Step 1: do the thing
- Step 2: verify it worked
  - Sub-step: check logs"
agent-slack message react add "https://workspace.slack.com/archives/C123/p1700000000000000" "eyes"
agent-slack message react remove "https://workspace.slack.com/archives/C123/p1700000000000000" "eyes"

频道模式下编辑/删除需要使用 --ts:

agent-slack message edit "general" "Updated text" --workspace "myteam" --ts "1770165109.628379"
agent-slack message delete "general" --workspace "myteam" --ts "1770165109.628379"

message send 的附件选项:

  • --attach <path> 上传本地文件(可重复使用)

列出频道+创建/邀请用户

agent-slack channel list
agent-slack channel list --user "@alice" --limit 50
agent-slack channel list --all --limit 100
agent-slack channel new --name "incident-war-room"
agent-slack channel new --name "incident-leads" --private
agent-slack channel invite --channel "incident-war-room" --users "U01AAAA,@alice,[email protected]"
agent-slack channel invite --channel "incident-war-room" --users "[email protected]" --external
agent-slack channel invite --channel "incident-war-room" --users "[email protected]" --external --allow-external-user-invites

对于 --external,邀请对象必须是电子邮件地址。默认情况下,被邀请者受到外部用户限制;添加 --allow-external-user-invites 可允许他们邀请其他用户。

搜索(消息+文件)

为确保可靠性,优先使用限定频道的搜索:

agent-slack search all "smoke tests failed" --channel "alerts" --after 2026-01-01 --before 2026-02-01
agent-slack search messages "stably test" --user "@alice" --channel general
agent-slack search files "testing" --content-type snippet --limit 10

多工作区防护措施(重要)

如果配置了多个工作区,并且使用频道名称(例如 general),请传入 --workspace(或设置 SLACK_WORKSPACE_URL)以避免歧义:

agent-slack message get "general" --workspace "https://myteam.slack.com" --ts "1770165109.628379"
agent-slack message get "general" --workspace "myteam" --ts "1770165109.628379"

DM/群组 DM 频道

获取 DM 或群组 DM 的频道 ID,适用于向一组用户发送消息:

agent-slack user dm-open @alice @bob
agent-slack user dm-open U01AAAA U02BBBB U03CCCC

标记为已读

将频道、DM 或群组 DM 标记为已读,直到指定消息为止:

agent-slack channel mark "https://workspace.slack.com/archives/C123/p1700000000000000"
agent-slack channel mark "general" --workspace "myteam" --ts "1770165109.628379"
agent-slack channel mark "D0A04PB2QBW" --workspace "myteam" --ts "1770165109.628379"

若要将特定消息标记为未读,请将 --ts 设置为该消息之前的时间戳(减去 0.000001)。这会移动已读游标,使该消息及其后的所有内容显示为新消息:

agent-slack channel mark "general" --workspace "myteam" --ts "1770165109.628378"

工作流

发现并运行在频道中加入书签的 Slack 工作流:

# List workflows in a channel
agent-slack workflow list "#ops"

# Preview trigger metadata (no side effects)
agent-slack workflow preview "Ft123ABC"

# Get workflow definition including form fields and steps
agent-slack workflow get "Ft123ABC"
agent-slack workflow get "Wf456DEF"

# Trip a workflow trigger
agent-slack workflow run "Ft123ABC" --channel "#ops"

Canvas+用户

agent-slack canvas get "https://workspace.slack.com/docs/T123/F456"
agent-slack user list --workspace "https://workspace.slack.com" --limit 100
agent-slack user get "@alice" --workspace "https://workspace.slack.com"

参考资料

  • references/commands.md:完整命令列表及所有标志
  • references/targets.md:URL 与 #channel 目标的使用规则
  • references/output.md:JSON 输出结构及下载路径

评论

支持 Markdown