核心用法
baoyu-post-to-wechat 是一套面向微信公众号(WeChat Official Account)的内容自动化发布解决方案,提供图文(贴图)与文章两种发布形态,支持 API 高速调用、浏览器模拟操作以及远程 API 代理三种执行模式。
输入处理:工具可接受 Markdown 文件、HTML 文件或纯文本作为输入。纯文本会被自动保存为带时间戳的 Markdown 文件;Markdown 默认将外部链接转换为底部引用格式(--no-cite 可关闭)。HTML 输入则保持原样,不做额外转换。
发布流程:工作流遵循严格的五步结构——加载配置(EXTEND.md)→ 解析账号(多账号场景)→ 判定输入类型 → 选择发布方式并配置凭证 → 解析主题/颜色与校验元数据 → 执行发布 → 生成完成报告。元数据(标题、摘要、作者、封面图)支持 CLI 参数、frontmatter、EXTEND.md 配置四级优先级自动解析,缺失时可自动生成或交互式补全。
三种发布模式:
- API 模式:本地直连微信服务器,速度最快,需配置 AppID/AppSecret 且本机 IP 在白名单内;
- Remote API 模式:通过 SSH SOCKS5 隧道将 API 请求转发至 IP 已白名单化的远程服务器,解决本地 IP 受限问题,密钥与 Secret 始终保留在本地;
- Browser 模式:基于 Chrome CDP 模拟人工登录与图文粘贴,无需 API 凭证,但依赖浏览器环境与登录态,速度较慢。
主题系统:内置 default、grace、simple、modern 四种主题,支持 13 种预设配色或自定义 HEX 色值,实现视觉一致性输出。
显著优点
1. 多模式灵活部署:本地开发机、CI 环境、受限网络场景均可找到适配方案,Remote API 的零服务器依赖设计尤为精巧。
2. 自动化元数据链路:从文件名生成 slug、从正文提取标题/摘要、自动封面图 fallback(imgs/cover.png)显著降低人工配置成本。
3. 多账号原生支持:EXTEND.md 的 accounts 块支持多公众号切换,CLI 可指定 --account <alias>,适合代运营或矩阵号场景。
4. Markdown 生态友好:自动外链转引用、图片占位符处理、与 Obsidian/Notion 等工具的 Markdown 输出无缝衔接。
5. 安全设计:Remote API 模式下 AppSecret 不离开本地进程,SSH 仅作为网络代理,远程服务器无需安装任何依赖。
潜在缺点与局限性
- 浏览器模式脆弱性:依赖 Chrome 版本、登录态持久化、系统剪贴板权限(macOS Accessibility、Linux xdotool/ydotool),跨平台稳定性差异大。
- 封面图硬性要求:API 模式的文章类型(
news)必须提供封面图,自动 fallback 路径若缺失会导致流程中断。 - IP 白名单管理成本:微信官方对 API 调用 IP 限制严格,Remote API 虽缓解但需维护一台白名单服务器。
- 无发布状态回查:仅完成「草稿保存」,无自动发布(群发)能力,需人工登录后台确认或二次操作。
- 主题扩展性未披露:内置四主题,自定义主题开发文档未在 README 中体现。
适合人群
- 技术型内容创作者(开发者、独立博客作者)希望将 Markdown 写作流与公众号打通;
- 运营多公众号的团队或代运营服务商,需脚本化批量处理;
- 本地 IP 动态变化(家庭宽带、移动办公)但拥有固定 IP 云主机的用户,适合 Remote API 方案;
- 对排版一致性有品牌要求,需主题化输出的企业号运营者。
常规风险
| 风险类型 | 说明 |
|---------|------|
| 凭证泄露 | `.baoyu-skills/.env` 存储 AppSecret,需确保文件权限 600 且不在版本控制中;建议配合 `direnv` 或 CI Secrets 管理。 |
| 远程服务器安全 | Remote API 虽只代理流量,但远程 SSH 密钥若泄露可导致内网穿透风险,建议专用跳板机、禁用密码登录、启用 Fail2ban。 |
| 浏览器指纹 | 高频使用 Browser 模式可能触发微信风控,建议控制发布频率,配合 `chrome_profile_path` 隔离登录态。 |
| 草稿误覆盖 | API 模式每次调用生成新草稿,若用户误操作将草稿转为群发,历史版本不可恢复,建议本地保留 Markdown 源文件。 |
| 依赖漂移 | 脚本基于 Bun/TypeScript 运行时,若未来微信页面 DOM 变更,Browser 模式需等待技能更新。 |