写完就发布,不用打开 WordPress 后台
文章以 Markdown 文件躺在你本地硬盘上,写完在命令行敲一条命令,内容直接通过 WordPress REST API 发到站点——不需要登录后台、不需要复制粘贴、也不用重新配格式。发布完刷新页面,更新立刻就在那儿。
# 发布单篇
node publish.js posts/2026/my-article.md
# 批量发布所有改动过的文章
node batch_publish.js
# 先看看会发什么(不实际发布)
node batch_publish.js --dry-run
静态站点写作很爽,但它有个天生的缺陷
我一开始用的是静态站点:本地写 Markdown,构建成静态页面。写作体验是真的好,但构建这件事是有代价的——
- 只要有任何改动,哪怕只改一个标点符号,都要全站重新构建一次
- 文章发布了,自己打开网站却看不到效果,得等全站构建完、再上传完
- 内容越写越多,构建时间越来越长,慢慢就变成一种负担
- 久而久之,构建这件事会让人心生厌烦,动笔之前先有了心理压力
那换回 WordPress 后台呢?发布也有心理门槛
传统 WordPress 的做法是打开后台、新建文章、填标题、粘内容、调格式、选分类……写文章本来是件轻松的事,结果发布本身成了一道心理门槛,发得越多越懒得发。
vs 传统 WordPress 后台编辑
- ✅ 离线编辑:本地 Markdown,版本控制友好
- ✅ 批量操作:一次性处理多篇文章
- ✅ 格式一致:Markdown 标准,排版统一
- ✅ 备份简单:文件系统天然备份
我的做法:把两边的好处拼在一起
所以我做了这个系统:同样是写 Markdown,写完直接发布到 WordPress,提交后页面上立刻能看到更新。既有静态站点的写作体验,又没有「改一个字全站重建」的代价,还省掉了后台填表的那一步。
| 对比项 | 静态站点构建 | WordPress 后台 | 本系统 |
|---|---|---|---|
| 写作方式 | ✅ Markdown | ❌ 后台表单 | ✅ Markdown |
| 发布后可见 | ❌ 要等全站构建 + 上传 | ✅ 立即 | ✅ 立即 |
| 改一个标点 | ⚠️ 全站重建一次 | ✅ 直接改 | ✅ 只重发那一篇 |
| 内容多了以后 | ⚠️ 构建越来越慢 | ✅ 无影响 | ✅ 无影响 |
| 版本管理 | ✅ 文件即版本 | ❌ 存在数据库里 | ✅ 文件即版本 |
它凭什么好用
- 自动 ID 回写:新文章发布成功后,WordPress 返回的文章 ID 会自动写回 md 文件的 front matter。下次改这个文件,系统靠 ID 精准更新,绝不会因为改了标题就重复建一篇文章。
- slug 保护:更新已有文章时默认不动 slug,URL 不会变,老链接和搜索引擎收录都不受影响。
- 增量发布:批量模式只发「上次发布之后改过」的文件,几百篇的目录也是秒级扫完,不会重复发一遍。
- 文章与页面统一管:
posts/下的是文章,pages/下的是页面,一条命令全发;也可以--posts/--pages只发一类。 - 预览模式:
--dry-run先把要发布的文件列出来给你看,确认无误再真发。 - 实现极简:批量逻辑只靠一个
.last-publish-time时间戳文件,没有缓存库、没有 JSON 配置、没有额外数据库,出问题自己也能看懂改得动。
vs GitHub Actions 自动发布
- ✅ 即时响应:本地执行,不用等云端跑流水线
- ✅ 网络要求低:只要能连上你的 WordPress 站点就行
- ✅ 调试便利:日志就在眼前,报错立刻能改
- ✅ 高度可控:什么时候发、发哪几篇,都由你说了算
Markdown 该怎么写还怎么写,排面都给你补上
- 提示块:
:::tip/:::info/:::warning/:::danger自动变成带颜色的提示框,带标题不带标题都行 【高亮文字】直接渲染成醒目高亮- GFM 表格、Emoji(
:smile:)、代码高亮全部支持 - 外链自动加
target="_blank",站内站外一眼分得清
适合谁
- 习惯用 Markdown 写作、又不想放弃 WordPress 的人
- 被静态站点「改一个字全站重建」折磨过的人
- 本地攒了几十上百篇文章,想一次性搬上站的人
- 想用 git 给文章做版本管理,又不想手写 HTML 的人
怎么上手
- 下载脚本,
npm install装依赖 - 在
.env里填站点地址、用户名和 WordPress 应用密码(只需填一次) - 把 md 文件放进
posts/目录,跑node publish.js posts/xxx.md,或者直接批量node batch_publish.js
