Hexo 博客全自动写作与发布指引(Typora + GitHub Actions 方案)
本文是这套博客方案的完整使用指引:从写下第一个字到全网上线,本地只需要 Typora + Git,无需懂 Node.js,无需手动部署。想复刻同款方案或加入协作的读者,按此文操作即可。
一、方案概览
1 | Typora 写作(Windows) |
- 写作:Typora 编辑 Markdown,图片即贴即用
- 发布:
git push即全部,约 1 分钟后上线 - 环境:Windows 11 + WSL2(仅本地预览时需要),核心流程零依赖
仓库结构是单仓库双分支:source 分支放源码(文章 + 配置),gh-pages 分支由 Actions 自动构建发布,不要手工改动。
二、写一篇新文章(完整流程)
1. 新建文件
在 source/_posts/ 下新建 YYYYMMDD-标题.md,顶部写 front-matter:
1 |
|
三个易错点:
- URL 由文件名决定,不由 slug 决定:实测在当前 Hexo 6 环境下,front-matter 的
slug不会生效,文章 URL 实际取文件名(YYYYMMDD-标题.md→/年/月/日/文件名/)。因此文件名定好后不要改,改名等于换 URL,旧链接全失效;同时保持 slug 与文件名一致,避免误导 - 归档位置由
date决定:URL 里的/年/月/日/取自 front-matter 的date,与文件名里的日期可以不同(补发旧文时常见),属正常现象 - tags 不要加
#号:front-matter 是 YAML,#是注释符,- # Practice会被解析为空标签(本博客 17 篇文章曾因此标签全丢)
2. 插图(即贴即用)
Typora 一次性设置:**偏好设置 → 图像 → 插入图片时「复制图片到指定路径」,填 ./../images**。
之后粘贴图片即可:
- 图片自动存入
source/images/,Typora 里即时可见 - 构建时
scripts/rewrite-images.js自动把路径改写为线上根路径,无需关心 - 提交时
git add source把图片和文章一起带上
3. 写草稿(可选)
不想立即发布的文章放 source/_drafts/,push 也不会上线。写完移回 _posts/ 即可。
4. 本地预览(可选)
Typora 只渲染通用 Markdown,看不到主题真实样式。想预览真实效果:
1 | # WSL 中 |
5. 发布
1 | git add source |
推送后约 1 分钟:GitHub Actions 自动完成 npm install → hexo generate → 部署 gh-pages → GitHub Pages 构建,全程无需干预。仓库 Actions 标签页可看进度,绿色即成功。
6. 关于 CDN 缓存(重要)
站点前面有 CDN 加速,发文后线上可能延迟约 10 分钟才更新(CDN 节点缓存)。看不到新文章时:
- 先
Ctrl + F5强刷浏览器 - 还不行就到 CDN 控制台手动刷新全站缓存
(后续迁移到 Cloudflare 后,工作流已内置自动刷新步骤,配置好 Secrets 即可”发文即见”。)
三、日常维护速查
| 需求 | 操作 |
|---|---|
| 改文章 | 直接编辑 _posts/ 里的文件,push |
| 删文章 | 删除对应 .md 文件,push |
| 改标签/分类 | 编辑 front-matter,push |
| 改文件名 | 等于更换文章 URL(slug 不生效),避免对已发布文章使用 |
| 回滚 | 在 source 分支 git revert 后 push,不要依赖 gh-pages 历史 |
| 排障入口 | 浏览器 F12 控制台——服务端 curl 正常不代表浏览器执行正常 |
四、这套方案的技术栈(供复刻参考)
- Hexo 6 + NexT 8(Gemini):主题务必用 NexT 8,5.x 老版本与 Hexo 6 有多处兼容坑(swig 渲染器、菜单编码、i18n 命名),我们全部踩过
- 部署:GitHub Actions +
peaceiris/actions-gh-pages,源码分支推送即触发 - 图片:弃用外链图床,图片随仓库走(
source/images/),无外链失效风险 - 工作目录:单一副本
~/blog(WSL 的 Linux 原生目录,hexo server 保存即自动重建);Typora 经\\wsl$\Ubuntu\home\sam\blog打开写作 - 完整工程说明见仓库
README.md
五、写作约定清单(发文前自查)
- 文件名
YYYYMMDD-标题.md(它决定 URL,定好后不再改) - front-matter 五项齐全(title / slug / date / categories / tags),且 slug 与文件名一致
- tags 不带
#号 - 图片走的是粘贴归档(
source/images/),不是本地绝对路径 -
git add source包含了新增的图片 - push 后去 Actions 确认绿色
按此清单操作,写作就是纯粹的文字工作,其余全部交给自动化。