2023 年,再试一试使用 Notion 随时随地写博客

· Tech

IMAGE

两年前写过一篇博文,讨论如何将 Notion 上的文章转换成 Markdown,并部署到自己的博客上。当时使用的是非官方的 Notion API,需要经常更新 token 才能获取数据,不稳定也不够自动化。发完那篇文章不久,我的 token 就挂了,自此再也没管它,也再没有发过文章。后来,Notion 发布了官方的 API,最近终于抽空玩了玩。登上了一年半未曾登录的 VPS,写一写这个两年没有更新的博客,顺便捡起阔别六年的 JavaScript。

Notion API 本身是可以通过 HTTP 协议直接调用的,没有语言的限制。与此同时,Notion 也发布了一个基于 Node.js 的 SDK,相当于给 API 套了一层壳,可以简化一些调用。我当时脑子没转过来这个弯,误以为一定要用 Node 才能调用 API,于是选择了 JavaScript 作为开发语言,而不是我更熟悉的 Python。对于这个决定我不后悔,因为学一学 JavaScript 不是坏事,无非多踩点坑(JS 坑之多可谓臭名昭著),开发速度慢一些。但另一方面,这也说明了不写需求文档的坏处🙃。

通过 API 拿到数据后,下一步是把文章转换成 Markdown。其中比较复杂的是嵌套列表的转换,需要递归调用一些函数。我觉得这比我在工作中写的业务逻辑都复杂,可以当作一个不错的算法面试题。

其余部分没有什么难度,主要时间都花在 debug 上。这个过程中,ChatGPT 多次解答了我的疑问,从 Node 里的常见函数调用,到复杂一些的 Promise 概念,再到帮我逐步分析解决了一个我毫无头绪的 bug - 这是 ChatGPT 横空出世半年来,我第一次高密度地与它互动,切身感受到了它的便捷。

现在,这段两百行的小程序基本已经开发完成,正作为一个 cron job 定期运行,自动发布 Notion 上新增的文章。它的代码在 GitHub 上。对了,这也是我时隔多年后再次使用 GitHub。

从上周五到现在,我每天晚上都花几个小时,投入在这上面。我的业余时间变得久违地快乐、激动和充实。鬼鬼有点困惑不解:为什么我这个一年写不了两篇文章的博客,会值得投入这么多时间精力,手动发布不也挺简单的吗?

我也说不准。或许首先,这个网站寄托着我的一部分精神和历史,像是我的一个「魂器」。我很珍惜它。个人网站是开放互联网最后的几颗遗珠。在这里,我尚有一些掌控权和自由度。任何人都能无门槛访问它,但又只能主动来访。它不需要注册登录,但也永远不会自动出现在时间线推送里。这种特质让我觉得安全又不孤独。因为珍惜,我愿意付出十分的努力,多打磨出一分的改进。

另一方面,我单纯喜欢写代码,喜欢用代码作为工具发明创造,尤其是在写代码时间不多的今天。

最后,我也是真的希望,可以随时随地写博客。