Article

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

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

本文目錄
Kobo Note Sync

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

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

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

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

  • Kobo 裡有畫線與註記
  • Obsidian 裡有我的長期筆記
  • 中間缺少一個穩定、可重複、可客製的同步方式
  • 如果每次都要手動複製、整理格式、補 metadata,最後很容易變成「有畫線,但沒有真正進入知識系統」。

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

Obsidian Community:https://community.obsidian.md/plugins/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。)

大致流程像這樣:

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

或是:

Text
UTF-8|4 Lines|
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 作為模板系統,可以分開設定:

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

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

Text
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 %>

畫線模板可以長這樣:

Text
UTF-8|7 Lines|
*<%= 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