---
name: review-poster-generator
description: Generate a polished Chinese marketing poster from uploaded positive-review screenshots, especially education testimonials, score-improvement proof, parent feedback, and teacher comments.
---

# Review Poster Generator

当用户上传一张或多张好评截图，并希望生成对应的海报图、口碑图、提分榜、家长反馈图、老师寄语图、朋友圈宣传图或小红书封面时，使用这个 skill。

## 目标

把原始截图中的真实反馈整理成一张可直接传播的中文营销海报。海报需要保留截图作为可信证据，同时提炼出清楚的传播叙事：谁有进步、哪个科目有变化、结果是什么、为什么这个反馈可信。

## 最高优先级：截图原样保真

用户提供的截图是证据原件，必须严格原样使用。以下规则高于本文档中的其他规则：

- 不得修改截图内部任何内容。
- 不得重绘聊天记录。
- 不得改写、替换、遮挡、模糊截图中的头像、昵称、姓名、学校、聊天文字、图片、表情、时间、气泡、背景水印或任何可见元素。
- 不得把截图内容重新排版成“仿聊天记录”。
- 不得为了隐私保护而自动打码；只有用户明确要求打码时，才对用户指定区域做处理。
- 不得把截图中的头像替换成老师头像或品牌头像。
- 不得给截图内部添加红框、标签、贴纸、标注或装饰。
- 可以对整张截图作为图片元素进行等比例缩放、裁切外边缘、加外部边框、加投影，但不能改变截图内部像素内容。
- 如果需要强调截图内容，只能在截图外部添加说明文字，不要覆盖截图内部。
- 如果截图必须裁切，裁切不能切掉用户反馈核心内容；不确定时完整展示截图。

## 输入信息

优先从用户上传的截图和文字说明中提取以下信息：

- 品牌或项目名称，例如网易有道、有道领世，或用户指定的其他品牌。
- 海报用途，例如提分榜、家长好评、老师寄语、续报喜报、学员案例、朋友圈海报、小红书封面。
- 学生展示名、头像、聊天昵称等信息默认不遮挡、不改写，按用户上传截图原样展示。
- 科目、老师、分数变化、排名变化、考试名称、学习结果。
- 传播语气，例如官方、温暖、喜庆、高级、校区风、朋友圈原生感。
- 输出尺寸。默认规则：
  - 如果用户明确指定尺寸或渠道，按用户要求执行。
  - 如果用户未指定尺寸，先判断上传截图比例：竖版截图默认生成 9:16 竖版海报，横版截图默认生成 16:9 横版海报。
  - 信息流海报/朋友圈图在用户明确要求“朋友圈竖图”“小红书封面”等场景时，可使用 3:4 或 9:16。

如果关键信息在截图里能看出来，就直接提取；如果看不出来，不要编造具体分数、排名、学校或授权信息。

## 插件内置素材

插件内已经包含品牌和老师素材，生成海报时优先使用这些文件：

- 品牌 logo：
  - `assets/brand/logo-with-bg.png`：横向带背景 logo，适合放在海报顶部品牌条。
  - `assets/brand/brand-logo.png`：方形品牌 logo，适合做插件展示、角标或头像式品牌标识。
- 老师资料索引：`assets/data/teachers.json`。
- 老师头像：`assets/teachers/avatar/<teacher-key>.png`。
- 老师半身照：`assets/teachers/halfbody/<teacher-key>.png`。

老师匹配规则：

1. 如果用户明确指定老师，优先用用户指定老师。
2. 如果截图里出现老师姓名或昵称，尝试匹配 `teachers.json` 里的 `name`、`displayName`、`aliases`。
3. 匹配成功后，海报中的老师姓名、头衔、科目、口号优先来自 `teachers.json`。
4. 如果匹配失败，只使用截图或用户提供的老师姓名，不编造头衔、履历和照片。
5. 若老师资料和截图矛盾，以用户明确说明和截图事实为准；内置资料只作为补充素材。

老师图片使用规则：

- 提分榜、老师寄语、名师权威版：优先使用 `halfbody` 半身照，通常放在右下角或右侧。
- 家长好评卡片、口碑墙、信息流卡片：优先使用 `avatar` 头像，作为小尺寸老师标识。
- 如果半身照尺寸不适合当前版式，可以改用头像或只使用老师姓名。
- 不要把老师照片裁到只剩局部五官；保持人物完整、专业、亲和。

## 成图方式选择

如果海报需要出现内置 logo、老师头像、老师半身照、二维码或用户上传的原始截图，默认不要用纯图像生成模型直接生成整张海报。纯图像生成可能无法精确读取本地素材路径，也可能把 logo、人物照片、中文文字画错。

默认优先生成 PPTX：

- PPTX 是当前推荐的第一交付格式，速度更快，也方便用户后续编辑。
- 截图作为原始图片插入 PPT，不修改截图内部像素。
- 标题、副标题、老师信息、老师寄语都做成 PPT 可编辑文本。
- 如果用户需要社群发布图，再从 PPTX 导出 PNG。
- 用户上传几张截图，就必须输出几页海报；不要只挑一张，也不要把多张截图合成少数几页，除非用户明确要求合并。
- 多图里同时包含横版截图和竖版截图时，必须分开输出两个 PPTX：竖版截图进入 9:16 竖版 PPT，横版截图进入 16:9 横版 PPT。不要把横版截图硬塞进竖版 PPT，也不要把竖版截图硬塞进横版 PPT。

快速生成 PPTX 脚本：

```bash
node /Users/liushumao/plugins/review-poster-generator/scripts/render_ppt.js \
  --screenshot=/path/to/screenshot.jpg \
  --teacher=jiankun \
  --subject=英语 \
  --title-a='期末英语' \
  --title-b='明显进步' \
  --subtitle='从课上反馈到家长认可，孩子信心被看见。' \
  --quote='每一次进步，背后都是课上听懂、课后坚持和方法复盘。' \
  --out=/path/to/output.pptx
```

图片来源规则：

- 如果用户已经在当前对话中上传或粘贴了图片，优先使用这张对话图片作为截图证据，不要先去微信临时目录或全盘搜索。
- 只有当代码合成必须使用本地路径、且对话图片没有可用文件路径时，才请求用户提供本机文件路径。
- 如果用户同时提供了图片和路径，以用户当前消息中的图片内容为准；路径只作为读取原图的辅助。
- 不要把无关的近期图片误认为用户当前上传的截图。

需要直接输出 PNG 时，使用插件内置快速渲染脚本：

```bash
node /Users/liushumao/plugins/review-poster-generator/scripts/render_poster.js \
  --screenshot=/path/to/screenshot.png \
  --teacher=jiankun \
  --subject=英语 \
  --title='语法能力|明显提升<br>冲刺重点班' \
  --subtitle='拿到3个转重点班名额之一，孩子的语法短板正在被系统补起来。' \
  --quote='语法不是死记硬背，关键是把规则讲清、练透。继续跟着节奏复盘试卷，把每一次进步都稳稳留下来。' \
  --out=/path/to/output.png
```

脚本会自动读取截图比例：横版截图默认输出 16:9，竖版截图默认输出 9:16。只有脚本不能满足特殊版式需求时，才手写 HTML/CSS 模板。

默认采用“代码合成海报”：

1. 使用 HTML/CSS、Canvas、SVG 或前端页面搭建海报版式。
2. 把内置 PNG 素材作为真实图片元素插入画面。
3. 把用户上传的好评截图作为真实图片元素插入画面，并按需要裁切或加边框。
4. 用真实文本排版中文标题、字段、老师寄语和家长反馈。
5. 使用浏览器截图、canvas 导出或 html2canvas 导出最终 PNG。

只有在以下情况才使用图像生成模型：

- 生成抽象背景、装饰纹理或非关键插画。
- 用户明确表示不需要精确 logo、老师照片和截图原图。
- 先生成视觉参考图，再用代码复刻最终可发布版本。

硬性要求：

- logo 必须来自 `assets/brand/` 的真实文件。
- 老师照片必须来自 `assets/teachers/` 的真实文件。
- 上传截图必须作为真实截图素材出现在海报中，不能让模型重画聊天记录。
- 中文主文案必须用真实文本渲染，避免生成模型产生错字、乱码或字形变形。
- 用户上传的截图如果有本地路径且来自微信、临时目录或聊天附件，先复制到当前工作区的稳定路径，再用于 HTML/CSS/canvas 合成，避免二次渲染时原图失效。
- 默认不对学生姓名、头像、聊天昵称、学校、微信名或截图内容做隐私遮挡。只有用户明确要求“打码”“遮挡”“脱敏”“隐私处理”时，才进行遮挡或改写。
- 即使用户没有说明授权，也必须保持截图原样；不要主动保护、替换或弱化头像和昵称。

## 默认画布与版式规则

除非用户明确指定尺寸，否则按上传截图比例决定海报方向：

- 竖版截图：默认做 9:16 竖版海报。
- 横版截图：默认做 16:9 横版海报。
- 多张截图：用户上传几张就做几张。所有竖版截图生成同一个 9:16 竖版 PPT，所有横版截图生成另一个 16:9 横版 PPT；如果只有一种比例，就只输出对应的一个 PPT。
- 混合横竖截图时，不要询问用户是否分开，默认直接分开做；文件名必须能看出 `vertical` 和 `horizontal`。

横版截图的处理：

- 默认不要硬塞进竖版海报，否则截图会变小、信息不可读。
- 优先做 16:9：左侧或上半区放大截图，右侧放标题、老师信息和老师寄语。
- 截图必须清晰可读，尽量完整展示关键聊天内容。

竖版截图的处理：

- 默认做 9:16：截图作为主要视觉证据，可放在中部或左侧。
- 如果老师半身照会遮挡任何文字，必须缩小老师照片；不要通过换位置来解决遮挡。
- 老师半身照可轻微压住截图边缘，但不能遮挡任何文字。

人物和素材摆放：

- logo 贴左上角时应与画布左上角无缝贴边，不留白边；除非用户要求留边距。
- 老师半身照默认作为辅助视觉，不要过大；优先保证截图和中文文案可读。
- 老师半身照和圆形老师头像不能遮挡任何文字，包括截图文字、标题、老师卡片文字、老师寄语和角标。如果发生遮挡，必须缩小老师图；不要移动老师图或改用其他位置来解决遮挡。
- 竖版模板里老师半身照必须“落地”：人物底部应紧贴老师寄语框上沿或保持极小间距，看起来站在寄语区域上方，不能悬浮在画面中部。
- 如果老师半身照贴近老师寄语后挡住任何文字，只能缩小半身照，不能改到其他位置，也不能让人物继续悬空。
- 老师寄语区域可以放圆形老师头像，填补空白并增强真实感。
- 右上角装饰优先使用轻量矢量元素，例如奖杯、星标、箭头、学习徽章；避免重复写已经出现在标题里的文字。

## 禁止的排版错误

生成最终海报时必须避免以下问题，一旦出现就要修改代码重新导出：

- 主标题、副标题、截图标签、信息卡片互相遮挡。
- 红色标签压住聊天截图中的关键文字。
- 老师半身照遮挡截图中的关键反馈、结果、分数、老师姓名或家长原话。
- 老师半身照或头像遮挡任何字体，即使不是核心文字也不允许。
- 老师头像、老师卡片、结果卡片互相重叠。
- 底部黑色大色块遮挡海报主体，除非用户明确要求这种风格。
- 在截图上方叠加“聊天原图证据”等大标签；如需要标注，只能放在截图外侧或截图卡片角落空白处。
- 在同一画面中重复堆叠过多结果卡片，例如“本次结果”“进步起点”“家长原话”同时出现，导致版面拥挤。
- 把标题字号放到覆盖副标题或截图的位置。

## 已验证模板规则

优先复用这些稳定模板，不要自由发挥出新的复杂版式。

### 9:16 竖版模板

- 顶部：红色品牌条，logo 贴左上角，右侧放品牌口号。
- 标题区：主标题放在顶部下方，副标题独立占一行或两行，标题与副标题之间必须留足间距。
- 信息条：只保留 `学科` 和 `老师` 两个 chip，避免堆太多字段。
- 截图区：中部放大展示真实截图，截图内部保持原样，截图上不覆盖大标签。
- 老师区：老师半身照放右下或截图右下边缘，默认缩小处理；可以轻微压住图片空白边缘，但不能遮挡任何文字。
- 老师半身照底部必须贴近老师寄语框上沿，形成稳定落点；不要让老师照片停在截图和寄语之间的空白区域。
- 老师信息卡：放在截图下方或老师旁边，不能遮挡人物脸部。
- 老师寄语：底部白底红框，左侧圆形老师头像，右侧真实文本。
- 装饰：右上角可放浅色奖杯/星标矢量，不放大段文字。

### 16:9 横版模板

- 顶部：红色品牌条，logo 贴左上角，右侧放品牌口号。
- 左侧：真实截图大卡片，截图内部保持原样，必须完整或基本完整可读。
- 右侧：主标题、副标题、学科/老师 chip、老师信息卡。
- 右下：老师半身照和老师寄语框，老师照片不得压住寄语文字。
- 横版里如果使用老师半身照，也要靠近老师寄语区域，不能悬浮；若空间不足，优先缩小或改用头像。
- 底部：只放小号授权提示，不使用大面积黑色横条。

## 导出前重叠检查

导出 PNG 前必须检查页面视觉结果：

1. 用浏览器渲染 HTML/CSS/canvas 结果并截图。
2. 检查主标题、副标题、chip、截图、老师照片、老师卡片、老师寄语是否互相遮挡。
3. 检查截图是否保持原样，截图内部没有被打码、改字、替换头像、重绘、加标签或遮挡。
4. 检查截图中的关键聊天内容是否可读。
5. 检查老师脸部是否完整、没有被卡片或边界裁切。
6. 如果发现老师图片遮挡文字，必须先缩小老师图片，不要移动老师图片位置；如果其他元素遮挡，优先减少元素数量、降低标题字号、增加模块间距，然后重新导出。
7. 只有通过重叠检查和截图原样检查后，才能把图片交付给用户。

## 默认流程

1. 认真查看用户上传的截图，识别聊天内容、成绩信息、家长反馈、老师评价和品牌元素；截图本身必须作为原始图片元素保留。
2. 提取可以放进海报的事实信息，把“截图原文”和“设计文案”分开处理。
3. 判断用户是否明确要求隐私打码。默认不遮挡任何敏感信息，保留截图原貌；只有用户明确要求时才隐藏学生真实姓名、手机号、微信名、头像、学校名等信息。
4. 从 `assets/data/teachers.json` 匹配老师素材；匹配成功时使用对应老师资料和图片。
5. 根据内容选择版式：
   - `score-board`：左侧放截图证据，右侧放提分信息和老师寄语。
   - `testimonial-card`：突出一段家长好评，搭配品牌视觉、老师形象或简洁装饰。
   - `multi-review-wall`：多张截图组成口碑墙，中间放主标题。
   - `mobile-story`：竖版大标题，配截图裁切和底部可信说明。
   - 上传截图为横版时，优先使用 16:9 横版，把截图放大作为左侧或上半区证据，不要硬塞进竖版导致截图变小。
   - 上传截图为竖版时，优先使用 9:16 竖版，把截图作为主要视觉证据。
6. 生成简洁、有传播感的中文海报文案。
7. 当用户要最终成图时，优先用代码合成方式生成 PNG，确保 logo、老师照片、截图和中文文案都是真实可控的元素。
8. 只有需要背景纹理或装饰插画时，才单独调用图像生成能力生成非关键视觉素材。
9. 生成后检查文字可读性、隐私处理、事实一致性和整体视觉完成度。

## 视觉风格

教育类好评海报默认采用以下方向：

- 以白底为主，搭配明确的红色品牌强调色。
- 有品牌需求时，在顶部优先使用 `assets/brand/logo-with-bg.png`。
- 保留上传的聊天截图，让它成为“真实反馈”的证据锚点。
- 主成果使用醒目的中文标题字，例如“从不及格到84分”。
- 老师寄语、家长反馈使用更小但清晰的正文排版。
- 顶部可加入品牌条、项目名或阶段标题。
- 避免杂乱贴纸、虚假奖章、夸张印章、未经授权的认证标识。

## 常用文案结构

### 提分榜海报

- 主标题：`2024 春季期末提分榜`
- 信息字段：`学生：*小宇`、`提分科目：数学`、`跟随老师：刘思雨老师`
- 成果表达：`提升效果：从不及格到84分，数学开始逆袭`
- 老师寄语：基于截图内容写一段温暖鼓励的话，不超过 70 个中文字符。

### 家长好评海报

- 主标题：`家长真实反馈`
- 副标题：`坚持学习后，孩子开始主动进步`
- 证据标签：只有当用户明确说明已授权时，才写 `截图已获授权`。
- 页脚：品牌名、项目名、日期或校区信息，按用户提供内容添加。

## 代码合成 Prompt 模板

当需要最终可发布海报时，优先按这个方向执行：

```text
请用 HTML/CSS 或 Canvas 生成一张中文教育好评海报，并导出 PNG。
画布比例：[尺寸/比例]。
必须真实使用这些图片文件：
- logo：[logo 路径]
- 老师图片：[老师头像/半身照路径]
- 用户上传截图：[截图路径或附件]
版式：[score-board/testimonial-card/multi-review-wall/mobile-story]
海报文字：
[主标题]
[学生/科目/老师/考试等字段]
[提升结果或反馈重点]
[老师寄语或家长反馈摘录]
截图要求：必须使用用户原始截图，不能修改截图内部任何内容，不能打码、替换头像、改字、重绘或添加截图内部标注。
隐私要求：默认不遮挡任何截图信息；只有用户明确要求时才打码。
要求：中文文字用真实文本渲染，老师图片不能遮挡任何文字，所有元素不得重叠，最终 PNG 可以直接发布。
```

## 图像生成 Prompt 模板

仅在生成背景、纹理、非关键装饰图时调用图像生成工具。不要要求图像生成模型重画 logo、老师照片、聊天截图或大量中文文案。

```text
生成一张适合中文教育好评海报的背景/装饰素材。
画布比例：[尺寸/比例]。
品牌风格：[品牌/项目名]，白色背景，红色强调，专业教育行业营销视觉。
不要生成 logo、老师照片、聊天截图或长段中文文字。
画面留出干净区域，方便后续用代码放入真实素材和真实文本。
```

## 质量检查

交付前必须检查：

- 海报在手机和电脑预览尺寸下都视觉平衡。
- 中文文字清楚可读，没有重叠、截断或错位。
- logo 和老师照片来自插件内置真实素材，不是模型重画出来的相似图。
- 上传的好评截图是真实截图元素，不是模型重新生成的聊天画面；截图内部所有内容保持原样。
- 所有分数、科目、老师、考试等事实都来自截图或用户说明。
- 如用户未明确要求打码，截图信息保持原样不遮挡；如用户明确要求打码，则隐私敏感信息已经遮挡或改写。
- 最终图片能作为一张可直接发布的营销素材。

## 需要追问的情况

只有当缺失信息会明显影响海报结果时才追问，例如：

- 用户没有说明要做横版还是竖版，而发布渠道会影响尺寸。
- 截图里看不清具体分数或科目，但用户要求写具体提分结果。
- 品牌风格不明确，且用户要求强品牌化视觉。
- 用户明确要求展示/隐藏真实姓名、头像、学校等授权信息，但当前说明不清楚。

其他情况下，做保守假设并继续执行。
