Card-News Maker (카드뉴스 메이커)
将主题、来源文章(URL)或草稿文件转化为一组精美的 800×800 卡片新闻图片。用户每次提供一个新主题;你负责读取/推导内容,将其结构化到卡片中,进行渲染,然后在交付前执行自检和修复循环。
外观和风格是固定的(每套卡片感觉像系列作品),但颜色主题会根据每次的主题自适应。布局、排版、间距和审查循环保持不变。
何时询问 vs. 何时决定
用户明确希望你在真正存在歧义时提出问题,而不是让你猜测。当答案会显著改变输出且无法推断时,请使用 AskUserQuestion(先提供推荐选项)。否则,自行决定并简要说明你的选择。
自行决定(不要询问):
- 卡片数量 — 根据内容调整,通常为8–15张(封面 + 正文 + 封底)。
- 颜色主题 — 选择适合主题/品牌的颜色(参见参考资料)。
- 每张卡片的布局(标准正文卡 vs. 统计卡 vs. 图表/清单卡)。
- 韩文文案、强调段落、标签文字。
询问用户(当不明确时):
- 来源模糊:仅有一个一行主题且没有来源,范围很广 → 询问是否要网络搜索,或者期望的角度/深度。
- 封面标题:没有强烈唯一标题时(默认:提供一个标题 + 提供更好的备选方案,让用户选择)。
- 受众/语气:如果主题可以有多种解读(例如,执行简报 vs. 新手解释),且会实质性地改变文案。
- 用户提示为“判断模糊”的任何内容 — 将其作为问题提出。
当某个反复出现的偏好被确定后,可以将其记录下来以便后续运行更顺畅 — 但永远不要因为一个可以用合理默认值回答的问题而阻塞整个工作。
工作流程
1. 获取内容
- URL → 获取(WebFetch)并提取论点、关键点、术语、显著的数字/引用以及主要结论。
- 文本 / 草稿文件 → 读取它;将提供的逐章草稿视为主要骨架。你可以稍作润色,但保留用户的结构。
- 仅有一行主题 → 如果范围很广且没有来源,在编造内容之前询问是否要进行网络搜索或期望的角度。
忠实于来源。避免过度解读。当你添加“我们应学到的教训 / 시사점”角度时,将其表述为从来源中得出的经验教训,而非个人处方。将任何“做X / 하라”式的命令重新表述为观察结果(“X가 중요하다”、“X일 때 강해진다”)。
2. 规划卡片组
决定卡片数量和每张卡片的角色。典型流程:
封面 → 钩子/介绍 → 背景 → 核心概念(每卡一个想法)→ 一张统计或图表卡片(有助于信息传递)→ 结束语(+ 来源链接)。
使用每张卡片一个想法。如果一张卡片正文会溢出,则拆分它。
选择适合主题的颜色主题,并阅读 references/design-system.md 了解精确的令牌、卡片布局和组件模式。阅读 references/card-patterns.md 了解现成的卡片变体(封面、正文、统计、图表、清单、封底)。
3. 构建HTML
使用 scripts/build.js 作为起点 — 它已经编码了布局系统(基础CSS、标签芯片、标题、分隔符、带高亮span的正文、页脚、河波装饰)并为每张卡片输出一个HTML文件到 cards/。将其复制到工作目录中,为此主题编辑卡片定义和主题颜色。不要从头重写布局引擎。
4. 渲染为PNG
运行 scripts/render.js(Playwright + Chromium,deviceScaleFactor 2 → 清晰800×800 PNG,输出到 out/)。一次性设置(如果未安装Playwright):npm install playwright && npx playwright install chromium。
5. 自检和修复循环(始终执行)
这是必需的,不是可选的 — 它使输出感觉完整。
- 读取渲染后的PNG(使用Read工具)并检查每张卡片。
- 检查:正文文本是否与页脚冲突、空白区域不平衡、文本溢出/尴尬的换行、对比度/可读性、一致的标签和页脚、正确的页码和总页数。
- 在
build.js中修复问题,重新渲染,并重新检查受影响的卡片。 - 只有整组卡片干净时才交付。请参阅
references/review-checklist.md获取完整列表和常见修复方法。
6. 交付
保存位置 — 根据上下文选择输出位置,使结果位于用户期望的位置:
- 如果你在项目/仓库内工作(会话有项目根目录 — 例如git仓库,或者用户明确在特定工作目录中操作):将所有内容保存到该项目根目录下的
<project-root>/cardnews/<topic>/。中间产物(工作中的build.js、cards/*.html、out/*.png)也放在那里,以便卡片组可重现且可与项目一同进行版本控制。只要存在项目上下文,这是默认行为。 - 如果没有项目上下文(一次性、临时请求,没有工作仓库):保存到全局的、操作系统合适的位置 —
<home>/cardnews/<topic>/(兼容Windows、macOS、Linux;避免硬编码Downloads)。 - 如果用户指定了位置,则优先于上述规则。
说明文件的保存位置。默认输出仅为PNG(当保存到项目时,同时保留中间HTML,根据规则1)。仅在用户要求时(或主动提供)使用 scripts/make_pdf.py 构建A4 PDF,该脚本将每张卡片放置在A4页面上,左右边距为零(卡片填满页面宽度),上下边距相等 — 请阅读其头部注释以了解行为。
保留工作文件(build.js 等)在项目文件夹中,以便用户可以调整文案并重新运行 node build.js && node render.js。
默认值(此技能的专属风格)
- 尺寸:800×800 正方形,2倍渲染比例。
- 每张卡片结构:标签芯片(编号 + 标签)→ 标题 → 分隔符 → 带选择性高亮span的正文 → 统一页脚(来源 · NN / 总数)。
- 封面和封底:主题颜色的全幅渐变,波浪图案;封底卡片带有来源链接。
- 输出:默认PNG;按需生成A4 PDF。
- 语言:韩文文案(技术术语/标识符保持原样)。
参考资料
references/design-system.md— 颜色主题、CSS令牌、组件解剖。references/card-patterns.md— 可复制粘贴的卡片变体及示例。references/review-checklist.md— 需要验证的内容以及如何修复每个问题。scripts/build.js— HTML卡片构建器(布局引擎 + 卡片定义)。scripts/render.js— Playwright HTML→PNG渲染器。scripts/make_pdf.py— A4 PDF组装器(无边距,上下边距相等)。