之前这篇文章收到很多读者的实操反馈。
本地部署 OpenClaw 自动发布小红书:小白完整教程
应读者要求,今天给大家分享一下自动发布公众号的教程。
你用 OpenClaw 写了一篇文章,排版也做好了,但最后一步——把内容推到公众号——还是要手动登录后台、复制粘贴、上传封面图。
这篇教程解决这最后一公里。读完你能让 OpenClaw 把写好的文章直接推进公众号草稿箱,你只需要进去点一下发布。
两种发布方式,本文都介绍:
方式 A:用 官方 API(需要已认证公众号,有 AppID + AppSecret)——稳定,推荐
方式 B:用 Cookies 模拟登录(任何公众号都能用,但 Cookies 7-30 天过期一次)——灵活,但需要定期维护
准备工作
node --version 确认 | |
方式 A:官方 API 发布(推荐)
这是目前 OpenClaw 技能市场上最完整的方案,来自官方 skills 仓库的 wechat-multi-publisher。
第一步:获取公众号 AppID 和 AppSecret
登录微信公众平台 mp.weixin.qq.com → 设置与开发 → 基本配置 → 找到 AppID 和 AppSecret(点击”重置”生成)。
注意:微信公众平台的 API 接口需要将服务器 IP 加入白名单。如果你在本地运行 OpenClaw,需要把你的公网 IP 加进去:基本配置 → IP 白名单 → 添加。查询本机公网 IP 可访问
ip.sb。
第二步:安装 wechat-multi-publisher skill
npx playbooks add skill openclaw/skills --skill wechat-multi-publisher安装完成后,还需要安装 skill 的依赖:
npm install @wenyan-md/core第三步:配置凭证
有两种方式,选一种即可:
方式一(环境变量):
export WECHAT_APP_ID=你的AppID
export WECHAT_APP_SECRET=你的AppSecret
export WECHAT_AUTHOR=你的名字(可选)方式二(凭证文件,推荐,重启后不丢失):
# 创建文件:~/.config/wechat-mp/credentials.json
{
"appId": "你的AppID",
"appSecret": "你的AppSecret"
}第四步:发布文章
文章用 Markdown 格式写好,保存为 .md 文件,然后执行:
# 推送单篇文章到草稿箱
node scripts/publish.mjs article.md
# 推送前先预览(不上传,只在本地生成预览文件)
node scripts/publish.mjs article.md --dry-run
# 推送并立即发布(跳过草稿,直接发布)
node scripts/publish.mjs article.md --publish
# 一次推送多篇(主文章 + 最多 7 篇子文章,合为一条群发)
node scripts/publish.mjs main.md sub1.md sub2.md sub3.mdMarkdown 写作规范(这个 skill 特有的语法)
&& | |
&& 小节标题 | |
结论:方式 A 是目前最稳定的方案——用官方 API,封面图自动匹配 Unsplash,图片自动上传微信 CDN,支持一次推送多篇合并草稿。唯一要求是公众号已认证。
方式 B:Cookies 模拟登录(未认证账号可用)
没有已认证公众号、拿不到 AppSecret?可以用 Cookies 模拟登录来发布。原理是把你浏览器里的登录状态提取出来,让脚本代替你操作。
注意:Cookies 通常 7-30 天过期一次,过期后需要重新获取。这是这种方式最大的维护成本。
第一步:获取 Cookies
1. 用浏览器登录微信公众平台 mp.weixin.qq.com
2. 按 F12 打开开发者工具 → 切换到 Network(网络)标签
3. 刷新页面,点击任意一个请求
4. 在右侧 Request Headers 里找到 Cookie: 一行,复制完整字符串(很长,全部复制)
第二步:保存 Cookies 文件
# 文件路径
# Mac/Linux:~/.openclaw/secrets/wechat-cookies.json
# Windows:C:Users你的用户名.openclawsecretswechat-cookies.json
# 文件内容格式
{
"cookie": "rewardsn=; wxtokenkey=777; wxuin=你的ID; ..."
}第三步:创建发布脚本
在工作目录下创建 publish_draft_cookies.mjs:
import fs from 'fs';
import path from 'path';
import os from 'os';
// 读取 cookies
const cookiesPath = path.join(
os.homedir(), '.openclaw', 'secrets', 'wechat-cookies.json'
);
const { cookie } = JSON.parse(fs.readFileSync(cookiesPath, 'utf-8'));
// 读取 HTML 文件
const htmlPath = process.argv[2];
const title = process.argv[3] || '未命名文章';
const digest = process.argv[4] || '';
if (!htmlPath) {
console.error('用法: node publish_draft_cookies.mjs<标题> [摘要]');
process.exit(1);
}
const content = fs.readFileSync(htmlPath, 'utf-8');
// 调用微信接口
const response = await fetch('https://mp.weixin.qq.com/cgi-bin/operate_appmsg', {
method: 'POST',
headers: {
'Cookie': cookie,
'Content-Type': 'application/x-www-form-urlencoded'
},
body: new URLSearchParams({
token: '', lang: 'zh_CN', f: 'json', ajax: '1',
random: Math.random(), AppMsgId: '', type: '10',
title, author: '', digest, content,
sourceurl: '', show_cover_pic: '0'
})
});
const result = await response.json();
if (result.base_resp.ret === 0) {
console.log('发布成功,文章已进草稿箱');
} else {
console.error('发布失败:', result.base_resp.err_msg);
if (result.base_resp.ret === -6) {
console.error('Cookies 已过期,请重新获取');
}
}第四步:执行发布
node publish_draft_cookies.mjs outputs/article.html "文章标题" "这是摘要"执行成功后,登录公众号后台 → 草稿箱,能看到文章已经在里面了,预览确认后点发布即可。
配置 Agent 自动触发发布
上面两种方式都是手动执行脚本。如果想让 OpenClaw 写完文章后自动推送,需要在 AGENTS.md 里加上这段规则:
## 发布流程
文章写完并排版后:
1. 将 HTML 文件保存到 outputs/ 目录
2. 调用 wechat-mp-publisher skill(方式 A)将文章推送到草稿箱
3. 推送完成后通知用户:"文章已进草稿箱,请登录后台确认后发布"
4. 不要自动点击发布,等用户确认提示:最后一步「不要自动发布,等用户确认」很重要。草稿箱是安全缓冲区,发布后无法撤回,保留人工确认这一步风险最低。
两种方式对比
常见问题
方式 A:调用 API 报错”invalid ip”
解决:你的公网 IP 不在白名单里。登录公众平台 → 基本配置 → IP 白名单 → 添加你当前的公网 IP(可在 ip.sb 查询)。家庭宽带 IP 可能每天变化,建议用固定 IP 的云服务器或 VPS 运行。
方式 B:发布失败,报错 -6
解决:Cookies 已过期。重新登录 mp.weixin.qq.com,按照教程步骤重新获取 Cookie 字符串,更新 wechat-cookies.json 文件。
文章进草稿箱了,但图片显示不出来
解决:微信不支持外链图片,必须先上传到微信 CDN。方式 A 的 wechat-multi-publisher skill 会自动处理本地图片的上传;方式 B 需要手动上传图片后替换链接。建议在写作阶段就把图片保存到本地,避免用外链。
能不能直接发布,不经过草稿箱?
可以。方式 A 加 --publish 参数会在创建草稿后立即触发发布。但不建议这样做——发布后无法撤回,留着草稿箱人工确认这一步更安全。
想每周自动推送,怎么做?
用 OpenClaw 的 Cron 功能,配合方式 A 的发布脚本:
openclaw cron add --every 7d --at 09:00 --agent wechat
"写一篇本周 AI 行业总结,排版后推送到公众号草稿箱"