我给 Typecho 写了个公众号同步插件:发文自动进草稿箱,没认证也能用

我给 Typecho 写了个公众号同步插件:发文自动进草稿箱,没认证也能用

我同时维护一个 Typecho 博客和一个微信公众号。每次写完博客,都要再去公众号后台手动排版、传图、复制一遍——做内容的人都懂,这种重复劳动最耗精力。

于是我写了一个 Typecho 插件 WeChatSync:在博客后台点「发布文章」的同时,图文会自动推送到公众号草稿箱,正文图片自动转存成微信域名链接,封面和摘要也一并处理好。我只需要打开公众号后台核对一眼,点「群发」即可。

这篇文章记录它能做什么、怎么装,以及一个很多人踩坑的关键点:公众号没认证(个人订阅号)到底能不能用。

项目已开源:https://github.com/liyinwaihe/typecho-wechatsync

它解决了哪些重复劳动

公众号图文有几条硬性规矩,手动搬运时很容易出错:

  • 正文图片必须是微信域名。直接把博客里的外链图片粘进公众号,群发后图片会裂;得一张张重新上传。
  • 封面要单独上传成「永久素材」,拿到一个 thumb_media_id,不是给个图片 URL 就行。
  • 标题、摘要有长度限制,作者名最多 8 个字,摘要最多 120 字。
  • 已经群发过一次的文章,再点发布很容易重复推送。

具体能力:

  1. 发文页逐篇勾选:写文章时右侧「选项」里多一个「发布时同步到公众号」复选框,想同步哪篇勾哪篇,默认值可以在插件设置里改。
  2. 两种模式:只进草稿箱(默认,推荐),或认证号直接调用发布接口群发。
  3. 正文图片自动转微信域名(走官方 media/uploadimg),单张图片转存失败不会让整篇文章同步失败。
  4. 封面自动处理:优先读文章自定义字段 wechat_cover,没有就取正文第一张图,自动上传成永久素材。
  5. 自动摘要:没填就从正文提取前 120 字,也可以用自定义字段 wechat_digest 指定。
  6. 防重复群发:同一篇文章默认只同步一次,后台也能「强制重新同步」。
  7. 发布状态定时回查:认证号自动群发后,后台能看到「发布中 / 已成功(带公众号文章链接)/ 失败原因 / 超时」。
  8. 草稿就绪微信提醒:支持 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.me

3. 测试连接,发一篇文章试试

在后台「管理 → 公众号同步」里点「测试连接」,提示成功就说明凭证和白名单都通了。然后正常写一篇文章、勾选「发布时同步到公众号」、点发布——草稿就会出现在公众号后台了。

配置草稿就绪的微信提醒

未认证号虽然不能用公众号客服消息,但可以用 Server 酱 在微信里收到提醒,效果就是「方糖」服务号给你推一条消息,点进去能直接看到提示。

  1. 插件设置里勾选通知渠道 Server 酱;
  2. 去 sct.ftqq.com 用微信扫码登录,拿到 SendKey 填进插件;
  3. 保存后点「发送测试通知」,微信能收到就成了。

以后每次草稿生成,微信里都会收到「文章已同步到公众号草稿箱」的提醒,不会忘记去群发。企业微信群机器人、Bark(iOS)和自定义 Webhook 也都支持,按需勾选即可。

几个实用的自定义字段

在文章里加这两个自定义字段,可以更精细地控制图文:

字段名作用
wechat_cover指定封面图 URL,优先级高于「正文第一张图」
wechat_digest指定摘要,优先级高于自动提取

常见报错速查

错误码含义 / 处理
40164服务器 IP 不在白名单,去公众号后台加出口 IP
40001AppSecret 错误或 token 失效(插件会自动刷新一次)
48001没有该接口权限——未认证号不能群发和发客服消息,用草稿模式即可
45015客服消息的接收人 48 小时内没和公众号互动
40006图片超限(正文图 ≤ 1MB,封面 ≤ 10MB)

写在最后

这个插件的设计取向很明确:把确定的、机械的同步工作自动化,把需要人工判断的「发布」留给人。对个人博主而言,「自动进草稿 + 一键群发」既绕开了认证门槛,也保留了发布前的最后一道检查,反而比全自动更让人安心。

如果你也在同时运营 Typecho 和公众号,欢迎试用。代码、双语文档和安装包都在仓库里:

GitHub:https://github.com/liyinwaihe/typecho-wechatsync

使用中遇到问题,欢迎在仓库提 Issue,附上后台「公众号同步」面板里的日志会更容易定位。

😊
提交
暂无评论数据