|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Day 100: 使用 QClaw 发布微信公众号" |
| 4 | +author: iosdevlog |
| 5 | +date: 2026-03-19 23:24:00 +0800 |
| 6 | +description: "Day 100:用 QClaw + Markdown 统一发布微信公众号和博客,提升内容发布效率。" |
| 7 | +category: AI |
| 8 | +tags: [QClaw, 微信公众号, OpenClaw, 内容发布, 工程化] |
| 9 | +--- |
| 10 | + |
| 11 | + |
| 12 | + |
| 13 | +# Day 100: 使用 QClaw 发布微信公众号 |
| 14 | + |
| 15 | +今天这篇是实战复盘:如何用 QClaw 把一篇 Markdown 稳定发布到微信公众号草稿箱。 |
| 16 | + |
| 17 | +目标很简单:**写一次内容,同时用于博客和公众号**,减少重复劳动。 |
| 18 | + |
| 19 | +## 为什么用 QClaw 做发布 |
| 20 | + |
| 21 | +以前流程通常是: |
| 22 | + |
| 23 | +1. 先在本地写 Markdown |
| 24 | +2. 再复制到公众号编辑器 |
| 25 | +3. 手动调格式、传图、改排版 |
| 26 | +4. 最后发草稿 |
| 27 | + |
| 28 | +这个流程最大的问题是:慢,而且容易在复制过程中引入格式差异。 |
| 29 | + |
| 30 | +QClaw 的方式是把“发布”做成可复用流程: |
| 31 | + |
| 32 | +- 内容源头统一(Markdown) |
| 33 | +- 发布步骤可重复执行 |
| 34 | +- 失败时有明确错误信息(比如 IP 白名单) |
| 35 | + |
| 36 | +## 发布前准备 |
| 37 | + |
| 38 | +至少需要三件事: |
| 39 | + |
| 40 | +- 微信公众号后台可用的 `AppID`、`AppSecret` |
| 41 | +- 调用 IP 已在公众号后台白名单 |
| 42 | +- 文章 frontmatter 完整(`title` + `cover`) |
| 43 | + |
| 44 | +示例 frontmatter: |
| 45 | + |
| 46 | +```yaml |
| 47 | +--- |
| 48 | +title: "Day 100: 使用 QClaw 发布微信公众号" |
| 49 | +cover: /Users/i/.openclaw/workspace/assets/day100-qclaw-wechat-publish.png |
| 50 | +--- |
| 51 | +``` |
| 52 | + |
| 53 | +> 注意:封面建议 1080×864,路径用绝对路径更稳。 |
| 54 | +
|
| 55 | +## 核心发布命令 |
| 56 | + |
| 57 | +用 QClaw 的 wechat-toolkit 发布脚本: |
| 58 | + |
| 59 | +```bash |
| 60 | +WECHAT_APP_ID="你的AppID" \ |
| 61 | +WECHAT_APP_SECRET="你的AppSecret" \ |
| 62 | +node /Users/i/.openclaw/skills/wechat-toolkit/scripts/publisher/publish.js /path/to/article.md |
| 63 | +``` |
| 64 | + |
| 65 | +执行成功后会返回草稿 `Media ID`,这就是进入公众号后台草稿箱的凭证。 |
| 66 | + |
| 67 | +## 一个稳定的工作流(推荐) |
| 68 | + |
| 69 | +我现在固定用这条链路: |
| 70 | + |
| 71 | +1. 在本地写 `posts/dayXXX-xxx.md` |
| 72 | +2. 生成封面图并写入 frontmatter |
| 73 | +3. 先发公众号草稿(拿到 Media ID) |
| 74 | +4. 同步转换为博客文章(Jekyll frontmatter) |
| 75 | +5. 提交并推送 GitHub Pages |
| 76 | + |
| 77 | +这样做的好处是:公众号与博客内容保持一致,且可以追溯每次修改。 |
| 78 | + |
| 79 | +## 常见问题与处理 |
| 80 | + |
| 81 | +### 1) `40164 invalid ip` |
| 82 | + |
| 83 | +原因:调用机器 IP 不在微信白名单。 |
| 84 | + |
| 85 | +处理: |
| 86 | + |
| 87 | +- 查当前公网 IP |
| 88 | +- 加到公众号后台白名单 |
| 89 | +- 重新执行发布命令 |
| 90 | + |
| 91 | +### 2) 缺少 `title` 或 `cover` |
| 92 | + |
| 93 | +原因:frontmatter 不完整。 |
| 94 | + |
| 95 | +处理:补齐字段后重发。 |
| 96 | + |
| 97 | +### 3) 图片路径不稳定 |
| 98 | + |
| 99 | +原因:相对路径在发布工具链里可能解析失败。 |
| 100 | + |
| 101 | +处理:改成绝对路径。 |
| 102 | + |
| 103 | +## Day 100 小结 |
| 104 | + |
| 105 | +QClaw 这套方式最核心的价值,不是“自动化本身”,而是把发布流程工程化: |
| 106 | + |
| 107 | +- 有输入规范(Markdown + frontmatter) |
| 108 | +- 有固定执行命令 |
| 109 | +- 有可诊断的错误输出 |
| 110 | +- 有可复用的内容资产 |
| 111 | + |
| 112 | +当你把发布当成工程问题,而不是手工操作问题,效率会非常明显地提升。 |
| 113 | + |
| 114 | +下一步,我会继续把“封面生成 + 标题备选 + 双端发布”进一步模板化,让 Day 系列可以更快连载。 |
0 commit comments