[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7APYWAJ119TPF079F2AXWAS":3,"skill-same:01M7APYWAJ119TPF079F2AXWAS":54},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":32,"commitSha":33,"skillDirectory":34,"forksCount":14,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":37,"ownerDescription":38,"updatedAt":39,"install":40,"resources":53},"01M7APYWAJ119TPF079F2AXWAS","weixin-mp",null,"通过 Limb 体系操作微信公众号：发布文章、上传图片、管理草稿。 Use when: 需要发布内容到微信公众号、查看草稿、检查公众号连接状态。 Not for: 其他平台的发布、纯文本聊天、非公众号相关操作。 Output: 微信公众号操作结果（发布ID、草稿列表、图片URL等）。","peps1666\u002FBuildCrew-AI","peps1666","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F128503359?v=4","01M7APD9BQ6NTJ79J9FTB6YZGT","junhao zhou","01M7APD9CD06Q6CCJ22FYVG2AK",0,"MIT","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fpackages\u002Fapi\u002Fsrc\u002Fplugins\u002Fweixin-mp\u002Fskills\u002Fweixin-mp\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: weixin-mp\ndescription: >\n  通过 Limb 体系操作微信公众号：发布文章、上传图片、管理草稿。\n  Use when: 需要发布内容到微信公众号、查看草稿、检查公众号连接状态。\n  Not for: 其他平台的发布、纯文本聊天、非公众号相关操作。\n  Output: 微信公众号操作结果（发布ID、草稿列表、图片URL等）。\ntriggers:\n  - \"微信\"\n  - \"公众号\"\n  - \"发文\"\n  - \"weixin\"\n  - \"wechat\"\n  - \"publish article\"\n---\n\n# 微信公众号发文\n\n通过 Limb 体系三步调用操作微信公众号：\n1. `limb_list_available` — 发现在线节点\n2. `limb_list_tools` — 查询工具 schema\n3. `limb_invoke_tool` — 调用具体工具\n\n## 使用前检查\n\n先调用 `limb_list_available({ capability: \"content_publish\" })` 确认 `weixin-mp` 节点在线。\n如果节点不在线或不存在，提示用户在 **设置 → 插件集成** 中启用并配置微信公众号插件。\n\n## 接口发现\n\n`limb_list_available()` 返回当前在线节点的 capability、command 和 authLevel；这是可调用命令白名单。\n调用 `limb_list_tools({ nodeId: \"weixin-mp\" })` 获取每个工具的参数 schema。\n详细参数以本 skill 的\"核心能力\"说明为准。当前列表中没有的命令不要猜测调用；如果缺少预期命令，提示用户重新启用或同步微信公众号插件。\n\n## 核心能力\n\n- **检查连接** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.check_status\" })`\n  确认公众号是否配置并可连接。\n\n- **Markdown 转 HTML** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.convert_markdown\", params: { markdown } })`\n  将 Markdown 转为微信兼容内联样式 HTML，写入系统临时目录并返回 `{ filePath }`。发文前必须调用。支持 `markdownFilePath` 替代 `markdown` 读取本地文件（必须在系统临时目录下，上限 2 MB）。\n\n- **上传正文图片** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.upload_image\", params: { fileLocation } })`\n  上传图片到微信 CDN，返回可在文章正文中使用的 `{ url }`。`fileLocation` 支持 HTTP\u002FHTTPS URL 或 OS 临时目录下的本地路径（如 `\u002Ftmp\u002Fphoto.png`）。本地文件必须在系统临时目录下，其他路径会被拒绝。格式：jpg\u002Fpng\u002Fgif\u002Fbmp，上限 10 MB。\n\n- **上传封面素材** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.upload_material\", params: { fileLocation } })`\n  上传永久图片素材，返回 `{ mediaId, url }`。用作封面图的 `thumbMediaId`。同 `upload_image`，本地路径限系统临时目录，上限 10 MB。\n\n- **创建草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.create_draft\", params: { title, content, thumbMediaId, author?, digest? } })`\n  创建草稿箱文章。`content` 须是微信 HTML（先调 `convert_markdown`），`thumbMediaId` 是封面 media_id（先调 `upload_material`）。支持 `contentFilePath` 替代 `content` 传入大段内容（必须在系统临时目录下，上限 2 MB）。\n\n- **更新草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.update_draft\", params: { mediaId, title?, content?, thumbMediaId?, author?, digest? } })`\n  更新草稿箱文章，仅传需要修改的字段。支持 `contentFilePath` 替代 `content`（同上，限系统临时目录）。\n\n- **删除草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.delete_draft\", params: { mediaId } })`\n  删除草稿箱中的指定草稿。\n\n- **发布草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.submit_publish\", params: { mediaId } })`\n  将草稿发布。`mediaId` 是 `create_draft` 返回的 `media_id`。\n\n- **查看草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.list_drafts\", params: { offset?, count? } })`\n  列出草稿箱中的文章及其 media_id。\n\n- **发布状态** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.publish_status\", params: { publishId } })`\n  查询发布任务的处理状态和文章链接。\n\n- **素材管理** — `list_material`、`get_material_count`、`delete_material` 管理永久素材。\n\n- **已发布文章** — `list_articles`、`delete_article` 管理已发布文章。\n\n## 发文流程（编排示例）\n\n发布一篇 Markdown 文章的标准步骤：\n\n1. `convert_markdown` — Markdown → 微信 HTML（返回 filePath）\n2. 正文中的外部图片 → 逐个 `upload_image` → 替换为微信 CDN URL\n3. `upload_material` — 上传封面图 → 得到 `thumbMediaId`\n4. `create_draft` — 创建草稿（传入 contentFilePath + thumbMediaId）\n5. 可选：`submit_publish` — 发布草稿\n\n## 常见错误\n\n- 忘记先调 `convert_markdown` 就直接传 Markdown 给 `create_draft`\n- 文章正文中使用外部图片链接（必须先 `upload_image` 到微信 CDN）\n- 混淆草稿 media_id 和发布 publishId\n- 使用旧工具名 `limb_invoke`（已更名为 `limb_invoke_tool`，需配合 `limb_list_tools` 查 schema）\n\n## 限制\n\n- 微信 HTML 不支持外部 CSS\u002FJS，所有样式内联处理\n- access_token 2h 过期，系统自动刷新，无需手动管理\n- **本地文件限制**：所有本地文件路径（`fileLocation`、`markdownFilePath`、`contentFilePath`）必须在 OS 系统临时目录下（如 `\u002Ftmp\u002F`）。文本文件上限 2 MB，图片文件上限 10 MB。需要上传工作区文件时，先复制到临时目录再传入路径\n","# 微信公众号发文\n\n通过 Limb 体系三步调用操作微信公众号：\n1. `limb_list_available` — 发现在线节点\n2. `limb_list_tools` — 查询工具 schema\n3. `limb_invoke_tool` — 调用具体工具\n\n## 使用前检查\n\n先调用 `limb_list_available({ capability: \"content_publish\" })` 确认 `weixin-mp` 节点在线。\n如果节点不在线或不存在，提示用户在 **设置 → 插件集成** 中启用并配置微信公众号插件。\n\n## 接口发现\n\n`limb_list_available()` 返回当前在线节点的 capability、command 和 authLevel；这是可调用命令白名单。\n调用 `limb_list_tools({ nodeId: \"weixin-mp\" })` 获取每个工具的参数 schema。\n详细参数以本 skill 的\"核心能力\"说明为准。当前列表中没有的命令不要猜测调用；如果缺少预期命令，提示用户重新启用或同步微信公众号插件。\n\n## 核心能力\n\n- **检查连接** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.check_status\" })`\n  确认公众号是否配置并可连接。\n\n- **Markdown 转 HTML** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.convert_markdown\", params: { markdown } })`\n  将 Markdown 转为微信兼容内联样式 HTML，写入系统临时目录并返回 `{ filePath }`。发文前必须调用。支持 `markdownFilePath` 替代 `markdown` 读取本地文件（必须在系统临时目录下，上限 2 MB）。\n\n- **上传正文图片** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.upload_image\", params: { fileLocation } })`\n  上传图片到微信 CDN，返回可在文章正文中使用的 `{ url }`。`fileLocation` 支持 HTTP\u002FHTTPS URL 或 OS 临时目录下的本地路径（如 `\u002Ftmp\u002Fphoto.png`）。本地文件必须在系统临时目录下，其他路径会被拒绝。格式：jpg\u002Fpng\u002Fgif\u002Fbmp，上限 10 MB。\n\n- **上传封面素材** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.upload_material\", params: { fileLocation } })`\n  上传永久图片素材，返回 `{ mediaId, url }`。用作封面图的 `thumbMediaId`。同 `upload_image`，本地路径限系统临时目录，上限 10 MB。\n\n- **创建草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.create_draft\", params: { title, content, thumbMediaId, author?, digest? } })`\n  创建草稿箱文章。`content` 须是微信 HTML（先调 `convert_markdown`），`thumbMediaId` 是封面 media_id（先调 `upload_material`）。支持 `contentFilePath` 替代 `content` 传入大段内容（必须在系统临时目录下，上限 2 MB）。\n\n- **更新草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.update_draft\", params: { mediaId, title?, content?, thumbMediaId?, author?, digest? } })`\n  更新草稿箱文章，仅传需要修改的字段。支持 `contentFilePath` 替代 `content`（同上，限系统临时目录）。\n\n- **删除草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.delete_draft\", params: { mediaId } })`\n  删除草稿箱中的指定草稿。\n\n- **发布草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.submit_publish\", params: { mediaId } })`\n  将草稿发布。`mediaId` 是 `create_draft` 返回的 `media_id`。\n\n- **查看草稿** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.list_drafts\", params: { offset?, count? } })`\n  列出草稿箱中的文章及其 media_id。\n\n- **发布状态** — `limb_invoke_tool({ nodeId: \"weixin-mp\", command: \"weixin_mp.publish_status\", params: { publishId } })`\n  查询发布任务的处理状态和文章链接。\n\n- **素材管理** — `list_material`、`get_material_count`、`delete_material` 管理永久素材。\n\n- **已发布文章** — `list_articles`、`delete_article` 管理已发布文章。\n\n## 发文流程（编排示例）\n\n发布一篇 Markdown 文章的标准步骤：\n\n1. `convert_markdown` — Markdown → 微信 HTML（返回 filePath）\n2. 正文中的外部图片 → 逐个 `upload_image` → 替换为微信 CDN URL\n3. `upload_material` — 上传封面图 → 得到 `thumbMediaId`\n4. `create_draft` — 创建草稿（传入 contentFilePath + thumbMediaId）\n5. 可选：`submit_publish` — 发布草稿\n\n## 常见错误\n\n- 忘记先调 `convert_markdown` 就直接传 Markdown 给 `create_draft`\n- 文章正文中使用外部图片链接（必须先 `upload_image` 到微信 CDN）\n- 混淆草稿 media_id 和发布 publishId\n- 使用旧工具名 `limb_invoke`（已更名为 `limb_invoke_tool`，需配合 `limb_list_tools` 查 schema）\n\n## 限制\n\n- 微信 HTML 不支持外部 CSS\u002FJS，所有样式内联处理\n- access_token 2h 过期，系统自动刷新，无需手动管理\n- **本地文件限制**：所有本地文件路径（`fileLocation`、`markdownFilePath`、`contentFilePath`）必须在 OS 系统临时目录下（如 `\u002Ftmp\u002F`）。文本文件上限 2 MB，图片文件上限 10 MB。需要上传工作区文件时，先复制到临时目录再传入路径\n",{"name":5,"triggers":24,"description":31},[25,26,27,28,29,30],"微信","公众号","发文","weixin","wechat","publish article","通过 Limb 体系操作微信公众号：发布文章、上传图片、管理草稿。 Use when: 需要发布内容到微信公众号、查看草稿、检查公众号连接状态。 Not for: 其他平台的发布、纯文本聊天、非公众号相关操作。 Output: 微信公众号操作结果（发布ID、草稿列表、图片URL等）。\n","main","e43f83d5ceb309323cae7e0f31e5e48fd816a57d","packages\u002Fapi\u002Fsrc\u002Fplugins\u002Fweixin-mp\u002Fskills\u002Fweixin-mp","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI","https:\u002F\u002Fgithub.com\u002Fpeps1666","https:\u002F\u002Fwww.cug.edu.cn\u002F","My name is Zhou Junhao, and I am from China University of Geosciences (Wuhan). My major is Resources and Environment, and my research direction is Remote Sensin","2026-08-16 00:25:38",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add peps1666\u002FBuildCrew-AI --skill weixin-mp",{"tool":46,"command":47},"bunx","bunx skills add peps1666\u002FBuildCrew-AI --skill weixin-mp",{"tool":49,"command":50},"pnpm","pnpm dlx skills add peps1666\u002FBuildCrew-AI --skill weixin-mp","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fpackages\u002Fapi\u002Fsrc\u002Fplugins\u002Fweixin-mp\u002Fskills\u002Fweixin-mp\u002FSKILL.md",true,[],[55,61,68,75,82,89],{"skillNo":56,"name":57,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7APYYSHV2SSSRV5Q15JWWPF","plugin-reconcile-skill","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fplugins\u002Ftest-reconcile-plugin-regr\u002Fskills\u002Fplugin-reconcile-skill\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7APYNNEMBP2T62WT0JT7GNE","writing-skills","创建或修改 Clowder AI skill \u002F MCP tool description 的元技能（含质量标准、范本、发布）。 Use when: 写新 skill、修改现有 skill、写\u002F改 MCP tool description、验证 skill 质量； 或者功能实现中产出了 SKILL.md \u002F cat-cafe-skills\u002F 新目录 \u002F manifest.yaml skill 条目。 Not for: 使用 skill（直接触发对应 skill）。 Output: 新\u002F更新的 SKILL.md + manifest 条目 + symlinks。 GOTCHA: 软硬同重——skill\u002FMCP 质量 = 代码质量；不要写模型已知的通用教程，先过价值门禁。","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fcat-cafe-skills\u002Fwriting-skills\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7APYHJDXRH9EDP5D3JZHSVN","writing-plans","将 spec\u002F需求拆分为可执行的分步实施计划。 Use when: 有 spec 或需求，准备动手前需要拆分步骤。 Not for: trivial 改动（≤5 行）、已有详细计划。 Output: 分步实施计划（含 TDD 步骤和检查点）。","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fcat-cafe-skills\u002Fwriting-plans\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7APYD2SSZ6Y6CF5SD3YZ5C0","worktree","为代码、脚本、API 与第一方执行面创建隔离 Git worktree，并配置 Redis 6398；classifier 放行的 co-creation docs direct push 不进入本流程。","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fcat-cafe-skills\u002Fworktree\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7APY8R4E7RR2WZVPH9V8WWP","workspace-navigator","猫猫把“打开文档、代码或日志”等模糊意图解析成本地绝对路径或 worktree 相对路径，并返回 applied、queued、blocked 或 unconfirmed 的真实 Workspace 投递状态。","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fcat-cafe-skills\u002Fworkspace-navigator\u002FSKILL.md",[],[],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":19},"01M7APY3JPVTH0HCG2TKHVTPE5","vision-rescue","绝境反转方法论：当任务似乎没有希望、反复摆动、准备放弃愿景时的五步突破框架。 Use when: 任务看起来无解、多次尝试失败后想放弃、输出投降修辞（\"现状最优\"\u002F\"没救了\"\u002F\"接受现实\"）、连续 3+ 轮在希望与绝望间摆动。 Not for: 未出现绝境信号的常规 debugging（用 debugging）、常规探索\u002F调研（用 deep-research）、operator 已签字降级的目标、trivial 任务。 Output: Desperation Packet（六问证据评估）+ 新方向行动计划 \u002F operator 升级请求。","https:\u002F\u002Fgithub.com\u002Fpeps1666\u002FBuildCrew-AI\u002Fblob\u002Fmain\u002Fcat-cafe-skills\u002Fvision-rescue\u002FSKILL.md",[],[]]