Calibre Skill 探索记 1.0:电子书封面生成术

Calibre 的图形界面使用感一直称不上好,使用和熟悉的门槛不低,如果电子书本身的metadata处理不好,那么每一次进库都有相当的维护心智负担。尽管我本来很喜欢这样 hardcore 的软件。

最近发现了Calibre 有自带的Cli接口,于是我开始磨Skill,脱离图形界面,让agent 帮我维护我的Calibre书库。

此前已经完成了不少尝试,但昨天很有意思的打通了 TXT 转 EPUB 并发送到Kindle 的一条工作流链路,其中最有意思的就是去设计电子书封面生成模板。

先想想主要的技术

封面模板最重要的一点是考虑到不同类型文本的通用性。

“每次转格式的时候直接调用生图生成一个封面”固然是一个不错的选择,但是我的生图经验并不能达到每一次生图,结果都完全符合心意,所以这种方式需要「人」在工作流中途紧盯输出。

我想要让工作流全程「无需监管」,所以「通用的」、「可控的」、「无需监管」这样的特性,指向的答案就是「脚本化」。

通用但不死板,脚本中也需要保留一定的 agent 的生成自由度,让封面之间有细微差别。否则不同气质的文本都在眼前长得一模一样,还得多一步翻开,才能知道是哪里不同。

那就让 agent 自己玩脚本填空游戏好了。

探索参考方向

我在小红书找参考的时候,找到了 晋江作者 @车象 老师的封面设计:

纯色设计、重点清晰、以及轻度自由的多样化图像。

于是迅速有了想法。

基于参考的脚本 prompting

这一块也就是人最后可以发挥 「taste」 的地方。

征求车象老师意见以后,我对整体版式做了重排,虽然在对齐上仍旧有点瑕疵

version 1.0
帮我搭建一套可重复使用的电子书封面生成流程,接入 Calibre。请实际完成模板、生成工具和样例,让我以后只要给你书名、作者和几句文案,就能生成同一套风格的封面。

## 1. 先了解我的环境

检查当前工作目录和已有规则,确认 Calibre、可用的渲染工具和中文字体。已有封面模板或脚本时,先阅读并沿用,保留我的手工修改。

如果缺少必要信息,集中问我:用哪本书做样例、有没有喜欢的封面参考。书库位置只有在准备接入书库时才需要确认,先完成独立的封面生成。

## 2. 先做一张可以调的样张

有参考图就按参考设计;没有参考时,先用下面的方向:

- 以文字排版为主,书名最醒目,作者清晰可辨。
- 左侧放简短文案,右侧放一到两个与内容相关的 emoji,竖向错位叠放。
- 文案和 emoji 留出合理间距,整体留白充足。
- 允许没有 emoji 或没有文案,这两种情况也要有完整、自然的布局。
- 缩成书架缩略图后,仍然能认出书名。

先选一组合理的竖版尺寸、字体和配色,说明选择并生成样张。不要编造作者、推荐语或书籍内容。缺少文案时可以留空;根据简介提炼的文案需要标明供我审阅。

把样张直接展示给我,让我能针对字号、断行、间距和位置提出修改。先把这一张调好,再固定模板。

## 3. 把定稿版式做成参数化工具

将内容与版式分开。每本书通过一个小 JSON 提供:

- 书名
- 可选的书名断行
- 作者
- 可选的分行文案
- 零到两个 emoji
- 可选的样式覆盖参数

字号、颜色、列间距、emoji 大小、叠放量和旋转角度等都应能通过参数调整。日常换书只改 JSON,不需要修改渲染脚本。

使用 HTML/CSS 等适合精确排版的方式生成封面,无需默认调用图片生成模型。具体工具按我的环境选择。

中文字体必须正确渲染,避免缺字。emoji 的透明边距和实际图形大小可能不同,需要按实际可见像素检查位置和视觉重心,不能只对齐外框。

如果我之后手动修改了模板或渲染脚本,以我的最新修改为准,不要重新生成旧版覆盖它。

## 4. 交付并验证

每次生成至少输出:

1. 最终封面 PNG。
2. 与 PNG 对应的最终 HTML,嵌入所需字体,便于打开检查。
3. 本次使用的 JSON。
4. 简短检查报告,记录尺寸、字体加载、文字溢出及输出位置。

实际渲染并打开图片检查,至少覆盖长中文书名、双 emoji、单 emoji、无 emoji、无文案这些情况。检查文字裁切、元素重叠、中文缺字和缩略图辨识度。生成失败要明确报错,不能把缺字体或缺素材的结果当成成功。

## 5. 接入 Calibre

先用书库外的样例文件验证封面接入。生成 EPUB 时,将封面显式传给 Calibre,并检查导出的 EPUB 确实包含封面,而不只是目录里多了一张 PNG。

封面上的书名和作者必须与电子书元数据使用同一份已审阅内容。

需要更新已有书库时:

- 先核实我指定的目标书库,通过书目 ID 定位。
- 使用 Calibre 官方接口更新封面和元数据,不直接修改数据库或替换库内文件。
- 写入前做好适合当前环境的备份。
- 分别验证书库中显示的封面与导出电子书内部的封面。
- 连接失败时明确报错,不要切换到另一个默认书库。

## 6. 留下以后能直接用的入口

交付模板、生成工具、示例 JSON,以及一份简短使用说明。如果我的 agent 支持 skill,就把这套流程整理成可复用 skill。

最后告诉我:以后把书放在哪里、需要提供哪些信息、说哪句话就能启动流程。请把“封面已生成”“验证通过”“已写入书库”分别报告。

我还在探索:

  1. 一键让 agent 处理Calibre书库中的metadata

  2. 维护NAS的 Calibre-web metadata以及书库同步