Apple Notes Liberator:把 Apple Notes 里的笔记搬出来

文章目录

Apple Notes Liberator:把 Apple Notes 里的笔记搬出来

Apple Notes Liberator 在 GitHub 上已经拿到 1,017 Star 了。

这个项目就做一件事,把你锁在 Notes.app 里的笔记数据导出来,变成能编辑、能迁移的 Markdown 和 JSON。

1、为什么要做这个工具

苹果的 Notes.app 用起来顺手,但数据被锁在系统沙盒里,导出走官方路径很麻烦。普通用户想换 Notion、Obsidian 之类笔记软件的时候,迁移这一关就卡住了。

作者做这个工具的动机很直接,一是解决自己拿数据的需求,二是借这个项目熟悉 Quarkus 框架。

底层解析工作站在 threeplanetssoftware 的 apple_cloud_notes_parser 肩膀上做的,protobuf 定义和 Notes 数据结构的资料都来自那个项目。

2、它能做什么

程序运行起来之后会去找本机的 Notes 数据库,复制一份过来再解析,不会动你原始的数据库。如果路径找不到,会提示你用 -f 参数手动指定 sqlite 文件位置。

输出方向有两个,JSON 和 Markdown,至少要指定一个,不然程序只打印帮助信息就退出。

跑完之后会在当前目录生成一个 liberated-notes 文件夹,里面包括:

  • notes.json:所有笔记的 JSON 表达
  • markdown/:每条笔记一个 md 文件
  • 内嵌文件副本:从笔记数据里抽出来的图片、附件
  • notes.sqlite:原始 sqlite 数据库的拷贝

3、怎么用

最顺手的安装方式是 JBang。装好 JBang 之后一行命令搞定:

复制代码
jbang app install apple-notes-liberator@hamburgchimps

第一次跑会让你选择信任源,选 2 就行,以后自动跑最新版本。装完之后 apple-notes-liberator --help 看用法。

不用 JBang 也可以。有 Nix 的话进 nix-shell 拿一个隔离的 Java 19 环境。再不行就直接从 releases 页面下 jar 包,本地有 Java 就能 java -jar apple-notes-liberator.jar 跑起来。

4、几个使用细节

macOS 10.13 之后 Notes 数据库被沙盒保护起来,第三方终端比如 iTerm 要去「隐私与安全性 → 完全磁盘访问权限」里勾上,不然会报读不到的错误。

调试的时候可以开日志:

复制代码
QUARKUS_PROFILE=debug apple-notes-liberator

或者在 jar 模式下加 JVM 参数 -Dquarkus.profile=debug,跑完会在 liberated-notes 目录里留下 apple-notes-liberator.log

JSON 输出里每条笔记有 titlefoldertextembeddedObjectslinks 五个字段。嵌入式对象分 TABLEFILE 两种,TABLE 直接给出二维数组结构,FILE 给出文件名,对应的文件能在输出目录里找到。

5、适合哪些人

  • 想从 Apple Notes 迁出去换其他笔记软件的人
  • 需要把笔记数据接进 RAG 流程做向量化的开发者
  • 想给自己做笔记备份和归档的 Mac 用户

项目本身只读不写,原始数据库安全,可以放心跑。

AG 流程做向量化的开发者

  • 想给自己做笔记备份和归档的 Mac 用户

项目本身只读不写,原始数据库安全,可以放心跑。

相关推荐
老当益壮梁奶奶5 小时前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习
sunoo-2295 小时前
C 语言文件 IO 全攻略:从基础函数到实战踩坑(BMP 读取 + 词典查询)
linux·c语言·前端·笔记·vscode·学习
蒸蒸yyyyzwd5 小时前
cpp选手秋招学习笔记 day12
笔记·学习·oracle
Wang's Blog5 小时前
PostgreSQL笔记38:慢查询定位与优化的系统方法论
数据库·笔记·postgresql
XiaQ09196 小时前
Linux 常用命令学习笔记(用户管理篇):用户、组与权限的钥匙
linux·开发语言·笔记·学习
lxx05056 小时前
(有图)乐町和普通快时尚,差别不在表面
其他
He BianGu6 小时前
【笔记】使用Assembly.LoadFrom和AssemblyLoadContext加载插件对比,以及有没有更合适的加载插件方案
笔记
hhwyqwqhhwy6 小时前
正点原子-ZYNQ7020 开发笔记
笔记
LuminousCPP6 小时前
栈和队列专题(四):LeetCode 232. 用栈实现队列|双栈分工 + 按需迁移 + 摊还 O(1)
c语言·数据结构·笔记·算法·leetcode
GGMM7896 小时前
富士 EP‑3957E‑C4 电源驱动板维修实战笔记
笔记·变频器·变频器维修