书籍下载入库
术-操作 · 术层 skill 全文
本页是 <code>rules/skills/drafts/workflow_book_download_intake.md</code> 的逐字投影(仅隐私清洗,零改写)。
时点提示:本页是仓内文件 rules/skills/drafts/workflow_book_download_intake.md 的逐字投影(仅做隐私清洗:仓库根绝对路径→相对路径、家目录→~/;除此零改写)。若源文件后续有修订,以仓内真源为准。
报告元数据(frontmatter)
name: workflow_book_download_intake
status: draft (Beta) — 晋级前需在真实书籍下载任务上跑通搜索、格式选择、下载、入库且无 TXT 派生产物
description: 通过已登录浏览器搜索并下载书籍,再按 contexts/library 的书籍存放机制入库。触发场景:用户要找书、下载书、从 Z-Library 或类似站点下载并放入 library。格式优先 EPUB/MOBI/AZW3/FB2 等方便后续转 TXT 的电子书格式;只有没有合适电子书格式时才下载 PDF。下载后只入 source_original,不生成 TXT。书籍下载入库
术 skill。工具按名引用,路径查 tools/INDEX.md;目录归属以 rules/WORKSPACE.md 和 contexts/library/INDEX.md 为准。
目标
把一次“找这本书并下载”的请求变成一个已入库的书籍原件:先搜索确认候选书,再选择合适格式下载,最后把原始文件放到 contexts/library/<book_slug>/source_original/。本 skill 只负责下载和原件入库,不做 TXT 提取、不启动蒸馏。
验收标准
任务完成必须同时满足:
- 已搜索,而不是直接下载推荐项或猜 URL;最终候选能对上书名、作者,必要时核对年份/出版社/ISBN。
- 格式选择符合优先级:EPUB 优先;没有 EPUB 时选 MOBI/AZW3/FB2 等可转文本的电子书格式;只有这些都没有时才选 PDF。
- 下载文件已进入
contexts/library/<book_slug>/source_original/,书籍目录 slug 为 snake_case,文件名按<author_surname>_<short_title>.<ext>命名。 - 入库只保留下载得到的原件。目录里没有因本轮任务生成的
.txt、SOURCE_PREPARATION.md、source_preparation.json或process/产物。 - 最终回复给出下载来源页面、入库路径、格式和大小;若没下载,说明卡在哪个环节。
操作边界
- 使用用户已登录的浏览器会话时,只操作完成本任务所需页面。不要读取、汇总或泄露无关标签页、下载历史、账号信息。
- 只下载用户有权获取的内容、公版书、开放授权书,或用户明确说明有授权的内容。对明显受版权保护且授权不明的书,只能搜索和定位详情页,不代为下载。
- 遇到 CAPTCHA、权限弹窗、付费、登录、验证码、保存密码、安装扩展、下载客户端等动作时,当场向用户确认。
- 不用站点的在线格式转换功能来“凑”格式。下载站点已有原件格式即可。
格式选择纪律
结果页常常有多个同名条目。不要只选第一个;先比较候选的标题、作者、语言、格式、大小和质量信号。优先级如下:
- EPUB:首选,通常最适合后续提取文本。
- MOBI/AZW3/FB2:可接受,后续仍较容易转换。
- PDF:兜底。只有没有合适电子书格式,或用户明确要 PDF,才下载。
如果存在多个同格式候选,优先选作者/版本信息更清楚、文件大小合理、语言匹配用户需求的条目。扫描版 PDF 只在没有更好选择时使用。
入库纪律
下载完成后,使用 library_distillation_ingest_source 把文件放入 contexts/library/<book_slug>/source_original/。本 workflow 禁止带 --prepare,因为 --prepare 会生成 TXT 和 preparation 证据,违反“下载后不要转 TXT”的边界。
可接受的入库形态:
library_distillation_ingest_source <book_slug> /absolute/path/to/downloaded_book.epub --name <author_surname>_<short_title>.epub如果需要保留 Downloads 里的原下载文件,使用 --copy;否则默认移动即可。覆盖已有同名原件前先确认,除非用户明确要求替换。
失败与降级
- 搜不到:报告搜索词、站点和最接近的候选,不创建 library 目录。
- 只有 PDF:可以下载 PDF,但最终回复明确说明没有找到合适电子书格式。
- 下载被浏览器或站点拦截:保留详情页 URL,说明拦截点,不绕过。
- 入库前发现已有同一 slug:先检查
source_original/的现有原件,避免重复;若是新版本或不同格式,按用户目标决定追加还是替换。
已知陷阱
library_distillation_ingest_source --prepare会自动生成 TXT。本 skill 的下载场景只入原件,后续是否转 TXT 交给专门的蒸馏/准备流程决定。- Z-Library 结果卡片可能把下载链接藏在自定义元素属性里,普通 DOM 链接列表未必能直接看到书卡链接。需要以页面可见信息和元素属性一起核对,避免点错条目。