💡 想让 AI 帮你写文章、排版、推送到公众号?OpenClaw 的 Agent 可以做到全流程自动化。本文将详细拆解整个推送链路,从 Token 获取到草稿创建,每一步都有代码示例和踩坑记录。
📑 本文导航
一、整体架构与核心链路
二、前置准备(4 步搞定)
三、核心步骤详解(Token → 封面 → 草稿 → 发布)
四、Agent 自动化流程与排版要点
五、踩坑记录与解决方案
六、总结与速查表
OpenClaw 推送微信公众号的核心链路可以概括为 6 个步骤:
其中,除最后一步"手动发布"外,其余环节均可由 Agent 自动完成。订阅号的 API 群发能力受限,建议创建草稿后在公众号后台手动发布。
📁 涉及的关键文件
| 文件 | 作用 |
|---|---|
wechat-mp.json | 公众号配置(AppID、AppSecret) |
.wechat_mp_token.txt | Access Token 缓存 |
.wechat_cover_media_id.txt | 封面图永久素材 ID |
create-wechat-draft.js | 草稿创建脚本 |
push-wechat-article.js | 群发推送脚本(订阅号受限) |
前往 mp.weixin.qq.com 注册账号。个人推荐订阅号(个人即可申请);如需更多 API 能力可选择服务号(需企业资质)。
登录公众号后台 → 设置与开发 → 基本配置 → 记录 AppID,重置并保存 AppSecret。
在基本配置页面将服务器公网 IP 加入白名单,否则所有 API 调用会返回 errcode: 40164。
// wechat-mp.json
{
"app_id": "你的AppID",
"app_secret": "你的AppSecret",
"default_author": "作者名"
}
🔑 3.1 获取 Access Token
Access Token 是调用微信 API 的"通行证",有效期 2 小时。每次推送前需确保 Token 有效。
// 请求地址
GET https://api.weixin.qq.com/cgi-bin/token
?grant_type=client_credential
&appid=YOUR_APPID
&secret=YOUR_SECRET
⚠️ 注意:Token 有效期 7200 秒(2 小时),每日获取上限 2000 次。建议本地缓存 + 过期时间判断,每 1.5 小时刷新一次。
🖼️ 3.2 上传封面图片
封面图推荐尺寸 900 × 383 像素,使用 JPG/PNG 格式,大小控制在 2MB 以内。
// 上传永久素材接口
POST https://api.weixin.qq.com/cgi-bin/material/add_material
?access_token=TOKEN&type=image
// Content-Type: multipart/form-data
// 字段名: media
💡 小技巧:封面图作为永久素材上传,media_id 永久有效,只需上传一次即可反复使用。
📝 3.3 创建草稿
草稿是文章发布前的"暂存区",支持富文本 HTML 内容。这是整个流���中最核心的一步。
// 创建草稿接口
POST /cgi-bin/draft/add?access_token=TOKEN
{
"articles": [{
"title": "文章标题",
"content": "<p>HTML 正文</p>",
"thumb_media_id": "封面media_id",
"author": "作者名",
"digest": "摘要(120字内)",
"show_cover_pic": 1
}]
}
| 字段 | 说明 | 注意 |
|---|---|---|
title | 文章标题 | 不超过 64 字 |
content | HTML 正文 | 仅支持内联样式 |
thumb_media_id | 封面图 ID | 永久素材 ID |
digest | 摘要 | 不超过 120 字,用于分享卡片 |
🚀 3.4 发布文章
✅ 方式一:手动发布(推荐)
登录公众号后台 → 草稿箱 → 预览排版 → 点击发表。最稳妥,可以最终确认内容。
⚡ 方式二:API 群发(限制多)
调用群发接口自动推送。订阅号每天 1 次,服务号每月 4 次,群发后不可撤回。
在 OpenClaw 中,整个推送流程被封装为 Agent 可执行的自动化任务链:
主人下达写作任务(飞书/Discord/Telegram 均可触达)
Agent 撰写文章内容(Markdown 初稿)
Agent 转换为微信公众号 HTML(全内联样式排版)
Agent 执行脚本:刷新 Access Token + 创建草稿
通知主人去公众号后台预览并发布 📱
🎨 HTML 排版要点
✅ 支持
• 内联 style 属性
• section / p / span / table
• linear-gradient 渐变
• border-radius / box-shadow
❌ 不支持
• 外部 CSS / <style> 标签
• JavaScript
• iframe 嵌入
• position: fixed / absolute
📐 推荐规范:正文 16px、行间距 1.75、段间距 15px、代码块深色背景 #2d2d2d、引用块灰底 + 左侧彩色边框。
🔴 坑 1:Token 过期(errcode: 42001)
Access Token 超过 2 小时。解决:每次推送前先刷新 Token。
🔴 坑 2:IP 白名单未配置(errcode: 40164)
服务器 IP 不在白名单。解决:在公众号后台添加服务器公网 IP。
🔴 坑 3:HTML 样式丢失
使用了不支持的 CSS 属性。解决:全部内联样式,避免 position: absolute。
🔴 坑 4:封面图上传失败(errcode: 40009)
图片超 10MB 或格式不支持。解决:JPG/PNG,控制 2MB 以内。
🔴 坑 5:Content-Length 计算错误
中文用字符串长度导致乱码。解决:使用 Buffer.byteLength(data, 'utf8')。
| 步骤 | 方法 | 频率 |
|---|---|---|
| 🔑 获取 Token | API 自动刷新 | 每 1.5 小时 |
| 🖼️ 上传封面 | API 上传永久素材 | 一次性 |
| 📝 创建草稿 | API + HTML 内容 | 每篇文章 |
| 🚀 发布文章 | 手动 / API 群发 | 每篇文章 |
🎯 核心要点
🔑 Token 管理是基础
缓存 + 定时刷新
🎨 HTML 排版是重点
全部内联样式
📋 草稿模式最稳妥
先预览再发布
🤖 Agent 自动化
写作到推送一条龙
作者:龙之道 | 编辑:梅凝 ✍️
✨ 关注我们,获取更多 AI 工程化实战内容 ✨
夜雨聆风