身為一個電子書愛好者,日常最療癒的事情之一就是整理自己的數位書架。而在同步與整理書籍時,「元資料(Metadata)」(包含書名、作者、出版社、簡介與精美封面)就像是書籍的靈魂。如果元資料不完整,書架看起來就會雜亂無章,搜尋與閱讀體驗也會大打折扣。
過去,我一直都有在使用 Kobo-Metadata 相關的工具來幫我自動抓取 Kobo 商店上的書籍資訊。然而,隨著藏書越來越多,在使用過程中,我漸漸遇到了一些讓人抓狂的痛點。
🔍 發現問題:原版工具對「中文與 CJK 環境」的遺憾
相信很多閱讀中文電子書、習慣整理書架的朋友都有類似的經驗。原本的工具在處理純英文書籍時可能表現尚可,號稱支援多個 Kobo 伺服器與地區商店選擇,但實際用下來,針對中文和日文的臺灣商店與日本商店,支援度幾乎可以說是「名存實亡」。
具體來說,在使用原版工具時,我遇到了以下幾個硬傷:
- 臺灣 Kobo 商店支援極差,欄位嚴重缺失:原版在臺灣商店的表現令人頭痛,不僅搜尋時極度容易抓錯書,更慘的是它完全不會抓取關鍵的 ISBN、出版日期、出版商 等硬核資訊。抓完之後,書籍的後台依舊是一片空白。
- 多作者並列導致媒介混淆,「小說與漫畫」頻繁抓錯棚:網路上流通、自己轉檔或手打的書籍,特別是當作品同時存在「輕小說」與「同名改編漫畫」時,內文或檔名往往會包含多個作者(例如小說的「著者 + 插畫」,或是漫畫的「原作 + 作畫」)。原版工具遇到這種多作者並列的情況極易錯亂,常常明明是漫畫卻抓到小說,或者想整理小說卻匹配到漫畫。
- 系列叢書資訊遺失,在茫茫書海中找下一卷像在尋寶:對於長篇小說、輕小說或漫畫迷來說,「系列(Series)」管理是核心需求。但原版工具常常漏抓系列資訊,導致同步到閱讀器後,書籍全部散落四處。每次看完一集,都要在茫茫書海中辛苦搜尋下一卷、下一集在哪裡,閱讀體驗極度不連貫。
- 分卷識別能力不佳,自動抓取容易錯位:在處理多卷書籍時,自動抓取常常失靈。明明是第 5 卷,抓出來的卻常常是第 1 卷或其他不對的卷數,必須手動一卷一卷修正。
- 高清封面抓取「張冠李戴」:雖然原版工具確實有抓取高清大圖的功能,但因為分卷與關鍵字識別不精準,導致它經常「看錯行」,幫 A 書抓到 B 卷的封面,甚至抓到完全不相干的圖片。
- CJK 字符括號無法精準分割:中文或日文書名很常夾雜各式各樣的標點符號與括號(例如:
【】、「」、())。原版工具無法準確分割這些字元,導致搜尋關鍵字夾雜了垃圾符號,進而搜尋失敗。 - 跨語言(CJK)混用時識別率低下:台灣的電子書市場很常出現「中文書名、日文作者名」(例如日本翻譯文學或輕小說)的情況。在這種跨語言混用的複合條件下,原版工具的識別成功率會大幅跌落谷底。
- 對電子書原始命名格式要求極其嚴格:原版工具非常「龜毛」,檔案命名必須完全符合特定格式。如果匯入的書籍名稱稍微有一點不標準,工具就會直接罷工。
看著書架上一堆資料「半殘」、欄位殘缺、封面與系列匹配錯亂的中文書,對於有著強迫症的開發者來說,實在很難假裝沒看到。
💡 突發奇想:要不,自己也來寫一個?
一開始,我上網研究有沒有其他現成的替代方案,或是看看能不能進去修改既有工具的原始碼。但研究到一半,看著那繁瑣的匹配邏輯與對 CJK 支援的欠缺,心中突然冒出一個大膽的想法:
「既然現有的工具對中文支援不夠好、限制又多、資料抓不完整,那為什麼我不乾脆自己從頭寫一個更好用的?」
這個小小的突發奇想,就成了 Better-Kobo-Metadata 這個開源專案的起點。我希望這個專案不只能解決我自己的痛點,也能真正優化所有中文語系使用者(特別是動漫、輕小說愛好者)的電子書整理體驗。
🛠️ 技術實作與發行亮點(Release Notes 核心深化)
為了徹底根治上述痛點,我基於 Python 與 Calibre 插件架構(Metadata Source Plugin API) 重新開發了 Better-Kobo-Metadata。
在實際的發行版本中,我針對了資料清洗與匹配邏輯進行了底層重構。以下是本次 Release 說明的核心技術亮點:
1. 智慧型多重搜尋篩選與權重機制(解法:搞定小說/漫畫混淆)
為了解決同名輕小說與改編漫畫因「多作者並列(如:原作/作畫/插畫)」導致的媒介錯亂,新版插件引入了更精細的權重計算與多重過濾機制。系統在搜集到 Kobo 商店的候選資料後,會智慧分析不同作者欄位的關聯性與比重,精準判斷該書籍究竟是「小說」還是「漫畫」,徹底終結抓錯棚的尷尬。
2. 完美整合 Calibre 系列(Series)管理
這是我自己非常自豪的改進!專案完美支援了 Calibre 的系列管理邏輯(包含寫入 series 與 series_index)。實測將書籍同步到 Kobo 電子書閱讀器後,會看到整整齊齊的「系列資料夾」,裡面依序躺著一卷又一卷的書籍。看完這一話,下一集就在旁邊,徹底告別在混亂書架中茫茫找書的痛苦。
3. 智慧型分卷感知排序演算法 (Volume-aware ranking)
不再只是死板地對照書名關鍵字!系統會主動解析、比對原始檔名與商店書籍中的「卷數(Volume)」資訊,並給予精準對應的卷數更高的權重排序。這大幅降低了原本自動抓取時最容易發生的「卷數錯位」問題。
4. 作者感知消除歧義機制 (Author-aware disambiguation)
專門優化「跨語言混用」的極端狀況(例如:中文書名 + 日文原作者名)。透過將搜尋到的結果進行作者特徵碼與書名關聯性的雙重調優校驗,即使在跨語言的複合搜尋條件下,也能精準識別出正確的翻譯作品。
5. 嚴格同分卷過濾機制 (Strict same-volume filtering)
徹底修正原版封面抓取「張冠李戴」的 Bug。在獲取高畫質大圖時,後台會進行同分卷的嚴格對齊過濾,確保下載下來的高清封面圖片與當前書籍卷數 100% 精準對齊,不會再發生第 3 卷卻套用第 1 卷封面的狀況。
6. 專注優化臺灣 Kobo 商店(日本商店開發中!)
目前徹底重構並完美支援臺灣 Kobo 商店的抓取邏輯,補完了原版抓不到的 ISBN、出版商、精準出版日期 以及完整書籍大綱等重要盲區。(日本商店的支援目前也已經在我的工作排程中,敬請期待!)
7. 更寬鬆的命名格式容錯與 CJK 括號分割
優化對原始檔名的解析,引入了標點符號清洗機制,能夠準確剔除或識別書名中的 【】、「」、() 等中日韓特有括號,避免關鍵字被特殊字元污染,不再死板地要求特定的檔名格式。
🚀 結語與開源共享:這只是個開始
從一個小小的日常不便,到突發奇想捲起袖子自己寫程式,最後真的把這個專案推上 GitHub。這種「自己發現問題、動手解決問題」的成就感,正是寫程式最迷人、最純粹的快樂。
目前我已經將這個專案完全開源,歡迎點擊下方的連結查看、提 Issue 或貢獻代碼:
🔗 GitHub 傳送門:Better-Kobo-Metadata
如果你的數位書架也正因為中文書籍元資料不全、分卷錯亂、系列難以管理而感到困擾,非常歡迎體驗看看!也期待有更多同好能一起交流,讓我們一起把中文電子書的整理體驗變得「更好」!

叨叨幾句... NOTHING