mcpField
S
slack-automation

slack-automation

github.com/composiohq生产力78.3k81 次安装14 周前更新
代码仓库

关于 slack-automation

用于通过 Composio 的 Slack 工具包自动处理消息、搜索、频道与用户管理、回应、线程及定时发布的工作流技能,面向使用 Rube MCP 且已连接 Slack 的 Agent。

主要功能

  1. 01发送、编辑和定时发送消息
  2. 02搜索消息并展开线程
  3. 03列出频道、用户和工作区信息
  4. 04添加或移除消息回应

适用场景

  1. 01发布频道通知或私信
  2. 02查找消息并查看相关线程
  3. 03安排稍后发布的 Slack 消息

MCP 相关

通过 Rube MCP 调用 Composio 的 Slack 工具包。运行工作流前,客户端需连接 Rube MCP 并激活 Slack 连接。

安装

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

$npx skills add https://github.com/composiohq/awesome-claude-skills --skill slack-automation

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

详细介绍

通过 Rube MCP 自动化 Slack

通过 Composio 的 Slack 工具包自动化 Slack 工作区操作,包括消息发送、搜索、频道管理和反应工作流。

工具包文档:composio.dev/toolkits/slack

前提条件

  • 必须已连接 Rube MCP(RUBE_SEARCH_TOOLS 可用)
  • 通过工具包为 slack 的 RUBE_MANAGE_CONNECTIONS 建立有效的 Slack 连接
  • 始终先调用 RUBE_SEARCH_TOOLS,以获取最新的工具架构

设置

获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。无需 API 密钥,只需添加端点即可使用。

  1. 确认 RUBE_SEARCH_TOOLS 能够响应,以验证 Rube MCP 已就绪
  2. 使用工具包 slack 调用 RUBE_MANAGE_CONNECTIONS
  3. 如果连接状态不是 ACTIVE,请按照返回的授权链接完成 Slack OAuth
  4. 运行任何工作流前,确认连接状态显示为 ACTIVE

核心工作流

1. 向频道发送消息

适用场景:用户希望向 Slack 频道或私信发送消息

工具调用顺序:

  1. SLACK_FIND_CHANNELS - 将频道名称解析为频道 ID [前置条件]
  2. SLACK_LIST_ALL_CHANNELS - 如果 FIND_CHANNELS 返回空结果或不明确的结果,则作为后备方案使用 [后备方案]
  3. SLACK_FIND_USERS - 为私信或 @提及解析用户 [可选]
  4. SLACK_OPEN_DM - 直接向用户发送消息时,打开或复用私信频道 [可选]
  5. SLACK_SEND_MESSAGE - 使用解析出的频道 ID 发送消息 [必需]
  6. SLACK_UPDATES_A_SLACK_MESSAGE - 如需更正,编辑已发送的消息 [可选]

关键参数:

  • channel:频道 ID 或名称(不带 '#' 前缀)
  • markdown_text:格式化消息的首选字段(支持标题、粗体、斜体和代码块)
  • text:原始文本后备字段(已弃用,建议改用 markdown_text)
  • thread_ts:要在其中回复的父消息时间戳
  • blocks:Block Kit 布局块(已弃用,请使用 markdown_text)

注意事项:

  • SLACK_FIND_CHANNELS 需要 query 参数;缺少该参数会报错 "Invalid request data provided"
  • SLACK_SEND_MESSAGE 需要有效的频道,以及 markdown_text/text/blocks/attachments 中的至少一项
  • 无效的块负载会返回 error=invalid_blocks(最多 50 个块)
  • 如果省略 thread_ts,回复会变成顶层帖子
  • 保存 SEND_MESSAGE 返回的 response.data.channel 和 response.data.message.ts,以用于编辑或线程操作
2. 搜索消息和对话

适用场景:用户希望在整个工作区中查找特定消息

工具调用顺序:

  1. SLACK_FIND_CHANNELS - 为限定频道的搜索解析频道,以便使用 in:#channel [可选]
  2. SLACK_FIND_USERS - 为作者筛选条件解析用户,以便使用 from:@user [可选]
  3. SLACK_SEARCH_MESSAGES - 在可访问的对话中进行关键词搜索 [必需]
  4. SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - 展开相关结果的线程 [必需]

关键参数:

  • query:支持修饰符的搜索字符串(in:#channel、from:@user、before:YYYY-MM-DD、after:YYYY-MM-DD、has:link、has:file)
  • count:每页结果数(最多 100);启用 auto_paginate=true 时表示结果总数
  • sort:'score'(相关性)或 'timestamp'(时间顺序)
  • sort_dir:'asc' 或 'desc'

注意事项:

  • 缺少 query 或其为空时,验证会失败
  • ok=true 仍可能表示没有匹配结果(response.data.messages.total=0)
  • 匹配结果位于 response.data.messages.matches(有时也会位于 response.data_preview.messages.matches)
  • match.text 可能为空或被截断;关键信息可能出现在 matches[].attachments[] 中
  • 通过 FETCH_MESSAGE_THREAD 展开线程时,如果 response.data.has_more=true,结果可能会被截断;请通过 response_metadata.next_cursor 翻页
3. 管理频道和用户

适用场景:用户想要列出频道、用户或工作区信息

工具调用顺序:

  1. SLACK_FETCH_TEAM_INFO - 验证连接并获取工作区标识 [必需]
  2. SLACK_LIST_ALL_CHANNELS - 列出所有公开频道 [必需]
  3. SLACK_LIST_CONVERSATIONS - 包含私密频道和私信 [可选]
  4. SLACK_LIST_ALL_USERS - 列出工作区成员 [必需]
  5. SLACK_RETRIEVE_CONVERSATION_INFORMATION - 获取详细的频道元数据 [可选]
  6. SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS - 列出用户组 [可选]

关键参数:

  • cursor:来自 response_metadata.next_cursor 的分页游标
  • limit:每页结果数(默认值因情况而异;大型工作区请明确设置)
  • types:频道类型筛选条件('public_channel'、'private_channel'、'im'、'mpim')

注意事项:

  • 工作区元数据位于 response.data.team 下,而非顶层
  • SLACK_LIST_ALL_CHANNELS 仅返回公开频道;如需覆盖私密频道和即时消息,请使用 SLACK_LIST_CONVERSATIONS
  • SLACK_LIST_ALL_USERS 可能触发 HTTP 429 速率限制;请遵循 Retry-After 标头
  • 始终通过 response_metadata.next_cursor 分页,直到游标为空;按 id 去重
4. 对消息作出回应并管理消息串

适用场景:用户想要添加回应或管理消息串对话

工具调用顺序:

  1. SLACK_SEARCH_MESSAGES 或 SLACK_FETCH_CONVERSATION_HISTORY - 查找目标消息 [前置条件]
  2. SLACK_ADD_REACTION_TO_AN_ITEM - 添加表情符号回应 [必需]
  3. SLACK_FETCH_ITEM_REACTIONS - 列出消息上的回应 [可选]
  4. SLACK_REMOVE_REACTION_FROM_ITEM - 移除回应 [可选]
  5. SLACK_SEND_MESSAGE - 使用 thread_ts 在消息串中回复 [可选]
  6. SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION - 阅读完整消息串 [可选]

关键参数:

  • channel:消息所在频道的 ID
  • timestamp / ts:消息时间戳(唯一标识符,例如 '1234567890.123456')
  • name:不带冒号的表情符号名称(例如 'thumbsup'、'wave::skin-tone-3')
  • thread_ts:消息串中父消息的时间戳

注意事项:

  • 添加回应需要准确的频道 ID 和消息时间戳组合
  • 表情符号名称遵循 Slack 的命名规范,不带冒号
  • SLACK_FETCH_CONVERSATION_HISTORY 仅返回频道主时间线,不包含消息串回复
  • 使用父消息的 thread_ts 调用 SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION,以获取消息串回复
5. 定时发送消息

适用场景:用户想要安排在未来发送消息

工具调用顺序:

  1. SLACK_FIND_CHANNELS - 确定频道 ID [前置条件]
  2. SLACK_SCHEDULE_MESSAGE - 使用 post_at 时间戳安排消息 [必需]

关键参数:

  • channel:已确定的频道 ID
  • post_at:发送时间的 Unix 时间戳(最多可提前 120 天)
  • text / blocks:消息内容

注意事项:

  • 定时发送最多只能提前 120 天安排
  • post_at 必须是 Unix 时间戳,而非 ISO 8601 格式

常见模式

ID 解析

操作前始终先将显示名称解析为 ID:

  • 频道名称 -> 频道 ID:使用带 query 参数的 SLACK_FIND_CHANNELS
  • 用户名 -> 用户 ID:使用带 search_query 或 email 参数的 SLACK_FIND_USERS
  • 私信频道:使用已解析的用户 ID 调用 SLACK_OPEN_DM
分页

大多数列表端点使用基于游标的分页:

  • 持续读取 response_metadata.next_cursor,直到游标为空
  • 明确设置 limit 值(例如 100-200),以确保分页可靠
  • 跨页按 id 去重
消息格式
  • 格式化消息优先使用 markdown_text,而非 text 或 blocks
  • 使用 <@USER_ID> 格式提及用户(不要使用 @username)
  • 在 markdown_text 中使用 \n 换行

已知陷阱

  • 频道解析:如果频道是私有的,且机器人尚未受邀,SLACK_FIND_CHANNELS 可能返回空结果
  • 速率限制:SLACK_LIST_ALL_USERS 和其他列表端点可能触发 HTTP 429;请遵循 Retry-After 标头
  • 嵌套响应:在封装执行中,结果可能嵌套在 response.data.results[0].response.data 下
  • 线程与频道:SLACK_FETCH_CONVERSATION_HISTORY 仅返回主时间线;要获取线程回复,请使用 SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION
  • 编辑消息:需要同时提供 channel 和原始消息的 ts;请从 SEND_MESSAGE 响应中保存这两项
  • 搜索延迟:最近发布的消息可能不会立即出现在搜索结果中
  • 权限范围限制:缺少 OAuth 权限范围可能导致 403 错误;请使用 SLACK_GET_APP_PERMISSION_SCOPES 检查

快速参考

任务工具标识关键参数
查找频道SLACK_FIND_CHANNELSquery
列出所有频道SLACK_LIST_ALL_CHANNELSlimit、cursor、types
发送消息SLACK_SEND_MESSAGEchannel、markdown_text
编辑消息SLACK_UPDATES_A_SLACK_MESSAGEchannel、ts、markdown_text
搜索消息SLACK_SEARCH_MESSAGESquery、count、sort
获取线程SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONchannel、ts
添加回应SLACK_ADD_REACTION_TO_AN_ITEMchannel、name、timestamp
查找用户SLACK_FIND_USERSsearch_query 或 email
列出用户SLACK_LIST_ALL_USERSlimit、cursor
打开私信SLACK_OPEN_DM用户 ID
安排消息SLACK_SCHEDULE_MESSAGEchannel、post_at、text
获取频道信息SLACK_RETRIEVE_CONVERSATION_INFORMATION频道 ID
频道历史记录SLACK_FETCH_CONVERSATION_HISTORYchannel、oldest、latest
工作区信息SLACK_FETCH_TEAM_INFO(无)

由 Composio 提供支持

评论

支持 Markdown