txt-to-epub · 小说 txt 转干净 EPUB
把本地 .txt 小说(无论是否带盗版站水印)转换成标准 EPUB 2.0 电子书:自动分章 + 目录导航 + 清广告水印 + 基础排版样式。
> 本技能自包含:转换脚本在技能目录 scripts/ 下,仅用 Python 标准库,无需安装任何包,可在任意装了本技能的机器上运行。
何时使用
- 用户发来一个
.txt文件,要求「转 epub / 转电子书 / 整理成书 / 做成能看的格式」。 - 用户桌面上有一本从网文站下载的 txt(常带
uutxt.com、笔趣阁、小说下载网等水印),想清除广告并转成可导入阅读器的 EPUB。 - 需要把一份长文本按章节拆开、生成带跳转目录的电子书。
默认执行流程
- 确认输入:拿到用户给的
.txt本地路径(拖入对话框发送的附件、或用户指定的桌面/下载路径)。若用户未给路径,先问清楚文件在哪。 - 运行脚本(解释器用本机 Python 3,优先用 WorkBuddy 托管 Python;脚本只需标准库):
bash python <技能目录>/scripts/txt2epub.py <输入.txt> \ [--out 输出.epub] [--title 书名] [--author 作者] \ [--lang zh] [--chapter-pattern "正则"] [--no-clean]
- 输出路径不指定时,默认在输入同名处生成.epub。
---title/--author可覆盖自动推断;不传则脚本从文件头书名:/作者:行推断,推断不到用「未命名 / 佚名」。
---chapter-pattern:自定义章节头正则(优先级最高),应对特殊排版。
---no-clean:保留盗版水印(一般不加)。 - 校验并交付:脚本会打印章节数、大小。可顺手快速校验(见下「质量自检」),然后用
present_files把生成的.epub交给用户。
质量自检(可选,建议做)
python - <<'EOF'
import zipfile, re
z = zipfile.ZipFile("<输出.epub>")
print("zip完整:", "OK" if z.testzip() is None else "损坏")
print("mimetype未压缩:", z.getinfo("mimetype").compress_type == 0)
wat = ("uutxt","优憂书盟","幽悠书擝","niaoyan","小说下载网","txt.com")
hits = sum(1 for n in z.namelist() if n.endswith((".xhtml",".ncx",".opf"))
for w in wat if w in z.read(n).decode("utf-8"))
print("水印残留:", hits)
print("章节数:", len([n for n in z.namelist() if re.match(r'OEBPS/chap_\d\d\.xhtml', n)]))
EOF
支持的分章模式(自动选命中最多者)
| 模式 | 示例章节头 | 说明 |
|---|---|---|
| 耶利内克式 | 正文 第一卷(1) 字数:13823 |
去掉字数,半角括号转全角,得「第一卷(1)」 |
| 中文数字 | 第一章、第二卷(3)、第12回 风雪夜 |
自动规整标题 |
| 英文 | Chapter 1、CHAPTER 1 The Beginning |
直接用该行作标题 |
| 无标记 | (整本无章节头) | 全部并入单章「正文」;卷首元数据行不计入正文 |
若文件头部有 书名: / 作者: / 简介: 等行,会自动当作元数据,不进正文。
盗版水印清理
脚本内置关键词(含 uutxt、各盗版站名、更新提示等),并做全角→半角归一后再匹配,能识别 uUtxt。cOm 这类混淆写法,命中即整行丢弃。整行仅由广告构成,不会误伤正文。
版权与合规
- 本技能只做本地文件格式转换与排版清洁,不涉及下载、传播任何内容。
- 转换对象若为非授权转载文本,仅在用户本地已有该文件的前提下处理,用于个人阅读;封面页会附「请支持正版」提示。
- 不要在对话中主动提供或引导获取盗版资源。
输出物结构(标准 EPUB 2.0)
mimetype (首位、未压缩)
META-INF/container.xml
OEBPS/content.opf (包元数据 + manifest + spine)
OEBPS/toc.ncx (目录导航)
OEBPS/style.css (排版样式)
OEBPS/title.xhtml (封面页:书名/作者/正版提示)
OEBPS/chap_01.xhtml … (每章一文件)
可直接用 Apple Books、Calibre、微信读书(导入本地文件)、任意 EPUB 阅读器打开。