日式杂志海报
工作流程
使用此技能将用户主题、源文本或图片集转换为日式杂志风格的海报文件。
- 在选定模板或填充插槽之前,先阅读
references/template-contract.md。 - 在实际制作前,仅进行一次表单式的需求澄清:
- 用 1-3 句简短的话总结用户当前的需求。
- 就缺失或待确认的事项进行提问,包括:风格/主题、海报数量、图片来源、模板选择、文案语气、输出目录以及任何必须使用/必须避免的内容。
- 优先使用简洁的编号问题,并在适当处提供具体的选项。
- 仅提问一次。用户回答后,不得循环追问更多细节。
- 如果用户仍有遗漏,则采用合理的默认值,并在规格文件或清单中记录这些假设。
- 根据原始需求及那一轮回答,理解用户的主题和所需输出数量。
- 选择模板:
- 当用户指定模板 ID 时,使用用户提供的。
- 当用户要求所有风格时,使用全部 8 个模板。
- 否则,选择最能匹配内容形式的最少模板数量。
- 为每个区域创建简洁内容:
title:结尾无标点。短句内部可用逗号。goldenQuote:必须以中文或英文的句末标点结尾。detail:使用正常标点符号和事实性来源背景。- 将中文引号替换为直角引号(「」),除非用户明确要求保留原文引用。
- 避免单字行以及单字加标点的行。
- 严格按照优先级选择图片:
- 用户提供的图片路径或 URL。
- 调用系统可用的模型或工具,生成与主题匹配的位图,然后在渲染前将选定的光栅文件保存到输出目录下。
- 仅当用户没有提供图片,并且可用的图片生成模型/工具不可用、失败或无法返回项目本地位图文件时,才绘制精美的 SVG 素材。在
assumptions或manifest中记录该原因。 - SVG 只能作为内部绘图源使用,在最终 HTML 渲染前必须栅格化为 PNG。
- 编写输入 JSON 规格文件并运行:
node scripts/render_poster.js --spec input.json --out output/<run-name>
node scripts/validate_poster.js --html output/<run-name>/*.html
如果验证失败,则缩短或重写文案,调整显式换行,更改图片焦点,然后重新渲染和验证。
质量要求
- 在提出并回答完一轮需求表单之前,不得开始渲染、图片生成或文案适配,除非用户明确表示跳过提问。
- 一轮需求澄清后仍缺失的细节,应通过实用的默认值来填补,而非继续提问。
- 最终的 HTML 不得引用
.svg文件或data:image/svg+xml。 - 图片来源必须严格遵循优先级:用户提供的图片,然后系统可用的位图生成,最后才是绘制精美 SVG。
- 生成的、绘制的或后备图片在放置到图片区域前,必须作为 PNG/JPEG/WebP 文件写入输出目录。
- 不要把模板后备素材或 SVG 栅格化等同于模型/工具生成的位图。如果跳过或未能使用模型/工具生成,需记录确切原因。
- PNG 海报导出默认使用 2 倍分辨率,以获得更清晰的审阅输出。
- 模板 03 对象卡片的备注必须非常简短,因为每张卡片固定高度为 216px。
- 模板 06 的图片区域必须保持
.jp-photo-zone { width: 100%; max-width: 100%; },以防止左侧图片侵入右侧文字列。
规格格式
最小输入:
{
"theme": "white",
"templates": ["vertical-02"],
"sourceText": "用户主题或源文本",
"assumptions": ["一轮需求澄清后使用的任何默认值。"],
"images": [
{
"slot": "single-photo-feature",
"src": "D:/path/to/image.png",
"fit": "cover",
"focus": "center 50%"
}
],
"content": {
"title": "海报标题",
"goldenQuote": "一句清晰的社论引言。",
"details": ["细节一。", "细节二。"]
}
}
注意:
theme接受white、midnight、light或dark。templates接受模板 ID(如vertical-02)、模板名称(如vertical-single-photo-headline)或all。content.details可以是字符串数组,也可以是包含heading、title和body的对象数组。images[].slot必须匹配模板合约中列出的data-slot-id或data-relation-id。
输出
渲染脚本会创建:
- 每个海报一个 HTML 文件。
- 如果安装了 Playwright 并且 Chromium 可用,每个海报一个 PNG 文件。
manifest.json,包含模板、主题、图片来源、输出文件路径以及验证/导出状态。- 当生成的、后备的或 SVG 源图片被栅格化时,生成
generated-images/*.png。
保持原始模板布局不变。不要修改字体大小、行高、宽度、安全边距、网格设置或视觉结构来强行适配内容。而是修改内容以适配布局。