Communitygithub.com

Buds-2025/jp-magazine-poster

Codex 技能,用于生成日式现代编辑风格社交卡片海报。

jp-magazine-poster 是什么?

这是一个专为 Codex 设计的 AI 技能,能够将用户提供的主题、文本或图片素材,自动转化为具有日本现代编辑风格的社交海报。它通过一套严谨的工作流程,引导用户完成一轮一次性需求澄清(包括风格、海报数量、图片来源、模板选择等),之后便自主执行:根据内容选择最合适的模板(共 8 种)、为每个区域(标题、金句、正文)创作简洁文案、严格遵循优先级顺序获取图片素材(优先用户提供,其次生成位图,最后使用 SVG 并栅格化),并最终通过脚本渲染出 HTML 和 PNG 海报文件。该技能支持 `white`、`midnight`、`light`、`dark` 等多种主题,并内置质量校验与重试机制,确保输出的海报符合模板的视觉布局,不改变字体、间距等结构,而是通过调整内容来适配。

兼容平台~Claude Code✓Codex CLI~Cursor
npx skills add Buds-2025/jp-magazine-poster

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

日式杂志海报

工作流程

使用此技能将用户主题、源文本或图片集转换为日式杂志风格的海报文件。

  1. 在选定模板或填充插槽之前,先阅读 references/template-contract.md。
  2. 在实际制作前,仅进行一次表单式的需求澄清:
    • 用 1-3 句简短的话总结用户当前的需求。
    • 就缺失或待确认的事项进行提问,包括:风格/主题、海报数量、图片来源、模板选择、文案语气、输出目录以及任何必须使用/必须避免的内容。
    • 优先使用简洁的编号问题,并在适当处提供具体的选项。
    • 仅提问一次。用户回答后,不得循环追问更多细节。
    • 如果用户仍有遗漏,则采用合理的默认值,并在规格文件或清单中记录这些假设。
  3. 根据原始需求及那一轮回答,理解用户的主题和所需输出数量。
  4. 选择模板:
    • 当用户指定模板 ID 时,使用用户提供的。
    • 当用户要求所有风格时,使用全部 8 个模板。
    • 否则,选择最能匹配内容形式的最少模板数量。
  5. 为每个区域创建简洁内容:
    • title:结尾无标点。短句内部可用逗号。
    • goldenQuote:必须以中文或英文的句末标点结尾。
    • detail:使用正常标点符号和事实性来源背景。
    • 将中文引号替换为直角引号(「」),除非用户明确要求保留原文引用。
    • 避免单字行以及单字加标点的行。
  6. 严格按照优先级选择图片:
    • 用户提供的图片路径或 URL。
    • 调用系统可用的模型或工具,生成与主题匹配的位图,然后在渲染前将选定的光栅文件保存到输出目录下。
    • 仅当用户没有提供图片,并且可用的图片生成模型/工具不可用、失败或无法返回项目本地位图文件时,才绘制精美的 SVG 素材。在 assumptions 或 manifest 中记录该原因。
    • SVG 只能作为内部绘图源使用,在最终 HTML 渲染前必须栅格化为 PNG。
  7. 编写输入 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。

保持原始模板布局不变。不要修改字体大小、行高、宽度、安全边距、网格设置或视觉结构来强行适配内容。而是修改内容以适配布局。

相关技能