程序员写博客的宿命,往往逃不过这三大阶段:搭建博客、优化主题、迁移博客。至于写文章?那大概是第四阶段的事情了。

回想最早入坑时,还是 Jekyll + GitHub Pages 的天下。为了配环境、换主题通宵达旦,那是纯粹的“手撸 Markdown”时代。三年前,为了追赶 Web3 的浪潮,我又将阵地转移到了 xLog。

而现在,我的博客架构又双叒叕变了,这一次,我锁定了 Notion + Hexo + GitHub Actions + Vercel 的组合。

什么要逃离 xLog?

当初选择 xLog,是迷上了它“链上博客”的概念——数据所有权归自己,去中心化,听起来很酷。我也确实在上面产出过爆款,比如那篇《无限续杯 Cursor》,当时在圈子里流传甚广,帮到了不少被额度卡住的朋友。

aa647066b327c4c8bb372c0c498519ea.png

但是,理想丰满,现实骨感。

不出意外,平台还是出了意外。不知从何时起,博客开始无法访问,连管理后台也进不去,甚至无法正常备份数据。最终,我还是在官方 Discord 群里找到大佬开发的工具,才勉强抢救回了文章的文字内容和元数据。

Web3 的存储号称“永存”,但在实际体验中却变成了“随缘加载”。对于一篇技术教程来说,没有了截图,就像代码没有了高亮,灵魂直接丢了一半。看着曾经的文章变成了“红叉图”展览馆,我痛定思痛,正式启动迁移计划。

为什么是 Notion + Hexo + Actions + Vercel?

这一套组合拳打下来,虽然配置初期有点繁琐,但一旦跑通,体验简直是降维打击。

  • Notion:不仅是 CMS,更是写作流
    • 体验:Notion 的 Block 写作体验无出其右,拖拽排版、数据库管理 Tag 和分类,极其顺滑。
    • 角色:这里它充当了 Headless CMS(无头内容管理系统)。我在 Notion 写完,改状态为 已发布,剩下的事就不用管了。
  • Hexo:静态生成的王者
    • 生态:作为老牌静态站点生成器,插件和主题生态极其丰富。
    • 速度:渲染速度快,生成的全是静态 HTML,对 SEO 极其友好。
  • GitHub Actions:自动化的魔法
    • 胶水:它是连接 Notion 和 Hexo 的桥梁。通过 Workflow 定时拉取 Notion 的数据,自动转换成 Hexo 识别的 Markdown 文件,然后触发构建。
    • 解放双手:再也不用本地 hexo g -d 了,云端全自动流水线。
  • Vercel:全球 CDN 加持
    • :构建好的静态资源往 Vercel 一扔,自动获得全球 CDN 加速和 SSL 证书。
    • :告别维护 VPS 的痛苦,且对个人开发者免费。

迁移路上的“坑”与“泪”

说实话,这次迁移比我想象中要顺滑得多,主要得益于开源社区的力量。

  • 站在巨人的肩膀上

我没有从零造轮子,而是基于 notion-hexo 这一优秀模板进行了二次开发。有了现成的方案,Notion 到 Hexo 的核心转换逻辑基本无需操心,大大降低了迁移门槛。

  • 回归本地存储

为了彻底摆脱 xLog 时代 IPFS “随缘加载”的噩梦,这一次我选择了最稳妥的方式:图片随静态资源部署。利用 Elog 将 Notion 中的图片导出并直接存储在本地目录,随 Vercel 一起发布。虽然这会增加仓库体积,但没有什么比“图片确确实实存在自己手里”更让人安心的了。再也不用担心图床跑路或者 CDN 欠费。

  • 老文章的“断臂维纳斯”

迁移过程中唯一的遗憾,落在了旧文章上。由于之前 xLog 的图片大部分已无法下载,导致那篇《无限续杯 Cursor》及其他技术教程现在基本处于“残废”状态——文字尚存,但截图全丢。这是一次惨痛的教训,也坚定了我不依赖第三方存储的决心。

成果与反思

虽然痛失了老文章的配图,但这套新架构的手感极佳,是一次彻底的升级。

极简的发布体验

现在的发布流程变得异常优雅,彻底回归了写作本身:

  • 随时随地: 手机或电脑打开 Notion,像写笔记一样记录灵感。
  • 一键发布: 只需要将 Notion 里的文章状态改为 已发布
  • 自动构建: GitHub Actions 监测到变动(或定时触发),自动拉取数据并构建静态页面。
  • 秒级上线: 2 分钟后,Vercel 自动部署,全球 CDN 同步更新。

Snipaste_2026-02-14_15-15-15.png

个性化“魔改” (DIY)

为了让这个“家”更符合我的口味,我又动了一系列手术:

  • AI 摘要:
    • 接入智谱的轻量高速小模型 glm-4.7-flashx,每篇文章自动生成 AI 摘要,方便读者快速了解文章核心内容。利用 AI 能力提取关键信息,让浏览更高效。
  • 交互体验升级:
    • Notion 风侧边栏: 手搓了一个类似 Notion 原生的侧边目录预览(TOC),让阅读体验在 Hexo 上也能无缝衔接 Notion 的丝滑感。(手机端不展示此功能)
    • 电子宠物: 在页面角落养了一只网页小宠物,文章看累了逗逗它,给博客增添了一点生活气。(手机端不展示此功能)
  • 评论系统:
    • 接入了 Giscus。利用 GitHub Discussions 来存储评论,既免费又不用担心数据丢失。只要你有 GitHub 账号就能跟我互动。
  • 看不见的内功:
    • 性能优化: 精简了不必要的 JS,配合 Vercel 的边缘缓存,现在的加载速度只能用“起飞”来形容。
    • SEO 拉满: 对 Sitemap 和 meta 标签做了针对性优化,Google 收录速度肉眼可见地提升。

这不仅是一次技术的迁移,更是一次心态的回归。这一套方案,虽然不够“去中心化”,但它足够鲁棒(Robust),足够高效

折腾工具的尽头,往往是为了回归内容本身。此刻,屏幕闪烁,下一篇故事,正准备开始。