我的自动化发布系统:从Markdown到多平台一键生成
2026/3/18
自动化Node.js内容创作
问题:发布比写文章更花时间
在”50个应用”计划中,我发现一个被低估的问题:
写文章花时间,但发布文章花的时间更多。
一篇文章写好后,我需要:
- 处理图片(截图、调整尺寸、添加说明)
- 生成小红书卡片(9张图 + 文案)
- 生成公众号HTML(格式调整、图片上传)
- 逐个平台发布(复制、粘贴、排版)
如果每篇文章都要重复这些流程,那时间成本太高了。
所以,我花了一个周末,搭建了一个自动化发布系统。
系统架构
┌─────────────┐
│ Markdown │ 文章源文件
└──────┬──────┘
│
▼
┌─────────────────────────────────────┐
│ publish-generator.js │ 核心处理器
├─────────────────────────────────────┤
│ Markdown 解析 │
│ 图片检查与生成 │
│ HTML 渲染 │
│ 卡片生成 │
└──────┬──────────────────────────────┘
│
├─────────────┬─────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│小红书卡片│ │微信HTML │ │ 封面图 │
└──────────┘ └──────────┘ └──────────┘
技术栈
| 组件 | 技术选型 | 用途 |
|---|---|---|
| 运行环境 | Node.js + ES Modules | 现代化 JavaScript |
| Markdown 解析 | markdown-it | MD → HTML 转换 |
| HTML 渲染 | Puppeteer | HTML → PNG 截图 |
| 图片生成 | 阿里云 DashScope API | AI 自动生成配图 |
| 模板引擎 | 原生 JavaScript Template Literals | 灵活的 HTML 模板 |
核心功能
1. 智能图片处理
系统需要解决三个问题:
本地图片文件不存在 — 之前清理仓库时删除了图片目录,文章中还有图片引用但文件已丢失。
解决方案:检查本地图片是否存在,缺失则调用 AI 自动生成。
如何区分项目截图 vs 概念图? — 项目界面必须真实截图,概念图可以用 AI 生成。
通过文件名关键词判断:包含”工作台""模板管理""编辑器”等为项目截图,其他为概念图。
微信 HTML 中的本地图片路径 — 微信公众号编辑器无法读取本地文件路径。
解决方案:统一使用 Base64 嵌入。
2. 小红书卡片生成
小红书的格式特殊:图片为主,文字为辅。
生成流程:
- 按 H2 标题分段,每段一张卡片
- 识别文字、图片、代码块、表格、列表类型
- 根据内容类型选择合适的布局
每张卡片是独立的 HTML 文件,使用 Puppeteer 渲染成 PNG。
3. 微信公众号 HTML
模板特点:
- 响应式设计,最大宽度 677px(公众号标准)
- 渐变背景,提升视觉层次
- 代码高亮,深色背景 + 语法着色
- 引用样式,带装饰的引用块
- 统一的作者信息展示
4. AI 图片生成
使用阿里云 DashScope API(通义万相),根据文件名自动生成提示词。
效果对比
| 操作 | 之前 | 现在 |
|---|---|---|
| 手动截图 | 10-15 分钟 | - |
| 小红书排版 | 20-30 分钟 | 运行命令 1 分钟 |
| 微信公众号排版 | 15-20 分钟 | - |
| 复制粘贴到各平台 | - | 5 分钟 |
| 总计 | 45-65 分钟 | 8-10 分钟 |
效率提升约 80%。
使用方法
# 生成小红书图片 + 微信 HTML
node publish-generator.js "文章.md"
# 只生成小红书
node publish-generator.js "文章.md" --xhs
# 只生成微信
node publish-generator.js "文章.md" --wechat
写在最后
这套系统不是什么黑科技,只是把重复的工作自动化了。
对于独立开发者来说,时间就是最宝贵的资源。
花一点时间搭建工具,可以节省后续大量的重复劳动。