宝玉的「自动发公众号」Skill 拆解:它怎么把 Markdown 一键变草稿,我们怎么接上
宝玉的「自动发公众号」Skill 拆解:它怎么把 Markdown 一键变草稿,我们怎么接上
写好一篇 Markdown,一条命令丢过去,它自己开浏览器、转排版、把图一张张贴进编辑器,最后在公众号后台躺好一篇草稿等你审。这就是宝玉那套 skill 干的事。
公众号最烦的不是写,是「发」——复制粘贴到那个难用的编辑器、图片一张张传、排版来回调、外链还得手动转底部引用。宝玉(@dotey)开源的 baoyu-skills 里就有一对专治这个的技能。这篇把它扒清楚:是什么、怎么发、怎么装、边界在哪、坑在哪,最后说说怎么跟我们手上已有的公众号能力拼成一条完整流水线。
一、先说清楚是谁的、在哪
很多人搜「baoyu 公众号」会被各种同名仓库带偏。真身只有一个:
- 仓库:github.com/JimLiu/baoyu-skills(10K+ stars)
- 作者:宝玉,X 上的 @dotey,博客 baoyu.io。GitHub 用户名是
JimLiu(刘宇 / Jim Liu),所以仓库挂在 JimLiu 名下、不是「baoyu」账号,这是最容易找错的点。
这是一个「AI Agent 技能集」,收录了 20+ 个 skill,适用于 Claude Code、Codex 这类支持 Skill 的 Agent。跟公众号自动发布相关的是两个配套技能:
baoyu-post-to-wechat——把内容发到公众号(核心)baoyu-markdown-to-html——Markdown 转微信兼容的带样式 HTML(排版)
⚠️ 找不到、别硬编:网上还有
jiji262/wechat-publisher等同类工具,但那不是宝玉的。本文只讲已核实的 JimLiu/baoyu-skills 本体。
二、它到底能干什么
baoyu-post-to-wechat 支持两种发布形态:
- 文章(文章):完整 Markdown / HTML / 纯文本,富排版。这是主用法。
- 贴图(图文):短文 + 最多 9 张图的图文消息。
文章流程是有「工序」的,skill 内部按步骤走:加载偏好 → 选账号(多号时)→ 判断输入类型 → 选发布方式配凭据 → 定主题配色校验元信息 → 发布 → 回执。对 Markdown 输入,它默认把普通外链转成文末底部引用(微信对正文里裸链不友好),想保留内联链接才加 --no-cite。
三、核心:它怎么实现「自动发」
这是最值得讲的部分。它给了三条路,本质是两套机制:
1. API 法(推荐、快)——走官方草稿箱接口
调微信公众平台官方 API:用 AppID + AppSecret 换 access_token,再调 cgi-bin/draft/add(新增草稿)等接口,把素材图上传、组装成草稿。
关键事实:它只生成草稿,不自动群发/推送。草稿落在公众号后台「草稿箱」,最后一步「群发」永远留给人点。这是它有意的安全边界。
2. 浏览器法(慢、但不挑账号)——Chrome CDP 自动化
通过 Chrome DevTools Protocol(CDP)驱动一个真实 Chrome:打开公众号编辑器、粘贴 HTML 正文、对每张图找到占位符 WECHATIMGPH_N、删占位符、再把图从剪贴板贴进去。它会记住登录态(独立 Chrome profile),不用每次扫码。好处是不需要 API 凭据、不卡 IP 白名单;代价是慢、且依赖本机有 Chrome 和辅助功能权限。
3. remote-api 法——SSH 隧道绕 IP 白名单
微信 API 常把调用来源限制在「IP 白名单」里的一两个固定 IP。如果你本机 IP 不在名单、但有台云服务器在,就用这条:所有渲染/传图/组装都在本地做,只把对 api.weixin.qq.com 的出站 HTTPS 调用经 SSH 动态端口转发(SOCKS5)从那台服务器发出去,让微信看到的是服务器 IP。AppSecret 不离开本机、远端不落任何文件,远端只要有 sshd 和出网即可。
四、怎么装、怎么配
前置:Node.js 环境 + 能跑 npx bun(脚本是 TypeScript,用 bun 跑)。
装(按需装,别全装,每个 skill 都吃 Agent 上下文):
npx skills add jimliu/baoyu-skills
# 或在 Agent 里:/plugin marketplace add JimLiu/baoyu-skills
配偏好:在 EXTEND.md(项目级 .baoyu-skills/... 或用户级 ~/.baoyu-skills/...)里写默认值——主题、配色、作者、发布方式、是否开评论,还支持 accounts: 多公众号。主题有 default / grace / simple / modern,配色十几个预设(经典蓝、中国红、翡翠绿…)也能填 hex。
配 API 凭据:在 mp.weixin.qq.com →「开发 → 基本配置」拿 AppID / AppSecret,写进 .baoyu-skills/.env(项目级或 ~/)。
发(API 法,接受 .md 或 .html):
npx -y bun <skill>/scripts/wechat-api.ts article.md --theme grace --color blue --author "你的名字" --cover cover.png
跑之前可以先 check-permissions.ts 自检:Chrome、profile 隔离、bun、辅助功能、剪贴板、粘贴按键、API 凭据一次性查全。
五、能力边界(别期待过头)
- 只到草稿、不自动群发:最后点「发表/群发」必须人来。这是特性不是 bug。
- 封面图、原创声明暂不支持(浏览器法):作者建议把封面图直接放进正文内容里。
- API 法的
news类型要封面图:没封面会被卡住要你补。 - 图片处理两法不同:API 渲染成
<img>上传,浏览器用占位符贴换——所以千万别自己先把 Markdown 转成 HTML 再喂进去,会把其中一条路搞坏。让脚本自己转。
六、踩坑清单
- 未认证号直接废:草稿箱等高级接口要求公众号已通过微信认证(订阅号/服务号都行,但必须认证)。未认证调用报
errcode 48001 api unauthorized。个人主体没认证资格 → API 法这条对你就是死的,只能走浏览器法。 - IP 白名单:API 调用源 IP 必须在公众号后台「IP 白名单」里,本机 IP 漂移就调不通——这正是 remote-api 法存在的理由。
- 依赖 bun:没装会让你
brew install oven-sh/bun/bun。 - macOS 辅助功能权限:浏览器法要在「系统设置 → 隐私与安全性 → 辅助功能」里给终端授权,否则模拟粘贴失灵。
- Linux 粘贴:要装
xdotool(X11)或ydotool(Wayland)。
七、跟我们已有能力怎么拼
我们手上本来就有公众号链路的「读」和「排版」两端,宝玉这套正好补上「写出去」那一端,凑成闭环:
- 读:
wechat-mp-cdp-fetch/wxcard-to-article——CDP 抓mp.weixin.qq.com正文,绕反爬。负责把别人的文章抓进来。 - 排版:
beautiful-article/ 公众号长文排版能力——把素材做成结构清晰的长文。 - 写出去:
baoyu-post-to-wechat——把排好的 Markdown 一键变成公众号草稿。
一条顺手的流水线就是:素材 → 我们排成 Markdown → baoyu-markdown-to-html 调主题配色 →(认证号走 API、否则走浏览器法)落草稿箱 → 人工审一眼点群发。
对我们的取舍很清楚:如果公众号是已认证主体,优先 API 法(快、可脚本化、可定时);没认证就只能浏览器法(慢但能跑)。无论哪条,最后一锤群发都留给人——这跟我们「敏感动作要人确认」的纪律天然对齐。
一句话总结:宝玉这套不是「全自动一键推送全网」,而是把公众号发布里最耗体力的「转排版 + 传图 + 进编辑器」全自动化,稳稳停在「草稿箱」这条安全线前。对天天发公众号的人,省的是实打实的体力活。