如何提取Kindle上的批注并保存为笔记
2023 年 11 月 2 日

如果你像我一样喜欢在Kindle上阅读书籍,你可能想知道如何以有组织的方式提取你的批注,并将它们保存为笔记。至少我是这样想的。你看,我使用Notion作为我的主要笔记/生产力管理应用程序,我已经建立了一个包含我迄今为止阅读过的所有书籍以及我计划阅读的书籍的数据库。

我的Notion图书数据库

由于Notion数据库中的每个图书条目都是一个单独的页面,所以我想为它们填充我在Kindle上阅读时所做的批注。唯一的问题是Kindle将所有的批注存储在一个文本文件(My Clippings.txt)中,正如你所看到的,其中包含大量无用的信息,例如: 我的 Clippings.txt

所以,我需要找到一种方法来过滤出这些亮点,按书名分组,并将它们发送到我的 Notion 书籍数据库中。不仅如此,所有这些都应该在最小人力投入的情况下自动完成。

所以,在过去的两个周末里,我花了大部分时间编码,现在我终于准备好一个应用程序,可以让读者无缝地将所有亮点转移到 Notion 中。让我们来看看...

🔖 Kindle to Notion GitHub 存储库 #

📚 我的 Notion 书籍数据库 #

🤖 Node 环境 #

您需要本地安装一个稳定版本的 Node JS 来运行此应用程序。我已经在 Node 版本 16 和 14 上进行了测试,并且在这两个版本上都运行良好。所以,在继续下一步之前,请确保您安装了一个稳定版本的 Node。我不会在本文中解释环境设置,因为安装过程可能因不同的操作系统而有所不同。 ## ⚙️ 设置

按照以下步骤在本地系统上设置Kindle到Notion应用。

  • 将我的图书数据库模板 (opens new window)复制到你的Notion仪表盘上。该应用程序需要数据库中存在一些字段(标题作者书名),以便高亮同步能正常工作。所以,你可以创建自己的具有这些字段的数据库,或者只需复制我提供的模板即可。
  • GitHub存储库 (opens new window)克隆到你的本地系统并安装依赖项。
git clone https://github.com/arkalim/kindle-to-notion.git
cd kindle-to-notion
npm install
  • 通过删除以下示例中的“.example”扩展名来重命名这些文件或文件夹。我的本地存储库中的原始文件/文件夹包含的数据可能是敏感或特殊的。 以下是转化后的中文Markdown,标题已删除,同时删除了其中的图片链接,并尽量消除了Markdown格式错误和一些无用的段落,对整篇文章进行了修饰,使其读起来更加自然:

  • Notion集成 (opens new window)页面获取你的Notion API密钥,并创建一个新的内部集成。集成允许我们使用一个名为**Notion API密钥(内部集成令牌)**来访问我们的Notion工作区的一部分。

  • 进入你的Notion仪表板。导航到“Books”数据库。点击右上角的“分享”并邀请刚刚创建的集成。这将允许集成使用我们在上一步中获取的Notion API密钥来编辑Books数据库。

  • 复制Notion Books数据库的链接,并提取如下所示的数据库ID。数据库ID就是最后一个“/”和“?”之间的一串无意义的字符。这是应用程序执行特定于我的亮点所需的信息。 在这个数据库上进行 CRUD 操作。

原文链接:https://www.notion.so/arkalim/346be84507ff482b80fceb4024deadc2?v=e868075eaf5749bc941e617e651295fb数据库 ID:346be84507ff482b80fceb4024deadc2
  • 现在,您已经有了Notion API 密钥数据库 ID。现在,在 .env 文件中填写这些变量。将这些敏感信息存储在 .env 中,可以确保在将本地仓库提交到 GitHub 时不会暴露给世界其他人,因为已经在 .gitignore 中配置了忽略 .env 文件。
NOTION_API_KEY=您的 Notion API 密钥
BOOK_DB_ID=您的图书数据库 ID
  • 将您的 Kindle 连接到计算机。导航到 Kindledocuments,并复制 My Clippings.txt。将您的 My Clippings.txt 文件替换 resources 文件夹中的文件。

🔁 同步亮点 #

最后,我们来到设置部分的结束。您现在可以将 Kindle 上的亮点同步到 Notion 上了。在本地仓库的终端中运行以下命令。 观看您的亮点瞬间!

npm start

❗️对于技术爱好者 #

  • Kindle上的每个亮点都会附加在My Clippings.txt的末尾。应用程序在解析和过滤这个文本文件时广泛使用正则表达式
  • cache是一个包含本地缓存的文件夹,以防止应用程序重新同步旧的亮点。data是一个包含API响应日志的文件夹。.env是一个包含环境变量(如Notion API密钥数据库ID)的文件。
  • Book Name被用作Notion数据库中的主键,以便于upsert操作。Book Name对应于My Clippings.txt中书籍的标题。因此,这个字段应该保持不变。然而,其他字段如TitleAuthorDate StartedDate FinishedStatusGenre可以根据您的需求进行修改。
  • 应用程序在cache文件夹中的sync.json文件中维护一个本地缓存,该JSON文件会定期更新。 每次同步结束时,如果没有新的亮点,应用程序将防止重新同步旧的亮点。如果您希望重新同步每本书,需要清空sync.json中的数组,并删除您的Notion数据库中的所有亮点,然后再运行同步。

对于Notion API调用的响应被导出到data文件夹中以.json扩展名的文件中。这样做是为了解决在控制台(终端)中有效记录JSON对象的问题。

就是这样了! #

如果你一直读到这里,向你致敬!在本文中,我们学习了如何在本地系统上设置Kindle to Notion应用程序,并使用它将Kindle的亮点同步到Notion Books数据库。如果您希望我撰写更详细的文章来解释此应用程序的内部工作原理,请在下方留言。我定期撰写文章,所以您应该考虑关注我以获取更多类似的文章。非常感谢! 如果你喜欢这篇文章,你可能会喜欢以下内容:

访问我的网站了解更多关于我和我的工作的信息: