如何用 markitdown 把 EPUB 批量转成 Markdown 笔记
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
你手头有一批 .epub 电子书,想在 Obsidian 里变成可全文检索的笔记。markitdown 是一个 Python 工具,一条命令就能把 EPUB 转成 Markdown。书里的元数据、章节结构都会保留在输出文件里,装好后直接跑就行。
它替你做了什么
- 书目信息自动带出:输入一个 .epub,输出一个 .md,文件开头就列出标题、作者、语言、出版社、出版日期。
- 章节顺序完整保留:正文按书里的 spine 顺序一章一章转,标题、加粗、列表、引用都在。
- 一本一书一个文件:转换结果就是标准的 .md,拖进笔记软件就能用。
30 秒跑通
先安装,再转换:
pip install markitdown[all] markitdown book.epub -o book.md跑完你手里多了个 book.md,用任意 Markdown 编辑器打开,章节结构都在。
能力拆解
书目元数据
它能读 EPUB 内部的书目字段,在笔记开头按"字段:值"输出。输出长这样:
**Title:** 我的第一本书**Authors:** 张三, 李四**Publisher:** 演示出版社
正文结构
它按章节顺序转换,保留标题、加粗、斜体、列表和引用。输出长这样:
# 第 1 章:入门这是一个 **加粗** 的段落> 这是一段引用
解析逻辑在 _epub_converter.py。
图片与附件
书内嵌的 base64 图片默认会被截断,只留文字。想保留的话,给 CLI 加--keep-data-uris参数,图片数据就会留在输出里,参数说明见main.py。
三个真实用例
个人读者:一本书变成 Obsidian 笔记刚读完一本技术书,想留一份可检索的副本。
- 把 .epub 放到工作目录。
- 运行
markitdown book.epub -o book.md。 - 把 .md 拖进 Obsidian 仓库,开启全文检索。 做完后,你手里多了一份带书目信息的可搜索笔记。
小团队:统一培训资料格式团队共享一批电子书,想让所有人的笔记长一个样。
- 把所有 .epub 放进同一个目录。
- 跑下面"组合与扩展"里的批量命令。
- 把生成的 .md 收进共享文件夹。 做完后,每本书旁边都有一份格式一致的 Markdown。
自动化脚本:新书上架自动入库你希望书架更新后自动完成转换。
- 监听一个收件目录,发现新 .epub 就调用 CLI。
- 按书名命名输出到笔记库。
- 用定时任务定期跑一遍。 做完后,收件箱里的新书会自动变成笔记。
容易踩的坑
- 遇到无扩展名或识别不了的文件怎么办:用
-x epub给 markitdown 一个格式提示,它就会按 EPUB 处理。 - 正文里的图片不见了:默认会截断 base64 图片,加
--keep-data-uris即可保留。 - 扫描版书转出来是空的:这种书是纯图片,离线转换拿不到文字,可以看仓库里的 OCR 插件 markitdown-ocr。
- 输出在编辑器里乱码:确认编辑器用 UTF-8 打开,markitdown 的输出就是 UTF-8。
横向对比
| 维度 | markitdown | 手动整理 | 同类转换工具 |
|---|---|---|---|
| 单本耗时 | 秒级 | 一到两小时 | 几十秒到几分钟 |
| 章节结构保留 | 自动保留 | 看个人经验 | 部分保留 |
| 元数据(作者、出版社、日期) | 文件开头完整列出 | 靠手动记录 | 大多缺失 |
| 学习成本 | 一条命令 | 需要经验 | 需要熟悉界面 |
组合与扩展
- 接笔记软件:输出的 .md 直接进 Obsidian 或 Logseq,章节标题天然就是笔记层级。
- 批量脚本:一个目录的书一次转完,进阶命令如下,放进定时任务就能无人值守:
for f in *.epub; do markitdown "$f" -o "${f%.epub}.md"; done收尾
markitdown 能把 EPUB 转成带元数据、保留章节结构的 Markdown 笔记,从一条命令到批量脚本都可以用。拿一本你自己的 .epub,把第一条命令跑一遍,打开输出看看效果。
【免费下载链接】markitdownPython tool for converting files and office documents to Markdown.项目地址: https://gitcode.com/GitHub_Trending/ma/markitdown
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考