Petit Prince Story — markdown → 小王子故事分镜 SVG
核心定位
把 markdown 每个章节画成一张《小王子》手绘风格的故事分镜:小王子常驻一颗星球,该章主旨决定星球上迎来哪位象征角色(玫瑰 / 狐狸 / 飞行员 / 蛇),配一句 ≤12 字金句。多章可合成纵向长卷。
目标不是花哨插画,而是安静、克制、有呼吸感的故事速写。七条铁律:语义贴切 + 构图统一 + 无重叠 + 宁缺毋滥 + 每幕环境唯一 + 每幕客人唯一 + 意料之外的吸引。
> 每幕环境唯一:相同客人出现多幕时,星空布局、十字星坐标、小行星造型、指路星形态等环境变量必须重新设计,确保每幕视觉唯一,不靠文字硬分。
>
> 每幕客人唯一:同一篇文档中,每位迎客角色(玫瑰/狐狸/飞行员/蛇/点灯人)最多出现一次。若章节数 ≤5,客人各占一幕互不重复;若章节数 >5,多出章节用「王子独行」填充,不得重复使用已出现的角色。此举确保"进门看到谁"本身就是一个线索——读者不需要依赖文字来分辨场景。
> 意料之外的吸引:每幕必须提供一个让用户意想不到的视觉收获——非常规的道具组合、出人意料的星象、客人不在预期位置的构图、打破常规的布局(V1–V6)、或背景氛围层的巧妙运用。不是刻意猎奇,而是在克制中留一个"咦?"的入口,让用户每次翻到都想再看一眼。
先读这些参考(按需读取,不要一次塞满上下文)
references/svg-style.md— 画风(line/watercolor)、配色、必须 / 绝对不要。references/characters.md— 6 角色象征、决策表、统一 SVG 片段。references/composition.md— 竖卡解剖、自适应尺寸、长卷 / 网格合成。references/scene-template.svg— 带注释的 600×800 骨架,直接套用。references/qa-checklist.md— 生成后必过项 / 失败信号 / 迭代。assets/examples/— 仅低频风格校准,不要照抄构图。
参数(从用户话语解析,全可选)
| 参数 | 取值 | 默认 |
|---|---|---|
style |
line / watercolor |
line |
size |
WxH 或 16:10 等 |
600x800 竖卡 |
composite |
scroll(纵向长卷) / grid(3 列网格,放不下换行) / none |
grid |
工作流
0. 流程告知(用户触发后立即执行)
用户要求「转成小王子故事分镜」后,先回复以下工作流概览,让用户了解全貌后再开始:
> 我将按以下步骤把你的文档画成小王子风格的故事分镜:
> ① 消化正文 → 按章节切分,每章匹配一位迎客角色(玫瑰/狐狸/飞行员/蛇/点灯人/王子独行)
> ② 出分镜表 → 列出每幕角色、金句、寓意,请你确认结构
> ③ 生成 SVG → 逐幕绘制手绘风格分镜卡
> ④ QA 检查 → 确保无重叠、角色准确、金句合规
> ⑤ 保存交付 → SVG 存至 assets/illustrations/,合成网格/长卷
> ⑥ 生成画廊 → 输出 gallery.html 交互浏览页
> ⑦ (可选)导出 GIF → 生成动画
>
> 预计共 N 幕(超 12 幕会合并次要章节)。确认后我开始第 ① 步?
用户确认后,再进入 1. 消化正文 开始实质工作。
1. 消化正文
读 markdown,按 H2/H3 切章节(前言 / 引言 → 一幕「启程」;无标题单段 → 单幕)。每章:按 references/characters.md 决策表选迎客角色;提炼 ≤12 字金句(抽不出用章节标题)。
2. 先出分镜策略
用户若只说「想想怎么配图」,先给一张分镜表(不画图),每幕写清:章节 / 迎客角色 / 金句 / 寓意(≤12 字)/ size / 是否入长卷。默认 4-8 幕,短文 1-3 幕,长文不超过 12 幕(合并次要章节)。让用户先看清结构。
3. 单张生成
用户明确要出图后,每幕套 references/scene-template.svg 骨架,换 #guest(取自 characters.md)+ 标题 + 金句。小王子复用统一定义,不要每幕重画。watercolor 时几何不变,按 svg-style 调色板上色。
客人唯一检查:分镜表确定后逐幕核对客人分配,确保无重复角色。如有重复,将后续章节调整为「王子独行」或合并章节减少幕数。
变量规则(寓意文字 / 角色区分度 / 可选道具 / 惊喜元素 / 氛围层 / 构图变量 / 吸引力检查)见 references/svg-style.md。
4. 检查与迭代
按 references/qa-checklist.md 逐幕过。出现失败信号就重生成。
5. 保存交付
workspace 内工作时:
- 单张分镜 → assets/illustrations/,按 NN-章节名.svg 命名
- 合成图 → 项目根目录:
- scroll.svg(纵向长卷,等宽 600px,幕间夹星带过渡)
- grid-3xNX.svg(网格,N 行,如 6 幕 → grid-3x2.svg)
保留原文件,不覆盖已有资产。
6. 将交付图合并动态页面
用 assets/illustrations/ 内的单张 SVG 生成单一可预览网页 gallery.html(存于项目根目录),参考 references/gallery-template.html 实现。
7. 导出 GIF 动画(可选)
生成分镜 SVG 后,可运行脚本导出为动画 GIF:
node .claude/skills/petit-prince-story/scripts/generate-scenes-gif.js
脚本会自动扫描 assets/illustrations/ 下的所有 SVG,替换文字(标题 / 金句 / 寓意)后渲染为 GIF,输出到项目根目录 petit-prince-story-animated.gif。
输出口径
生成前:分镜表短而准。生成后:报生成了几幕、每幕客人 + 金句、是否长卷、保存路径、哪些稳 / 哪些可选。不要长篇讲风格理论,让图自己说话。