Slack自动化Skill slack-automation

这个技能通过Rube MCP和Composio工具包,实现Slack工作空间的自动化操作,包括消息发送、搜索、频道管理和反应工作流程。适用于DevOps、团队协作自动化和工作流程优化,关键词包括Slack自动化、Rube MCP、Composio、消息管理、工作流程自动化。

DevOps 0 次安装 0 次浏览 更新于 3/8/2026

名称:slack-automation 描述:通过Rube MCP(Composio)自动化Slack消息发送、频道管理、搜索、反应和线程。程序化地发送消息、搜索对话、管理频道/用户和反应消息。 requires: mcp: [rube] category: communication

通过Rube MCP的Slack自动化

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

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

先决条件

  • Rube MCP必须已连接(RUBE_SEARCH_TOOLS可用)
  • 通过RUBE_MANAGE_CONNECTIONS与工具包slack的活跃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频道或DM发送消息

工具序列:

  1. SLACK_FIND_CHANNELS - 将频道名称解析为频道ID [先决条件]
  2. SLACK_LIST_ALL_CHANNELS - 如果FIND_CHANNELS返回空/模糊结果时的备用方案 [备用]
  3. SLACK_FIND_USERS - 为DM或@提及解析用户 [可选]
  4. SLACK_OPEN_DM - 如果直接消息用户,打开/重用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参数;缺少它会导致错误“提供了无效的请求数据”
  • SLACK_SEND_MESSAGE需要有效的频道加上markdown_text/text/blocks/attachments之一
  • 无效的块载荷返回error=invalid_blocks(最多50个块)
  • 如果省略thread_ts,回复成为顶级帖子
  • 从SEND_MESSAGE响应中持久化response.data.channelresponse.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 - 包括私有频道和DMs [可选]
  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覆盖私有/IM
  • SLACK_LIST_ALL_USERS可能达到HTTP 429速率限制;尊重Retry-After头部
  • 通过response_metadata.next_cursor分页直到为空;通过id去重

4. 反应和线程消息

使用时机: 用户想要添加反应或管理线程对话

工具序列:

  1. SLACK_SEARCH_MESSAGESSLACK_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_tsSLACK_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_queryemailSLACK_FIND_USERS
  • DM频道: 带解析的用户ID的SLACK_OPEN_DM

分页

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

  • 跟随response_metadata.next_cursor直到为空
  • 为可靠分页设置显式limit值(例如100-200)
  • 跨页面通过id去重结果

消息格式化

  • 推荐使用markdown_text而不是textblocks用于格式化消息
  • 使用<@USER_ID>格式提及用户(不是@用户名)
  • 在markdown_text中使用 进行换行

已知问题

  • 频道解析: 如果频道是私有的且机器人未被邀请,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_queryemail
列出用户 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提供支持