关于 slack-automation
slack-automation 是通过 Rube MCP 和 Composio 的 Slack 工具包执行 Slack 工作区操作的技能。它指导消息、搜索、频道、用户、表情回应、线程和定时发送等流程,并强调权限与范围检查。
主要功能
- 01发送、编辑和定时发送消息
- 02搜索消息并展开线程
- 03解析频道和用户
- 04管理频道与用户列表
- 05添加或移除消息回应
适用场景
- 01发布或定时发送频道消息
- 02查找消息并阅读相关线程
- 03查询工作区频道和成员
- 04回应指定消息
MCP 相关
该技能通过添加 https://rube.app/mcp 的 Rube MCP 访问 Composio 的 Slack 工具包。执行工作流前须查询当前工具架构并完成 Slack 身份验证连接。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill slack-automation安装后在 Claude Code 中输入/slack-automation确认已加载。
详细介绍
通过 Rube MCP 自动化 Slack
通过 Composio 的 Slack 工具包,自动执行 Slack 工作区操作,包括消息发送、搜索、频道管理和表情回应工作流。
前提条件
- 必须已连接 Rube MCP(可使用 RUBE_SEARCH_TOOLS)
- 通过
RUBE_MANAGE_CONNECTIONS建立有效的 Slack 连接,工具包为slack - 始终先调用
RUBE_SEARCH_TOOLS,以获取最新的工具架构
设置
获取 Rube MCP:在客户端配置中将 https://rube.app/mcp 添加为 MCP 服务。目标账户仍须通过返回的连接流程进行身份验证,并授予所需权限范围。
- 确认
RUBE_SEARCH_TOOLS能正常响应,以验证 Rube MCP 已就绪 - 使用工具包
slack调用RUBE_MANAGE_CONNECTIONS - 如果连接状态不是 ACTIVE,请通过返回的授权链接完成 Slack OAuth
- 在运行任何工作流之前,确认连接状态显示为 ACTIVE
工作区和沟通边界
确认具体的工作区、频道、用户及当前发现的工具架构。读取或搜索并不代表获准发布消息、发送私信、提及用户、添加回应、编辑内容或安排发送;只有在收到相应用户指示且符合可见范围时,才可执行这些操作。大量提及和跨工作区/共享频道的内容曝光前,请先预览。将时间戳保留为字符串,在限定范围内分页,隐去私密内容;发送结果不确定时,先核对消息历史,再重试。包装器特有的 markdown_text 支持并不意味着 Slack 的 text/blocks 已弃用;对于区块内容,请提供无障碍备用文本。请参阅 chat.postMessage。
核心工作流
1. 向频道发送消息
适用场景:用户希望在 Slack 频道或私信中发布消息
工具调用顺序:
SLACK_FIND_CHANNELS- 将频道名称解析为频道 ID[前置步骤]SLACK_LIST_ALL_CHANNELS- 如果 FIND_CHANNELS 返回空结果或含糊不清的结果,则使用此备用工具[备用]SLACK_FIND_USERS- 为私信或 @提及解析用户[可选]SLACK_OPEN_DM- 直接向用户发送消息时,打开或复用私信频道[可选]SLACK_SEND_MESSAGE- 使用已解析的频道 ID 发布消息[必需]SLACK_UPDATES_A_SLACK_MESSAGE- 如需更正,编辑已发布的消息[可选]
关键参数:
channel:频道 ID 或名称(不带#前缀)markdown_text:格式化消息的首选字段(支持标题、粗体、斜体和代码块)text:Slack 备用/无障碍文本;请核实适配器架构,不要想当然地认为它已弃用thread_ts:要在其线程中回复的父消息时间戳blocks:支持时使用的 Block Kit 布局区块;Slack 通常并未弃用此功能
注意事项:
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. 搜索消息和对话
适用场景:用户想要在工作区中查找特定消息
工具调用顺序:
SLACK_FIND_CHANNELS- 解析频道,以便使用in:#channel限定搜索范围[可选]SLACK_FIND_USERS- 解析用户,以便使用from:@user筛选作者[可选]SLACK_SEARCH_MESSAGES- 在可访问的对话中进行关键词搜索[必需]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. 管理频道和用户
适用场景:用户想要查看频道、用户或工作区信息
工具调用顺序:
SLACK_FETCH_TEAM_INFO- 验证连接并获取工作区身份信息[必需]SLACK_LIST_ALL_CHANNELS- 列出所有公开频道[必需]SLACK_LIST_CONVERSATIONS- 包含私密频道和私信[可选]SLACK_LIST_ALL_USERS- 列出工作区成员[必需]SLACK_RETRIEVE_CONVERSATION_INFORMATION- 获取详细的频道元数据[可选]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_CONVERSATIONSSLACK_LIST_ALL_USERS可能触发 HTTP 429 速率限制;请遵循 Retry-After 标头- 始终通过
response_metadata.next_cursor翻页,直到其为空;按id去重
4. 对消息添加回应并管理线程
适用场景:用户想要添加回应或管理线程对话
工具调用顺序:
SLACK_SEARCH_MESSAGES或SLACK_FETCH_CONVERSATION_HISTORY- 查找目标消息[前置条件]SLACK_ADD_REACTION_TO_AN_ITEM- 添加表情回应[必需]SLACK_FETCH_ITEM_REACTIONS- 列出消息上的回应[可选]SLACK_REMOVE_REACTION_FROM_ITEM- 移除回应[可选]SLACK_SEND_MESSAGE- 使用thread_ts在线程中回复[可选]SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION- 阅读完整线程[可选]
关键参数:
channel:消息所在频道的 IDtimestamp/ts:消息时间戳(唯一标识符,例如'1234567890.123456')name:不带冒号的表情名称(例如'thumbsup'、'wave::skin-tone-3')thread_ts:线程回复所对应的父消息时间戳
注意事项:
- 添加回应需要精确的频道 ID 和消息时间戳组合
- 表情名称遵循 Slack 的命名规范,不带冒号
SLACK_FETCH_CONVERSATION_HISTORY仅返回频道主时间线,不会返回线程回复- 使用
SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION和父消息的thread_ts获取线程回复
5. 安排消息
适用场景:用户希望安排在未来发送消息
工具调用顺序:
SLACK_FIND_CHANNELS- 解析频道 ID [Prerequisite]SLACK_SCHEDULE_MESSAGE- 使用post_at时间戳安排消息 [Required]
关键参数:
channel:解析后的频道 IDpost_at:发送时间的 Unix 时间戳(最多可提前 120 天)text/blocks:消息内容
注意事项:
- 最多只能提前 120 天安排发送
post_at必须是 Unix 时间戳,不能是 ISO 8601 格式
常见模式
ID 解析
执行操作前,始终先将显示名称解析为 ID:
- 频道名称 -> 频道 ID:使用带有
query参数的SLACK_FIND_CHANNELS - 用户名 -> 用户 ID:使用
SLACK_FIND_USERS的search_query或email - DM 频道:使用已解析的用户 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_CHANNELS | query |
| 列出所有频道 | SLACK_LIST_ALL_CHANNELS | limit、cursor、types |
| 发送消息 | SLACK_SEND_MESSAGE | channel、markdown_text |
| 编辑消息 | SLACK_UPDATES_A_SLACK_MESSAGE | channel、ts、markdown_text |
| 搜索消息 | SLACK_SEARCH_MESSAGES | query、count、sort |
| 获取线程 | SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION | channel、ts |
| 添加表情回应 | SLACK_ADD_REACTION_TO_AN_ITEM | channel、name、timestamp |
| 查找用户 | SLACK_FIND_USERS | search_query 或 email |
| 列出用户 | SLACK_LIST_ALL_USERS | limit、cursor |
| 打开 DM | SLACK_OPEN_DM | 用户 ID |
| 安排消息 | SLACK_SCHEDULE_MESSAGE | channel、post_at、text |
| 获取频道信息 | SLACK_RETRIEVE_CONVERSATION_INFORMATION | 频道 ID |
| 频道历史记录 | SLACK_FETCH_CONVERSATION_HISTORY | channel、oldest、latest |
| 工作区信息 | SLACK_FETCH_TEAM_INFO | (无) |
适用场景
此技能适用于执行概览中描述的工作流或操作。
示例
用户请求:
通过 Composio 的 Slack 工具包,自动执行 Slack 工作区操作,包括消息发送、搜索、频道管理和表情回应工作流。
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必要输入、权限、安全边界或成功标准,请停止并请求澄清。