FIT2CLOUD
微信公众号同步 的图标

微信公众号同步

1,949
861

一款Halo插件:无需离开 Halo 控制台,即可把已写好的文章推送到微信公众号的草稿箱,封面与正文图片会自动转存到微信素材库,同步结果实时显示在文章列表。

1.8.0
宏尘极客 发布于
>=2.26.0

微信公众号同步插件配置指南

更新日志

本次升级要点

本次更新以微信素材缓存体系为主线:新增素材上传缓存,避免同一张图反复上传挤占微信素材库;配套补齐了缓存库的自动备份、每日清理、失效自愈与凭据脱敏;同时新增「一级标题对齐方式」配置项,并在同步任务记录中留存文章标题。

  • 重复同步同一篇文章时,图片上传次数显著下降,微信素材库占用更可控
  • 缓存库有了备份与自动回收,长期运行不再无限增长
  • 封面素材在微信侧被删除导致的 40007 失败,现在能自动自愈
  • 日志与任务失败原因中的 access_token 等凭据已脱敏,避免凭据泄露

新增功能

1. 微信素材上传缓存

  • 按文件内容指纹缓存已上传素材,同一份文件只向微信上传一次,之后直接复用 media_id / 图片地址
  • 命中缓存后仍会校验资源是否真实存在:
    • 正文图片:校验微信图片地址(HEAD 请求,不走代理)
    • 永久素材:用 material/get_material 查询素材本身
  • 校验结果为三态(明确存在 / 明确不存在 / 无法判定),只有「明确存在」才复用;失效或判定不出结论时重新上传,宁可多传一份,也不让草稿发不出去
  • 新增接口调用支持。若启用代理,请同步配置 material/get_material 接口的代理规则。

2. 媒体缓存库每日自动备份

  • 时间:每天 1 点
  • 方式:SQLite VACUUM INTO 生成一致快照
  • 位置:<插件数据目录>/backups
  • 轮转:只保留最新 3 份
  • 备份失败仅记录日志,不影响缓存读写与文章同步

3. 新增 MCP 工具

工具(本地名) 类型 参数 说明
wechat_sync_preview 只读 postName 获取预览信息:按与同步一致的规则美化正文,返回美化后的正文 HTML、上传后实际使用的标题(64 字上限)、摘要(120 字)、作者(8 字)、原文链接(阅读原文)与留言设置,以及因超过微信长度上限被截断的字段名;不调用微信接口、不写任何数据,可反复调用
wechat_sync_submit 写操作 postName 提交同步到微信:先做提交前预检(微信配置、封面图、文章是否正在同步中),通过后创建后台同步任务并立即返回;同步时封面与正文图片会自动转存到微信素材库、正文按公众号排版美化,完成后可在公众号草稿箱看到草稿
wechat_sync_status 只读 postName 查询同步状态:返回该文章最近一次同步的状态与说明——PENDING(已提交、正在后台执行)/ SUCCESS(已写入公众号草稿箱)/ FAILED(失败,message 为微信返回的失败原因)/ NONE(尚未同步过);只读取任务记录,不调用微信接口、不写任何数据,提交同步后可用它轮询结果
wechat_cache_cleanup 写操作 无 清理素材缓存:立即执行一次素材缓存清理(与每天 0 点的计划任务同一套规则),返回本次删除条数与生效的保留策略——deletedRecords(删除条数)、remainingRecords(剩余记录数)、retentionDays(生效的保留策略:保留天数,如 "30";「全部保留」时为 never)、cutoff(判定时间);只删除「超过保留期且最近未被使用」的记录,仍被复用的缓存不会误删,也不影响每天 0 点的自动清理

4. 支持配置一级标题(H1)对齐方式

  • 配置项:正文美化 → 一级标题对齐方式(h1Align)
  • 取值:左对齐 / 居中 / 右对齐,默认居中
  • 正文中 H1 若已自带对齐方式(行内 text-align 或 align 属性),保持原样,本项不生效

5. 任务记录留存提交时的文章标题

  • 任务落到终态(SUCCESS / FAILED)后,输入快照会被清空以释放正文 HTML 占用的数据库空间
  • 文章标题现独立保存在任务记录 spec.postTitle 上,快照清空后仍能在任务列表里认出「这条任务是哪篇文章」

问题修复

  • 凭据可能写入日志与任务失败原因:新增脱敏处理,access_token、secret、appsecret、authorization、sign、password 等键的值统一替换为 ***;接口名与参数名保留,不影响排查。appid 为公开标识,不做脱敏

升级注意事项

  • 目录权限:新增 SQLite 缓存库与 backups 备份目录,插件数据目录需具备写权限;备份轮转只保留 3 份,磁盘占用可控
  • 容器部署确认时区:清理(0 点)与备份(1 点)按 JVM 本地时间触发,请确保容器的 TZ / 系统时区设置正确,否则会按 UTC 执行
  • 反向代理需放行 material/get_material:未放行时永久素材校验会「无法判定」,插件将保守地重新上传封面——功能不受影响,但会增加素材库占用与上传耗时
  • 日志中的凭据已脱敏:access_token 等显示为 ***,属预期行为,非异常
  • MCP 客户端可接入
  • 无需数据迁移:缓存库为空时会自动建立,并在首次同步中填充,不影响已有同步任务记录

Full Changelog: 1.7.0...1.8.0


Generated from 1.8.0

资源下载

  • plugin-wechat-official-sync-1.8.0.jar