Hexo 文章一键发布到微信公众号

Hexo 文章一键发布到微信公众号

💡 原文中文,约4900字,阅读约需12分钟。
📝

内容提要

作者将 Hexo 文章发布到微信公众号的流程压缩为一条命令:自动选取最近改动的文章,补齐封面、作者、原文链接等 front-matter 默认值,将站内图片路径替换为绝对路径并把 webp 转为 png/jpg,再通过 stdin 交给命令行工具文颜完成排版渲染、图片上传和草稿创建。文中还介绍了获取 AppID 与 AppSecret、配置 IP 白名单、用 git 定位文章及踩坑经验,最终保留人工复核后再群发。

🔎

延伸解读

为什么选择命令行工具而非网页版

作者对比了多种工具后,最终选用文颜命令行版,核心原因是网页版仍需手动复制粘贴,无法解决“搬运”问题。文颜支持本地渲染、自定义主题和代码高亮,并能通过 stdin 读取内容,天然适合作为脚本的下游。这提示我们,在自动化流程中,选择支持管道输入的工具能大幅减少人工干预。

凭据获取与 IP 白名单的注意事项

获取 AppID 和 AppSecret 需管理员扫码,且 AppSecret 仅显示一次,重置会使旧密钥立即失效。配置 IP 白名单时,家用宽带 IP 可能变动,不配会报 40164 或 61004 错误。这些细节表明,凭据管理需谨慎,且动态 IP 环境需定期检查白名单,避免发布中断。

图片处理的顺序与格式转换

微信素材库不支持 webp,作者用 sharp 将 webp 转为 png 或 jpg,并强调必须先替换站内路径为绝对路径,再扫描转换,否则找不到文件。转换结果按路径和修改时间缓存,避免重复处理。这提醒我们,处理图片时需注意格式兼容性和操作顺序,利用缓存可提升效率。

自动化流程中的人工复核环节

作者将发布流程压缩为一条命令,自动完成文章选取、front-matter 补齐、图片处理和草稿创建,但最终保留人工复核后再群发。这种设计平衡了效率与风险控制,尤其适合内容需谨慎发布的场景。它表明,自动化并非完全取代人工,关键环节的确认仍不可或缺。

❓

Q&A

如何把 Hexo 文章一键发布到微信公众号?

作者将流程压缩为一条命令 pnpm run pubmp,该命令自动选取最近改动的文章、补齐 front-matter 默认值、替换站内图片路径并转换 webp 格式,然后通过 stdin 交给文颜(wenyan-cli)完成排版、上传图片和创建草稿。

文颜(wenyan-cli)是什么?为什么选它?

文颜是一个命令行工具(npm 包名 @wenyan-md/cli),支持本地渲染、自定义主题和代码高亮,能调用微信素材接口上传图片并创建草稿,且支持从 stdin 读取内容,适合作为脚本的下游工具。

怎么获取微信公众号的 AppID 和 AppSecret?

AppID 可在微信开发者平台「我的业务」→「公众号」→「基础信息」查看,或公众平台后台「设置与开发」→「账号设置」→「注册信息」获取。AppSecret 需在 https://developers.weixin.qq.com/platform 用管理员微信扫码登录,进入公众号详情页的「基础信息」Tab,在「开发密钥」处启用或重置,重置后旧密钥立即失效。

为什么需要配置 IP 白名单?不配会怎样?

调用微信接口需要将服务器或本机的出口公网 IP 加入 API IP 白名单,否则会报 40164 invalid ip 错误,获取 token 时被拦则报 61004。白名单可在开发者平台或 mp 后台安全中心配置,家用宽带 IP 可能变化需重新配置。

发布前如何处理文章中的图片?

脚本会将正文中的站内绝对路径(如 /gallery/...)替换为磁盘绝对路径,因为文颜将其视为本地文件。同时,由于微信素材库不支持 webp,脚本会用 sharp 将 webp 转换为 png(有透明通道)或 jpg(其余),转换结果按路径和修改时间缓存。

脚本如何自动选取最近改动的文章?

脚本优先选取工作区中未提交的 source/_posts 下的 md 文件,取磁盘修改时间最新的;如果没有未提交的,则通过 git 查找最近一次改动过 source/_posts 下 md 的提交,再从涉及的文件中取最新的。

发布过程中有哪些常见的坑?

常见坑包括:文颜只有显式传 --app-id 时才读凭据文件,否则报未提供 AppID;草稿强制要求封面,正文无图时会失败;AppSecret 只显示一次,重置会使旧密钥失效;IP 白名单不配会报 40164 或 61004;webp 图片不被微信支持,需提前转换。

🏷️

标签

➡️

继续阅读