我给 Typecho 写了个公众号同步插件:发文自动进草稿箱,没认证也能用
我同时维护一个 Typecho 博客和一个微信公众号。每次写完博客,都要再去公众号后台手动排版、传图、复制一遍——做内容的人都懂,这种重复劳动最耗精力。
于是我写了一个 Typecho 插件 WeChatSync:在博客后台点「发布文章」的同时,图文会自动推送到公众号草稿箱,正文图片自动转存成微信域名链接,封面和摘要也一并处理好。我只需要打开公众号后台核对一眼,点「群发」即可。
这篇文章记录它能做什么、怎么装,以及一个很多人踩坑的关键点:公众号没认证(个人订阅号)到底能不能用。
项目已开源:https://github.com/liyinwaihe/typecho-wechatsync
它解决了哪些重复劳动
公众号图文有几条硬性规矩,手动搬运时很容易出错:
- 正文图片必须是微信域名。直接把博客里的外链图片粘进公众号,群发后图片会裂;得一张张重新上传。
- 封面要单独上传成「永久素材」,拿到一个
thumb_media_id,不是给个图片 URL 就行。 - 标题、摘要有长度限制,作者名最多 8 个字,摘要最多 120 字。
- 已经群发过一次的文章,再点发布很容易重复推送。
具体能力:
- 发文页逐篇勾选:写文章时右侧「选项」里多一个「发布时同步到公众号」复选框,想同步哪篇勾哪篇,默认值可以在插件设置里改。
- 两种模式:只进草稿箱(默认,推荐),或认证号直接调用发布接口群发。
- 正文图片自动转微信域名(走官方
media/uploadimg),单张图片转存失败不会让整篇文章同步失败。 - 封面自动处理:优先读文章自定义字段
wechat_cover,没有就取正文第一张图,自动上传成永久素材。 - 自动摘要:没填就从正文提取前 120 字,也可以用自定义字段
wechat_digest指定。 - 防重复群发:同一篇文章默认只同步一次,后台也能「强制重新同步」。
- 发布状态定时回查:认证号自动群发后,后台能看到「发布中 / 已成功(带公众号文章链接)/ 失败原因 / 超时」。
- 草稿就绪微信提醒:支持 Server 酱、企业微信群机器人、Bark、自定义 Webhook,以及公众号客服消息。
兼容 Typecho 1.1(17.10.x)/ 1.2.x / 1.3.x,只需要 PHP 开启 cURL 扩展。
重点:公众号没认证,到底能不能用?
这是最关键、也是最容易被旧教程误导的一点。
微信官方从 2025 年 7 月起,回收了个人主体、企业未认证以及不支持认证账号的「发布」系列接口权限(调用会返回 48001)。所以现在的能力边界是:
| 能力 | 未认证 / 个人订阅号 |
|---|---|
| 获取 access_token(仍需配置 IP 白名单) | ✅ |
| 正文图片转存、封面永久素材 | ✅ |
新建图文草稿 draft/add | ✅ |
API 直接群发 freepublish | ❌ |
| 公众号客服消息 | ❌ |
结论:没认证也能用,只是「自动建草稿 + 手动群发」。
这其实是一个相当合理的工作流——公众号内容发布前本就该人工核对一遍标题、封面和排版。插件默默把所有机械活干完,最后一下「群发」留给你点,既合规又不容易出事故。
为了防止误操作,插件还做了防呆:即便你手滑开了「自动群发」,它也是先成功创建草稿并保存,再去尝试发布;一旦返回 48001,草稿会原样保留,后台标记成「草稿已就绪 · 待手动群发」,不会丢稿,也不会误报成完全失败。
如果将来你用了已认证的订阅号或服务号,把模式切成「自动群发」即可,其余逻辑不用动。
安装三步走
1. 上传插件
到 Release 页下载安装包:
https://github.com/liyinwaihe/typecho-wechatsync/releases/download/v1.1.0/WeChatSync.zip
解压后把 WeChatSync 目录放到 Typecho 的 usr/plugins/ 下,确保结构是:
usr/plugins/WeChatSync/Plugin.php
usr/plugins/WeChatSync/Api.php
usr/plugins/WeChatSync/Sync.php
...
usr/plugins/WeChatSync/cache/ # 需要可写权限2. 填凭证 + 配 IP 白名单
后台「控制台 → 插件」启用 WeChatSync,填入公众号的 AppID / AppSecret。
然后登录公众号后台,在「设置与开发 → 基本配置」里,把博客服务器的出口公网 IP 加进 IP 白名单。这一步不做,换 token 时会报 40164。
不确定服务器出口 IP 的话,在服务器上执行:
curl ifconfig.me3. 测试连接,发一篇文章试试
在后台「管理 → 公众号同步」里点「测试连接」,提示成功就说明凭证和白名单都通了。然后正常写一篇文章、勾选「发布时同步到公众号」、点发布——草稿就会出现在公众号后台了。
配置草稿就绪的微信提醒
未认证号虽然不能用公众号客服消息,但可以用 Server 酱 在微信里收到提醒,效果就是「方糖」服务号给你推一条消息,点进去能直接看到提示。
- 插件设置里勾选通知渠道 Server 酱;
- 去 sct.ftqq.com 用微信扫码登录,拿到 SendKey 填进插件;
- 保存后点「发送测试通知」,微信能收到就成了。
以后每次草稿生成,微信里都会收到「文章已同步到公众号草稿箱」的提醒,不会忘记去群发。企业微信群机器人、Bark(iOS)和自定义 Webhook 也都支持,按需勾选即可。
几个实用的自定义字段
在文章里加这两个自定义字段,可以更精细地控制图文:
| 字段名 | 作用 |
|---|---|
wechat_cover | 指定封面图 URL,优先级高于「正文第一张图」 |
wechat_digest | 指定摘要,优先级高于自动提取 |
常见报错速查
| 错误码 | 含义 / 处理 |
|---|---|
40164 | 服务器 IP 不在白名单,去公众号后台加出口 IP |
40001 | AppSecret 错误或 token 失效(插件会自动刷新一次) |
48001 | 没有该接口权限——未认证号不能群发和发客服消息,用草稿模式即可 |
45015 | 客服消息的接收人 48 小时内没和公众号互动 |
40006 | 图片超限(正文图 ≤ 1MB,封面 ≤ 10MB) |
写在最后
这个插件的设计取向很明确:把确定的、机械的同步工作自动化,把需要人工判断的「发布」留给人。对个人博主而言,「自动进草稿 + 一键群发」既绕开了认证门槛,也保留了发布前的最后一道检查,反而比全自动更让人安心。
如果你也在同时运营 Typecho 和公众号,欢迎试用。代码、双语文档和安装包都在仓库里:
GitHub:https://github.com/liyinwaihe/typecho-wechatsync
使用中遇到问题,欢迎在仓库提 Issue,附上后台「公众号同步」面板里的日志会更容易定位。