# wechat-cover-split 模板规范

比例：`335:100`（左 `2.35:1` + 右 `1:1`） | 尺寸：1340×400 | 用途：公众号文章封面图

> 该模板渲染时会额外调用 `ffmpeg` 做顶部精确裁切，以适配 Chrome 在短横幅截图下的视口偏差。

## 适用场景

- 用户说"公众号文章封面图"
- 用户说"微信公众号头图 / 封面长图"
- 需要一张图同时切出左侧横图和右侧方图

## 切图规则

整张图由两部分组成：

- 左侧：`940×400`，比例 `2.35:1`，放标题文案
- 右侧：`400×400`，比例 `1:1`，放 icon

如果业务端需要拆图使用：

- 左图：取左侧 `940×400`
- 右图：取右侧 `400×400`

## 渲染命令

```bash
bun ./scripts/render-card.ts \
  --template wechat-cover-split \
  --out tmp/wechat-cover.png \
  --line1 "OpenAI 收购 Promptfoo" \
  --line2 "意味着什么" \
  --highlight "#22a854" \
  --bg "#eef7f2" \
  --footer "公众号 · 早早集市"
```

如果标题更长，优先继续走同一模板，而不是换模板：

```bash
bun ./scripts/render-card.ts \
  --template wechat-cover-split \
  --text "这是一篇公众号文章的长标题，需要自动切分并保留高亮重点" \
  --highlight-words "高亮重点" \
  --out tmp/wechat-cover-long.png
```

## 参数说明

| 参数 | 默认值 | 说明 |
|------|--------|------|
| `--template` | `wechat-cover-split` | 模板名称 |
| `--out` | — | 必填，输出 PNG 路径 |
| `--text` | 空 | **推荐入口**。整段标题文案，自动切分为两行并自适应字号 |
| `--line1` | 空 | 第一行标题（已有拆分结果时使用） |
| `--line2` | 空 | 第二行标题（已有拆分结果时使用） |
| `--line3` | 空 | 预留；自动并入第二行，不单独显示 |
| `--hl1/hl2/hl3` | 关闭 | 整行高亮 |
| `--highlight-words` | 空 | 按词高亮，逗号分隔，跨行生效 |
| `--highlight` | `#22a854` | 强调色 |
| `--bg` | `#e6f5ef` | 背景色 |
| `--footer` | `公众号 · 早早集市` | 底部文字 |
| `--icon` | 默认 logo | 右侧 1:1 区域 icon |

## 默认 icon

默认使用 `assets/icons/logo.svg`。如果用户指定其他品牌图标，再显式传 `--icon` 覆盖。

## 字数建议

模板使用 pretext 自适应字号，超长文案会自动缩小字体兜底，不会溢出。但视觉质量随字数增加而下降，建议控制在合理范围：

| 位置 | 建议字数 | 说明 |
|------|---------|------|
| 单行 | 12~18 个汉字 | 优先单行呈现，视觉冲击力最强 |
| 总行数 | ≤ 2 行 | 超出两行字号会明显缩小，横幅视觉受损 |
| 总字数 | ≤ 28 个汉字 | 超出建议先缩写或拆标题，而不是硬塞 |

优先做法：

1. 先抽标题主干
2. 优先单行，必要时拆成 2 行
3. 关键词可用整行或按词高亮

## 使用规则

- 用户明确说"公众号文章封面图"时，优先用本模板
- 用户只是要常规封面 / 金句图，仍使用 `poster-3-4`
- **强规则：公众号文章封面图必须至少有一个高亮词**（`--highlight-words` 或 `--hl1/hl2/hl3`），不可省略
