cover-imagelisted
Install: claude install-skill anneheartrecord/charles-skill
# 封面图生成(cover-image)
## 第一性原则(骨架,先于一切排版)
> **封面是给人看的,标题大部分是给机器看的。**
- 瀑布流里人的第一视觉落在面积最大的封面图上,封面文案决定 CTR。封面文案**只对人**:要抓睛、接地气,路线只有两条——**引发好奇**或**产生共鸣**。
- 标题的首要任务是**搜索索引**:在表达清楚的前提下覆盖尽可能多的核心关键搜索词、承接用户会输入的长尾问题(如「苹果手机如何设置捷径?」)。爆款常常是「封面抓人 + 标题读起来奇奇怪怪」,如「小学单词速记!单词脑图助记600词」——覆盖了【小学单词】【单词速记】【单词脑图】【助记】等一串搜索词。
- **本 skill 只负责封面这一半**。绝不往封面文案里堆关键词;标题那一半交给 `xhs-title` / `dbs-xhs-title`(起标题)和 `xhs-keyword-strategy`(关键词覆盖)。用户要「标题+封面」整套时,两条线分开做:封面走情绪,标题走搜索。
## 封面文案怎么写(核心工序)
封面上最大的那行是**钩子(hook)**,不是文章标题。原标题降级为下方小字(`--subtitle`)或干脆交给标题线去做关键词版。
1. **从原文挖真实的观点/金句**,不凭空造、不标题党到失真。
2. 每个钩子明确走一条路线并标注:
- **好奇路线**:反常识、留悬念、直接抛扎眼结论(「一夫一妻,本就是反人性的」「去人才高地竞争,到人才洼地赚钱」)。
- **共鸣路线**:说出目标读者心里那句没说出口的话,越口语越好(「不怕黑子,就怕没黑子」)。
3. **接地气**:口语、短句、具体名词;书面语和抽象大词一律毙掉。
4. 形式约束:整句 ≤ ~14 字,用 `|` 分两行、每行 ≤ ~7 字;用 `*词*` 高亮 2-3 个最扎眼的字。
5. **默认给 4-6 个候选(好奇、共鸣两条路线各 2-3 个),标明路线,让用户挑**,再定稿渲染。
6. 自检:把候选放进想象中的瀑布流——旁边全是别人的封面,这句话能不能让手停下来?不能就重写。
## 渲染管线
`HTML/内联CSS/SVG → 本机 Chrome headless 截图 → PNG`,只用系统字体(Songti SC / Kaiti SC / Heiti SC),不联网、不用文生图模型,确定性、免费、风格一致。核心工具:`render-cover.mjs`(本目录)。
```bash
node ~/.agent-harness/skills/cover-image/render-cover.mjs \
--theme life \
--kicker "随笔 · 两性" \
--hook "一夫一妻|本就是*反人性*的" \
--subtitle "我对两性的理解" \
--out "/绝对路径/我对两性的理解-cover.png"
```
- `--hook` 必填:封面主角钩子,`|` 分行、`*词*` 高亮。
- `--subtitle` 文章真实标题(渲染成「本文 · <标题>」小字),可省略。
- `--kicker` 左上栏目标签、`--byline` 左下中性描述、`--brand` 右下角标,均可省略。
- `--theme` = `invest` | `tech` | `life`(省略默认 life);`--out` 必填绝对路径。
- 尺寸:默认 16:9(1600×900,输出 2x=320