mcpField
S
slack

slack

github.com/superwall生产力098 次安装25 周前更新
代码仓库

关于 slack

此技能通过 Bun 调用 Slack REST API 来处理 Slack 数据,涵盖读取和搜索消息、管理文件、查看工作区信息及发送消息,并检查令牌和权限范围。

主要功能

  1. 01使用 Bun 调用 Slack Web API
  2. 02读取和搜索 Slack 数据
  3. 03发送消息并处理文件
  4. 04查看用户、频道和团队
  5. 05检查令牌、权限范围和分页

适用场景

  1. 01搜索或总结 Slack 对话
  2. 02向指定频道发送消息
  3. 03上传或检查 Slack 文件
  4. 04构建或调试 Slack API 自动化

安装

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

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

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

详细介绍

slack

当任务需要读取 Slack、向 Slack 发布内容、上传或下载 Slack 文件、检查 Slack 用户/频道/工作区,或以其他方式与 Slack 数据交互时,请使用此技能。

适用场景

  • 用户要求读取、搜索、总结或检查 Slack 频道、群组、提及、消息、用户、工作区或文件。
  • 用户要求发送、起草或发布 Slack 消息。
  • 用户要求上传、获取或检查 Slack 文件。
  • 用户要求构建或调试应使用 Slack REST API 的 Slack 自动化。

指令

直接通过 Bun 使用 Slack REST API。

  1. 在调用 Slack API 前,检查环境中是否存在 SLACK_BOT_TOKEN。

    • 如果 SLACK_BOT_TOKEN 缺失或为空,请停止操作,并告知用户前往 https://superwall.ai/integrations 设置 Slack。
    • 不要要求用户在聊天中粘贴令牌。
  2. 使用 Bun 内置的 fetch 调用 Slack Web API 端点。

    • 使用 Authorization: Bearer ${process.env.SLACK_BOT_TOKEN} 发送令牌。
    • 除非端点要求使用 multipart form data,否则使用 Content-Type: application/json; charset=utf-8 发送 JSON 请求。
    • 同时检查 HTTP 状态和 Slack JSON 中的 ok 字段。
    • 报告 Slack API 错误时,注明方法名和 error 值。
  3. 优先使用简短且针对具体任务的 Bun 脚本处理 Slack 操作。

const token = process.env.SLACK_BOT_TOKEN;

if (!token) {
  throw new Error(
    "SLACK_BOT_TOKEN is not set. Set up Slack at https://superwall.ai/integrations."
  );
}

async function slack(method: string, body: Record<string, unknown> = {}) {
  const response = await fetch(`https://slack.com/api/${method}`, {
    method: "POST",
    headers: {
      authorization: `Bearer ${token}`,
      "content-type": "application/json; charset=utf-8",
    },
    body: JSON.stringify(body),
  });

  const data = await response.json();

  if (!response.ok || !data.ok) {
    throw new Error(`${method} failed: ${data.error ?? response.statusText}`);
  }

  return data;
}
  1. 如果响应中包含 response_metadata.next_cursor,请使用 Slack 游标分页。

    • 读取时使用适中的页面大小。
    • 当 next_cursor 缺失或为空时停止。
  2. 至少假定以下 bot 作用域可用:

{
  "scopes": {
    "bot": [
      "app_mentions:read",
      "channels:read",
      "channels:history",
      "chat:write",
      "chat:write.public",
      "files:write",
      "files:read",
      "team:read",
      "users:read",
      "groups:history"
    ]
  }
}
  1. 以后可能会添加更多作用域。

    • 如果作用域的可用性会影响操作,请先通过 Slack API 检查应用当前可用的作用域,再判断操作是否无法执行。
    • 如果 API 报告缺少作用域,请明确说明 Slack 要求的具体作用域,以及需要该作用域的操作。
  2. 根据任务使用常见的 Slack Web API 方法:

    • 使用 auth.test 验证令牌并确认工作区/应用上下文。
    • 使用 conversations.list 列出作用域允许访问的公开频道和私有频道。
    • 使用 conversations.history 读取频道或群组历史记录。
    • 使用 chat.postMessage 发送消息。
    • 使用 users.list 或 users.info 检查用户。
    • 使用 team.info 检查工作区详情。
    • 使用 files.uploadV2、files.info 及相关文件方法处理文件。
  3. 谨慎执行写入操作。

    • 发送消息或上传文件时,请确认目标频道/用户和内容,除非用户已明确指定两者。
    • 除非用户明确要求,否则不要删除、覆盖或广泛广播内容。

评论

支持 Markdown