wecomcli-msg

企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。

1,387 stars

Best use case

wecomcli-msg is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。

Teams using wecomcli-msg should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/wecomcli-msg/SKILL.md --create-dirs "https://raw.githubusercontent.com/WecomTeam/wecom-cli/main/skills/wecomcli-msg/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/wecomcli-msg/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How wecomcli-msg Compares

Feature / Agentwecomcli-msgStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 企业微信消息技能

> `wecom-cli` 是企业微信提供的命令行程序,所有操作通过执行 `wecom-cli` 命令完成。


通过 `wecom-cli msg <接口名> '<json入参>'` 与企业微信消息系统交互。

---

## 接口列表

### get_msg_chat_list — 获取会话列表

```bash
wecom-cli msg get_msg_chat_list '{"begin_time": "2026-03-11 00:00:00", "end_time": "2026-03-17 23:59:59"}'
```

按时间范围查询有消息的会话列表,支持分页。参见 [API 详情](references/get-msg-chat-list.md)。

### get_message — 拉取会话消息

```bash
wecom-cli msg get_message '{"chat_type": 1, "chatid": "zhangsan", "begin_time": "2026-03-17 09:00:00", "end_time": "2026-03-17 18:00:00"}'
```

根据会话类型和 ID 拉取指定时间范围内的消息记录,支持分页。支持 text/image/file/voice/video 消息类型,仅支持 7 天内。参见 [API 详情](references/get-message.md)。

### get_msg_media — 获取消息文件内容

```bash
wecom-cli msg get_msg_media '{"media_id": "MEDIAID_xxxxxx"}'
```

根据文件 ID 自动下载文件到本地,返回文件的本地路径(`local_path`)、名称、类型、大小及 MIME 类型。用于获取图片、文件、语音、视频等非文本消息的实际内容。参见 [API 详情](references/get-msg-media.md)。

### send_message — 发送文本消息

```bash
wecom-cli msg send_message '{"chat_type": 1, "chatid": "zhangsan", "msgtype": "text", "text": {"content": "hello world"}}'
```

向单聊或群聊发送文本消息。参见 [API 详情](references/send-message.md)。

---

## 核心规则

### 时间范围规则
- **格式**:所有时间参数使用 `YYYY-MM-DD HH:mm:ss` 格式
- **默认范围**:用户未指定时,默认使用最近7天(当前时间往前推7天)
- **限制**:开始时间不能早于当前时间的7天前,不能晚于当前时间
- **相对时间支持**:支持"昨天"、"最近三天"等自动推算

### chatid查找规则
- 当用户提供人名或群名而非ID时:
  1. 调用 `get_msg_chat_list` 获取会话列表(时间范围与目标查询一致)
  2. 在 `chats` 中按 `chat_name` 匹配
  3. **匹配策略**:
     - 精确匹配唯一结果:直接使用
     - 模糊匹配多个结果:展示候选列表让用户选择
     - 无匹配结果:告知用户未找到
- **chat_type 判断**:`get_msg_chat_list` 返回中不含会话类型字段,需根据上下文推断:用户明确提到「群」时使用 `chat_type=2`,否则默认 `chat_type=1`(单聊)

### userid 转 name
**流程**:
1. 调用 `wecomcli-contact` 技能的 `get_userlist` 获取用户列表
2. 建立 userid 到 name 的映射关系
3. **展示策略**:
   - 精确匹配:显示 name
   - 无匹配:保持显示 userid

### 强制交互步骤(不可跳过)
以下步骤在涉及非文本消息下载时**必须逐一执行**,不得合并、省略或跳过,即使用户未主动询问也必须执行:
1. **必须主动告知文件位置**:下载完成后必须立即向用户展示所有文件的完整路径和存放目录
2. **必须询问是否删除**:告知位置后必须立即询问用户是否需要清理临时文件

---

## 典型工作流

### 查看会话列表
**用户query示例**:
- "看看我最近一周有哪些聊天"
- "这几天谁给我发过消息"

**执行流程**:
1. 确定时间范围(用户指定或默认最近7天)
2. 调用 `get_msg_chat_list` 获取会话列表
3. 展示会话名称、最后消息时间、消息数量
4. 若 `has_more` 为 `true`,告知用户还有更多会话可继续查看

### 查看聊天记录
**用户query示例**:
- "帮我看看和张三最近的聊天记录"
- "看看项目群里最近的消息"

**执行流程**:
1. 确定时间范围(用户指定或默认最近7天)
2. 通过 **chatid查找规则** 确定目标会话的 `chatid` 和 `chat_type`
3. 调用 `get_message` 拉取消息列表
4. 调用 `wecomcli-contact` 技能的 `get_userlist` 获取通讯录,建立 userid→姓名 映射
5. **统计非文本消息**:遍历消息列表,统计 `msgtype` 非 `text` 的消息(image/file/voice/video)数量和类型
6. 展示消息时将 `userid` 替换为可读姓名,格式:
   - 文本消息:`姓名 [时间]: 内容`
   - 图片消息:`姓名 [时间]:[图片]`
   - 文件消息:`姓名 [时间]:[文件] 文件名称`
   - 语音消息:`姓名 [时间]:[语音] 语音内容`
   - 视频消息:`姓名 [时间]:[视频]`
7. **非文本消息处理**:展示完消息后,如果存在非文本消息:
   - **主动询问是否下载**:告知用户非文本消息数量和类型(如:"以上聊天中包含 2 张图片、1 个文件,是否需要下载到本地?")
   - 用户确认后,逐个调用 `get_msg_media` 接口,接口会自动下载文件并返回 `local_path`
   - **检查文件后缀**:每个文件下载完成后,检查 `local_path` 对应的文件是否具有正确的后缀名:
     - 根据 `get_msg_media` 返回的 `content_type`(MIME 类型)和 `name` 字段判断:
       - 如果文件名缺少后缀(如 `screenshot` 而非 `screenshot.png`),根据 `content_type` 自动补上正确后缀(如 `image/png` → `.png`,`application/pdf` → `.pdf`,`audio/amr` → `.amr`,`video/mp4` → `.mp4`)
       - 如果文件名后缀与 `content_type` 不一致,以 `content_type` 为准进行修正
     - 补全或修正后缀后,将文件重命名为正确的文件名
     - 确认文件可正常读取(文件大小 > 0),若文件为空或损坏则告知用户该文件下载异常
   - ⚠️ **不要对下载的文件使用 `MEDIA:` 指令**:这些文件是从聊天记录中下载的历史附件,仅需告知用户本地存放路径即可,**严禁**通过 `MEDIA:` 指令重新发送给用户
8. ⚠️ **必须主动告知文件位置**(此步骤不可跳过):所有文件下载并检查完成后,**必须立即、主动**以汇总形式向用户展示文件存放目录和每个文件的完整路径,不要等用户询问。示例:
   > 📁 文件已下载到以下位置:
   > - 图片:`xxx/yyy.png`
   > - 文件:`xxx/yyy.pdf`
   >
   > 你可以在 `xxx/yyy/` 目录下找到所有下载的文件。
9. ⚠️ **必须询问是否删除**(此步骤不可跳过):告知文件位置后,**必须立即、主动**询问用户是否需要删除已下载的临时文件(如:"如果不再需要这些文件,是否需要我帮你清理?")
   - 用户确认删除后,删除 `local_path` 对应的文件
   - 用户不需要删除则保留文件
10. 若 `next_cursor` 不为空,告知用户还有更多消息可继续查看

### 发送消息
**用户query示例**:
- "帮我给张三发一条消息:明天会议改到下午3点"
- "在项目群里发一条消息:今天下午3点开会"

**执行流程**:
1. 通过 **chatid查找规则** 确定目标会话的 `chatid` 和 `chat_type`
2. **发送前确认**:向用户确认发送对象和内容(如:"即将向 张三 发送:'明天会议改到下午3点',确认发送吗?"),用户确认后再执行
3. 调用 `send_message` 发送(`msgtype` 固定为 `text`)
4. 展示发送结果

### 查看消息并回复
**用户query示例**:
- "看看张三给我发了什么,然后帮我回复收到"

**执行流程**:
1. 先执行"查看聊天记录"流程(复用已获取的 `chatid` 和 `chat_type`)
2. 展示消息后,执行"发送消息"流程(需确认后再发送)

---

## 错误处理
- **时间范围超限**:告知用户7天限制并调整为有效范围
- **会话未找到**:明确告知用户未找到对应会话
- **API错误**:展示具体错误信息,必要时重试
- **网络问题**:HTTP错误时主动重试最多3次

Related Skills

wecomcli-todo

1387
from WecomTeam/wecom-cli

企业微信待办事项管理技能,支持查询待办列表、获取待办详情、创建待办、更新待办、删除待办及变更用户处理进度状态。在用户说"看看我的待办列表"、"我有哪些待办"、"帮我创建一个待办"、"把这个任务分派给张三"、"标记待办完成"、"删掉那个待办"、"帮我建个提醒"、"更新一下待办内容"、"把提醒时间改到下周"、"接受这个待办"、"拒绝这个待办"、"这个待办的详情"、"待办分派给谁了"等需要对待办进行读写操作的场景时使用。

wecomcli-schedule

1387
from WecomTeam/wecom-cli

企业微信日程管理技能。适用于用户对企业微信日程的各类管理需求。当用户需要:(1) 查询指定时间范围内的日程列表或获取日程详细信息(标题、时间、地点、参与者等),(2) 创建新日程并设置提醒、参与人等,(3) 修改已有日程的标题、时间、地点等信息或取消日程,(4) 添加或移除日程参与人,(5) 查询多个成员的闲忙状态并分析共同空闲时段以安排会议时使用此技能。

wecomcli-meeting

1387
from WecomTeam/wecom-cli

企业微信会议技能,支持创建预约会议、查询会议列表、获取会议详情、取消会议、更新会议成员。当用户需要"创建会议"、"预约会议"、"约会议"、"安排会议"、"查看会议"、"查询会议列表"、"会议详情"、"什么时候开会"、"有哪些会议"、"查找会议"、"取消会议"、"删除会议"、"修改会议成员"、"添加会议参与人"、"移除会议成员"时触发。

wecomcli-doc

1387
from WecomTeam/wecom-cli

企业微信文档与智能表格管理技能。提供文档的创建、读取、编辑能力,以及智能表格的结构管理(子表、字段)和数据管理(记录增删改查)。适用场景:(1) 以 Markdown 格式获取文档完整内容 (2) 新建文档或智能表格 (3) 用 Markdown 格式覆写文档内容 (4) 管理智能表格子表和字段/列 (5) 查询、添加、更新、删除智能表格记录。支持通过 docid 或文档 URL 定位文档。

wecomcli-contact

1387
from WecomTeam/wecom-cli

通讯录成员查询技能,获取当前用户可见范围内的通讯录成员,支持按姓名/别名本地筛选匹配。返回 userid、姓名和别名。⚠️ 仅返回当前用户有权限查看的成员,非全量成员。

wecomcli-manage-smartsheet-schema

1354
from WecomTeam/wecom-cli

企业微信智能表格结构管理技能。提供子表(Sheet)和字段(Field/列)的增删改查能力。适用场景:(1) 查询智能表格的子表列表 (2) 添加、更新、删除子表 (3) 查询子表的字段/列信息 (4) 添加、更新、删除字段/列。当用户需要管理智能表格的表结构、列定义、子表配置时触发此 Skill。支持通过 docid 或文档 URL 定位文档。

wecomcli-manage-smartsheet-data

1354
from WecomTeam/wecom-cli

企业微信智能表格数据(记录)管理技能。提供智能表格记录的增删改查能力。适用场景:(1) 查询子表全部记录 (2) 添加一行或多行记录 (3) 更新已有记录 (4) 删除记录。当用户需要读取表格数据、写入新数据、修改或删除表格行时触发此 Skill。支持通过 docid 或文档 URL 定位文档。

wecomcli-manage-schedule

1354
from WecomTeam/wecom-cli

企业微信日程管理技能。适用于用户对企业微信日程的各类管理需求。当用户需要:(1) 查询指定时间范围内的日程列表或获取日程详细信息(标题、时间、地点、参与者等),(2) 创建新日程并设置提醒、参与人等,(3) 修改已有日程的标题、时间、地点等信息或取消日程,(4) 添加或移除日程参与人,(5) 查询多个成员的闲忙状态并分析共同空闲时段以安排会议时使用此技能。

wecomcli-manage-doc

1354
from WecomTeam/wecom-cli

企业微信文档管理技能。提供文档的创建、读取和编辑能力,支持通过 docid 或文档 URL 操作企业微信文档(doc_type=3)和智能表格(doc_type=10)。适用场景:(1) 以 Markdown 格式导出获取文档完整内容(异步轮询) (2) 新建文档或智能表格 (3) 用 Markdown 格式覆写文档内容。当用户需要查看文档内容、创建新文档、编辑文档正文时触发此 Skill。

wecomcli-lookup-contact

1354
from WecomTeam/wecom-cli

通讯录成员查询技能,获取当前用户可见范围内的通讯录成员,支持按姓名/别名本地筛选匹配。返回 userid、姓名和别名。⚠️ 仅返回当前用户有权限查看的成员,非全量成员。

wecomcli-get-todo-list

1354
from WecomTeam/wecom-cli

企业微信待办列表查询技能,支持按创建时间和提醒时间过滤,支持分页。在用户说"看看我的待办列表"、"我有哪些待办"、"这周的待办有哪些"、"最近有什么待办"、"查一下我的待办"、"列出所有待办"等需要浏览待办概览的场景时使用。注意:此技能仅返回待办概要信息(不含内容和分派人),如需完整详情请配合 wecomcli-get-todo-detail 使用。

wecomcli-get-todo-detail

1354
from WecomTeam/wecom-cli

企业微信待办详情批量查询技能,根据待办 ID 列表获取完整信息(包含待办内容和分派人)。在用户说"看看这个待办的详情"、"待办内容是什么"、"这个待办分派给谁了"、"告诉我待办的具体信息"等需要查看待办完整内容的场景时使用。通常配合 wecomcli-get-todo-list 使用——先获取待办 ID 列表,再用本技能获取详情。