Summary
企业微信微盘(Disk / 网盘)文件操作技能。承接"微盘 / 网盘"里的文件列出、搜索、读取元信息、上传、下载、重命名、新建文件夹操作。用户明确提到"微盘"/"网盘"/"共享空间"时必须先读取本技能获取完整指引,不得凭记忆处理。用户说"上传到微盘"、"帮我在微盘里搜一下 xxx"、"微盘那个 PPT…
wecomteam/wecom-openclaw-plugin · Archived
企业微信微盘(Disk / 网盘)文件操作技能。承接"微盘 / 网盘"里的文件列出、搜索、读取?
npx skills add wecomteam/wecom-openclaw-plugin --skill wecomcli-disk
企业微信微盘(Disk / 网盘)文件操作技能。承接"微盘 / 网盘"里的文件列出、搜索、读取元信息、上传、下载、重命名、新建文件夹操作。用户明确提到"微盘"/"网盘"/"共享空间"时必须先读取本技能获取完整指引,不得凭记忆处理。用户说"上传到微盘"、"帮我在微盘里搜一下 xxx"、"微盘那个 PPT…
This repository is archived — consider an actively maintained alternative.
企业微信插件前置条件检查。在执行任何 wecom_mcp 操作前,通过 shell 命令检查工具权限配置(profile…
8 installsRelated neighbors and high-traction skills in the same topics — useful to compare before installing.
企微 doc ?
20.3K installs管理企业微信?
20.1K installs使用 wecom-cli 按姓名、拼音、英文名或别名搜索企业微信通讯录中的人员,并查询匹?
20.1K installs企业微信会议管理。本技能负责『在线会议』——即含在线会议链接(含会议号/?
20K installsOther skills from wecomteam/wecom-openclaw-plugin · top by installs.
npx skills add wecomteam/wecom-openclaw-plugin
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
28,213 B
SUMMARY.md
1,094 B
wecom-cli 是插件提供的 tool,不是终端命令:所有操作都通过调用该 tool 完成,参数应使用 args 传入,禁止通过 exec / shell / 终端等命令行方式使用。
⚠️ 前置条件:首次调用 wecom-cli 前,必须按 wecomcli-preflight 技能执行前置条件检查,确保工具已加入白名单。
资源型 skill,负责微盘文件的列出、搜索、读取信息、上传、下载、重命名与新建文件夹。
folder)、调整目录树结构 → 告知用户暂未支持,建议前往企业微信客户端手动操作space)、修改空间成员与空间设置 → 告知用户暂未支持,建议前往企业微信客户端手动操作file_path| 用户输入信号 | 路由到 | |||
|---|---|---|---|---|
| 明确提"微盘 / 网盘 / disk / Wecom 网盘" | 本 skill | |||
提供 https://drive.weixin.qq.com/s?k=... 链接(微盘分享 URL) |
本 skill(作为 get / download 的 url 入参) |
|||
| 提供 `https://doc.weixin.qq.com/<doc\ | sheet\ | smartsheet\ | smartpage>/...` 链接 | 对应 wecomcli-doc / wecomcli-sheet / wecomcli-smartsheet / wecomcli-smartpage |
在线文档 doc / sheet / smartsheet / smartpage 的读写内容 |
同上对应文档 skill | |||
| 改文档权限 / 加成员 / 改文档名(针对 doc/sheet/smartsheet/smartpage) | wecomcli-doc-manage |
注意:
doc.weixin.qq.com/page.weixin.qq.com是在线文档域名,drive.weixin.qq.com才是微盘域名,切勿混用。
doc(在线文档)、sheet(在线表格)、ppt(在线幻灯片)、collect(收集表)、mind(思维导图)、flow(流程图)、smartsheet(智能表格)、smartpage(智能主页)、journal(汇报)、pdf(PDF)、offlineword(离线 Word)、offlineexcel(离线 Excel)、offlineppt(离线 PPT)、offlinepdf(离线 PDF)、image(图片)、videoaudio(视频音频)、design(设计稿)。在线文档保持原名,离线文件用 offline_ 前缀区分。腾讯文档不在本 skill 范围,按【路由决策】表改走对应文档 skill。
在线/离线模糊时同时搜:用户说「Excel」「Word」「PPT」「PDF」等未明确在线还是离线时,
filetypes同时传入在线版和离线版(如["sheet", "offlineexcel"]),避免遗漏。其余类型按上方枚举名按字面对应传入即可。
获取用户微盘最近查看的文件列表,支持分页。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk files list --json '{"limit": 10}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
cursor |
string | 否 | "" |
分页游标;不传或传空串则获取首页数据 |
limit |
number | 否 | 10 | 每页返回的最大条数;不传则使用服务默认值,最大 100 |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
has_more |
boolean | 是否还有更多数据;true 时用 next_cursor 续取 |
next_cursor |
string | 下一页游标 |
files[].id |
string | 文件 ID 或文件夹 ID |
files[].file_name |
string | 文件名称 |
files[].docid |
string | 文档 ID,仅 type=smartsheet / smartpage / sheet / word / ppt / collect / journal 时有意义 |
files[].type |
string | 文件类型:file / folder / space / smartsheet / smartpage / sheet / word / ppt / collect / journal / flow / mind |
files[].file_size |
number | 文件大小(字节);仅 type=file 时有意义 |
files[].creator_userid |
string | 创建者 userid |
files[].space_id |
string | 所属共享空间 ID |
files[].space_name |
string | 所在共享空间名称 |
files[].folder_id |
string | 所在文件夹 ID |
files[].folder_name |
string | 所在文件夹名称 |
files[].create_time |
string | 创建时间,YYYY-MM-DD HH:mm:ss |
files[].update_time |
string | 最后更新时间,YYYY-MM-DD HH:mm:ss |
files[].path |
string | 文件完整路径 |
files[].doc_url |
string | 文档打开链接,仅在线文档类型(smartsheet / smartpage / sheet / word / ppt / collect / journal)时填充 |
按关键词、文件类型、创建者、共享空间、排序等条件搜索微盘文件、文件夹或共享空间。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk files search --json '{"keywords": ["季度汇报"], "search_type": "file", "sort_by": "modify_time", "sort_order": "desc", "limit": 10}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
keywords |
string[] | 选填 | — | 字面关键词数组,长度 0~20(or 关系);与 creatoruserids / searchtype / file_types 四选一,至少传一个 |
creator_userids |
string[] | 选填 | — | 限定创建者 userid 列表,长度 0~50,不传则不过滤;与 keywords / searchtype / filetypes 四选一,至少传一个;用户给的是姓名时通过 wecomcli-contact 解析为 userid |
search_type |
string | 选填 | all |
查询范围枚举:all / file(文件)/ folder(文件夹)/ space(共享空间);与 keywords / creatoruserids / filetypes 四选一,至少传一个; |
file_types |
string[] | 选填 | — | 限定文件类型,长度 0~10;可选 doc / sheet / ppt / collect / mind / flow / smartsheet / smartpage / journal / pdf / offlineword / offlineexcel / offlineppt / offlinepdf / image / videoaudio / design(在线文档保持原名,离线文档用 offline 前缀区分);不得传枚举外的值;与 keywords / creatoruserids/ search_type 四选一,至少传一个 |
space_keywords |
string[] | 否 | — | 限定所在空间名称的关键词,长度 0~10,or 关系;命中的 space 会被作为搜索范围;不传则不限空间;附加过滤条件,不能单独触发搜索 |
sort_by |
string | 否 | best_match |
排序方式:bestmatch / modifytime / file_size;不得传枚举外的值 |
sort_order |
string | 否 | desc |
排序方向:asc / desc;仅在 sortby=modifytime 或 file_size 时需传 |
cursor |
string | 否 | — | 分批拉取增量 key,上一次请求返回的 next_cursor;不传则从头开始 |
limit |
number | 否 | 10 | 每页最大返回条数,最大 100 |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
has_more |
boolean | 是否还有更多数据;true 时用 next_cursor 续取 |
next_cursor |
string | 下一页游标 |
files[].id |
string | 微盘文件 ID / 文件夹 ID / 空间 ID |
files[].type |
string | 命中项类型:file / folder / space / smartsheet / smartpage / sheet / word / ppt / flow / mind / journal / collect |
files[].file_name |
string | 名称(文件名 / 文件夹名 / 空间名) |
files[].file_size |
number | 文件大小(字节),仅 type=file 时有意义 |
files[].creator_userid |
string | 创建者 userid |
files[].space_id |
string | 所在共享空间 ID |
files[].space_name |
string | 所在共享空间名称 |
files[].folder_id |
string | 所在父文件夹 ID;位于空间根目录时等于 space_id |
files[].folder_name |
string | 所在文件夹名称 |
files[].path |
string | 文件完整路径;spacename 与 foldername 同名时不一定是父子关系,可能平级,以 path 为准判断层级 |
files[].create_time |
string | 创建时间,YYYY-MM-DD HH:mm:ss |
files[].update_time |
string | 最近更新时间,YYYY-MM-DD HH:mm:ss |
files[].docid |
string | 文档 ID,仅 type=smartsheet / smartpage / sheet / word / ppt / collect / journal 时有意义 |
files[].doc_url |
string | 文档打开链接,仅在线文档类型时填充;可直接作为在线文档分享链接发送给用户/群,无需额外处理 |
files[].title_highlight |
string[] | 标题命中关键词的高亮摘要片段;type=space 时为空 |
files[].text_highlight |
string[] | 正文命中关键词的高亮摘要片段;type=space 时为空 |
在线文档命中项处理约束——极重要:搜索返回的
type若为smartsheet/smartpage/sheet/word/ppt/journal/collect/mind/flow,这些是在线协作文档(正文存云端,非二进制文件),禁止走disk files download(会失败或拿到空壳),也不适合走disk files get。其中smartsheet/smartpage/sheet/word有对应的下游 skill 可读正文,路由见文末【跨技能依赖】表;ppt/journal/collect/mind/flow目前没有任何下游 skill 或 CLI 能读取正文,命中这些类型且用户要看内容时,直接告知暂不支持读取,引导用户用docurl在企业微信客户端内打开查看。仅当type=file时才可用id作为fileid调disk files download拿本地文件。
使用规则
keywords / creatoruserids / searchtype / filetypes 四选一,至少传一个;spacekeywords 只是附加过滤条件,不能单独触发搜索。若四者全空则用自然语言追问后再发起搜索。若用户仅给出空间关键词(如「在 XX 空间里搜一下」),可用自然语言追问具体搜索内容。| 参数 | 何时不传(后端默认) | 何时传(用户明确表达时) |
|---|---|---|
search_type |
用户笼统说"搜一下 xxx / 找 xxx / 文件 / 资料"等未明确对象类型 → 后端按 all |
明确说"只搜文件夹 / 目录"→folder;"只搜共享空间 / 团队空间"→space;"只要文件,不要文件夹"→file |
sort_by |
用户无排序偏好 → 后端按 best_match |
"最新 / 最近改 / 最早"→modifytime;"最大 / 最小"→filesize |
sort_order |
sortby=bestmatch 时无需传 |
传 modifytime / filesize 时按新→旧用 desc、旧→新用 asc;不传则默认 desc |
file_types |
用户笼统说"文档 / 文件 / 资料 / 材料"或业务概念(合同 / 报告 / 会议纪要)→ 不过滤,靠 keywords 兑现 |
用户明确点到具体形态(PPT / Excel / PDF / 图片 / 智能表格 等),把对应枚举一并塞入数组 |
space_keywords |
不限空间时 | 用户说"在 XX 空间 / XX 团队盘里搜" → 填空间名关键词(本接口不接受 space_id) |
keywords 不要混入文件类型后缀:用户说「搜一下 Excel 报告」「找 PPT 方案」时,文件类型后缀(Excel/PPT/Word/PDF)交给 filetypes 过滤,keywords 只保留业务关键词(如「报告」「方案」)。例:「Excel 报告」→ keywords:["报告"] + filetypes:["sheet","offline_excel"]。file_types 口语→枚举映射:见上方「文件类型枚举」表中的「用户口语表达」列。hasmore=true 时用 nextcursor 作为下一次调用的 cursor;首次调用 cursor 传空串。begintime / endtime 字段,禁止伪造;若用户给出"最近 3 天 / 上周 / 本月"等时间范围,先按 sortby=modifytime, sortorder=desc 拉取,再由客户端根据 updatetime 二次筛选。sort_order=desc(默认,新→旧)时,向用户总结结果也应从最新到最旧展示,不要颠倒顺序。根据 file_id 或微盘文件 URL 读取文件基础信息。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk files get --json '{"file_id": "FILE_ID"}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
file_id |
string | 二选一 | — | 文件 ID;与 url 二选一;同时提供时优先使用 file_id |
url |
string | 二选一 | — | 微盘文件分享 URL(形如 https://drive.weixin.qq.com/s?k=AJEAIQdfAAoN4N17GM);与 file_id 二选一 |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
file.id |
string | 文件 ID 或文件夹 ID |
file.file_name |
string | 文件名称 |
file.docid |
string | 文档 ID,仅 type=smartsheet / smartpage / sheet / word / ppt / collect / journal 时有意义 |
file.type |
string | 文件类型:file / folder / space / smartsheet / smartpage / sheet / word / ppt / collect / journal / flow / mind |
file.file_size |
number | 文件大小(字节);仅 type=file 时有意义 |
file.creator_userid |
string | 创建者 userid |
file.space_id |
string | 所属共享空间 ID |
file.space_name |
string | 所在共享空间名称 |
file.folder_id |
string | 所在文件夹 ID,可能为文件夹 fileid 或空间 spaceid |
file.folder_name |
string | 所在文件夹名称 |
file.create_time |
string | 创建时间,YYYY-MM-DD HH:mm:ss |
file.update_time |
string | 最后更新时间,YYYY-MM-DD HH:mm:ss |
file.path |
string | 文件完整路径 |
file.doc_url |
string | 文档打开链接,仅在线文档类型(smartsheet / smartpage / sheet / word / ppt / collect / journal)时填充 |
将本地文件上传到微盘指定目录。支持两种上传方式:A. 素材方式 上下文中已有 mediaid 时直接传 filecontentmedia;B. 本地路径方式 直接传 filepath。两者二选一。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk files upload --json '{"folder_id": "FOLDER_ID", "file_name": "季度汇报.pptx", "file_content_media": "mcxxx"}'
或直接使用本地文件路径:
wecom-cli disk files upload --json '{"folder_id": "FOLDER_ID", "file_name": "季度汇报.pptx", "file_path": "/tmp/季度汇报.pptx"}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 | |
|---|---|---|---|---|---|
folder_id |
string | 否 | — | 目标文件夹 ID;可传文件夹 fileid 或空间 spaceid;不传则默认上传到默认空间 |
|
file_name |
string | 条件必填 | — | 文件名称(含扩展名);长度 1~255;禁止包含字符 `/ \ : * ? " < > \ | ;传 filepath 时不传则从路径自动提取,传 filecontent_media` 时必填 |
filecontentmedia |
string | 二选一 | — | 文件素材的 mediaid(前缀 mc),禁止自行构造或猜测;与 filepath 二选一 |
|
file_path |
string | 二选一 | — | 本地文件绝对路径;与 filecontentmedia 二选一,两者必须提供其一 |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
file.id |
string | 上传后的文件 ID |
file.file_name |
string | 文件名称 |
file.docid |
string | 文档 ID,仅 type=smartsheet / smartpage / sheet / word / ppt / collect / journal 时有意义 |
file.type |
string | 文件类型 |
file.file_size |
number | 文件大小(字节);仅 type=file 时有意义 |
file.creator_userid |
string | 创建者 userid |
file.space_id |
string | 所属共享空间 ID |
file.space_name |
string | 所在共享空间名称 |
file.folder_id |
string | 所在文件夹 ID |
file.folder_name |
string | 所在文件夹名称 |
file.create_time |
string | 创建时间 |
file.update_time |
string | 最后更新时间 |
file.path |
string | 文件完整路径 |
file.doc_url |
string | 文档打开链接,仅在线文档类型时填充 |
使用规则
上传分两条路径,按用户手上的素材形态选一条即可:
路径 A:素材方式(filecontentmedia)
适用场景:上下文中已有可用的 media_id(前置技能返回的、或用户直接给出的),无需再走 media +upload。
folder_id:用户没提供时不传则默认上传到默认空间mediaid 填入 filecontent_media,调 disk files upload路径 B:本地路径方式(file_path)
file_path,例如 disk files download 下载后的路径)时可直接使用folder_id:用户没提供时不传则默认上传到默认空间file_path,调 disk files upload(不需要再走 wecomcli-media)二选一互斥:
filecontentmedia与filepath只能选其中之一,不能同时传,也不能都不传。用户既没给mediaid也没给本地文件路径时用自然语言追问,禁止靠搜索/幻觉凑一个文件。
将微盘文件下载到本地,返回本地文件路径。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk files download --json '{"file_id": "FILE_ID"}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
file_id |
string | 二选一 | — | 要下载的文件 ID,与 url 二选一;不传则必须传 url |
url |
string | 二选一 | — | 文件 URL,与 fileid 二选一;不传则必须传 fileid |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
file_path |
string | 框架保存为本地文件后返回的文件路径 |
file_content |
string | 文件内容(内容不长时直接返回字符串) |
size |
number | 文件大小,单位字节 |
使用规则
type=file(对应 filetypes 中的 offlineword / offlineexcel / offlineppt / offline_pdf / image / videoaudio / design)才能通过本接口下载到本地。type 是 smartsheet / smartpage / sheet / word / ppt / journal / collect / mind / flow,禁止把它们的 id 或 docurl 当 fileid / url 传入本接口,会失败或拿到无效文件。其中 smartsheet / smartpage / sheet / word 要读取内容请按文末【跨技能依赖】表用 docid 路由到对应的下游文档技能;ppt / journal / collect / mind / flow 目前没有下游技能可读正文,直接告知用户暂不支持,引导其用 doc_url 在企业微信客户端内打开查看。https://drive.weixin.qq.com/s?k=... 是微盘文件分享 URL,可作为 url 参数;https://doc.weixin.qq.com/... / https://page.weixin.qq.com/... 都是在线文档链接,禁止传入本接口。修改微盘文件名称。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk files rename --json '{"file_id": "FILE_ID", "new_name": "新文件名称.xlsx"}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 | |
|---|---|---|---|---|---|
file_id |
string | 是 | — | 文件 ID(必填) | |
new_name |
string | 是 | — | 新的文件名称(必填,含扩展名);长度 1~255;禁止包含字符 `/ \ : * ? " < > \ | ` |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
status |
string | 操作结果,成功时为 "success" |
本接口不返回
file对象;如需最新元数据,可再走「读取文件信息」。
在微盘指定目录下创建新文件夹。
调用方式
使用 wecom-cli 工具按照下面格式调用
wecom-cli disk folders create --json '{"folder_id": "FOLDER_ID", "folder_name": "新建文件夹"}'
入参
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
folder_id |
string | 选填 | — | 目标父文件夹 ID;可传文件夹 fileid 或空间 spaceid,不传则默认创建到个人空间根目录 |
folder_name |
string | 是 | — | 文件夹名称 |
返回
| 字段 | 类型 | 说明 |
|---|---|---|
folder.id |
string | 文件夹 ID |
folder.file_name |
string | 文件夹名称 |
folder.docid |
string | 文档 ID,仅在线文档类型时有意义 |
folder.type |
string | 文件类型:folder |
folder.file_size |
number | 文件大小(字节);仅 type=file 时有意义 |
folder.creator_userid |
string | 创建者 userid |
folder.space_id |
string | 所属共享空间 ID |
folder.space_name |
string | 所在空间名;对空间有权限时才返回,与 space_id 同时出现 |
folder.folder_id |
string | 所在父文件夹 ID,可能为文件夹 fileid 或空间 spaceid |
folder.folder_name |
string | 所在父文件夹名;对父文件夹有权限时才返回,与 folder_id 同时出现 |
folder.create_time |
string | 创建时间,YYYY-MM-DD HH:mm:ss |
folder.update_time |
string | 最后更新时间,YYYY-MM-DD HH:mm:ss |
folder.path |
string | 文件夹完整路径 |
folder.doc_url |
string | 文档打开链接,仅在线文档类型时填充 |
fileid:用户给的是文件名/关键词时,先走 disk files search 拿 fileid,禁止把文件名直接当 file_id 拼接。upload 的 filecontentmedia 与 filepath 二选一,两者必须提供其一,不能同时传。filecontentmedia 必须是合法的 mediaid(前缀 mc),禁止自行构造或猜测;file_path 只能是用户明确给出或前置技能返回的真实本地文件路径,禁止编造。两者都没有时用自然语言追问,禁止靠搜索/幻觉凑一个文件。creatoruserid / spaceid / folderid / fileid / docid 等任何 ID 仅用于后续接口调用,禁止直接展示给用户;creator_userid 若需展示创建者信息,先用 wecomcli-contact 解析为姓名。向用户展示 list / search 结果时严格遵守:
docurl 非空时(在线文档),写成 - [文件名](docurl) 形式的 markdown 链接;docurl 为空时(离线文件、文件夹、空间等),写成 - 文件名,不得编造链接。副行可展示 path / updatetime / 可读的 file_size(如 2.4 MB),字段之间用 · 或空格分隔。creatoruserid / spaceid / folder_id / id 等内部 ID。| 依赖技能 | 何时触发 | 使用被依赖 skill 做什么 |
|---|---|---|
wecomcli-doc |
搜索命中项 type=word / doc,用户要"读一下内容" |
拿返回的 docid 交给 wecom-cli doc 'contents get' 读取正文(docid 以 a1 / b1 开头的除外,走 wecomcli-smartpage) |
wecomcli-sheet |
搜索命中项 type=sheet(在线表格),用户要读内容 |
拿返回的 docid 交给 wecomcli-sheet 对应读取接口 |
wecomcli-smartsheet |
搜索命中项 type=smartsheet(智能表格),用户要读内容 |
拿返回的 docid 交给 wecomcli-smartsheet 对应读取接口 |
wecomcli-smartpage |
搜索命中项 type=smartpage(智能主页),或 type=word 且 docid 以 a1 / b1 开头,用户要读内容 |
拿返回的 docid 交给 wecomcli-smartpage 对应读取接口 |
wecomcli-doc-manage |
命中项是 word/sheet/smartsheet/smartpage 且用户要求改文档权限 / 加成员 / 改文档名 | 交由 wecomcli-doc-manage 处理;其余在线/离线类型(file/collect/mind/flow/journal/ppt/pdf 等)的改名走本 skill 的 rename;folder(文件夹)不支持重命名(见【适用范围】),告知用户暂未支持,建议前往企业微信客户端手动操作 |
参数缺失 / 多候选 / 意图确认时,用自然语言追问让用户明确。