
wecomcli-message
查询当前可以发送消息的聊天会话范围,并向会话列表中的单聊或群聊发送文本、Markdown、图片、文件、语音、视频消息。用户要求“给某人发消息”“在某个群里通知”“给最近会话发消息”或“把图片/文件/语音/视频发到企业微信”时使用。
- Installs
- 7.8K
- Last 24h
- +145
- Trending rank
- #1518
- Security
- Pass
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/wecomteam/wecom-cli --skill wecomcli-message- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads wecomcli-message automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
Security audits
Independent scans of the skill's instructions and bundled files.
SKILL.md
The instructions your agent reads when the skill is triggered.
企业微信发送消息
执行任何
wecom-cli命令前,必须先读取并完成wecomcli-shared技能的公共前置检查。
- 可以向授权人发送消息。
- 可以向授权人以外的、机器人最近有消息往来的聊天会话(单聊和群聊)发送消息。
适用范围
适用
- 适用于给授权人发消息,使用
wecom-cli identity whoami获取授权人ID,可作为chat_id使用,无需调用sessions list。 - 适用于查询当前有权限发送消息的聊天会话范围并给这些范围中的成员或群聊发送 Markdown 消息、图片、文件、AMR 语音或视频
不适用
- 发送对象不是授权人且不在本次
sessions list返回结果中 → 告知用户当前只能向最近活跃的会话或授权人发送
技能依赖
调用依赖技能前,必须先完整读取对应 SKILL.md。
| 依赖技能 | 触发场景 | 数据流向 |
|---|---|---|
wecomcli-media | 发送图片、文件、语音或视频时只有本地文件路径,没有可直接复用的 media_id | 包含媒体上传接口,如没有已有的 media_id,必须先阅读该技能获取 media_id,上传时传入的 type 应和发送时的msg_type 对齐 |
获取能发送消息的会话列表
命令
wecom-cli message aibot sessions list
返回
| 字段 | 类型 | 说明 |
|---|---|---|
sessions | array | 会话列表,按最后一条消息时间从新到旧排序,具体数量以实际回包为准 |
sessions[].chat_id | string | 会话 ID |
sessions[].chat_name | string | 群名称或单聊名称 |
sessions[].chat_type | string | single 单聊或 group 群聊 |
sessions[].last_msg_time | string | 最后一条消息时间,格式 YYYY-MM-DD HH:MM:SS |
sessions_count | integer | sessions 数组元素数量 |
chat_id 来源
向授权人以外的用户发送消息,调用 wecom-cli message aibot send 前,需要先调用一次 sessions list,然后从本次返回的 sessions[] 中选定目标项,把该项的 chat_id 原样复制到 send.chat_id。
以下值都不能直接作为 send.chat_id:
- 用户输入的 ID
- 之前轮次或历史上下文保存的
chat_id wecomcli-contact返回的userid- 根据姓名、群名或其他字段自行构造的值
这些值最多只能作为匹配线索;最终发送参数必须重新取自本次 sessions list 的匹配项。
目标会话匹配
- 聊天名称:在本次
sessions[]中按非空chat_name精确匹配;不能精确匹配需要向用户反问确认发送目标,唯一命中时从匹配项复制chat_id。 - 最近第一个/最近某个会话:按
sessions[]原始顺序选择用户明确指定的项。 - 用户提供 ID:只能与本次
sessions[].chat_id做完全相等校验;命中后仍从匹配项复制chat_id,不能直接复用用户输入值。
匹配结果处理:
- 唯一匹配时继续发送。
- 多个聊天会话候选时,按返回顺序展示聊天名和最后消息时间,让用户选择。
- 用户完成选择后,必须重新调用
sessions list,再用选定对象匹配当次返回值。 - 无匹配时停止发送,如实告知目标不在最近 10 个会话中;不要接受外部
chat_id绕过限制。 sessions_count=0时停止发送,告知当前没有可发送的最近会话。- 展示会话列表时保持接口原始顺序;展示名称和时间,不展示内部
chat_id。
发送消息
前置条件
调用本接口前必须完成以下步骤:
- 根据发送对象选择调用
wecom-cli message aibot sessions list获取chat_id或wecom-cli identity whoami获取授权人ID。 - 在本次列表中唯一匹配目标。
- 如果发送授权人以外的对象,从列表中匹配项原样复制
sessions[].chat_id。 - 目标是媒体消息时,再准备对应的
media_id。
在目标会话匹配成功前,不上传媒体,也不调用 send。
命令
wecom-cli message aibot send --json '<JSON 参数>'
公共参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
chat_id | string | 是 | 必须取自 wecom-cli identity whoami 或当前发送流程中刚调用的 sessions list 返回的目标 sessions[].chat_id |
msg_type | string | 是 | markdown / image / file / voice / video |
markdown | object | 条件必填 | 仅 msg_type="markdown" 时传 |
image | object | 条件必填 | 仅 msg_type="image" 时传 |
file | object | 条件必填 | 仅 msg_type="file" 时传 |
voice | object | 条件必填 | 仅 msg_type="voice" 时传 |
video | object | 条件必填 | 仅 msg_type="video" 时传 |
每次请求必须且只能携带一个与 msg_type 同名的内容对象。不要传空对象,也不要同时传多个消息对象。
Markdown 消息
markdown.content 必填,最长 20480 UTF-8 字节。普通文本也按 Markdown 发送。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "markdown",
"markdown": {
"content": "<markdown 消息内容>"
}
}'
图片消息
image.media_id 必填,必须由媒体上传接口以 type=image 上传获得。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "image",
"image": {
"media_id": "<media_id>"
}
}'
文件消息
file.media_id 必填,必须由媒体上传接口以 type=file 上传获得;文件名取上传时的原始文件名。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "file",
"file": {
"media_id": "<media_id>"
}
}'
语音消息
voice.media_id 必填,必须由媒体上传接口以 type=voice 上传获得;源文件仅支持 AMR 格式,不能只改扩展名冒充 AMR。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "voice",
"voice": {
"media_id": "<media_id>"
}
}'
视频消息
| 字段 | 必填 | 说明 |
|---|---|---|
video.media_id | 是 | 由媒体上传接口以 type=video 上传获得 |
video.title | 否 | 最长 128 UTF-8 字节;省略时使用上传时的原始文件名 |
video.description | 否 | 最长 512 UTF-8 字节;省略时不展示描述 |
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "video",
"video": {
"media_id": "<media_id>",
"title": "产品演示",
"description": "本周版本的核心功能演示"
}
}'
用户没有提供视频标题或描述时直接省略对应字段,不传空字符串,也不追问非必填字段。
关键约束
- 用户明确要求发送且目标与内容完整时直接执行,不重复追问确认;缺少目标、内容或本地文件时只追问缺失项。
- 连续发送多条时,不用每次
send前都重新调用sessions list或wecom-cli identity whoami,但连续发送中途上下文发生压缩时重新调用确保chat_id正确。 chat_id、userid、media_id都是内部调用值,禁止面向用户展示。- Markdown 正文、视频标题和描述限制按 UTF-8 字节数计算;超限时不静默截断,请用户缩短或明确同意拆分。
- 发送成功后只说明目标和消息类型,不编造消息 ID。
- 接口失败时如实转达错误,不使用 curl / Python 等方式绕过
wecom-cli。
FAQ
What does the wecomcli-message skill do?
查询当前可以发送消息的聊天会话范围,并向会话列表中的单聊或群聊发送文本、Markdown、图片、文件、语音、视频消息。用户要求“给某人发消息”“在某个群里通知”“给最近会话发消息”或“把图片/文件/语音/视频发到企业微信”时使用。
How do I install wecomcli-message?
Run npx skills add https://github.com/wecomteam/wecom-cli --skill wecomcli-message in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/wecomcli-message/ (personal) or .claude/skills/wecomcli-message/ (project).
Which AI agents can use wecomcli-message?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is wecomcli-message safe to install?
Security partners have reviewed it: Gen Agent Trust Hub passed; Socket passed; Snyk passed. As with any skill, read the SKILL.md and bundled scripts before installing.
Who maintains wecomcli-message?
It is published by wecomteam in wecomteam/wecom-cli. It has 7,823 recorded installs.
More from wecomteam/wecom-cli
wecomcli-doc
wecomteam/wecom-cli
企业微信在线 doc 文档技能。能够新建 doc、导入本地 .doc/.docx/.txt 为 doc、读取 doc 内容、向 doc 追加或覆盖写入。仅当用户明确出现「doc」「docx」「word」「在线文档」「office 文档」等强类型词,或提供 https://doc.weixin.qq.com/doc/xxx 链接时才使用本技能。用户说"文档""新建文档""写文档""整理成文档""输出到文档"等未指定类型的泛化表达,一律使用 wecomcli-smartpage。
wecomcli-todo
wecomteam/wecom-cli
管理企业微信待办,支持创建、删除或退出、完成、查询和筛选,以及修改标题、描述、参与人名单和截止时间。
wecomcli-meeting
wecomteam/wecom-cli
企业微信会议管理。本技能负责『在线会议』——即含在线会议链接(含会议号/入会链接、可远程或视频参会)的会议的创建、查询、搜索、获取详情(含会议信息、纪要、待办)、查询会议转写原文(逐字发言记录)、更新、取消等全部操作;若用户要的是不含在线会议链接的『日程』(也涵盖纯线下面对面碰头),改用 wecomcli-calendar 技能。用户仅说'开会/约个会/某会/某会议'等、未明确要创建的是日程还是在线会议时,必须先读取本技能并按其中的消歧流程向用户追问确认后再处理,不可臆断直接创建。
wecomcli-contact
wecomteam/wecom-cli
使用 wecom-cli 按姓名、拼音、英文名或别名搜索企业微信通讯录中的人员,并查询匹配人员的 userid、部门和职务。适用于查找联系人、区分同名人员、获取用户 userid,以及列出全部同名人员。
wecomcli-smartsheet
wecomteam/wecom-cli
企业微信智能表格内容操作技能——专注于智能表格(smartsheet)的数据、结构与样式管理:读取表结构与记录、管理子表/字段/记录/视图/图表,以及修改行列样式(填色/高亮);记录新增或更新遇到 851003 / no authority 时通过 Webhook 兜底写入。触发条件:用户提到智能表格、企微表格、smartsheet 的内容操作或样式修改,或链接形如 https://doc.weixin.qq.com/smartsheet/s3xxx。企业微信表格分为「智能表格」和「在线表格」两种类型,本文档介绍的是智能表格的相关技能。智能表格包含子表(sheet)、视图(view)、字段/列(field),每条记录(record)以 recordid 作为主键,结构类似关系型数据库。当用户未明确说明使用「在线表格」时,一律默认使用功能更强大的智能表格(本技能)。
wecomcli-msg
wecomteam/wecom-cli
企业微信消息技能。提供会话列表查询、消息记录拉取(支持文本/图片/文件/语音/视频)、多媒体文件获取和文本消息发送能力。当用户需要"查看消息"、"看聊天记录"、"发消息给某人"、"最近有什么消息"、"给群里发消息"、"看看发了什么图片/文件"时触发。
Popular docs & writing skills
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.
lark-markdown
open.feishu.cn
飞书 Markdown:查看、创建、上传、编辑和比较飞书中的原生 Markdown 文件。当用户要操作飞书 Markdown 文件,或比较其远端版本及本地草稿时使用。纯本地 Markdown 文件操作不触发本 skill。不负责将 Markdown 导入为飞书在线文档,也不负责文件搜索、权限、评论、移动、删除等云空间管理操作。
writing-beats
mattpocock/skills
Writing, exploit; assemble raw material into a journey of beats, grounding each term before a beat leans on it.
writing-shape
mattpocock/skills
Writing, exploit: shape raw material into an article, paragraph by paragraph.
writing-fragments
mattpocock/skills
Writing, explore: mine raw fragments, no structure yet.
writing-for-agents
mattpocock/skills
Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.