从个人知识库到 Cloudflare Pages:我的技术博客发布流程
从个人知识库到 Cloudflare Pages:我的技术博客发布流程
我一直用 Markdown 记技术笔记,知识库用 Git 管理。内容多了之后,希望一部分文章能持续对外发布:既沉淀自己的方法,也方便分享和求职时展示。
最终方案很简单:知识库仍是唯一内容源,用 YAML 挑出要公开的文章,同步进 Hexo,本地检查后推到 GitHub,由 Cloudflare Pages 自动构建并部署到 www.albeltbo.com。日常发布只剩一条命令:
1 | |
整体链路如下:
1 | |
一、整体设计
知识库是私有仓库,里面既有准备公开的技术文章,也有学习笔记和临时记录。所以不能把整个仓库直接挂上网,而是用 publish.yml 维护公开列表:
1 | |
只有列表里的文章会进博客。项目结构大致是:
1 | |
二、使用 Hexo 生成静态网站
Hexo 负责把 Markdown 渲染成静态站:文章页、首页、分类/标签页,再套上主题,输出到 hexo/public/。这个目录不进 Git——Cloudflare Pages 会自己拉源码并构建,仓库里只保留 Markdown、图片、Hexo 配置,避免反复提交构建产物。
三、自动同步公开文章和资源
发布时脚本会读 publish.yml,把对应 Markdown 拷到 hexo/source/_posts,再按文章引用只同步实际用到的图片等资源,并清理已取消公开的旧文件。
好处有两点:知识库仍是唯一内容源,不用维护两套版本;私人内容和公开内容边界清楚,不会一次误操作把整个库推上网。同步还要幂等——内容没变时,重复执行发布命令不应产生无意义的 Git 变更。
四、本地构建和预览
正式发布前先本地构建,确认 Markdown 能解析、图片路径有效、插件正常。预览用:
1 | |
它会先同步公开文章,再启动 Hexo Server,方便检查首页、排版、代码块、图片、目录和主题效果。
五、一键发布到 GitHub
正式发布:
1 | |
内部依次同步 Markdown 与资源、清理旧内容、做 Hexo 本地构建检查,再暂存博客相关文件、Commit、Push。平时发布一篇文章就是:在知识库里正常写 Markdown → 把要公开的文章写入 YAML → 执行 make hexo_publish,同步、校验、提交和推送都自动完成。
六、Cloudflare Pages 自动构建
Git Push 之后,Cloudflare Pages 检测到新 Commit,拉取仓库、进入 Hexo 目录、安装依赖、执行 hexo build,把生成的 public/ 部署到全球网络。不用自己买服务器、配 HTTPS,也不用手动传静态文件——薅 Cloudflare 羊毛就好了。
七、域名购买和 Cloudflare DNS
域名 albeltbo.com 买自 Spaceship,买完后把 Nameserver 改成 Cloudflare 提供的。之后 DNS 都在 Cloudflare 管,Spaceship 只当注册商。
博客主域名是 https://www.albeltbo.com。Pages 绑定这个域名并自动处理 HTTPS;Hexo 配置里也写成:
1 | |
这样 Sitemap、RSS、Canonical URL 和页面元数据都会用正式域名。
八、HTTPS 和域名重定向
规范入口统一为 https://www.albeltbo.com。http://www 跳到 HTTPS,根域名 albeltbo.com 做 301 到 www,避免 www / 非 www 被搜索引擎重复收录。
Cloudflare 这边覆盖了 HTTPS、HTTP→HTTPS、根域名→WWW 的 301、CDN/边缘缓存,以及 Pages 部署本身。
九、最终效果
现在发布就是:写 Markdown → 更新 publish.yml → 运行make hexo_publish → Cloudflare Pages 自动上线。
对我来说,价值不只是「搭了一个博客」,而是把原来散在本地的知识、实践和个人思考,收成一份可以持续积累、长期维护、对外展示的技术资产。知识库沉淀,Git 留痕,Hexo 表达,Cloudflare 交付——我继续写就行。