Blog Enhanced
AI 时代的到来的确提升了软件行业的生产力,显著的证据就是 Github 的流量激增甚至导致可用性下降。本博客程序也在 AI 的帮助下进行了迭代。
以下将把博客程序 clone 下来,自己部署的开发者称作“用户”,将部署完成后的博文阅读者称作“访客”。
CMS
此前代码和文章内容混在同一个 repo 里,博客用户(目前也就是我)必须维护一个本地的 deploy 分支,里面放了 markdown、图片、视频,以及一些本站的配置。这样同时在一个 codebase 里维护代码和文章,很麻烦,也很容易出错,写文章就和做一次网站发版一样,也让人很没有写文章的积极性。博客的内容必须和博客代码解耦。
我比较了如下方案:
博客内容放网盘
和此前 farbox 的方案一致,但中国的网盘厂商作恶的比较多,我不想让我的私密文章和图片被网盘厂商狠狠看。不作恶的网盘厂商:1. 基本都被墙了,会给中国用户增加许多部署成本;2. 没被墙又不作恶的网盘厂商,都是小厂商,它们之所以没有被墙是因为还没被墙注意到。这些小厂商没有 api,也随时会倒闭跑路。我博客内容的存在需要比它们更长寿。
添加数据库
如果把文章放到数据库里,也会给用户增加部署成本,用户必须去寻找诸如 neon supabase 这样的 db provider。而且文章放在数据库里,源文件的浏览也不够直观。虽然有 coding agent,再做一套 cms 系统并不困难,但即使是 AI 时代,尽量不要重复发明轮子的定律依然适用。毕竟开发维护成本不是零啊,有其他人做了类似工作,直接重复利用不好吗。
Git Backed CMS
本博客最终集成了 decap CMS,cms 程序直接将文章 commit 到一个指定的 git repo,这个 git repo 里只放文章,不放其他任何东西。repo 更新时,Github 通过 webhook 触发博客的刷新。Nuxt Content 自动渲染此 git repo 的内容。1. Github 在可预见的未来内会一直存在,搞不好会和人类文明一样长寿;2. Github 普通人使用完全免费;3. git repo 可以简单设置成 private;4. 甚至还自动获得了 versioning 能力。
同时对于诸如图片视频的二进制内容,本博客还提供了配置 s3 的功能。
安全方面,可以配置 decap 页面的访问密码,我自己在此之上还对本站配置了 cloudflare zero trust access。
项目地址:https://github.com/portwatcher/blog
Todo
AI 翻译功能- 不配置 editor 访问密码而是启用 Login With Github 按钮