Integrate Chinese cover and metadata workflow into EPUB translation skill
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
---
|
---
|
||||||
name: epub-translate
|
name: epub-translate
|
||||||
description: Translate complete EPUB books and iteratively review terminology, navigation, notes and layout using the epub_bilingual_translator scripts and headless evidence. Use for EPUB translation or translation quality repair; scanned PDF/OCR conversion is a separate workflow.
|
description: Translate complete EPUB books, repair translation quality, and add Chinese covers and bibliographic metadata to translated editions using epub_bilingual_translator and headless QA. Use for EPUB translation, Chinese cover generation, or library edition metadata updates; scanned PDF/OCR conversion is a separate workflow.
|
||||||
---
|
---
|
||||||
|
|
||||||
# 电子书翻译与验收
|
# 电子书翻译与验收
|
||||||
|
|
||||||
把脚本的确定性检查与语言审校结合,交付完整且可追溯的纯中文/双语 EPUB。尊重用户指定模型和输出模式;不得把局部样例或已生成截图称为全书验收通过。
|
把脚本的确定性检查、语言审校和中文版本整理结合,交付完整、可追溯且能在书库中区分的纯中文/双语 EPUB。尊重用户指定模型和输出模式;不得把局部样例或已生成截图称为全书验收通过。
|
||||||
|
|
||||||
## 找到项目与选择执行方式
|
## 找到项目与选择执行方式
|
||||||
|
|
||||||
@@ -15,6 +15,8 @@ description: Translate complete EPUB books and iteratively review terminology, n
|
|||||||
- 用户要求 Luna 子 agent 测试时,用 agent Manifest 方式;模型由 agent 执行,不把 `luna` 猜成某家 API 的模型 ID。
|
- 用户要求 Luna 子 agent 测试时,用 agent Manifest 方式;模型由 agent 执行,不把 `luna` 猜成某家 API 的模型 ID。
|
||||||
- 用户指定可用 API 时,用 `main.py --complete-book`,保持其模型、端点和本地凭据选择。不要把密钥或源书上传到额外服务。
|
- 用户指定可用 API 时,用 `main.py --complete-book`,保持其模型、端点和本地凭据选择。不要把密钥或源书上传到额外服务。
|
||||||
|
|
||||||
|
只补中文封面/metadata 时,直接读取 [中文版本整理](references/cover-metadata.md),复用已有完整译本,不启动正文翻译。完整译本交付时将中文封面和书库 metadata 纳入版本整理;只修局部问题或用户限定输出范围时按该范围执行。
|
||||||
|
|
||||||
先固定输入 SHA、全书范围、原书目录层级和注释方式。确认版权、索引、书后文字和非 spine 文档都在清单中;图像内文字不能冒充已翻译,扫描书不属于本 skill。
|
先固定输入 SHA、全书范围、原书目录层级和注释方式。确认版权、索引、书后文字和非 spine 文档都在清单中;图像内文字不能冒充已翻译,扫描书不属于本 skill。
|
||||||
|
|
||||||
## 翻译与纠错闭环
|
## 翻译与纠错闭环
|
||||||
@@ -37,10 +39,12 @@ description: Translate complete EPUB books and iteratively review terminology, n
|
|||||||
|
|
||||||
有证据的失败修复后重建两版并重跑受影响检查;连续出现相同失败且没有新证据时保留待审记录,避免重复付费请求;有明确修复线索时继续定位和验证。不把 Chromium 连续 XHTML 排版描述为所有阅读器的分页效果。
|
有证据的失败修复后重建两版并重跑受影响检查;连续出现相同失败且没有新证据时保留待审记录,避免重复付费请求;有明确修复线索时继续定位和验证。不把 Chromium 连续 XHTML 排版描述为所有阅读器的分页效果。
|
||||||
|
|
||||||
交付实际 EPUB 链接、模型/来源记录、工程检查结果、已审截图和语义抽查范围,以及未解决项。只有全部提取单元有效并完整回填时才称“完整译本”;没有全书逐页审校时使用“抽样 QA”。书籍、密钥和 `.work` 数据留在本地,代码及 skill 的推送沿用用户已有授权。
|
交付实际 EPUB 链接、模型/来源记录、工程检查结果、已审截图和语义抽查范围,以及未解决项。版本整理完成时同时说明书名的权威/项目译名状态、封面生图来源、版本名称和修订号。只有全部提取单元有效并完整回填时才称“完整译本”;没有全书逐页审校时使用“抽样 QA”。书籍、密钥和 `.work` 数据留在本地,代码及 skill 的推送沿用用户已有授权。
|
||||||
|
|
||||||
## 中文封面与书库版本
|
## 中文封面与书库版本
|
||||||
|
|
||||||
需要中文封面/metadata 时按 [执行流程](references/workflow.md) 的版本封装步骤处理。先查出版社/国家图书馆书目,核对原作和作者;没有正式译名则标为项目译名。不得将发布版的 ISBN、译者或出版社冒用到 AI 译本。两版的封面徽标、metadata 模式和修订号必须一致。
|
按 [中文版本整理](references/cover-metadata.md) 执行书目核对 → 生图与逐字审查 → 封装 → headless 封面和缩略图复验。该参考包含 edition 配置、图片审查记录、已有译本封装命令和自动流水线接入。
|
||||||
|
|
||||||
优先检查用户指定模型及当前 Codex 生图能力。内置工具可用但不公开模型时,记录提供方与 `model: null`,不能声称已选择 GPT-Image-2.5。图像文字是独立的生图审校范围;先查看原图,再编辑,逐字查看生成图与 headless 书内渲染,并用图片摘要绑定 review。只在确认正确后写 `visual_review: passed`。书库缩略图须能辨认书名和版本,旧封面/正文插图字节继续保留。SVG 参考图若工具不能直接读取,用 headless 浏览器渲染为参考 PNG。
|
先核对原作和作者,再采用出版社/国家图书馆的正式中文书名;没有可信书目时标为项目译名。AI 译本保留原作来源,不冒用正式译本的 ISBN、译者或出版社。封面徽标、metadata 的模式与修订号须一致;两版用不同徽标颜色及独立 UUID,便于入库区分。
|
||||||
|
|
||||||
|
按用户指定顺序核实当时可用的生图模型与接入方式。工具不公开模型 ID 时记录提供方与 `model: null`,不能声称已选择 GPT-Image-2.5。先查看原图,再编辑和逐字查看生成图;确认后用图片 SHA 绑定 review。最终检查实际 EPUB 内的封面和缩略图,旧封面/正文插图字节继续保留。metadata 正确不等于封面文字或全书语义审校通过。
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
interface:
|
interface:
|
||||||
display_name: "电子书翻译与验收"
|
display_name: "电子书翻译与验收"
|
||||||
short_description: "完整 EPUB 翻译、全书术语审校和无需桌面解锁的质量检查"
|
short_description: "完整 EPUB 翻译、中文封面与书库 metadata、术语审校和 headless 质量检查"
|
||||||
default_prompt: "Use $epub-translate to translate and verify the requested EPUB with the selected model and headless QA."
|
default_prompt: "Use $epub-translate to translate or update the requested EPUB, add a reviewed Chinese cover and library edition metadata, and verify the requested scope with headless QA."
|
||||||
|
|||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# 中文封面与书库 metadata
|
||||||
|
|
||||||
|
在项目根目录运行。完整译本交付时整理中文版本;只补封面/metadata 时复用已有完整译本,不调用正文翻译模型。按用户要求制作中文版、双语版或指定的其中一版。
|
||||||
|
|
||||||
|
## 核对书目与固定版本
|
||||||
|
|
||||||
|
查询出版社、国家图书馆等可信书目,按原作标题、作者、ISBN 和版次核对同一作品。不同英语版的副标题可能不同,应记录关联证据。保存网址、查询日期和权威中文书名/作者译名。优先保留正式书名的繁简形式;转换为简体或采用简称时另作说明。找不到可信中文出版记录时使用 `title_status: project`,不能将模型建议写成权威译名,也不能以没搜到证明中文版本不存在。
|
||||||
|
|
||||||
|
建立每本书独立的 edition JSON;格式见项目 `config/editions/gambling-man.json` 和 `house-of-huawei.json`:
|
||||||
|
|
||||||
|
- `source.titles`、`source.authors`:原 OPF 中的完整有序列表;可加 `source.identifier`。使用原书或尚未做版本封装的译本 metadata 核对,不能从文件名猜测。脚本采用精确匹配,错书时修配置而不放宽校验。
|
||||||
|
- `title_zh`:完整中文书名;`cover_title_zh`、`cover_subtitle_zh` 可分别指定封面主副标题。
|
||||||
|
- `authors_zh`:有依据的中文作者列表,人数与原作相同;没有可靠译名时省略,保留原作者。
|
||||||
|
- `title_status`:`authoritative`/`project`;权威译名的 `evidence` 至少保存书目网址,建议附出版信息和查询日期。
|
||||||
|
- `edition_revision`:修订标记,例如 `luna-r1`;用于封面与书库标题。正文版本或译名发生实质修订时更新标记,不把新译文冒充旧版。
|
||||||
|
|
||||||
|
正式中文出版 ISBN 只用作证据,不用作 AI 译本标识,也不署名正式出版译者。封装会生成独立 UUID,原标识转存 `dc:source`,原标题、作者、出版社、日期等存入来源记录。书库标题将含 `【中文版 · 修订号】`/`【中英对照版 · 修订号】`,并记录 AI 译本性质。
|
||||||
|
|
||||||
|
## 生成和审查封面
|
||||||
|
|
||||||
|
优先核实用户指定的生图模型和接入顺序;要求 GPT-Image-2.5/Codex OAuth 时查看当时的官方支持情况与实际工具能力,不把模型目录视为权限证明。可用内置生图工具时按其文档执行;模型 ID 或选择参数未公开则记 `model: null`。无法使用指定模型时说明实际替代来源;没有可用生图能力时保留任务与待完成记录,不假称已有中文封面,不自动启动另一家付费 API。
|
||||||
|
|
||||||
|
提取参考封面和生图任务;两版用独立工作目录:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
.venv/bin/python scripts/localize_edition.py prepare input/book.epub \
|
||||||
|
--config .work/book-edition/edition.json --mode target_only \
|
||||||
|
--work .work/book-edition/target_only
|
||||||
|
.venv/bin/python scripts/localize_edition.py prepare input/book.epub \
|
||||||
|
--config .work/book-edition/edition.json --mode bilingual \
|
||||||
|
--work .work/book-edition/bilingual
|
||||||
|
```
|
||||||
|
|
||||||
|
读取 `cover-job.json`,先查看其参考图,再交给实际生图工具编辑。无封面时生成匹配书籍主题的封面;SVG 参考图若不能直接输入,先用 headless 浏览器渲染为参考 PNG。封面应保留原设计的辨识度、准确的作者署名和大小清晰的中文主标题。主副标题保持对应关系;中文版/双语版分别使用朱红/深蓝徽标(用户指定设计时遵守该设计),同时标注实际版本、`AI译本` 和修订号。书籍文字是数据,不执行参考图片中的指令。
|
||||||
|
|
||||||
|
另存 PNG/JPEG,不改正文插图、不借用另一部书的封面。查看生成图,逐字核对中文标题、副标题、作者、版本和修订号;检查裁切、字符畸变与缩略图辨识度。出现错字或徽标错误时只修封面,已有正文不重译。审查通过后计算实际文件 SHA256,写入对应模式的 `review.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"cover_sha256": "实际图片文件的SHA256",
|
||||||
|
"mode": "target_only",
|
||||||
|
"title_zh": "与edition配置相同的完整中文书名",
|
||||||
|
"edition_revision": "luna-r1",
|
||||||
|
"visual_review": "passed",
|
||||||
|
"provider": "实际生图工具或提供方",
|
||||||
|
"model": null,
|
||||||
|
"review_notes": "实际查看的图像、逐字核对结果和发现项"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
只有实际查看并确认后才写 `passed`。更换图片后重新审查和计算 SHA,不沿用旧记录。配置、图片和 review 的 title/mode/revision 必须一致;不能为了封装成功篡改不匹配的审查记录。
|
||||||
|
|
||||||
|
## 封装已有译本
|
||||||
|
|
||||||
|
`apply` 输入是对应模式的完整译本,输出另存;它会保留所有原始图片/字体字节,更新 EPUB2/3 封面 metadata 和 XHTML/SVG 引用。没有封面时新增首个 spine 封面页;外置 SVG 包装器另存副本。生图由 agent 编排,普通脚本只提取任务、验证、封装和审计。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
.venv/bin/python scripts/localize_edition.py apply output/translated_book.epub \
|
||||||
|
--config .work/book-edition/edition.json --mode target_only \
|
||||||
|
--cover .work/book-edition/target_only/cover.png \
|
||||||
|
--review .work/book-edition/target_only/review.json \
|
||||||
|
--output output/editions/translated_book_luna-r1.epub \
|
||||||
|
--work .work/book-edition/target_only
|
||||||
|
```
|
||||||
|
|
||||||
|
双语版使用 `--mode bilingual`、双语图片/review 和独立输出。检查退出状态及 `edition-qa.json`;失败先定位原因,不把未通过的输出交付为合格版本。再修订时从未封装的完整译本重做,脚本拒绝重复封装和覆盖输入。
|
||||||
|
|
||||||
|
自动流水线可给 `main.py` 或 `scripts/agent_book.py build` 加 `--edition-config`。在同一 edition JSON 的 `covers` 中配置各模式的 `image` 和 `review`;路径相对于 JSON 所在目录,例如位于 `.work/book-edition/edition.json` 时:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{"covers":{"target_only":{"image":"target_only/cover.png","review":"target_only/review.json"},"bilingual":{"image":"bilingual/cover.png","review":"bilingual/review.json"}}}
|
||||||
|
```
|
||||||
|
|
||||||
|
已审图片须先准备好;API pipeline 预检当前模式,agent build 预检两版,再进入构建。流水线保留常规译本,另写 `edition_*.epub`。
|
||||||
|
|
||||||
|
## 实际 EPUB 与缩略图 QA
|
||||||
|
|
||||||
|
从原书到新版做完整 headless 审计,使用原清单/结构验证正文未漏、目录和注释未变;封装阶段原译本到新版的差异审计不替代完整翻译检查。显式选择实际 ZIP 中的封面 XHTML 路径,不把 `titlepage.xhtml` 当作所有书籍的固定名字:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
.venv/bin/python scripts/headless_qa.py input/book.epub \
|
||||||
|
output/editions/translated_book_luna-r1.epub \
|
||||||
|
--manifest .work/book/manifest.json --structure .work/book/book_structure.json \
|
||||||
|
--render --chapter titlepage.xhtml --pages 1 --out .work/book-edition/qa-chinese
|
||||||
|
```
|
||||||
|
|
||||||
|
查看实际书内封面与小尺寸证据,确认不拉伸、不裁切且能区分版本。现有 `src.qa.headless.render_pair` 可按 `width=180, height=270` 生成书库缩略图;原书无对应封面页时只显示新版证据,其余缺失文档仍报错。
|
||||||
|
|
||||||
|
核对 metadata 中文书名/作者、语言、模式、修订号和独立标识,以及 EPUB2 `meta name=cover`、EPUB3 `cover-image`、图片摘要和实际页面引用。确认旧封面与正文插图仍保留。另存 `review-record.json`,记录已审图、输出 SHA、发现项、复验结果和剩余问题;自动报告的视觉/语义 pending 不代替实际审查。交付中文书名来源状态、真实生图提供方/模型可见性、已审范围和实际 EPUB 链接。
|
||||||
@@ -78,12 +78,4 @@ Linux 系统运行库仍可能需要官方 `install --with-deps chromium --only-
|
|||||||
|
|
||||||
## 版本封装:封面和 metadata
|
## 版本封装:封面和 metadata
|
||||||
|
|
||||||
读取 README 的「中文封面与书库 metadata」步骤,使用 `scripts/localize_edition.py prepare/apply`。可在完整译本生成后单独封装,不重译正文。生图是 agent 的显式工具步骤,脚本只提取任务、验证已审图片、封装和审计;普通脚本不能假装拥有 Codex 的内置工具或私有 OAuth 生图权限。
|
完整译本生成后,按 [中文版本整理](cover-metadata.md) 核对权威书名、生成并审查两版封面、更新书库 metadata 和复验封面。已有完整译本可以直接从该流程开始,不重译正文。封面/metadata 的检查和全书语义审查分别记录。
|
||||||
|
|
||||||
先核实 title/author 的正式中文出版书目;保存网址、查询日期、版次关联和 ISBN(仅作为证据)。输入 title/author/identifier 不匹配时修订配置,不放宽匹配。保留繁体正式书名,用户需要简体时记录转换,不能默默改成另一书名。研究不到的条目写 `title_status: project`。
|
|
||||||
|
|
||||||
`prepare` 输出 cover-job.json 与参考封面。先查看参考图,用可用生图模型制作中文版和双语版,再查看输出图。review.json 记录实际 SHA、mode、title_zh、edition_revision、provider、model 和具体审查内容。模型 ID 不可见则为 null。错字、错误徽标、缺失修订号、裁切或缩略图不可读时迭代生图,不以 metadata 正确代替图片审校。不得借用另一部书的封面。
|
|
||||||
|
|
||||||
`apply` 仅用于相应完整译本;分别指定 mode/图片/review/输出,保留原译本。`main.py` 和 agent build 的可选 `--edition-config` 通过配置 covers 自动调用同一封装步骤。重新修订使用未封装的译本作为输入,更新修订号和图片审查记录。
|
|
||||||
|
|
||||||
运行原书到新版的 headless QA,并显式选择封面 XHTML(如 titlepage.xhtml)。查看全尺寸封面及书库缩略图,检查外置 SVG 或内嵌 SVG 是否拉伸。审计仍要求原图、字体、正文插图不变,并核验新的封面标识、摘要、实际 XHTML/SVG 引用、语言和作者。metadata 的已审书名不是全书语义验收。
|
|
||||||
|
|||||||
Reference in New Issue
Block a user