[随笔] PKM 的通用格式

本文同步自「我的 Memos - 随笔」,你也可访问 x.singee.me 查看我的全部碎碎念

突然在想,现在的 PKM 都选择用类似 Markdown 的格式存储数据,然后标榜自己「使用通用格式,不会被锁定平台」是不是跑偏了?越来越觉得这种存储更多的只是一种营销术语。

使用 Markdown 意味着你需要向这种格式妥协。因此很多功能难以很完美的实现。例如 Notion / RoamResearch / Tana 这种基于 Block 的工具,很容易可以为 Block 添加元信息 —— 从修改时间到自定义属性,十分容易完成。然而,选择使用 Markdown 就意味着各种元信息存储时要向 Markdown 的可读性妥协,logseq 单单一个页面时间信息两年过去了依然不稳定。

那这些软件真的是真正的 Markdown 吗?并不。所有软件想要实现一定的特色功能都不得不考虑「元数据」的存在 —— 因此,虽然这种软件本身是 Markdown,但都重新发明了 Markdown。

那,在这种魔改的 Markdown 前,用户真的不被平台锁定吗?就以 Obsidian 和 Logseq 为例,二者都是 Markdown,但是想要无缝转移十分的困难。从文件名开始,到文件内容的自定义格式,都需要去了解两方的自定义规则,并且这些往往都是 undocumented 的,必须去深入阅读源码才能写出一个完美的转换(同时,解析 Markdown 特别是魔改过的 Markdown 难度相比于解析结构化数据是大大提升的)。

反而,虽然 Roam Research 是私有格式,但是本质上可以导出一个 json —— 并且 json 格式的含义往往非常「易猜」,很容易就可以写出一个它到其他平台的转换程序,当年我从 Roam 切换到其他笔记软件的流程十分丝滑 —— 笔记软件本身没有提供转换的我也很容易就可以写出一个来。同理,Notion 虽然没有一个全局的导出,但是其提供了完整的 API 可以获取结构化的数据,迁移成本(至少对我而言)要远远小于在两个所谓支持 Markdown 的软件之间进行交换的。

或许对于笔记软件而言,数据库 + 导出才是正道;非得要基于文件系统、非得要基于所谓通用文件格式,反而是一种没必要的限制。