Peifeng @ peifeng.me培风

动态内容自动化:从即刻备份到无后端的极简 Memos 架构

Mar 10 · 10min

1. 背景

最近为博客添加了“memo”页面,初衷是容纳那些“不足以成文的灵光一现”。但遇到3个问题:

  1. 过往数据如何获取:之前的动态基本都是在即刻中,需要批量导出。
  2. 数据如何存储:现在的博客是没有后端服务的,博文可以一篇一个 md 文件,但动态不行,文件数量太多了。
  3. 数据如何更新管理:日常我有动态想法,总不能每次都打开 IDE,像写代码一样操作,再执行完整的部署更新流程,太重。

人会偷懒,所以我把问题交给了 AI。


2. 方案确立:不被过去捆绑

既然核心诉求是“轻量化”,而且我非常抗拒因为这个页面去引入一个真实的数据库(需要备份数据、防攻击,而且会拖慢网页加载速度)。

在跟 AI 探讨后,确定了无后端的两种路线:

方案思路做法与优劣
借助代码平台的留言板功能把动态展示当做代码存放平台的“缺陷留言(Issue)”。虽然免费不用搭服务器,但会导致我的主要仓库被杂乱的个人记录污染。放弃。
文件拆分组合将代码存储库本身当做数据库,让每条动态独立为一个特定格式的文件。这样数据都在自己手里。采用。

目标很明确:我依然只想在纯文本里写日记,剩下的全都靠系统用脚本帮我归档组织。


3. 把想法变成现实

既然确定了思路,剩下的就是动手。我和 AI 很快把这几个问题给平掉了。

3.1 解决数据获取:魔改开源工具

原本看中了一个开源的即刻导出工具,结果发现它有不少坑:

  1. 只能导出 60 条数据,剩下的被作者上了付费锁。
  2. 导出的格式不对,给的是带排版的文本或表格,根本没办法用程序处理。

那就不废话了,我直接把它的代码拉下来改了。先把 60 条的限制给强行解除掉,然后再顺手加了一段代码,让它能导出一份最纯净、只包含内容的源数据文件。

3.2 解决数据存储:写个脚本全自动切分

源数据到手了,但几十万字的单文件显然不能直接用。 所以我写了一小段脚本:让它像切蛋糕一样,把这坨庞大的记录按月份切开,然后分别存进 2025-06.md 这样的独立文件里。

每条动态在文件里的结构也是极简的:

::memo
date: 2026-03-08
link: https://web.okjike.com/...
circle: AI探索站
::

“我先抓根因,不猜”

Note

这其实就是用本地的文件夹和文件,手搓了一个极简版的“数据库”。不需要担心挂掉,也不需要刻意维护。

3.3 解决页面更新:让构建工具代劳

文本切分好了,最后一步就是怎么把它们显示在网页上。 传统的做法是维护一个大名单,有一条记录就添一项。这显然又违背了“偷懒”的原则。 所以这里用了一个讨巧的办法:利用博客自带的代码打包工具(Vite),让它在生成网页的时候,自己去文件夹里数一数有多少个记录文件,然后直接把内容塞进页面里。

至此,这个不带任何后端的“微客”页面算是搞定了。


4. 后续:如何优雅的发推

页面搞定了,那以后有了新想法怎么往里加呢?也就是开头提到的问题 3。

这部分的工作我打算交给代码托管平台的流水线服务(GitHub Actions)。 大概的过程会是这样:我只需要在手机上(借用捷径功能)发一段文字,触发一个网络请求通知代码仓库;仓库接到通知后,自动找出现在是几月,把这段文字塞进对应月份的文件末尾,然后保存并发出版。

用最轻量的方式记录思考,不给自己找麻烦。

> comment on bluesky / mastodon / twitter
>