微信公众号文章发布
把一篇写好的文章,一键推到自己的公众号草稿箱。用的是微信官方通道:AppID + AppSecret 换 access_token,正文图逐张上传换成微信 url、封面图传成永久素材,再调官方 draft/add 把草稿推进草稿箱。要求本机公网出口 IP 在公众号后台白名单内。
草稿进草稿箱后,最终「点击群发」这一下留给你自己在后台操作。
安装方法
- 先问使用者用的是什么 AI 工具,选项按这个顺序列:1. WorkBuddy 2. Claude Code 3. Codex 4. 其他(用户直接说工具名),回答记作 X
- 只安装给 X,不安装或链接其他任何工具:
-
X 是 WorkBuddy:把本技能下载后放进
~/.workbuddy/skills/(WorkBuddy 的技能目录;skills CLI 不支持 WorkBuddy,由你直接放置) -
X 是其他工具:
npx -y --registry=https://registry.npmmirror.com skills add https://modelscope.cn/skills/sunny31221/wechat-publisher-buheliwa -a X -y(不带
-a会安装给本机所有检测到的工具,禁止;--registry为 npmmirror 镜像,保证国内不翻墙也能拉到 CLI) -
X 不在上述范围时,按该工具自身的技能机制安装,装完确认 X 能识别本技能即可
-
- 装完后询问使用者是否现在配置公众号发布、开始发布
使用前的一次性配置
- 在公众号后台「设置与开发 → 基本配置 → 开发接口管理」拿到 AppID 和 AppSecret(AppSecret 点「重置」后只显示一次)。
- 在同一页的「IP 白名单」里加进本机公网出口 IP(设置后约 10 分钟生效)。
- 在项目根目录
.env.local里填weChat_AppID=和weChat_AppSecret=。
When to Use
- 发布 Markdown 或 HTML 文章到公众号草稿箱
When NOT to Use
- 文章还在写作阶段 → 先完成内容再发布
- 只需要 HTML 排版(不发布)→ 用「公众号排版」(
gzh-layout-buheliwa),不调本技能
与排版技能搭配使用
本技能负责把文章推进公众号草稿箱,不负责排版。常见搭配是先排版再发布:用「公众号排版」(gzh-layout-buheliwa)把成稿排成公众号格式的 HTML(样式内联、图片路径保留),再把这份 HTML 交给本技能上传——文章里的本机图片由本技能上传到微信服务器,排版那一步不处理图片。也可以跳过排版、直接发 Markdown,但样式会朴素。
Quick Reference
脚本路径以实际安装位置为准(Claude Code 是 .claude/skills/wechat-publisher-buheliwa/,多数工具是 .agents/skills/wechat-publisher-buheliwa/):
| 操作 | 命令 |
|------|------|
| 发布 Markdown 文章 | npx tsx <技能目录>/scripts/publish.ts publish article.md |
| 发布 HTML 文章 | npx tsx <技能目录>/scripts/publish.ts publish article.html |
| 带封面图发布 | npx tsx <技能目录>/scripts/publish.ts publish article.md --cover-image 封面.png |
| 仅验证不发布 | 加 --dry-run |
| 指定标题 | --title "自定义标题" |
| 指定摘要 | --summary "文章摘要" |
| 指定作者 | --author "作者名"(不传则用公众号默认作者) |
--cover-image传本地文件路径(配图技能产出的封面 PNG),脚本会自动上传成永久素材(news草稿没有封面会被微信拒)。
Publishing Workflow
Step 1: 确认配置
发布前检查环境变量(在项目根目录 .env.local 或 .env 中配置):
| 变量 | 必填 | 说明 |
|------|------|------|
| weChat_AppID | 必填 | 公众号 AppID |
| weChat_AppSecret | 必填 | 公众号 AppSecret |
Step 2: 准备内容
- Markdown 文件(
.md):直接发布 - HTML 文件(
.html):脚本会把<style>里的样式内联,微信编辑器只认行内样式 - 标题:从文件首行
# 标题或<h1>提取,也可--title手动指定(最长 64 字符) - 摘要:从首个段落提取,也可
--summary手动指定(最长 120 字符)
Step 3: 执行发布
推荐先 dry-run 验证:
npx tsx <技能目录>/scripts/publish.ts publish article.md --dry-run
正式发布:
npx tsx <技能目录>/scripts/publish.ts publish article.md
Step 4: 到后台确认
发布成功只代表文章进了草稿箱。打开微信公众号后台,确认文章躺在草稿箱里、排版和配图正常,再由你手动点发布。
Common Mistakes
| 错误 | 原因 | 修复 |
|------|------|------|
| 未找到发布凭证 | .env.local 里没填 weChat_AppID / weChat_AppSecret | 按「使用前的一次性配置」填好 |
| 40164(IP 不在白名单) | 本机公网出口 IP 没在公众号后台白名单 | 去「微信开发者平台 → 我的业务 → 公众号 → 基础信息 → 开发信息 → API IP 白名单」加本机出口 IP,等约 10 分钟生效 |
| 40013 | AppID 不合法 | 检查 weChat_AppID |
| 40125 | AppSecret 不合法 | 检查 weChat_AppSecret |
| 40005 / 40009 | 正文图格式/尺寸不对 | 正文图仅 jpg/png、≤1MB;封面图 ≤10MB |
| 40007 | 封面 media_id 无效 | 重新上传封面图 |
| 标题提取为空 | 文件无 # 标题 或 <h1> | 用 --title 手动指定 |
Resources
- scripts/publish.ts — TypeScript 发布脚本(strict 模式,零依赖)
微信扫一扫