给 Hexo 博客加上豆瓣读书、游戏数据

给 Hexo 博客加上豆瓣的读书、游戏数据这个想法,是看到别人的博客时突然被点醒的。页面上整整齐齐列着这些年看过的书、看过的电影,我才想起来,其实我也是 2006 年就注册豆瓣的老豆友了,在豆瓣上默默积累的,已经是差不多 20 年的个人数据。

一直以来,我理想中的状态,是看完一本书就写一篇读后感,留下当下的想法和情绪。现实当然完全不是这样。书倒是看了一些,但真正能坐下来写读后感的次数屈指可数。每次打开编辑器,光是想怎么开头,就已经失去耐心了。久而久之,读书这件事在博客上几乎像是“消失”了一样,只有我自己知道,豆瓣上还有一份相对完整的记录。虽然没有写读后感,但是这些记录也都是满满的回忆。

为了把这部分生活重新拉回博客,我开始动念:干脆直接把豆瓣的数据同步过来算了。这样既不会逼着自己每本书都写长评,又能在自己的地盘上,把这些年看过的东西、玩过的游戏排一排、晒一晒,也算是一种“懒人式归档”。

简单搜了一下,发现已经有人做过类似的事情:有一个 GitHub Action lizheming/doumark-action 可以把豆瓣的数据导出成 CSV,然后再用这些数据在博客里生成页面。思路很对路,但我越想越觉得,这种方案有点过于依赖 GitHub 了——得要仓库、要 Action、要 CI 正常跑,整个流程都绑在远端环境上。以我这种喜欢在本地折腾的人来说,总有点别扭。

于是我顺着那个 Action 找到了它背后实际执行的开源项目,也就是 lizheming/drone-doumark 这个仓库。里面就是原本用在 CI/CD 里的 Docker 执行逻辑。我干脆把它挖出来,对着源码研究了一下,然后让 Codex 帮我写了一个可以在本地直接跑的版本。这样一来,每次更新博客,只需要先在本地跑一遍同步脚本,把豆瓣上最新的读书、游戏数据拉下来,生成好对应的 JSON 或页面,再一起部署出去就行了,不必依赖任何外部服务。

本来以为搞定这套自动同步之后,我会有种“把旧日记册子翻出来”的感觉,结果真正把数据同步到博客上,摆在一个清晰的时间轴之后,给我的第一反应却是:我每年看的书越来越少了。那种趋势特别直观——早些年一长串的书单,到近几年变成了零零散散的几本,甚至有的年份几乎空白。再看游戏那一栏,近 10 年几乎没有怎么玩过游戏了,几乎是一眼能看出断层的那种。

这种感受挺复杂的。一方面,我很庆幸自己当年在豆瓣上老老实实地打标签、写标记、记进度,不然这二十年的痕迹就这样丢在时间里了;另一方面,当这些数字被同步到博客里,和现在的生活摆在一起对比,我也不得不承认:自己不知不觉间,已经离那种“经常看点书、时不时玩个游戏”的状态越来越远。

但不管怎么说,把豆瓣这条线接回到 Hexo 博客,对我来说是件挺值得的事情。它不是那种需要我花很多精力维护的模块,只是安静地在那里,忠实地按照时间,把过去和现在连接起来。我不一定会因为看到这份列表就立刻恢复“高产阅读”,也不一定会因为意识到自己 10 年没怎么玩游戏就马上买几款回来补课。

不过,当我每次打开博客,看到那些年份、那些书名和游戏名的时候,心里多少会被轻轻拽一下:原来我曾经花了这么多时间在这些虚构世界里,也曾经为某一本书的某一段话停下来很久。也许,以后我会慢慢再多挤出一点时间,让这份列表不要再那么难看——哪怕只是每年多几本书,也比什么都不做好。

豆瓣的数据本身没有情绪,只是一串串记录。但当它们被我搬到博客里,和现在的生活、写下的文字并排在一起时,我确实被它提醒了:我这些年的变化,原来是可以被这么直白地看见的。