← 返回 Skills 市场
shimonxin

微信公众号发布

作者 Shimon Xin · GitHub ↗ · v1.0.0 · MIT-0
cross-platform ⚠ suspicious
58
总下载
0
收藏
0
当前安装
1
版本数
在 OpenClaw 中安装
/install wx-mp-publish
功能描述
微信公众号文章发布技能。当用户提到发布公众号文章、推送微信公众号、公众号发布、微信公众号发文、将文章发布到公众号、把文章发到公众号、把markdown转成微信公众号格式,或需要将带 YAML frontmatter 的 markdown 文件发布到微信公众号时激活。包含:Markdown → HTML 转换(ma...
使用说明 (SKILL.md)

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)

⚠️ 每次写文章前必读

事实核查要求(最高优先级)

写文章涉及外部产品/工具时,必须

  1. 先查 ~/workspace/docs/product-facts.md 确认产品事实
  2. 不确定的概念用 web_search 主动搜索核实
  3. 禁止凭记忆瞎写产品功能

涉及的关键产品:

  • Claude Code = Anthropic商业AI编程CLI
  • OpenCode = opencode.ai开源竞品,provider-agnostic
  • OpenClaw = 个人AI助手平台,不只是编程
  • Google Cloud Code = Kubernetes工具,和AI编程无关

不确定事实的主动核查规则

触发条件: 文章中出现任何不熟悉的概念、产品、技术名词,而 product-facts.md 里没有记载。

执行流程:

  1. 主动搜索 — 用 web_search 搜索该概念,获取权威来源
  2. 核实后记录 — 把确认的事实按分类存入 ~/workspace/docs/product-facts.md
  3. 标注来源 — 记录信息源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

可获取的数据(每日自动更新):

  • 草稿列表 + 篇序
  • 已发布文章列表 + 发布时间
  • 总用户数

需手动更新的数据(用户从后台查看后告知):

  • 单篇阅读量
  • 单篇在看数/点赞数
  • 留言数

更新流程:

  1. 用户查看公众号后台「数据」→「内容」→「群发数据」
  2. 告诉你的名字:"更新第X篇的阅读量/在看数"
  3. 我会更新 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 包
安全使用建议
Install only if you intend to let this skill operate your WeChat public-account drafts and publishing workflow. Keep the WeChat app secret in a dedicated low-privilege account if possible, review every publish/delete command before it runs, avoid running rebuild-drafts-full.js unless you understand the hardcoded draft IDs, and consider removing or gating deletion commands with explicit confirmation.
能力标签
cryptorequires-oauth-tokenrequires-sensitive-credentials
能力评估
Purpose & Capability
The core Markdown-to-WeChat draft and publish workflow is coherent with the stated purpose, but the artifacts also include draft listing, immediate draft deletion, direct API publishing, and an extra bulk rebuild script that deletes and recreates multiple drafts.
Instruction Scope
Activation phrases are broad for a workflow that can publish public content and mutate account drafts; SKILL.md also instructs web research and writes to local knowledge and article-tracking files beyond the narrow publishing task.
Install Mechanism
Installation is a normal Node.js script setup with the marked dependency; the lockfile resolves marked from a Tencent mirror over HTTP, which is not by itself malicious but is a supply-chain detail users should notice.
Credentials
The skill reads WeChat app credentials from ~/.config/wx-mp/config.json, caches access tokens, sends article and image content to api.weixin.qq.com, and uses account-wide WeChat APIs, which is expected for publishing but high impact.
Persistence & Privilege
It persists token cache data under ~/.config/wx-mp and can delete WeChat drafts without an interactive confirmation, dry run, or title preview; rebuild-drafts-full.js can bulk delete older drafts if executed.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install wx-mp-publish
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /wx-mp-publish 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.0
首个公开版本:Markdown→公众号草稿全流程(Node.js+marked,支持封面图上传、草稿管理、HTML内联样式)
元数据
Slug wx-mp-publish
版本 1.0.0
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 1
常见问题

微信公众号发布 是什么?

微信公众号文章发布技能。当用户提到发布公众号文章、推送微信公众号、公众号发布、微信公众号发文、将文章发布到公众号、把文章发到公众号、把markdown转成微信公众号格式,或需要将带 YAML frontmatter 的 markdown 文件发布到微信公众号时激活。包含:Markdown → HTML 转换(ma... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 58 次。

如何安装 微信公众号发布?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install wx-mp-publish」即可一键安装,无需额外配置。

微信公众号发布 是免费的吗?

是的,微信公众号发布 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

微信公众号发布 支持哪些平台?

微信公众号发布 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 微信公众号发布?

由 Shimon Xin(@shimonxin)开发并维护,当前版本 v1.0.0。

💬 留言讨论