---
name: douyin-cover
description: 生成抖音、视频号、小红书等短视频封面图、视频标题图和合集封面，也能诊断和改版已有封面。用户说做封面、生成封面、抖音封面、视频封面、标题图、合集封面、3:4、4:3、1:1、短视频首图、动态封面首帧、给这期视频做图、这封面为什么没人点、帮我改封面、封面点击率怎么提升、诊断封面时都应使用。小白学AI系列封面除外：遇到“小白学AI封面/小白学AI第N集封面”时优先使用 xiaobai-ai-cover skill（系统内置 imagegen + 固定角色参考图）。这个 skill 会根据每次标题重新设计简约大方、有点击理由的封面，保留泊舟 IP 人物识别特征，内置「信息密度 × 视觉锚点」方法论和冲突型/数字型/截图型/情绪型可选模板参数，支持 3:4 竖版、4:3 横版和 1:1 正方形，默认必须使用系统内置 `imagegen` skill / `image_gen` 工具直接生成带准确标题文字的完整发布级封面；涉及泊舟 IP 或其它指定人物/IP 时，必须把对应参考图作为 identity reference 放入生图上下文，不能只靠文字描述；禁止用代码、Canvas、Pillow、ImageMagick 或其它本地图形流程合成画面或文字，并通过检查与重试保证文字可读、无错字、无乱码。
---

# Douyin Cover

为当前项目生成短视频封面图。默认目标是：标题一眼能读懂，画面简约大方且有点击理由，泊舟 IP 人物稳定可识别。技能只提供比例、版式、文字准确性和质量检查框架，不预设具体场景、道具或画面元素。

## 先读这些

- 每次使用先读 `references/ip-persona.md`，确认泊舟 IP 的稳定特征。
- 每次正式设计前读 `references/design-playbook.md`，从标题类型选择合适的视觉策略。
- 需要具体锚点位置、配色 HEX、字重比、对比度阈值时，读 `references/template-formulas.md`。这是**可选工具箱**：选一个模板方向参考其参数即可，简约优先级永远高于信息密度，不要因为有模板就堆色块、堆小字。
- 用户给的是一张**已有封面**、问为什么没人点 / 帮我改 / 怎么提升点击率时，走 `references/cover-diagnosis.md` 的诊断改版流程。
- 头像参考资产在 `assets/bozhou-avatar-reference.jpg`，规范化卡通参考在 `assets/bozhou-ip-canonical-cartoon-reference.png`。凡是封面出现泊舟 IP，必须先用 `view_image` 打开至少一张参考图，优先两张都打开，并在系统 `imagegen` 提示词里明确写成 identity reference；不能只把 IP 特征写进文字提示词。

## 输出位置（重要）

封面默认存进**对应视频工程文件夹**，不再统一塞进 `douyin-covers/`。

- 确定目标视频工程：用户指定了某个工程目录就用它；否则用当前所在的视频工程（含 `逐字稿.md` / `分镜.md` / `index.html` 等成片资产的那个项目目录）；标题能明确对应到某个已有工程时也用那个工程。
- 默认只把通过检查的最终图存到该工程目录下的 `cover/` 子文件夹（不存在就先创建），例如 `prompt-context-harness/cover/`。生成过程中的试稿留在系统 Image Gen 默认目录，不复制进项目。
- 文件名包含标题 slug 和比例，例如 `cover/harness-cover-AI客服退错旧卡-3x4.png`。只有用户明确要求保留多个候选或方案时，才使用 `-candidate-1`、`-candidate-2` 并把候选复制进项目。
- 只有在**无法判断属于哪个视频工程**（例如在仓库根目录泛泛生成、与任何成片项目都无关）时，才回退到旧路径 `douyin-covers/YYYY-MM-DD/generated/`。
- 不确定该放进哪个工程目录、且存在多个候选工程时，先问用户一句，不要凭空选。

## 工具硬约束

- 小白学AI系列封面例外：如果 `xiaobai-ai-cover` skill 可用，停止本流程，改用该 skill 的系统内置 `imagegen` + 固定参考图流程。
- 默认必须使用系统 `imagegen` skill 的内置 `image_gen` 工具生成封面图。不要默认调用 `gpt-image` skill、DragonCode 脚本、第三方生图脚本或其它通用图像工具；只有用户明确要求 CLI/API/DragonCode 路径时，才另行按用户指定路径处理。
- IP/人物封面必须带参考图：先用 `view_image` 把参考图放进上下文，再在提示词 `Input images` 中标注“identity reference”。如果做泊舟 IP，至少使用 `assets/bozhou-avatar-reference.jpg`，优先同时使用规范化卡通参考图；不得只靠文字描述“黑发眼镜程序员”。
- 不要用代码合成封面：禁止用 Pillow、ImageMagick、Canvas、SVG、HTML/CSS 截图、程序绘图等方式生成、拼接、绘制、叠加、修补封面画面或标题文字。
- 本地命令只用于必要的非视觉操作：创建 `cover/` 目录、复制系统 Image Gen 输出、重命名文件、读取尺寸、查看图片。
- 如果系统 Image Gen 一次生成的文字或构图不合格，解决方案是改提示词并重新调用 `image_gen`，而不是用代码修字、补字、换背景或做局部合成。

## 输入判断

从用户消息中提取：

- `title`：封面主标题。没有标题时先问一句，不要凭空编主标题。
- `ratio`：默认 `3:4`。用户说横版、视频封面、B 站、公众号头图、4:3 时用 `4:3`。用户说合集封面、正方形、1:1、1080x1080、1080*1080 时用 `1:1`。
- `subtitle`：可选，用于补充收益、冲突或系列信息。
- `platform`：默认抖音/小红书竖版封面。
- `tone`：从标题推断，可为新手入门、争议纠错、工具教程、经验总结、案例拆解、效率提升、避坑警示、方法论等。

比例和目标尺寸说明：

| 用户意图 | 系统 Image Gen 目标比例 | 用户常用目标尺寸 |
|---|---:|---:|
| 抖音封面、小红书封面、手机竖版 | `3:4` | `1084x1448` |
| 横版视频封面、4:3、宽图 | `4:3` | `1448x1084` |
| 合集封面、正方形、1:1 | `1:1` | `1080x1080` |

目标尺寸用于理解用户发布场景。实际像素以系统 Image Gen 返回的原图为准；不要为了凑像素尺寸而用代码合成或重排版。

## 工作流

1. 先做一个简短的创意判断，不要直接套上一次的样子：
   - 观众为什么会点？（信息密度：利益点在缩略图里清不清楚；视觉锚点：有没有一个让眼睛停住的位置。）
   - 这张封面要传达什么气质：清爽、专业、轻松、强观点、结果感、避坑感等？
   - 从标题类型选一个模板方向（冲突型 / 数字型 / 截图型 / 情绪型，见 `references/template-formulas.md`）作为锚点和配色的参考，但只选一个，不混搭，也不强制堆料。
   - 标题和主视觉的比例如何安排，才能在手机缩略图里一眼读懂？
   - 如何尽量减少元素，只保留最能服务点击的内容？
   - 如果出现泊舟 IP，如何让他只做辅助，不抢标题？

2. 写一段 `visual brief`，至少包含：
   - 版式：比例、标题区域、主视觉占比、留白和层级。
   - 气质：简约大方、有点击欲，避免杂乱和廉价感。
   - 色彩：2-3 个主色和一个强调色。不要默认每次都是同一套配色。
   - IP 出现方式：只写稳定识别特征和画面占比，不写固定动作或固定场景。
   - 文字计划：封面上要出现的完整文字、换行方式、字号层级、标题底板/描边/投影/贴纸等可读性处理。

3. 写一套规范的系统 Image Gen 提示词：
   - 按系统 `imagegen` skill 的默认内置工具流程调用 `image_gen`。不要为了尺寸、质量或路径控制改走 DragonCode/CLI。
   - 如果出现泊舟 IP 或其它指定人物/IP，必须先 `view_image` 参考图，并在提示词里写清：`Input images: the visible reference images are identity references for the same IP/person`。
   - 提示词必须把封面文字当作画面核心元素来描述，而不是事后叠加。明确写出：`封面文字必须严格为「...」`，如果有副标题也逐字列出。
   - 明确标题排版：哪些词最大、如何换行、文字颜色、描边/阴影/底板、标题占画面比例、与主视觉的相对位置。
   - 明确限制模型不要添加任何未指定文字：不要额外汉字、英文字母、数字、logo、水印、签名、品牌名、乱码符号。
   - 不要列道具清单。除非用户明确指定，提示词只描述画面气质、版式和主视觉简洁度，让系统 Image Gen 自主选择具体元素。
   - 生成比例使用 `3:4`、`4:3` 或 `1:1`，按用户需求选择。

4. 生成完整封面图：
   - 直接让系统 Image Gen 生成包含标题文字、主视觉、背景气质和整体版式的完整发布图。
   - 系统 Image Gen 默认会把原始产物放在 `$CODEX_HOME/generated_images/...`。检查通过后，只把最终选中的原图复制到目标视频工程的 `cover/` 子文件夹（见上文「输出位置」）；不要再复制一份内容相同的 `candidate`。无法判断工程时才回退到 `douyin-covers/YYYY-MM-DD/generated/`。
   - 最终图应来自系统 Image Gen 输出原图。不要用本地代码改尺寸、裁切、压缩、拼接、加字或修图。
   - 如果用户要求的精确像素尺寸与系统 Image Gen 返回尺寸不一致，优先保留系统 Image Gen 原图并说明实际尺寸；只有用户随后明确要求“只做尺寸转换”时，才可执行非创意的格式/尺寸转换，但仍不得改画面内容或文字。

5. 检查与重试：
   - 用 `identify` 或同类工具确认尺寸。
   - 用图片查看工具检查候选图，逐项核对：
     - 标题文字是否与用户给出的标题完全一致，包括中文、英文大小写、数字、标点。
     - 是否漏字、错字、变形、乱码，或添加了未指定的额外文字。
     - 80px 缩略图测试：缩到约 80px 宽（手机信息流缩略图尺寸）后，主标题还能读、只有一个锚点最先被看到、色块仍分明。
     - 主标题与背景对比度是否足够（参考阈值：主标题 vs 背景 ≥ 4.5:1，缩略图建议 ≥ 7:1）。
     - 标题是否压住人物脸部或主视觉。
     - 人物是否仍像泊舟 IP，画面是否简约大方、有点击理由。
     - 画面是否因为道具、图标、信息块或装饰过多而显得模板化。
   - 如果文字或构图有问题，不要直接交付。根据失败点重写提示词并重新调用系统 `image_gen`，例如“上一版把 MCP 写错/画面太乱/标题被主视觉抢走，这次只允许出现标题 X，减少元素，增加留白，强化标题层级”。通常先重试 1-3 次；如果连续失败，再把问题和候选图说明给用户。
   - 通过检查后直接以最终文件名复制进项目，例如 `vibe-coding-newbie-cover-3x4.png`。未通过的试稿不要复制进项目；用户明确要求看候选时例外。

6. 导出和回复：
   - 保存最终图到目标视频工程的 `cover/` 子文件夹（见上文「输出位置」），无法判断工程时才回退到 `douyin-covers/YYYY-MM-DD/generated/`。
   - 最终图文件名包含标题 slug，例如 `cover/harness-cover-AI客服退错旧卡-3x4.png`。
   - 最终回复给用户本地路径，并用 Markdown 图片展示成图。

## 诊断与改版工作流

当用户给出一张**已有封面**、问“这封面为什么没人点 / 帮我改一下 / 点击率怎么提升”时，不要直接重做，先诊断：

1. 读 `references/cover-diagnosis.md`，按它的格式输出诊断：模板匹配、主要问题、流失风险、五维打分（信息密度 / 视觉锚点 / 缩略图可读性 / 色彩对比 / 可信度）、Top3 改版方案。
2. 改版顺序：先重写封面标题 → 选一个模板 → 选一个锚点 → 定配色 → 定标题位置。
3. 然后回到上面的正常生成工作流，用系统 `imagegen` / `image_gen` 重做完整封面。诊断只是分析，重做仍受同样的工具硬约束：禁止用代码改字、补字、拼背景或局部合成。

## 创作自由度

这个 skill 的核心不是复刻固定模板，而是在少量质量约束下让系统 Image Gen 自由创作。

- 不维护固定元素库。除非用户明确指定，不要求出现某个道具、场景、图标、图表或背景。
- 具体画面元素由系统 Image Gen 根据标题自由选择；提示词只控制气质、版式、标题文字和简洁程度。
- 每张封面都要避免“同一模板换标题”。差异可以来自留白、镜头、光线、主视觉尺度、标题位置和整体情绪，而不是堆更多元素。
- 配色可以根据标题变化，但整体要高级、清爽、有对比。
- 简约大方优先于信息堆砌。画面让人想点，不靠杂乱制造所谓信息量。

稳定锚点只包括：

- 泊舟 IP 人物需要能认出：黑色蓬松短发、黑框眼镜、清爽程序员气质、浅蓝衬衫或相近冷色上衣。凡是出现泊舟 IP，必须使用参考图作为 identity reference，不得只靠文字提示词生成。
- 封面必须服务标题，不为了风格牺牲标题清晰度。
- 最终发布图上的文字必须准确、可读，不能有错字、漏字、乱码或未指定的额外文字。
- 最终发布图必须是系统 Image Gen 直接生成的完整封面，不得是代码合成、局部拼贴或本地文字叠加产物。

## 自主决策权限

用户给出标题和比例后，默认直接设计并生成，不要为了常规创意细节反复询问。可以自主决定：

- 标题拆分方式和字号层级。
- 人物在画面里的位置、姿态、表情和占比。
- 整体气质、主视觉方向和留白比例。
- 主色、强调色、底板、描边等标题可读性处理。
- 是否需要副标题、标签、系列号或底部信息条。只有用户明确提供这些信息时才必须保留。

需要询问用户的情况只包括：

- 没有给出封面标题。
- 用户要求使用某张具体参考图，但路径不存在或打不开。
- 用户明确要求发布级定稿，但关键信息冲突，例如同时要求 `3:4` 和 `4:3`。

## 示例

用户：`帮我做一张 3:4 抖音封面，标题：Vibe Coding 新手村`

处理方式：重点是降低门槛和轻松进入感，不指定固定场景或道具。提示词中明确要求封面文字严格为「Vibe Coding 新手村」，分成 `Vibe Coding` 和 `新手村` 两层，画面简约、标题强、主视觉辅助。

用户：`标题：CLI 替代 MCP？可千万别搞错了，做 4:3 视频封面`

处理方式：重点是认知反差和提醒感。用清晰标题和高对比版式制造点击理由，不强制左右对比、阵营图或具体符号。

用户：`这期讲 Claude Code 的 5 个实用小技巧，封面要有信息量`

处理方式：重点是“实用”和“值得收藏”。可以保留信息层级，但不要堆小字和装饰；提示词只指定必须出现的主标题和少量短标签。

## 最终回复格式

简短说明已完成，只列最终图路径。如能展示图片，直接嵌入最终图：

```markdown
做好了：

最终图：[文件名](/absolute/path/to/final.png)

![封面](/absolute/path/to/final.png)
```
