| name | self-media-wechat-publisher |
| description | 把已确认的公众号终稿 Markdown 排版并写入微信公众号草稿箱。用于用户说"发布到公众号、写入草稿箱、公众号排版、换个排版主题、发小绿书图片消息"等场景。自动上传封面与文内图片,支持多主题与自定义 CSS、多账号和 server 模式。只创建草稿不群发,凭据只通过环境变量提供,未安装适配工具时交付手动发布包。 |
公众号发布
目标
把确认过的公众号终稿 Markdown 排版成平台原生富文本,连同封面和文内图片写入公众号草稿箱。只创建草稿,从不群发。
适配层说明
本模块是公众号渠道的发布适配层,基于开源工具 wenyan CLI(Apache-2.0)。wenyan 不可用时不阻塞创作流程,按 self-media-content-delivery 交付手动发布包。
前置检测
wenyan --version 确认安装。未安装时提示 npm install -g @wenyan-md/cli,用户不想安装则直接交付手动发布包。
- 确认
WECHAT_APP_ID 和 WECHAT_APP_SECRET 环境变量存在。只判断存在性,不读取、不回显、不写入任何文件。
- 首次发布前确认运行机器 IP 已加入公众号后台白名单。IP 频繁变动或团队协作场景使用 server 模式,见 wenyan-setup.md。
输入契约
文章顶部必须有 frontmatter:title 必填;cover 为本地或网络路径,缺省时自动取正文第一张图;author 和 source_url 可选。文内图片支持本地绝对路径、相对路径和网络地址,发布时自动上传公众号素材库。模板见 wechat-article-template.md。
小绿书图片消息:frontmatter 设 type: image 自动提取正文全部图片,或手动列出 image_list。最多 20 张,首图即封面。
主题选择
- 优先读取账号风格档案中的默认排版主题。
- 没有默认主题或用户要求换风格时,用当前文章渲染候选主题生成本地预览(
wenyan render -f 文章.md -t 主题),让用户对比选择。
- 用户选定后写入账号风格档案,后续沿用,不重复询问。
- 需要品牌化排版时用
-c 加载自定义 CSS 主题。
发布流程
两层授权缺一不可:终稿确认,加上草稿箱写入授权。
- 核对 frontmatter 完整、封面可用、文内图片路径全部有效。
wenyan render 本地渲染,确认无乱码、代码块和表格可读。
wenyan publish -f 文章.md -t 主题 -h 高亮主题 写入草稿箱。
- 提醒用户在公众号后台打开草稿,核对标题、封面、前两段、图片数量和外链。
- 把草稿创建时间、使用主题和核对结果写回任务卡。
发布失败时按 wenyan-setup.md 排查。同一错误不盲目重试超过一次,凭据类问题交给用户处理。
多账号
发布到多个公众号时,改用 wenyan 的凭据配置管理多账号,publish 时加 --app-id 指定。每个账号都需要独立配置 IP 白名单。
安全边界
- 只写草稿箱,不调用群发接口。
- 凭据只通过环境变量或 wenyan 凭据配置提供,不写入任务卡、文章、日志或仓库。
- 命令输出中出现 token 或密钥片段时不记录、不转述。
- 发布接口报错、白名单拦截或凭据失效时立即停止并交给用户。
输出
返回:草稿标题、使用主题、封面来源、图片数量、草稿创建时间和需要人工核对的清单。