微信公众号发布
/install wx-mp-publish
wx-mp-publish — 微信公众号发布技能
技术方案
Node.js + marked:微信 API 返回的 JSON 含特殊字符,Python json.loads() 解析失败率高(报错 Invalid \uXXXX escape),Node.js V8 原生 JSON 解析稳定可靠。
Python 版本已废弃删除(scripts/wx-mp/ 目录下仅保留 Node.js)。
快速流程
用户提供 Markdown 文章(含 YAML frontmatter)
↓
自动去除 frontmatter(re.sub 去掉 --- 之间的内容)
↓
marked.parse() → HTML(gfm 模式)
↓
applyInlineStyles() → 内联 style
↓
上传封面图(≤64KB)
↓
创建草稿 → 手动发布(或 API 发布)
发布命令
cd ~/.openclaw/workspace/skills/wx-mp-publish/scripts
node wx-publish.js draft \x3C文章.md> \
--title "标题(≤64字符)" \
[--thumb \x3C封面图路径>]
node wx-publish.js publish \x3C文章.md> \
--title "标题" \
[--thumb \x3C封面图路径>]
查询与预览
node wx-publish.js drafts # 列出草稿
node wx-publish.js del \x3Cid> # 删除草稿
node wx-publish.js status # 查看配额
📝 发布流程(必须按顺序执行)
创建草稿后,还需在公众号后台手动设置以下选项:
| 设置项 | 位置 | 说明 |
|---|---|---|
| 🤖 AI辅助生成标注 | 文章开头或结尾 | 必须标注「本文包含AI辅助内容」 |
| ✅ 声明原创 | 编辑框下方 | 原创标签按钮 |
| 💰 打开赞赏 | 文章底部 | 赞赏按钮开关 |
| ✍️ 作者 | 文章底部 | 填写"你的名字" |
| ⏰ 定时群发 | 发布设置 | 可选,但订阅号每月只4次,要节省使用 |
后台路径: 内容与创作 → 草稿箱 → 找到草稿 → 编辑 → 发布
⚠️ API发布限制
- 订阅号(审核中):只能创建草稿,
publish命令会报[48001] api unauthorized- 发布限制:每天1次
- 服务号:可直接API发布
- 发布限制:每月4次
- 定时群发API需要服务号权限
⚠️ 关键注意事项
1. 不用 Python,用 Node.js
Python json.loads() 对微信 API 返回的某些 JSON 失败(Invalid \uXXXX escape),Node.js 无此问题。
2. YAML frontmatter 必须去除
微信文章不需要 frontmatter,若不去除会显示为正文乱码。
wx-publish.js 内置自动去除:content.replace(/^---\ [\s\S]*?\ ---\ /, '')
3. 不要用 nl2br 模式
Python markdown 库的 nl2br 扩展把换行符变成裸 \x3Cbr>,微信编辑器无法正确渲染。正确做法是 paragraphs 自然闭合。
4. API 发布权限限制
错误:[48001] api unauthorized
订阅号(审核中)只能创建草稿,需手动在公众号后台发布。 后台路径:内容与创作 → 草稿箱 → 找到草稿 → 发布
5. 标题/摘要长度限制
- 标题 ≤64 字符
- 摘要 ≤120 字符(或留空让微信自动生成)
6. 封面图大小限制
≤64KB。建议尺寸 900×383 像素(2.35:1)。
📝 文章写作格式规范(2026-04-03)
⚠️ 每次写文章前必读
事实核查要求(最高优先级)
写文章涉及外部产品/工具时,必须:
- 先查
~/workspace/docs/product-facts.md确认产品事实 - 不确定的概念用
web_search主动搜索核实 - 禁止凭记忆瞎写产品功能
涉及的关键产品:
- Claude Code = Anthropic商业AI编程CLI
- OpenCode = opencode.ai开源竞品,provider-agnostic
- OpenClaw = 个人AI助手平台,不只是编程
- Google Cloud Code = Kubernetes工具,和AI编程无关
不确定事实的主动核查规则
触发条件: 文章中出现任何不熟悉的概念、产品、技术名词,而 product-facts.md 里没有记载。
执行流程:
- 主动搜索 — 用
web_search搜索该概念,获取权威来源 - 核实后记录 — 把确认的事实按分类存入
~/workspace/docs/product-facts.md - 标注来源 — 记录信息源URL和核实日期
事实分类标准(存入 facts 文档的分类标签):
| 分类标签 | 包含内容 | 示例 |
|---|---|---|
[产品类] |
产品名称、厂商、定位、界面形态 | Claude Code是Anthropic的产品 |
[技术类] |
技术名词、协议、架构术语 | MCP、Agent架构、Context管理 |
[事件类] |
重大发布、泄露事件、行业动态 | Claude Code源码泄露事件 |
[数据类] |
用户量、stars数、版本号、价格 | GitHub 68k+ stars |
[对比类] |
多个产品的横向对比结论 | OpenCode vs Claude Code的差异 |
记录格式(追加到 product-facts.md 末尾):
## [YYYY-MM-DD] 新增事实
### [产品类] 产品名称
- **事实内容**:...
- **来源**:URL
- **核实日期**:YYYY-MM-DD
自动分类规则:
- 出现"是什么" →
[产品类]或[技术类] - 出现"发布/泄露/更新/收购" →
[事件类] - 出现"对比/差异/哪个更好" →
[对比类] - 出现"多少/数量/价格/版本" →
[数据类]
示例场景:
文章里要提"Aider",但 facts 文档里没有 → 立刻 web_search → 确认为开源AI编程CLI工具 → 追加到
[工具类]或新建[产品类]→ 继续写文章
结构要求
禁止在文章正文中出现:
- ❌ "第一节/第二节/第三段"这类内部策划标记
- ❌ "上文说过的"、"承接上篇"、"钩子"等内部术语
- ❌ 阿拉伯数字编号的章节标题(1. 2. 3. / 第一节 第二节)
- ❌ "这篇来讲讲"、"下面我将从三个方面"等说明性文字
- ❌ "一句话总结"、"一句话告诉你"、"一句话说明"(浓AI味,直接写内容即可)
应该用:
- ✅ 自然分段,每段讲一个事情
- ✅ 关键转折或新话题用
——或空行分隔 - ✅ 小标题可用问句或短句,控制在10字以内,不带"第一章"、"第三节"等前缀
- ✅ 用语面向普通读者,不是内部备忘录
开头格式(必选)
> 字数:约XXXX字 | 阅读时间:X分钟
> **"金句内容"**
---
正文(自然分段,不要编号)
篇末提示格式
如果需要加"中国平替"等提示,直接在正文末尾加一段话即可,不要标注"篇末提示"。
实战举例要求
提到自己的项目时:
- ✅ "我做的APP"、"我开发的项目"
- ❌ 具体APP名称、产品名
- ❌ 业务类型、用户群体等业务细节
- ✅ 只讨论技术实现层面(架构、选型、技术栈等)
⚠️ 隐私保护(必须遵守)
1. 项目名称保护
- 禁止在文章中出现任何具体APP名称
- 只能说"我开发的项目"或"我做的APP"
- 只能讨论技术层面,业务细节一律禁止
2. Google Cloud Code ≠ Claude Code
- Google Cloud Code = Google的Kubernetes开发工具(VS Code/IntelliJ插件),和AI编程无关
- Claude Code = Anthropic的AI编程CLI工具
- 两者完全不同,禁止混淆
3. "Cloud Code" vs "Claude Code" 拼写
- 文章里只有 Claude Code,没有 Cloud Code
- Cloud Code 是谷歌云工具的名字,文章里不出现
- 输入时养成习惯,先确认再敲
4. OpenClaw vs OpenCode 对比关系
- Claude Code ↔ OpenCode = 编程能力直接竞品
- OpenClaw = 个人AI助手平台,不是编程工具的直接竞品
- OpenClaw只在篇末平替提示里提一句,不作为主要对比对象
- 两者名称相近易混,写前必查 product-facts.md
5. 文章编号规则
- 技术篇:Cloud Code专题(4篇)= 第1-4篇
- 单篇技术文章从第5篇开始编号
- 发布前查 series-counter.md 确认编号
6. 封面图规格
- 尺寸:900×383像素(2.35:1)
- 大小:≤64KB
- 生成后用 ImageMagick 压缩:
convert 原图.png -resize 900x383! -quality 75 输出.jpg
7. 运营数据追踪
文章运营数据记录在 ~/workspace/memory/articles/article-tracker.json。
可获取的数据(每日自动更新):
- 草稿列表 + 篇序
- 已发布文章列表 + 发布时间
- 总用户数
需手动更新的数据(用户从后台查看后告知):
- 单篇阅读量
- 单篇在看数/点赞数
- 留言数
更新流程:
- 用户查看公众号后台「数据」→「内容」→「群发数据」
- 告诉你的名字:"更新第X篇的阅读量/在看数"
- 我会更新 article-tracker.json 中对应文章的数据
查运营数据(不用调用API):
直接查看 memory/articles/article-tracker.json,包含:
- 最后更新时间(statsUpdated)
- 所有文章篇序、标题、状态
- 每篇的阅读量/点赞等(手动更新)
依赖
cd scripts/
npm install marked
目录结构
wx-mp-publish/
├── SKILL.md # 本文件
├── references/
│ └── best-practices.md # 详细文档
└── scripts/
├── wx-publish.js # Node.js 发布脚本(核心)
├── wx-api.js # 备用 API 工具
├── package.json # npm 依赖
└── node_modules/ # npm 包
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install wx-mp-publish - After installation, invoke the skill by name or use
/wx-mp-publish - Provide required inputs per the skill's parameter spec and get structured output
What is 微信公众号发布?
微信公众号文章发布技能。当用户提到发布公众号文章、推送微信公众号、公众号发布、微信公众号发文、将文章发布到公众号、把文章发到公众号、把markdown转成微信公众号格式,或需要将带 YAML frontmatter 的 markdown 文件发布到微信公众号时激活。包含:Markdown → HTML 转换(ma... It is an AI Agent Skill for Claude Code / OpenClaw, with 58 downloads so far.
How do I install 微信公众号发布?
Run "/install wx-mp-publish" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is 微信公众号发布 free?
Yes, 微信公众号发布 is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does 微信公众号发布 support?
微信公众号发布 is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created 微信公众号发布?
It is built and maintained by Shimon Xin (@shimonxin); the current version is v1.0.0.