Article

Kobo 畫線如何同步到 Obsidian?用 Kobo Note Sync 建立 Markdown 閱讀筆記

Kobo 的閱讀畫線很適合沉澱成筆記,但匯出與整理流程常常斷在工具之間。這篇介紹我做的 Obsidian 插件 Kobo Note Sync:從本機 Kobo SQLite 讀取畫線與註記,轉成可自訂模板的 Markdown 筆記。

本文目錄

Kobo Note Sync

我想解決的不是一次性的「匯出」,而是 Kobo 閱讀流程與 Obsidian 筆記系統之間的斷點。

在 Kobo 上畫線並不是終點。真正重要的是,這些畫線和註記能不能進入長期筆記系統,成為之後可以回顧、整理、引用與重新連結的材料。

因此我做了 Kobo Note Sync:一個桌面版 Obsidian Community Plugin。它會讀取使用者指定的本機 Kobo SQLite 資料庫,並在 Obsidian Vault 中建立或更新 Markdown 閱讀筆記。

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

先看 Kobo Note Sync 的功能與限制

項目說明
輸入來源Kobo Desktop App 的 Kobo.sqlite,或自行複製的 KoboReader.sqlite
輸出格式Obsidian Vault 內的 Markdown 檔案
資料方向Kobo SQLite → Obsidian
同步方式單向、append-only
是否雙向同步
Kobo 端刪除的畫線不會連動刪除已匯入 Obsidian 的紀錄
輸出格式可使用 Eta.js 自訂書籍與畫線模板
本文列出的平台macOS、Windows
本文列出的介面語言English、繁體中文

這個外掛適合想把 Kobo 畫線納入 Obsidian 工作流的人,但它不是即時同步服務,也不會讓 Kobo 與 Obsidian 永遠保持完全一致。

Kobo Note Sync 解決什麼問題?

許多人的閱讀資料分散在兩個地方:

  • Kobo 裡有畫線與註記。
  • Obsidian 裡有長期筆記。
  • 兩者中間缺少穩定、可重複、可客製的處理方式。

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

Kobo Note Sync 的工作很單純:

從本機 Kobo SQLite 資料庫讀取畫線與註記,再將資料轉成 Obsidian 可以直接使用的 Markdown 筆記。

支援哪兩種 Kobo 資料來源?

目前文案列出兩種資料來源。

來源適合情境資料庫
Kobo Desktop App已經使用桌面應用程式同步 Kobo 閱讀資料Kobo.sqlite
自行複製的閱讀器資料庫想直接使用從 Kobo 閱讀器複製出的資料.kobo/KoboReader.sqlite

使用 Kobo Desktop App 資料庫

資料流程如下:

Text
UTF-8|6 Lines|
Kobo 閱讀器或 App
→ Kobo 雲端
→ Kobo Desktop App
→ Kobo.sqlite
→ Kobo Note Sync
→ Obsidian Markdown

這種方式適合本來就使用 Kobo Desktop App 同步閱讀資料的人。

使用自行複製的 KoboReader.sqlite

資料流程如下:

Text
UTF-8|4 Lines|
Kobo 閱讀器
→ 複製 .kobo/KoboReader.sqlite
→ Kobo Note Sync
→ Obsidian Markdown

這種方式需要先從閱讀器中取得 SQLite 檔案,再在外掛設定中指定其位置。

為什麼選擇讀取本機 SQLite?

閱讀資料具有高度私密性。讀了什麼、在哪裡畫線、留下哪些註記,往往比一般瀏覽紀錄更接近一個人的思考內容。

Kobo Note Sync 的設計方向是:

  • 讀取使用者指定的本機 Kobo SQLite 資料庫。
  • 將結果寫入使用者的 Obsidian Vault。
  • 不要求額外建立外部服務帳號。
  • 不透過第三方同步服務轉送閱讀內容。

這也是它被設計成桌面版外掛的原因:它需要存取電腦上的本機檔案。

以上是外掛目前的設計說明,不應直接視為獨立安全稽核或隱私保證。若閱讀資料的隱私對你很重要,正式安裝前仍建議查看專案文件與原始碼。

為什麼輸出成 Markdown?

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

對我而言,資料進入 Obsidian 的重點,是結果必須是一般 Markdown 檔案。這樣做有幾個好處:

  • Obsidian 可以直接讀取。
  • 可以使用 Git 或其他方式備份。
  • 可以交給其他支援 Markdown 的工具處理。
  • 即使未來不再使用此外掛,筆記內容仍然保留。

Kobo Note Sync 會在指定的輸出資料夾中建立或更新 Markdown。預設輸出資料夾為:

Text
UTF-8|1 Line|
Kobo Note Sync/

每本書可以對應一份筆記,內容包含書籍 metadata、畫線與註記。

模板是 Kobo Note Sync 的核心設計

每個人的 Obsidian 筆記結構都不同。

有些人需要 YAML frontmatter;有些人要讓欄位可以交給 Dataview 查詢;有些人只需要簡單的引文清單;也有人會把閱讀筆記接到書籍索引、MOC 或 RAG 工作流。

因此,Kobo Note Sync 沒有把輸出格式完全寫死,而是使用 Eta.js (https://eta.js.org/) 作為模板系統,分別設定:

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

書籍筆記模板範例

Markdown
UTF-8|10 Lines|
---
title: "<%= it.bookTitle %>"
author: "<%= it.bookAuthor %>"
publisher: "<%= it.publisher %>"
last_read: <%= it.lastRead %>
highlight_count: <%= it.highlightCount %>
source: Kobo
---

<%= it.highlights %>

畫線模板範例

Markdown
UTF-8|7 Lines|
*<%= it.dateCreated %>*<% if (it.chapter) { %> | <%= it.chapter %><% } %>

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

透過模板,Kobo 畫線可以直接融入既有的 Obsidian 結構,不必遷就外掛預設的單一格式。

可以使用哪些 metadata?

目前文案列出 23 個書籍變數與 5 個畫線變數。

書籍層級資料包括:

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

畫線層級資料包括:

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

這些欄位可以放進 frontmatter,作為搜尋、篩選、閱讀回顧或其他個人知識管理流程的入口。

例如,可以把閱讀狀態、最後閱讀日期與畫線數量寫入 frontmatter,再透過 Obsidian 查詢工具整理書籍清單。

變數是否有值,仍可能受到書籍內容與 Kobo 資料庫實際紀錄影響。正式建立模板前,建議先查看目前版本的完整變數文件。

為什麼採用 append-only sync?

Kobo Note Sync 採用 append-only 的同步思路:

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

這是刻意的設計選擇。

對閱讀筆記而言,我更重視不要意外失去已經進入筆記系統的內容。Kobo 裡的畫線可能因重新同步、裝置狀態、書籍版本或操作而變動;但一旦成為 Obsidian 裡的筆記材料,就不應被來源端的刪除動作自動移除。

因此,Kobo Note Sync:

  • 是單向資料管線。
  • 不是 Kobo 與 Obsidian 的雙向同步。
  • 不以兩端完全一致為目標。
  • 不會因 Kobo 端刪除畫線,就移除 Obsidian 中既有的匯入紀錄。

如何使用 Kobo Note Sync?

第一次在正式 Vault 使用前,建議先備份 Obsidian Vault 與 Kobo SQLite,並以測試資料夾或測試 Vault 確認輸出結果。

基本流程如下:

  1. 安裝 Kobo Note Sync。
  2. 在外掛設定中選擇同步來源。
  3. 確認 Kobo SQLite database path。
  4. 設定 Markdown 輸出資料夾。
  5. 設定書籍與畫線模板。
  6. 從 Command Palette 執行 Kobo Note Sync,或點擊左側工具列的書本圖示。
  7. 檢查產生的 Markdown、metadata 與畫線內容是否符合預期。

Kobo Desktop App 的預設資料庫路徑

macOS:

Text
UTF-8|1 Line|
~/Library/Application Support/Kobo/Kobo Desktop Edition/Kobo.sqlite

Windows:

Text
UTF-8|1 Line|
%LOCALAPPDATA%\Kobo\Kobo Desktop Edition\Kobo.sqlite

如果使用自行複製的資料庫,也可以指定 KoboReader.sqlite 的位置。

在 macOS 或 Windows 的自訂 SQLite 模式下,文案所述版本也提供 Detect Kobo reader,用來嘗試偵測已連接電腦的 Kobo 閱讀器資料庫路徑。

若預設路徑或自動偵測沒有成功,請以目前版本文件及實際安裝環境為準。

支援的平台與語言

本文目前列出的平台為:

  • macOS
  • Windows

介面語言為:

  • English
  • 繁體中文

外掛會跟隨 Obsidian 的語言設定。其他作業系統或語言是否支援,請查看目前版本文件,不要只依本文推定。

Kobo Note Sync 適合誰?

它比較適合:

  • 使用 Kobo 閱讀,也使用 Obsidian 做長期筆記的人。
  • 想把 Kobo 畫線與註記轉成 Markdown 的人。
  • 不想依賴第三方閱讀筆記同步服務的人。
  • 想使用自己的模板安排閱讀筆記結構的人。
  • 想將書籍 metadata 接到 Dataview、閱讀回顧或其他 PKM 工作流的人。

它可能不適合:

  • 只偶爾需要複製幾條畫線,手動整理已經足夠的人。
  • 需要 Kobo 與 Obsidian 即時雙向同步的人。
  • 希望在 Kobo 端刪除內容時,Obsidian 也自動刪除的人。
  • 不希望外掛讀取本機 Kobo SQLite 或寫入 Vault 的人。
  • 只使用行動版 Obsidian、沒有桌面環境的人。

如果閱讀與筆記是一個長期流程,同步工具的價值不只是省下幾分鐘,而是讓閱讀材料能穩定進入後續整理系統。

接下來預計改善的方向

目前外掛已能完成文中所述的基本匯入流程,後續預計持續改善:

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

其中最值得補強的是模板範例。對我而言,真正讓這個工具變得好用的,不只是「可以匯入」,而是匯入後的 Markdown 能否自然融入原本的筆記系統。

結語

Kobo Note Sync 不是要建立另一個封閉的閱讀資料庫,而是補上 Kobo 與 Obsidian 之間的流程斷點:

Text
UTF-8|3 Lines|
Kobo 畫線與註記
→ 本機 SQLite
→ Obsidian Markdown

如果你同時使用 Kobo 與 Obsidian,可以從以下入口查看安裝資訊、版本文件與原始碼: