mcpField
S
slack-automation

slack-automation

github.com/sickn33生产力48.8k87 次安装今天更新
代码仓库

关于 slack-automation

slack-automation 是通过 Rube MCP 和 Composio 的 Slack 工具包执行 Slack 工作区操作的技能。它指导消息、搜索、频道、用户、表情回应、线程和定时发送等流程,并强调权限与范围检查。

主要功能

  1. 01发送、编辑和定时发送消息
  2. 02搜索消息并展开线程
  3. 03解析频道和用户
  4. 04管理频道与用户列表
  5. 05添加或移除消息回应

适用场景

  1. 01发布或定时发送频道消息
  2. 02查找消息并阅读相关线程
  3. 03查询工作区频道和成员
  4. 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 服务。目标账户仍须通过返回的连接流程进行身份验证,并授予所需权限范围。

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

工作区和沟通边界

确认具体的工作区、频道、用户及当前发现的工具架构。读取或搜索并不代表获准发布消息、发送私信、提及用户、添加回应、编辑内容或安排发送;只有在收到相应用户指示且符合可见范围时,才可执行这些操作。大量提及和跨工作区/共享频道的内容曝光前,请先预览。将时间戳保留为字符串,在限定范围内分页,隐去私密内容;发送结果不确定时,先核对消息历史,再重试。包装器特有的 markdown_text 支持并不意味着 Slack 的 text/blocks 已弃用;对于区块内容,请提供无障碍备用文本。请参阅 chat.postMessage。

核心工作流

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: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. 搜索消息和对话

适用场景:用户想要在工作区中查找特定消息

工具调用顺序:

  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 仅返回频道主时间线,不会返回线程回复
  • 使用 SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION 和父消息的 thread_ts 获取线程回复
5. 安排消息

适用场景:用户希望安排在未来发送消息

工具调用顺序:

  1. SLACK_FIND_CHANNELS - 解析频道 ID [Prerequisite]
  2. SLACK_SCHEDULE_MESSAGE - 使用 post_at 时间戳安排消息 [Required]

关键参数:

  • channel:解析后的频道 ID
  • post_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_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
打开 DMSLACK_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 的 Slack 工具包,自动执行 Slack 工作区操作,包括消息发送、搜索、频道管理和表情回应工作流。

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少必要输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown