乐于分享
好东西不私藏

OpenClaw 推送公众号草稿箱:配置、流程、技能和踩坑一次讲清

OpenClaw 推送公众号草稿箱:配置、流程、技能和踩坑一次讲清

如果你想用 OpenClaw 把文章推到微信公众号草稿箱,重点不是“怎么让 AI 写文章”,而是怎么把整条链路跑通

这条链路拆开就 4 件事:

  1. 1. 配好公众号接口
  2. 2. 配好 OpenClaw 的默认发布参数
  3. 3. 用对 skill 和发布脚本
  4. 4. 知道常见报错该查哪里

下面直接讲怎么做。

一、这件事到底是怎么实现的

本质上不是 OpenClaw 直接操作公众号后台网页,而是它调用微信公众号的接口,把文章提交到草稿箱

流程是这样的:

  • • 你给 OpenClaw 一个文章需求,或者直接给一篇 markdown
  • • OpenClaw 调用 baoyu-post-to-wechat 这个 skill
  • • skill 里的脚本把 markdown 渲染成适合微信的 HTML
  • • 然后用公众号的 AppID / AppSecret 换 access token
  • • 再上传封面、上传正文图片
  • • 最后调用 draft/add 接口,把文章存进草稿箱

所以它不是“神奇自动发文”,而是把写作、渲染、上传、存草稿这几个动作串起来了

二、前置准备

先准备 3 样东西:

1)一个能用的微信公众号

而且要能拿到:

  • • AppID
  • • AppSecret

位置一般在: 公众号后台 → 开发 → 基本配置

2)OpenClaw 环境

最少要有:

  • • OpenClaw 本体
  • • npx 或 bun
  • • baoyu-post-to-wechat 这个 skill

如果你是直接在现成 workspace 里跑,通常这些已经在了。

3)一篇文章文件

最稳的是 markdown。

因为这个 skill 的发布流程本来就是围绕 markdown 做的,会自动处理:

  • • 标题
  • • 摘要
  • • 作者
  • • 封面
  • • markdown 转 HTML

三、怎么配置

这里有两层配置。

第一层:公众号接口配置

把下面两个值写进 .env

WECHAT_APP_ID=你的AppIDWECHAT_APP_SECRET=你的AppSecret

OpenClaw / skill 会按这个顺序找:

  1. 1. 环境变量
  2. 2. <workspace>/.baoyu-skills/.env
  3. 3. ~/.baoyu-skills/.env

如果只是当前项目用,放项目内就行;如果你想全局复用,放用户目录。

第二层:发布默认配置

这个 skill 还会读一个 EXTEND.md

比如我现在用的是:

default_theme: defaultdefault_color: vermiliondefault_publish_method: apidefault_author: 桌游里的亲子时光need_open_comment: 1only_fans_can_comment: 0

这里几个字段最有用:

  • • default_publish_method:默认走 api 还是 browser
  • • default_author:作者名默认值
  • • default_theme:markdown 转微信 HTML 时用的主题
  • • default_color:主题色
  • • need_open_comment:默认是否开评论
  • • only_fans_can_comment:是否只允许粉丝评论

如果你只是想稳定推草稿箱,默认走  就行

四、实际发布流程怎么跑

下面是最实用的版本。

第一步:准备 markdown 文章

文章里最好直接写 frontmatter:

---title: 文章标题summary: 文章摘要author: 作者名coverImage: ./cover.png---# 正文标题这里开始写正文。

这样发布脚本就不用猜你要什么。

最重要的是两项:

  • • title
  • • coverImage

没有封面,草稿大概率发不出去。

第二步:调用发布脚本

实际执行时,用的是 baoyu-post-to-wechat 里的 wechat-api.ts

命令长这样:

npx -y bun ./scripts/wechat-api.ts article.md --theme default --color vermilion --cover ./cover.png

如果放到 OpenClaw 里,通常不需要你手敲命令,而是让它调用 skill 完成。

这个脚本会做几件事:

  1. 1. 读取 markdown 和 frontmatter
  2. 2. 调用渲染器,把 markdown 转成微信可用 HTML
  3. 3. 读取 .env,拿 AppID / AppSecret
  4. 4. 获取 access token
  5. 5. 上传封面图
  6. 6. 上传正文里的图片
  7. 7. 调用草稿接口发布
  8. 8. 返回 media_id

只要最后拿到了 media_id,就说明已经进草稿箱了。

第三步:去公众号后台确认

路径就是: 内容管理 → 草稿箱

到这一步,你要做的是最后检查:

  • • 封面是不是对的
  • • 摘要有没有被截断
  • • 正文图片有没有丢
  • • 排版有没有异常

五、到底用了哪些 skill

你这条链路里,核心是 1 个 skill:

baoyu-post-to-wechat

它负责:

  • • markdown 转微信 HTML
  • • 调用公众号接口
  • • 上传图片
  • • 发布到草稿箱

它里面最关键的脚本有两个:

  • • scripts/wechat-api.ts:走 API 推草稿箱
  • • scripts/check-permissions.ts:检查环境、依赖、权限

如果你要的是稳定发草稿箱,优先用 wechat-api.ts

如果 API 不通,再考虑浏览器方案。

六、最常见的坑

这部分最重要。

1)Error: File path required

这是脚本参数传错了。

wechat-api.ts 不是 --markdown article.md 这种写法,而是直接把文件路径当第一个参数:

npx -y bun wechat-api.ts article.md

不是:

npx -y bun wechat-api.ts --markdown article.md

这个地方很容易踩。

2)有 AppID / AppSecret,但还是发不出去

先查三件事:

  • • .env 放的位置对不对
  • • key 名是不是 WECHAT_APP_ID / WECHAT_APP_SECRET
  • • 复制时有没有多空格、少字符

很多时候不是接口挂了,就是配置没被脚本读到。

3)没有封面图

公众号草稿的 news 类型必须有封面。

最稳妥的做法:

  • • frontmatter 里写 coverImage
  • • 发布命令里再显式传一次 --cover

别赌自动兜底。

4)图片路径写错

如果正文里有本地图片,脚本会尝试上传。

但前提是路径真的存在。

所以文章和图片最好放在同一个目录体系里,别到处引用临时文件。

5)主题参数没带

这个 skill 的规范里明确要求: API 发布时总是带 

哪怕你就用默认主题,也建议显式写出来,少一层不确定性。

6)评论开关和预期不一致

如果你发现草稿默认评论状态不对,先看 EXTEND.md 里的:

  • • need_open_comment
  • • only_fans_can_comment

别只看文章正文。

7)以为“推到草稿箱”就是“已经发布”

不是。

草稿箱只是草稿箱。

真正群发、定时、正式发布,还是要你自己去公众号后台做最后一步。

七、如果你想让这条流程更顺,建议这么做

别把它当成一次性动作,把它固定成 SOP:

  • • 文章统一用 markdown 写
  • • 每篇都带 frontmatter
  • • 封面路径固定
  • • .env 固定放一个位置
  • • EXTEND.md 固定默认主题和作者
  • • 永远优先走 API

这样以后你每次只需要说一句:

“写一篇文章,并推到公众号草稿箱。”

后面的动作就能稳定复用。

最后一句

OpenClaw 推送公众号草稿箱,真正难的不是发,而是第一次把配置、路径、脚本参数都对齐。

一旦第一遍跑通,后面基本就是体力活自动化。

这才是它最有用的地方。