Apps › PaperFolio for Kobo
PaperFolio for Kobo
Obsidian 外挂页 ・ GitHub ・ 回报问题
把 Kobo 的画线干净地汇入 Obsidian:一本书一则笔记,依真实阅读顺序排列、用真章节名分组,而且你自己写的东西完全不会被动到。
支援用 USB 连接 Kobo 电子书阅读器、Kobo 电脑版 App(不用插线),也可以选择走区网,让 Kobo 上点一下就把画线传过来。
桌面版专用。所有资料都留在你自己的电脑:没有帐号、没有伺服器、没有任何追踪。

为什么再做一个 Kobo 外挂
多数汇入工具只是把画线倒成一长串。PaperFolio 在意的是「几个月后回头看,这份笔记还不好用」:
-
真实阅读顺序:画线依照它在书中的位置排序,不是依你画线的时间。回头补画前面的段落,不会被丢到最后面。
-
真章节名:章节来自书的目录,而不是
bodymatter_0_5.xhtml这种内部档名。商店书若在资料库里没有目录资料,会去读书本身的 EPUB 把真章节名找回来。 -
你的手写心得受保护:自动产生的内容包在哨兵区块里,重新同步只会重写那个区块,你写在区块外的总结永远不会被动。
-
同时读多个来源:连接的 Kobo 与 Kobo 电脑版 App 会在同一次同步中合并,两边画的线都会进来。
功能
-
一本书一则笔记,含 frontmatter(书名、作者、ISBN、日期)。
-
画线呈现风格:callout、引用区块、条列,三选一。
-
依章节分组;可选择显示日期与颜色标签。
-
增量更新、自动去重——重新同步不会把你的笔记洗版。
-
自动产生索引笔记,依画线数列出所有书。
-
汇入门槛:只有零星一两条画线的书可以自动略过。
-
折页为选配(只记位置——Kobo 本身没有存折页的文字)。
-
介面与笔记支援英文与繁体中文,预设跟着 Obsidian 的语言走。

三种来源
可以任意搭配,一次同步就会全部合并。
一、用 USB 连接 Kobo
把 Kobo 插上电脑、等它挂载,然后点左侧的图示,或执行命令「同步 Kobo 画线到 Obsidian」。外挂会自动侦测预设的挂载路径,你也可以自己指定 KoboReader.sqlite 的位置。
二、Kobo 电脑版 App(不用插线)
如果你在电脑上用 Kobo App 读书,那边画的线也会一起汇入。外挂会自动侦测它的本机资料库;设定留空就是自动侦测,填 off 则停用这个来源。
三、区网无线(选配,预设关闭)
韧体更新会把这套清掉。 Kobo 更新韧体时会清空
.adds/,NickelMenu 与本外挂的脚本会一起消失,同步按钮就这样不见了。重装 NickelMenu,再重新产生一次安装包即可。(2026-08-31 实测:NickelMenu v0.6.0 在韧体 4.45.23697 上可用。)插 USB 同步不受影响。
Obsidian 开着的时候,外挂可以听一个埠,让同一个 WiFi 的 Kobo 点一下就把画线推过来,完全不用线。
-
在设定里打开「无线接收(区网)」。作业系统可能会问是否允许接受连线。
-
设定页会显示你的同步位址(例如
http://192.168.1.20:8321/sync)与一组密钥。 -
在 Kobo 上用 NickelMenu 加一颗按钮,执行一个小脚本把
KoboReader.sqlite带着密钥上传到那个位址。详见kobo/INSTALL.md。
章节名会从先前的 USB 同步快取起来,所以无线同步虽然读不到 EPUB,一样保有完整的章节分组。
查过的单字(选配,预设关闭)
Kobo 可以把你用内建字典查过的字存下来。先在阅读器上打开 更多 > Beta 功能 > My Words,没开的话那份清单永远是空的。接着在这里打开 单字 > 同步查过的单字,之后每次同步都会把那些字写进 <输出资料夹>/.kobo-words.json,给生词本外挂(例如 WordFolio)汇入成生词卡。
先查字,再画线
Kobo 上只要文字被选取了就查不了字——选取会把长按接管掉。所以读书时的顺序是:长按查字 → 看完关掉 → 再把那一句画起来。
顺序之所以重要,是因为 Kobo 只存那个字,不存它出自哪一句。PaperFolio 会依这个顺序把句子找回来:
-
从你的画线找。 画线的文字存在 Kobo 的资料库里,所以加密的商店书一样有效。
-
从书档找:Kobo 插着线(或那本书在你的 Kobo 电脑版书库里),而且书本身没有 DRM。商店书通常是加密的;这个外挂不会、也不试图解开任何加密。
两边都没有的话,字一样会同步进来,只是那张卡没有例句——之后某次同步找到了会再补上。
设定
| 设定 | 说明 |
|---|---|
| 语言 | 介面与笔记语言(自动/English/繁体中文) |
| Kobo 资料库路径 | 留空=预设挂载路径 |
| Kobo Desktop 资料库路径 | 留空=自动侦测,填 off=停用 |
| 输出资料夹 | 外挂唯一会写入的资料夹 |
| 汇入门槛 | 画线数低于此值的书就略过 |
| 画线呈现风格 | Callout / 引用区块 / 条列 |
| 依章节分组、显示日期、颜色转标签、档名格式 | 排版相关 |
| 汇入折页、折页标签 | 折页(预设关闭) |
| 无线接收 | 启用、埠、密钥、同步位址 |

你的笔记会怎么被更新
自动产生的画线会包在哨兵区块里:
# 书名
你写在这里的任何东西都是你的,永远不会被修改。
<!-- KOBO:START 自动维护,勿手改此区块内文字 -->
...自动产生的画线...
<!-- KOBO:END -->
重新同步只会替换两个标记之间的内容,并更新 frontmatter 里的 last_synced。区块以外的部分,完全维持你原本写的样子。
隐私与安全
-
资料不会离开你的电脑:外挂不会对外发出任何网路请求,也没有任何遥测。没有帐号,不经过任何第三方服务。
-
绝不修改你的 Kobo:资料库只会被读进记忆体解析,外挂从不写入你的装置。
-
关于读取 vault 以外的档案:因为 Kobo 的资料库本来就存在装置上(或电脑版 App 的资料夹里),外挂需要直接读那些路径。但写入只会发生在你的 vault 里,而且只写进你指定的输出资料夹。
-
无线接收预设是关闭的:启用后它会绑定
0.0.0.0,让同一个区网的装置连得到——这是 Kobo 能一键同步的必要条件。它由一组随机产生的密钥保护(放在X-PaperFolio-Token标头),只接受POST /sync上传 SQLite 档(上限 200 MB)以及GET /ping健康检查;Obsidian 关闭或设定关掉时就会停止。 -
桌面版专用(
isDesktopOnly: true),因为读取资料库与执行选配的接收端需要用到 Node 的 API(fs、http、os、crypto)。
疑难排解
-
出现「找不到 Kobo 资料库」:确认 Kobo 已经挂载,或到设定里指定路径。
-
无线同步没收到:确认 Obsidian 开着且接收功能已启用、两台装置在同一个网路,以及 Kobo 脚本里的位址与密钥跟设定页一致。
-
IP 变了:家用路由器会换发位址,把 Kobo 脚本里的位址更新即可;或在路由器把电脑设成固定 IP 一劳永逸。
-
资料库损坏:如果 Kobo 的资料库显示损毁,通常可以用
sqlite3 坏档.sqlite ".recover" | sqlite3 救回.sqlite抢救,再把外挂的路径指向抢救出来的档案来汇入。
致谢
SQLite 解析使用 sql.js;读取 EPUB 目录使用 fflate。两者皆为 MIT 授权。
Kobo 是 Rakuten Kobo Inc. 的商标。本专案与 Rakuten Kobo Inc. 无任何从属或背书关系。
授权
MIT,见 LICENSE。