把 Kobo 畫線同步到 Obsidian:我做了一個 Kobo Note Sync 插件

·koboobsidian個人知識管理
AI 摘要
AI · GEN

我做了一個 Obsidian 插件 **Kobo Note Sync**,用來把 Kobo 電子書裡的畫線與註記匯入 Obsidian。它讀取本機的 Kobo SQLite 資料庫,不把閱讀資料送到外部服務;匯入結果是 Markdown,並且可以用 Eta.js 自訂每本書與每條畫線的輸出模板。

我想解決的不是「匯出」,而是閱讀流程的斷點

我用 Kobo 閱讀時,畫線本身不是終點。

真正重要的是:那些畫線之後能不能進入我的筆記系統,變成可以回顧、整理、引用、重新連結的材料。

但閱讀器和筆記系統之間常常有一個斷點:

  • Kobo 裡有畫線與註記
  • Obsidian 裡有我的長期筆記
  • 中間缺少一個穩定、可重複、可客製的同步方式

如果每次都要手動複製、整理格式、補 metadata,最後很容易變成「有畫線,但沒有真正進入知識系統」。

所以我做了 Kobo Note Sync:一個把 Kobo highlights / annotations 匯入 Obsidian 的桌面插件。

Obsidian Community:https://community.obsidian.md/plugins/kobo-note-sync

GitHub:https://github.com/KennKyou/obsidian-kobo-note-sync

這個插件做什麼

Kobo Note Sync 是一個 Obsidian community plugin,功能很單純:

從 Kobo 的本機 SQLite 資料庫讀取畫線與註記,然後在 Obsidian Vault 裡產生 Markdown 筆記。

目前支援兩種來源:

  1. Kobo Desktop App 的 Kobo.sqlite
    • 適合已經用 Kobo Desktop App 同步雲端閱讀資料的人。
  2. 自行複製的 Kobo SQLite 檔案
    • 例如從閱讀器裡複製出 .kobo/KoboReader.sqlite

大致流程像這樣:

Kobo 閱讀器 / App
→ Kobo 雲端
→ Kobo Desktop App
→ Kobo.sqlite
→ Kobo Note Sync
→ Obsidian Markdown 筆記

或是:

Kobo 閱讀器
→ 複製 KoboReader.sqlite
→ Kobo Note Sync
→ Obsidian Markdown 筆記

為什麼選擇讀本機 SQLite

我希望這個工具的資料流越單純越好。

閱讀資料其實很私密。你讀了什麼、在哪裡畫線、留下什麼註記,往往比一般瀏覽紀錄更能反映你的思考狀態。

所以這個插件的設計原則是:

  • 只讀取你指定的本機 Kobo SQLite 資料庫
  • 只寫入你的 Obsidian Vault
  • 不需要外部帳號
  • 不把閱讀資料送到任何外部伺服器

這也是為什麼它是 desktop-only plugin。它需要讀取本機檔案,而不是透過某個雲端 API 中轉。

匯入結果要是 Markdown,而不是另一個封閉資料庫

我不想把 Kobo 的畫線搬到另一個封閉系統裡。

對我來說,進入 Obsidian 的重點是:結果要是普通 Markdown。

Markdown 的好處是:

  • 可以被 Obsidian 直接讀取
  • 可以被 Git 備份
  • 可以被其他工具處理
  • 未來不依賴這個插件,也還能保留筆記內容

所以 Kobo Note Sync 匯入後,會在設定的輸出資料夾裡建立或更新 Markdown 檔案。預設資料夾是:

Kobo Note Sync/

每本書可以是一份筆記,裡面包含該書的 metadata 與畫線內容。

模板是這個插件最重要的設計

每個人的筆記系統長得不一樣。

有些人想要 YAML frontmatter;有些人想要 Dataview-friendly fields;有些人只想要簡單的 quote list;也有人會把閱讀筆記接到自己的 MOC、書籍資料庫或 RAG workflow。

所以我不想把輸出格式寫死。

Kobo Note Sync 使用 Eta.js 作為模板系統,可以分開設定:

  • 每本書的筆記模板
  • 每條畫線的模板

例如筆記模板可以長這樣:

---
title: "<%= it.bookTitle %>"
author: "<%= it.bookAuthor %>"
publisher: "<%= it.publisher %>"
last_read: <%= it.lastRead %>
highlight_count: <%= it.highlightCount %>
source: Kobo
---
<%= it.highlights %>

畫線模板可以長這樣:

*<%= it.dateCreated %>*<% if (it.chapter) { %> | <%= it.chapter %><% } %>
> <%= it.highlightText %>
<% if (it.annotation) { %>
**Note:** <%= it.annotation %>
<% } %>
---

這樣我可以讓 Kobo 畫線融入自己的 Obsidian 結構,而不是被插件限制格式。

metadata 不是裝飾,是之後整理的入口

除了畫線文字本身,我也希望同步時保留足夠的 metadata。

Kobo Note Sync 目前提供:

  • 23 個書籍變數
  • 5 個畫線變數

書籍層級包含:

  • 書名
  • 作者
  • 出版社
  • ISBN
  • 系列名稱與編號
  • 語言
  • 書籍描述
  • 閱讀進度
  • 閱讀狀態
  • 頁數、字數
  • 加入日期、最後閱讀日期、完成日期
  • 畫線數量

畫線層級包含:

  • 畫線原文
  • 註記內容
  • 畫線日期
  • 章節名稱
  • 章節內進度

這些欄位讓閱讀筆記之後可以被整理、搜尋、篩選,也可以接到自己的 PKM workflow。

例如我可以把一本書的閱讀狀態、最後閱讀日期、畫線數量放進 frontmatter,再用 Obsidian 的查詢或其他工具整理。

採用 append-only sync 的原因

Kobo Note Sync 採用 append-only sync 的思路。

也就是說:

即使某條畫線之後在 Kobo 上被刪除,Obsidian 裡已經匯入的紀錄仍會保留。

這是刻意的。

對閱讀筆記來說,我比較在意的是「不要不小心失去已經沉澱過的內容」。

Kobo 裡的畫線可能會因為重新同步、裝置狀態、書籍版本或操作習慣而變動;但一旦進入 Obsidian,它就變成我的筆記材料,不應該被外部狀態輕易刪掉。

所以這個插件不是做雙向同步,也不是試圖讓 Kobo 和 Obsidian 永遠完全一致。

它更像是一條單向管線:

閱讀器裡的材料 → 筆記系統裡的材料

使用方式

目前使用方式大致是:

  1. 安裝插件
  2. 在設定中選擇同步來源
  3. 確認 Kobo SQLite database path
  4. 設定輸出資料夾與模板
  5. 從 Command Palette 執行 Kobo Note Sync
  6. 或點擊左側工具列的書本圖示同步

如果使用 Kobo Desktop App,macOS 預設資料庫路徑會是:

~/Library/Application Support/Kobo/Kobo Desktop Edition/Kobo.sqlite

Windows 則是:

%LOCALAPPDATA%\Kobo\Kobo Desktop Edition\Kobo.sqlite

如果使用自訂 SQLite 檔案,也可以指定自己複製出來的 KoboReader.sqlite

在 macOS 或 Windows 的自訂 SQLite 模式下,插件也提供 Detect Kobo reader,可以嘗試自動偵測連接到電腦的 Kobo 閱讀器資料庫路徑。

目前支援的平台與語言

目前支援:

  • macOS
  • Windows

語言支援:

  • English
  • 繁體中文

插件會跟隨 Obsidian 的語言設定。

這個工具適合誰

我覺得它適合幾種人:

  • 用 Kobo 閱讀,也用 Obsidian 做長期筆記的人
  • 想把閱讀畫線變成 Markdown 資料的人
  • 不想把閱讀資料交給第三方同步服務的人
  • 想用自己的模板整理閱讀筆記的人
  • 想把書籍 metadata 接到 Dataview / PKM / RAG workflow 的人

如果你只是偶爾匯出幾條畫線,手動整理可能也夠。

但如果閱讀和筆記是長期流程,那同步工具的重點就不是省幾分鐘,而是讓資料能穩定進入系統。

我接下來可能會改善的地方

這個插件目前已經能完成基本同步,但我覺得還有一些可以繼續打磨的方向:

  • 更完整的安裝與使用教學
  • 更多模板範例
  • 對不同 Kobo 資料庫版本的相容性說明
  • 更清楚的同步結果提示
  • 更方便的 release / community plugin 安裝流程
  • 更多和 Obsidian 工作流整合的範例,例如 Dataview、書籍索引、閱讀回顧

尤其是模板範例,我覺得很值得補。因為真正讓這個工具變好用的,不只是「可以同步」,而是同步後的 Markdown 能不能自然融入自己的筆記系統。

結語

Kobo Note Sync 對我來說不是一個大型工具,而是一個把閱讀流程接起來的小插件。

它做的事情很明確:

Kobo 的畫線與註記 → 本機 SQLite → Obsidian Markdown

我希望閱讀時留下的片段,不只停在閱讀器裡,而是能進入我真正會整理、搜尋、回顧和重新使用的地方。

如果你也使用 Kobo + Obsidian,可以在 Obsidian Community 或 GitHub 查看:

https://community.obsidian.md/plugins/kobo-note-sync

https://github.com/KennKyou/obsidian-kobo-note-sync

覺得這篇文章有幫助嗎?可以分享給朋友。

留言

登入後即可留言

以 Google 登入

還沒有留言,成為第一個留言的人吧!

相關文章

如何在 Kobo 電子書閱讀器安裝自訂字型

身為 Kobo 使用者,一定要學會的自訂字型小技巧!內建字型看膩了?跟著這份筆記,把帶有手寫筆觸的「芫荽」字型裝進閱讀器裡。簡單、免費且不傷效能,讓你的每一本電子書都像精心排版過的實體書一樣順眼。

2023年2月20日·Kobo

如何自訂 Kobo 電子書閱讀器的待機畫面

告別單調的預設書封!只要簡單幾步驟,就能把喜歡的圖片變成 Kobo 閱讀器的待機桌布。本文提供各機型解析度對照表與 Mac/Windows 顯示隱藏資料夾教學,讓你每次合上閱讀器都能看到最愛的風景。

2023年2月19日·Kobo

AI 時代的個人知識庫:Obsidian、RAG 與 Agent 該怎麼分工?

Obsidian、RAG 與 AI Agent 常被放在一起討論,但它們其實負責不同任務。本文從個人知識管理的角度,拆解 Obsidian 如何保存筆記、RAG 如何檢索資料、Agent 如何把內容轉成可執行的工作流。

2026年5月1日·Obsidian

用 LQIP 讓圖片載入不再跳來跳去

用 LQIP 技術搭配三層圖片載入策略,讓照片牆從進場到開啟大圖的每個階段都不會出現空白或版面跳動。

2026年4月6日·Programming

把模糊想法變成可執行工作:我的 Supekku Workflow 設計

AI Agent 協作的問題不只是 prompt,而是脈絡如何被保存。Supekku Workflow 是我用來把模糊想法整理成可執行工作的方式:先透過對話釐清意圖、範圍與成功標準,再把需要保存的內容轉成 proposal、criteria、reasoning、actions 與 verification。

2026年5月28日·AI