系列上一篇讲了 `push_article.py` 一条命令发公众号,这篇来说说另一个方案,写博客的时候顺手同步到公众号,不用再跑一遍命令。
## 博客写文,自动同步到公众号
已经搭了一个博客的话,日常写技术笔记、踩坑记录、项目总结,每次发布博客顺便同步到公众号,是很自然的事。不用再复制粘贴、调整格式、重新上传配图。
实现这个方案的是 WordPress 的一个插件,Wordpress2MP。逻辑很简单:在 WordPress 后台点「发布」→ 插件自动把文章内容、封面图、排版一起推送到微信公众号的草稿箱。
### 全链路长什么样
“`
写 Markdown(doocs/md)→ 贴到 WordPress → 点发布 → 插件自动同步到公众号草稿箱 → 手机上看一眼排版 → 手动发布
“`
插件只推送到草稿箱,不会直接发布。公众号有个防呆设计,从 API 来的内容不能自动群发,得去后台确认一下。这个限制对所有第三方发布工具都适用。
### 几个关键配置
这个方案能跑通,有几个配置不能省。
**第一,时区。** WordPress 的时区必须设成 GMT + 8。插件在同步时依赖时间戳判断队列顺序,时区不对会导致「invalid media_id」报错。检查方法:
“`
SELECT option_value FROM wp_options
WHERE option_name IN (‘gmt_offset’, ‘timezone_string’);
“`
如果 `gmt_offset` 不是 8,改成 8 就行。
**第二,封面图比例。** 公众号封面的比例是 2.35 : 1,WordPress 博客首页的展示图比例也最好对齐。一张图,两处用。主流主题一般支持自定义封面比例,在文章页模板里改一下 `aspectRatio` 参数。
**第三,内容过滤器。** 微信的渲染引擎跟浏览器不一样,它过滤大量内联样式。直接发 HTML 过去,列表可能变成大黑圆点,代码块可能撑出屏幕。需要在主题的 `functions.php` 里加一层过滤器,把 `
- `、`
- ` 转成带圆点符号的纯段落,顺便给代码块和图片加上自适应限制。
具体代码不贴了,原理就这些。
### 踩坑实录
为了跑通这条链路,折腾了不少问题。挑三个典型的说说。
**时区偏移。** 插件同步时,草稿箱的创建时间戳是从 WordPress 的时区设置取值的。如果 `gmt_offset` 写的是 0,但时区字符串是 `Asia/Shanghai`,这俩不一致,最终取的是 0。时间戳乱掉,微信端报 invalid media_id。修好之后就没再出过。
**封面图上不去。** 文章发布出去了,内容也同步了,但公众号草稿箱里没有封面图。查了一圈,发现是插件的封面图选择策略有问题:正文里如果有图片,插件优先取正文第一张图作为封面;正文没图,才去读 WordPress 的特色图片。不小心开了两个选项,导致插件跳过了 featured image。
修复方法:关掉「取正文第一张图」的选项,只保留「取特色图片」的选项。
**排版变形。** 微信端文章右侧大片白边,列表项显示为大黑圆点。原因还是微信过滤了 `
- ` 和 `
- ` 的内联样式。加了一层内容过滤器之后解决。
### 两种方案怎么选
到这篇为止,Hermes 生态系列已经讲了两种公众号发布方案:
| 场景 | 用哪个 |
|——|——–|
| 日常写博客,顺便同步 | WordPress + WordPress2MP |
| AI 生成的批量文章,一键推送 | `push_article.py` 命令 |
| 临时发个公告/通知 | 两个都行,看心情 |日常写技术文章、踩坑记录,走 WordPress 同步最省事。AI 批量生成的内容需要排版控制,或者要一次推多篇,用 `push_article.py` 更灵活。
前七篇讲了安装、飞书 bot 团、Obsidian 知识库、Skill 写作、自动读书采集、一键发布。系列还剩一个话题:怎么让 Hermes 每天早上帮你整理前一天要看的文章,摘要+归档一条龙。下一篇来说说。实际上第五篇已经讲过一部分了,这次是补上完整的端到端自动化链路。
- ` 的内联样式。加了一层内容过滤器之后解决。