最近把几个旧笔记软件里的内容整理到了 Obsidian ,包括 Evernote 国际版、印象笔记中国区、Joplin 、Synology Note Station 和 OneNote 。
一开始也试过直接导入,但后来发现,如果只是少量文字笔记,问题不大;如果有很多图片、附件、时间戳,还有不同软件之间的重复内容,直接用导入插件会比较麻烦。
最后我采用的思路是:
先尽量拿到信息最完整的原始格式,再用对应的工具转成 Markdown ,最后让 Codex 帮我做批量整理和检查。
没有直接用 Obsidian Importer ,主要是因为它在复杂迁移里不够灵活。尤其是图片路径、附件、时间戳、查重这些,后面还是要自己处理。
Evernote 国际版
Evernote 国际版相对简单,直接导出 ENEX 。
ENEX 这个格式能比较完整地保留笔记正文、图片、附件和时间信息。导出之后,我用 Yarle 转成 Markdown 和资源文件,再交给 Codex 继续处理。
大概流程是:
Evernote → ENEX → Yarle → Markdown + resources → Codex → Obsidian
印象笔记中国区
印象笔记中国区麻烦一点,客户端不能方便地直接导出 ENEX 。
我最后是用 evernote-backup 项目直接抓取并导出成 ENEX 。
拿到 ENEX 之后,后面的流程就和 Evernote 国际版一样了:
印象笔记中国区 → evernote-backup → ENEX → Yarle → Markdown + resources → Codex → Obsidian
这里的关键是先拿到 ENEX 。只要这一步完成,后面就比较可控。
Joplin
Joplin 我没有走导出文件。
因为 Joplin 的本地数据本来就比较清楚:笔记在数据库里,附件在 resources 文件夹里。Codex 可以直接读取本地数据库和资源目录,然后生成 Obsidian 可以用的 Markdown 。
流程大概是:
Joplin 本地数据库 + resources → Codex → Markdown + assets → Obsidian
这样可以保留笔记正文、附件、创建时间、更新时间、笔记本等信息,也省掉了中间导出再转换的一步。
Synology Note Station
Synology Note Station 我用的是 .nsx 导出。
导出之后,用 jimmy 项目在 Windows 环境下转换成 Markdown 和资源文件。然后再用 Codex 做后续整理。
流程是:
Note Station → NSX → jimmy → Markdown + resources → Codex → Obsidian
这个方案能把正文和图片转出来,但缺点也比较明显:jimmy 转换后通常不能完整保留笔记属性,比如创建时间、更新时间这些。所以这部分如果很在意时间信息,后面还要额外处理。
OneNote
OneNote 这块我没找到特别顺手的现成工具。
最后自己做了一个项目,放在 GitHub 上:
intelKANG/onenote-to-obsidian
思路是用微软官方的 Graph Command Line Tools ,抓取已经同步到 OneNote 网页版的笔记,再转换成 Obsidian 可以使用的 Markdown 和资源文件。
流程大概是:
OneNote 网页版 → Microsoft Graph CLI → onenote-to-obsidian → Markdown + resources → Obsidian
这个方式的前提是笔记已经同步到 OneNote 网页版。
我没有直接处理本地 OneNote 文件,而是通过官方 Graph 接口读取数据,这样路径更清楚,也更适合做自动化转换。
Codex 在里面做了什么
这次迁移里,Codex 主要不是用来“生成内容”,而是处理一堆手动很烦的事情。
比如:
- 检查图片和附件有没有断
- 批量修正资源路径
- 把不同来源的重复笔记找出来
- 根据正文和附件数量判断是不是重复
- 保留时间戳和附件更完整的版本
- 按目录重新整理
- 把笔记里的创建时间写回文件属性
这些事情单个看都不难,但几百篇笔记一起处理,手动做会很累,也很容易漏。
最后的想法
如果只是几十篇纯文字笔记,直接用 Obsidian Importer 可能就够了。
但如果是很多年积累下来的图文笔记,尤其是涉及多个软件来源,我觉得更稳的方式是:
先拿到最完整的原始数据
再用专门工具转换
最后批量检查和整理
Obsidian 的好处是,最后留下来的都是普通文件。
只要 Markdown 、图片、附件和时间信息处理好了,以后就不太受具体软件限制了。