PPT Studio
将 PPT 制作视为“内容架构 + 信息策划 + 视觉设计 + 格式渲染”问题,而不是从主题直接跳到模板生成。
核心原则
- 内容优先于形式。
- 门禁优先:未完成阶段零的启动门禁确认,不得生成大纲之后的任何页面或视觉产物。
- 先调研和澄清需求,再生成大纲。
- 策划与视觉设计分阶段完成。
- 每页只承担一个主要沟通任务,并尽量使用结论型标题。
- 页数由内容密度动态决定,用户给出的页数是区间参考而不是硬填充目标。
- 卡片不使用四边较粗的边框,用背景色、留白和极轻分隔线建立边界。
- 有图就把图做大,图片是主视觉而不是点缀。
- 使用结构化中间产物,让用户或后续步骤可以检查、调整和复用。
- 不得编造事实、数据、案例或来源。
- 原文未公开的提示词不得冒充原文;可按本 Skill 的工作流生成补充提示词,但必须标注为扩展模板。
标准工作流
严格按以下顺序推进。若用户已经提供某阶段的可靠成果,可从对应阶段继续,但仍需检查其前置条件。
启动门禁(受众 / 风格三选一 / 页数区间 / 逐页内容规划确认)
→ 需求澄清
→ 背景调研
→ 金字塔大纲
→ 数字便利贴审查
→ 内容密度评估与动态页数调整
→ 逐页资料搜集与配图检索
→ 逐页内容与配图确认门禁(定稿级文案 + 内联展示配图,等用户确认)
→ 页面策划稿
→ 低保真页面结构
→ 视觉设计
→ 第一段交付:HTML 预览(含编辑模式)→ 等用户确认
→ 第二段交付:用户说"导出 PPTX"后,基于已确认 deck.json 转换
→ 质量检查与修正
阶段零:启动门禁(强制)
进入制作前必须先完成本阶段内部的四道门禁(全流程另有一道定稿级确认门禁,见阶段六点五)。使用 mcp__ask-user__ask_user 提问,不要用纯文本问句;一次提问可包含多个问题。若用户明确说“你决定”,则给出默认方案并把假设写清楚后继续。
门禁 1:受众与场景
先问受众,因为受众决定风格和色调,不是反过来。
- 目标受众是谁:投资人、客户、管理层、同行专家、学生、内部团队、公众
- 受众的知识背景和关注点
- 使用场景与演示时长
- 希望受众理解、相信或采取什么行动
门禁 2:风格方案(至少 3 种建议)
根据受众和内容主题,主动给出至少 3 套差异化风格方案让用户选择,不要只给一种,也不要让用户凭空描述风格。每套方案必须包含:
方案名称
适配理由(对应什么受众心理和场景)
版式气质(留白程度、卡片密度、图文比例)
字体层级策略
主色 / 辅助色 / 强调色 / 背景色(含色值)
图表与图片处理风格
色调的确定顺序是:先受众 → 再内容属性 → 最后色值。技术类、金融类、教育类、消费类、公益类内容的色彩语义不同,不得套用同一套配色。可选方案库见 references/style-presets.md。
用户选定后,输出一份锁定的视觉规范,后续所有页面必须遵守它。
门禁 3:页数与内容密度
- 询问期望页数区间和是否有硬上限
- 说明封面、目录、章节页和结束页是否计入总页数
- 明确告知用户:最终页数会按内容密度动态调整,如果某页内容超出单页承载量会自动拆页,并在交付时说明实际页数
门禁 4:逐页内容规划确认
在正式生成设计稿前,必须先输出逐页内容规划表并请用户确认。每页至少包含:
页码 | 页面标题(结论型) | 核心结论 | 内容要点 | 建议版式 | 是否需要图片/图表 | 预估信息量
用户确认或提出修改后才能进入策划稿与设计阶段。未经确认不得直接输出 SVG/HTML。
注意本门禁只是大纲级确认(标题方向、是否需要图、预估信息量)。资料与配图就位后还有一道定稿级确认(阶段六点五),用户在那里才会看到最终文案和实际图片。不要让用户误以为门禁 4 通过就等于内容已定稿。
阶段一:需求澄清
门禁通过后,补齐剩余细节:
- PPT 主题的准确表述
- 是否需要数据、案例、图表、时间线、技术架构或引用
- 品牌规范、指定颜色、字体和已有素材
- 是否要求后续可编辑
- 交付策略:默认两段式(先 HTML 预览确认,再按需导出 PPTX,见阶段十)。若用户开门见山只要某一种格式(纯网页展示、直接要 .pptx、或要拖进 PowerPoint 的矢量 SVG),按其要求单线交付
- 是否允许联网检索配图和资料
若缺少的信息会实质影响结果,应先询问用户;若可通过合理默认值继续,则明确记录假设后推进。
阶段二:背景调研
调研的目标是验证事实、补充数据、发现趋势和案例,并为每页提供可核查的内容。
联网能力探测与显式声明(强制,不得沉默降级)
开工前必须先探测当前宿主是否可联网检索,并把结论明确告知用户,不允许默认「无需调研」:
- 能力探测:动手前确认当前宿主是否具备联网/网页抓取能力(如
WebFetch、浏览器或其它检索工具)。 - 默认联网调研:只要用户在阶段一没有明确说「不要联网」,且联网能力可用,就必须实际执行背景调研,不得跳过。
- 禁止假借「权威来源」跳过调研:不得以「主题属于权威/常识、无需联网」为由省略调研,也不得把某页凭空标注成「L1/权威来源/无需调研」。任何「无需调研」的判断都必须是用户明确要求的结果,并写入假设记录。
- 降级必须交代:若联网能力不可用、或用户选择不联网,则在交付说明中显式写明「因〔联网不可用/用户选择离线〕,本次未做联网调研,以下内容基于模型既有知识,建议自行核验」,绝不沉默降级、更不谎称已核实。
调研资料按页整理,推荐格式:
## 第 X 页:页面标题
### 核心事实
- ...
### 关键数据
- 数据名称:
- 数据值:
- 时间与地区:
- 来源:
### 典型案例
- 案例名称:
- 案例内容:
- 案例价值:
### 可用于 PPT 的结论
- ...
### 来源
- 机构:
- URL:
- 发布时间:
必须保留资料来源和时间范围。找不到可靠依据时,删除该说法、降低表述强度或明确标记待验证,不得补造数据。
阶段三:金字塔大纲
大纲必须遵循:
- 结论先行:章节和页面优先使用带观点的标题。
- 以上统下:上层观点能够概括下层内容。
- 归类分组:同一层级属于同一逻辑范畴。
- 逻辑递进:采用清晰顺序,例如“现状 → 问题 → 原因 → 方案 → 价值 → 行动”。
优先使用 references/prompts.md 中的“PPT 结构架构师 Prompt”。将主题、背景调研信息、受众、场景和页数要求一并输入。
阶段四:数字便利贴
将每一页视为一张可移动、可删除的数字便利贴。每张便利贴至少包含:
页面标题
页面核心结论
页面主要内容
与前后页的关系
建议使用的视觉结构或图表
逐页检查:
- 标题是否表达结论,而非仅写主题名称
- 本页是否只有一个主要任务
- 是否与其他页面重复
- 是否存在逻辑跳跃
- 是否缺少关键证据
- 页面顺序是否合理
- 总页数是否符合要求
阶段五:内容密度评估与动态页数
大纲和便利贴确认后,逐页做承载量评估,页数据此动态调整。禁止为了凑够用户给的页数而堆内容或注水。
单页承载上限(1280×720 参考值)
| 项目 | 上限 |
|---|---|
| 卡片数量 | ≤ 6 张 |
| 每卡正文条目 | ≤ 4 条 |
| 每条正文字数(中文) | ≤ 28 字 |
| 单页正文总字数(中文) | ≤ 180 字 |
| 单页核心数据指标 | ≤ 4 个 |
| 单页图表 | ≤ 2 个 |
| 有大图页面的正文总字数 | ≤ 90 字 |
单页承载下限(防过空)
密度是一个区间,不是只有天花板。以下任一条成立即视为该页偏空,须按阶段六的「内容充实策略」处理:
| 项目 | 下限 |
|---|---|
| 单页正文总字数(中文) | ≥ 40 字(无大图承载时) |
| 支撑论据 | 核心结论之外至少 2 条 |
| 有效内容覆盖率 | ≥ 画布 45%(卡片 + 图片 + 文字包围盒并集,阶段十一由脚本实测) |
大图主导页(图片占页 ≥70%)不受字数与覆盖率下限约束——大图本身就是内容。
偏空处理
先判主因,再决定手段,两类原因的解法相反:
- 内容不足(字少 + 覆盖低)→ 按阶段六「内容充实策略」分层扩充:自有逻辑 → 联网补权威资料 → 改变承载方式 → 合并页面。
- 版面没放大(字够但覆盖低)→ 这是设计问题,不要加字。让卡片与配图尺寸随内容放大、占满画布,消除四周死白。
超限处理
超过任一上限时,按优先级依次处理:
- 删除与本页核心结论无关的内容。
- 合并同义要点,把长句压成短语。
- 把辅助细节移入演讲者备注。
- 仍然超限则拆成两页或多页,按“总述页 + 分述页”或按维度拆分。
页数不足时
内容密度偏低时不要拉长页面数量凑数。但也不要直接跳到合并——先按阶段六的充实策略判断这一页是否本该更充实(要点是否只写了一句、是否缺支撑论据、是否该配图或图表)。确实撑不起一页才合并。允许最终页数低于用户给的区间下限,但要在交付说明中给出理由。
交付时的页数说明
最终必须报告:用户期望页数 → 实际页数 → 调整原因(哪几页因超限拆分、哪几页合并)。
阶段六:逐页资料搜集与配图检索
以每页的“标题 + 核心结论 + 需要证明的问题”为检索单元。不要只用宽泛主题搜索整套 PPT。
每页至少确认:
- 哪些内容是事实
- 哪些内容是判断或建议
- 有哪些可靠数据
- 是否有适合的案例或对比对象
- 信息是否仍然有效
- 是否能追溯到原始或权威来源
配图必要性判定(先判定,再检索)
默认倾向:能配就配。 有图的页面显著更生动,因此判定的默认答案是「配」,只有落进下表「不配图片」一栏才允许无图。填写门禁 4 规划表和阶段七策划稿的「是否需要图片」时,必须逐页按内容性质对照下表判定,并写出一句判定理由(如「本页讲机体结构 → 需真实照片」「本页是三阶段流程 → 用动态矢量流程图」),不得凭感觉填「否」。
| 页面内容性质 | 判定 | 配什么 | 推荐版式(新增) |
|---|---|---|---|
| 具象实物、真实场景、设备外观、作业现场 | 必须配 | 真实照片(Bing → 百度百科 → 百度图片) | 轮换使用:左图右文 ↔ 右图左文 ↔ 上图下文 |
| 原理、机制、受力、工作过程、因果链 | 必须配 | 动态矢量原理图(首选,见 references/motion-graphics.md) |
上图下文 / 单一焦点大图卡 |
| 数据、占比、趋势、对比 | 必须配 | 动态矢量图表(生长/填充动画) | 单一焦点大图卡 / 上图下文 |
| 流程、步骤、阶段、时间线 | 必须配 | 动态流程条 / 时间轴 | 上图下文(横向流程) |
| 结构、层级、组成、系统架构 | 必须配 | 矢量结构图(可加拆解或展开动画) | 单一焦点大图卡 |
| 抽象概念、愿景、协同、突破 | 尽量配 | 关联氛围图或隐喻图;无合适素材时用几何构图,勿硬凑 | 整页背景图+文字浮层 |
| 封面、章节页、结束页 | 尽量配 | 氛围大图或纯色块 + 大字 | 整页背景图+文字浮层 |
| 纯定义、纯观点、纯清单 | 可不配 | 优先排版与字号层级;若能找到关联图仍鼓励配 | 无图版式 |
| 目录页 | 不配图片 | 纯文字导航 | 无图版式 |
| 已达密度上限的页面(卡片多、字数接近上限) | 不配图片 | 图与字抢面积,应先按阶段五拆页再考虑配图 | 无图版式 |
三条补充原则:
- 关联性优于有无。 宁可用一张与本页结论直接相关的图,也不要一张漂亮但无关的装饰图;找不到强关联素材时,优先改用能准确表达该页信息的矢量图,而不是随便塞一张风景图。
- 图形化内容不要去找照片。 上表中标注「矢量」的四类(原理、数据、流程、结构)本身就该自绘,这属于首选路径而非降级,且应尽可能做成动态 SVG。
- 版式多样性强制约束(新增):相邻有图页面禁止连续使用同一版式。同一套 PPT 内「左图右文」与「右图左文」出现次数差距不得超过 2 次。生成策划稿时必须显式标注本页版式,并与前一页对照检查冲突。
配图检索顺序(强制)
具象类配图默认以网络图为主。 只要用户没有明确要求「不联网」且宿主联网/搜图能力可用,判定为「需要真实照片」的页面就必须按下表实际检索网络图片,不得用矢量线稿代替真实照片。注意区分两件事:把「无人机长什么样」画成线稿是错误降级;把「三阶段作业流程」画成矢量流程图是正确选择。把整套 PPT 配图一律换成内联 SVG 线稿仍属错误降级。
判定为「需要真实照片」时,按以下优先顺序检索,前一级找不到合适结果才降级到下一级:
- Bing 图片搜索(首选,
https://www.bing.com/images/search?q=关键词) - 百度百科(
https://baike.baidu.com/item/关键词,适合权威示意图、人物、机构、设备、术语图解) - 百度图片搜索(
https://image.baidu.com/search/index?tn=baiduimage&word=关键词) - Bing 网页搜索中的图文页面
- 官方网站、官方发布会资料、政府或行业机构公开报告
- 维基百科 / Wikimedia Commons
- 改用矢量图表(照片路线走完仍无合适素材时的兜底)
- AI 生成配图(最后兜底,见下文「找不到图时的兜底」)
判定为「原理 / 数据 / 流程 / 结构」时不走上表,直接进入矢量绘制(并优先做成动态 SVG),这是首选路径,不需要先去搜照片。
检索与使用要求:
- 中文主题用中文关键词,专业术语补一次英文关键词。
- 记录图片来源 URL、页面标题和获取时间。
- 网络图必须下载到工作目录的本地文件夹:选定图片后立即下载到工作区
assets/images/(命名如p03-uav-structure-01.jpg),后续 SVG/HTML/PPTX 一律引用本地文件,不得把远程 URL 直接写进任何产物。原因:PPTX 无法嵌入外链、离线 SVG/HTML 断网即裂图。若某张图无法下载到本地(防盗链、403、超时),视为该图不可用,回到检索下一候选或按兜底降级,并在交付说明中说明。 - 优先选择高分辨率、主体居中、留白干净、无水印的图片。
- 不确定授权状态的图片要标注来源并提示用户自行确认使用权。
- 详细检索策略与关键词模板见
references/image-sourcing.md。
矢量绘制的两种性质,不要混为一谈:
- 首选路径(鼓励,且应尽量动态化)——内容本身就是图形化信息:原理、机制、受力、流程、架构、对比、时间线、占比、层级关系。这类用形状 + 文字比照片更准确,属于正确的设计选择,不是降级,也不需要在交付说明里当成降级解释。优先做成动态 SVG,见
references/motion-graphics.md。 - 兜底路径(需说明)——本该用真实照片的具象内容,已按上表实际联网检索、确实找不到合适网络图(且来源记录里能体现检索动作)。
只有第 2 种属于降级。若因联网/搜图不可用而把具象内容改用矢量线稿,必须在交付说明中写明「因〔搜图能力不可用/用户选择离线〕,本页改用矢量示意图」,不得沉默降级,也不得把这种降级结果描述成「权威来源、无需配图」。除这两种情形外,不得把具象实物页默认画成线稿。
找不到图时的兜底(按顺序)
第一优先:改用矢量图表。 大量“找不到图”的场景本质上不需要照片,需要的是一张图形——原理、机制、流程、架构、对比、时间线、占比、层级关系都属于这一类。自绘 SVG 或原生图表准确、可控、可编辑、无授权风险、无 AI 畸形,并且可以做成动态图(见 references/motion-graphics.md),表现力往往强于一张普通照片。判断口径:如果这张“图”的信息可以用形状 + 文字说清,就自绘,不要去生成一张照片。
第二优先:AI 生成配图。 仅当页面确实需要非事实性的具象画面,且前面的检索与矢量表达均不适用时,才尝试使用当前宿主提供的图像生成能力。Skill 不依赖特定工具名、产品设置路径、供应商或模型;由宿主适配器把本 Skill 的标准生图请求映射到当前可用工具。执行前先探测能力,不得猜测不存在的工具或假装已生成。
标准调用分为三步:
probe_image_generation:确认当前宿主是否可生图,以及是否支持参考图、目标尺寸、输出路径、异步结果等能力。generate_image(spec):按references/image-sourcing.md的标准请求生成候选图;provider、model默认不指定。materialize_image(result, destination):把本地路径、URL、附件、二进制或异步任务结果统一物化为工作区内的本地图片文件,并完成格式、尺寸和可解码校验。
- 可以生成:氛围图、抽象概念图、风格化插画、背景纹理、隐喻性画面。
- 禁止生成(硬性):真实产品外观与具体型号、设备的结构与部件、真实人物、真实地点与建筑、统计图表、地图、UI/证照/公文、带可读文字的图,以及任何需要事实准确性的画面。无人机、机械、电子设备的结构属于禁止范围——宁可用一张分辨率一般的真实照片,也不要一张长着五个旋翼的生成图。
- 生成后必须:页面上以小字标注“AI 生成示意图”或至少“示意图”,来源清单中记录
source_kind: ai_generated及本地资产路径;检查手指、旋翼数量、文字、对称结构、透视、构图留白和色调一致性。同一套 PPT 的多张生成图复用同一个style_anchor。 - 生图结果必须落到工作区
assets/generated/等允许目录,不能把远程 URL、宿主临时路径或空路径直接交给 PPTX;生成图同样遵守下方尺寸与占比硬指标。 - 能力不可用、无权限、无法本地化、内容被拒或质量不合格时,最多进行一次技术重试和一次针对性质量重生,之后必须降级为矢量图形或无图版式,不得无限重试。
第三优先:无图版式。 严肃技术页找不到准确图、不能安全生成或生成结果无法通过检查时,直接改成无图版式:加大留白、放大核心数据、用色块和字号建立层级。一张错图的伤害大于没有图。
完整分级规则、标准请求/结果结构、提示词模板和禁止清单见 references/image-sourcing.md 第六至第九节。
图片使用规则:能大就大
- 图片是主视觉,不是装饰点缀,尺寸必须足够大到能看清细节。
- 单页有图时,图片区域建议占页面面积 40%–65%;以图为核心的页面可到 70% 以上。
- 图片最短边不小于 360px(1280×720 画布内),全屏型不小于 560px 高。
- 优先使用大图版式:左图右文(图占 55%–60%)、上图下文、整页背景图 + 文字浮层、单一焦点大图卡。
- 禁止把图片缩成小缩略图塞进小卡片角落;一页塞多张小图时,应改为一张主图或换成图表。
- 图片按比例缩放,保持原始宽高比,使用
preserveAspectRatio或等效裁切,不得拉伸变形。 - 有大图的页面同步压缩文字量,遵守阶段五的“有大图页面正文 ≤ 90 字”。
内容充实策略:要点单薄时怎么补
密度既有上限也有下限。上限防拥挤,下限防「一页只有一句话、四周大片死白」——后者会让整套 PPT 显得空洞简陋,且往往是内容准备不足而非刻意留白。
判断一页是否单薄,看三条:核心结论之外是否有支撑论据;正文是否不足 40 字且无大图承载;卡片/图片/文字的有效内容覆盖是否低于画布 45%(阶段十一由脚本给出实测值)。
确认单薄后,按以下顺序分层扩充,不要跳级直接联网搜:
第一层:扩充自有逻辑(优先,无需联网)。 一个要点天然可以展开成多个维度,先在已有材料内追问:
- 背景——这件事为什么会出现、之前是什么状态;
- 机理——它是怎么运作的、依赖什么条件;
- 影响——带来什么变化、对谁有意义、有什么代价;
- 示例——一个具体的场景、数字或对照;
- 边界——什么情况下不适用、常见误解是什么。
多数「空页」在这一层就能补足,且不引入新的事实风险。
第二层:联网补权威资料。 自有逻辑仍撑不起一页时,再按阶段二的联网规则检索补充。必须遵守既有约束:先探测联网能力;优先权威来源(行业标准、官方文档、学术文献、政府与行业协会发布、头部厂商技术白皮书);每条补充内容都要记录来源 URL、机构、发布时间,写入该页来源清单;数据必须带值、单位、时间和口径。禁止为凑字数编造内容、伪造数据或杜撰来源——宁可页面偏空,也不能不可核查。
第三层:改变承载方式。 文字不该是唯一手段。同样的信息量,换成矢量图表、时间线、对比表、结构图、动态原理图,往往既更饱满也更好懂(见 references/motion-graphics.md)。放大配图尺寸、放大关键数字,也是有效的充实。
第四层:合并页面。 前三层都试过仍单薄,说明这一页本身不成立,按阶段五与相邻页合并,而不是硬撑成一页。
充实的三条硬边界
充实的目标是论据充分、版面饱满,不是把页面填满字。以下三条不得违反:
- 不注水——填充内容必须是真正的支撑(论据、数据、机理、案例、对照),不得靠同义重复、套话、形容词、拉长句子凑量。
- 不超上限——充实后仍须通过阶段五的密度门禁(单页正文 ≤180 字、有大图页 ≤90 字、卡片 ≤6 张)。充实与拥挤之间的目标区间是「饱满」,不是两端任意一端。
- 不改结论——填充只能作为支撑层,本页核心结论那一句不变,「结论先行」的结构不得被资料淹没成文献综述。
阶段六点五:逐页内容与配图确认门禁(强制)
资料和配图就位后、进入策划稿之前,必须先让用户逐页确认最终文案与配图。这是全流程第二道强制门禁。
为什么必须有这一道
门禁 4 确认的是大纲级规划(标题方向、是否需要图、预估信息量)。但那之后发生了三件用户没批准过的事:
- 实际文案定稿了(门禁 4 只有「内容要点」,真正的卡片文字、数据表述是阶段六才写的);
- 图片选定并下载了(用户批准的是「这页要配图」,不是「这张图」);
- 页数可能已按阶段五调整(拆页或合页)。
若不在此处确认,问题会推迟到 HTML 出来才暴露——那时整套已完成,改一页要连带动 deck.json、重新生成、重新校验,返工成本集中在最后一刻爆发。
交互方式:一次性输出全部页,一次确认
- 不要逐页逐次阻塞。20 页的 PPT 不能来回握手 20 次。一次性输出全部页的清单,请用户一次性反馈。
- 用户针对个别页提修改时,只重出被改的那几页条目再请确认,不要重发整份清单。
- 用户可以只说「都可以」整体通过,也可以逐条点名修改。
- 使用
mcp__ask-user__ask_user收尾询问是否通过,不要用纯文本问句。
每页必须给到的内容
文案必须是定稿级,不是要点提纲——用户确认的就是最终会上页面的字:
页面标题(结论型,最终文字)
核心结论(一句话)
卡片 1 标题 / 正文(逐条最终文字)
卡片 2 标题 / 正文
关键数据(数值 + 单位 + 时间 + 口径)
本页来源(可核查)
配图必须让用户真正看见:
- 给出本地路径(已按阶段六下载到
assets/images/或assets/generated/)、来源 URL、原始像素尺寸、授权状态; - 用 markdown 图片语法内联展示:
,每张图一行。只写文件名用户看不到图,无法判断是否合适; - 矢量图/动态图无法内联时,改为文字描述图形结构、动画模式和静态首帧呈现什么;
- 标注该图属于阶段六判定表的哪一类(真实照片 / 动态矢量原理图 / 矢量图表 / 氛围图),以及是否为 AI 生成示意图。
附字数统计与密度预警,便于用户当场决定是否拆页:
本页正文 XX 字(上限 180,有大图页 90)|卡片 X 张(上限 6)|密度:正常 / 接近上限 / 超限建议拆页
确认门禁的硬性要求
- 未经用户确认,不得进入阶段七策划稿,更不得生成任何 SVG/HTML。沉默不等于确认。
- 不得以「先做出来再改」为由跳过——那正是这道门禁要消除的返工模式。
- 用户否决某页配图时,回到阶段六检索下一候选或按兜底降级,重新提交该页条目。
- 用户要求增删页面时,同步更新页数说明,并在重出条目里标明页码变化。
- 确认通过后,记录该次确认的内容作为后续阶段的基线;阶段七及之后不得擅自改动已确认的文案,如必须改(例如密度超限)要明确告知用户并说明原因。
清单的完整输出格式见 references/prompts.md「逐页内容与配图确认清单」模板。
阶段七:页面策划稿
本阶段的输入是阶段六点五已确认的逐页清单——文案和配图已经定稿,此处只负责版面组织,不得重写文案或换图。
策划负责“讲什么、怎么组织、放在哪里”,视觉设计负责“采用什么风格和样式”。两者不得混为一步。
有图页面必须做版式多样性自检:填写「图片需求」的版式字段时,对照 references/layout-diversity-checklist.md,确保相邻页不重复版式、横向分栏不超配额、图形化内容用纵向或整版版式。逐页策划完成后,运行该清单第二节的版式分布统计做整套检查。
每页策划稿使用以下结构:
## 第 X 页:页面标题
### 页面目的
这一页希望观众理解什么?
### 核心结论
用一句完整的话表达本页结论。
### 内容组成
- 内容模块 1
- 内容模块 2
- 内容模块 3
### 证据与来源
- 数据、案例或事实及来源
### 视觉结构
- 主视觉或核心图表
- 左、右、上、下区域分别承载什么
- 需要突出、弱化或删除的元素
### 页面布局
- 单一焦点 / 两栏 / 三栏 / 主次结合 / 顶部英雄式 / 混合网格
### 图片需求
- 是否需要图片:是 / 否
- 判定依据:对照阶段六判定表的哪一行(如「原理机制 → 动态矢量原理图」)
- 视觉类型:真实照片 / 动态矢量图 / 静态矢量图 / 氛围图
- 图片内容描述与检索关键词(照片类)或图形结构描述(矢量类)
- 若为动态图:动画模式、时长、静态首帧呈现什么
- **图片版式(必填,按内容性质从版式决策表选择,见 `references/image-sourcing.md` 第五节)**:
- 本页版式:上图下文 / 单一焦点大图卡 / 整页背景 + 浮层 / 左图右文 / 右图左文
- 选择理由:为什么这个版式最适合本页内容性质
- **相邻页版式冲突检测**:上一页有图页面用的是什么版式?本页是否与之相同?相同则必须改选其它版式
- **横向分栏配额检查**:截至本页,「左图右文」+「右图左文」已累计使用几次?是否已接近有图页面数的 50%?
- 图片占页比例目标
### 信息量自检
- 卡片数 / 正文字数 / 数据指标数
- 是否超出单页承载上限,是否需要拆页
### 演讲衔接
- 如何承接上一页
- 如何引出下一页
阶段八:低保真结构
先生成简单、清爽、低装饰的页面草稿,只验证:
- 信息是否完整
- 逻辑是否清楚
- 层级是否明确
- 元素是否放在正确位置
- 页面是否过载
- 图片占位区域是否足够大
低保真结构确认后,再加入颜色、字体、卡片样式、图片、图标、纹理和装饰。
阶段九:Bento Grid 视觉设计
Bento Grid 应由内容驱动,不得机械套用固定模板。
有图页面版式多样性二次确认:开始生成 SVG/HTML 前,重新检查本套 PPT 的版式分布是否符合 references/layout-diversity-checklist.md 的硬约束。若发现策划稿写的版式与实际生成不一致,立即修正并重新生成该页。
核心规则
- 卡片数量不固定,可以是 1、2、3、4、5 张或更多,但单页不超过 6 张。
- 最大卡片承载最重要的信息。
- 中等卡片承载主要论据。
- 小卡片承载辅助数据、注释或案例。
- 所有卡片之间至少保留 20px 间距。
- 保持统一的对齐、圆角、色彩、字体层级和留白系统。
版面饱满度规范(防过空,强制)
留白是为了建立层级和呼吸感,不是把内容缩在中间、四周空一大片。后者不是克制,是没做完。
- 元素尺寸必须随内容与画布放大。不要用一套固定小尺寸卡片摆在 1280×720 里——卡片应撑开到自然占满可用区域,卡片内部再用内边距形成呼吸感。
- 有效内容覆盖率不低于画布 45%(卡片 + 图片 + 文字并集,阶段十一由脚本实测)。低于此值说明版面没铺开。
- 单卡页必须放大承载。只有 1 张卡片时,它应接近
w≈1200, h≈580(顶部留标题区),而不是一张 400×200 的小卡片居中。 - 两栏/三栏须占满横向可用宽度,左右外边距对称且与卡片间距量级相称(典型外边距 60px、卡间距 20–30px)。
- 纵向同样要铺满:标题区 + 内容区应利用到接近画布底部(内容区底边距典型 60–70px),不要让下半页整片空白。
- 配图优先放大而不是留白——同样的信息量,把图从 30% 放大到 55% 比在旁边留死白更有效。
- 留白应出现在元素之间和卡片内部(间距、内边距、行距),而不是堆在画布四周边缘。
反向约束同样成立:饱满不等于拥挤,仍须满足阶段五全部上限(卡片 ≤6、正文 ≤180 字、间距 ≥20px)。目标是「饱满」这个中间区间。
卡片边框规范(强制)
禁止给卡片使用四边较粗的边框。粗描边会把页面切成一格一格的表格,破坏留白和层级。
禁止:
- 四边闭合的
stroke-width≥ 2px 描边 - 高对比度深色或黑色四边框
- 双线框、内外双层描边
- 描边 + 强阴影 + 深底色叠加使用
- HTML 中的
border: 2px solid #333一类写法
允许的边界表达方式,按优先级:
- 背景色差:卡片底色与页面底色形成轻微色阶差,例如页面
#FFFFFF、卡片#F6F7F9。 - 纯留白分隔:靠 ≥ 20px 间距区分模块,完全不用描边。
- 极细描边:只在必须时使用,
stroke-width≤ 1px,颜色为低对比中性色(如#E5E7EB、rgba(0,0,0,0.06))。 - 柔和阴影:大模糊半径、低透明度,如
0 2px 12px rgba(0,0,0,0.06)。
默认卡片不加任何强调线。 卡片左侧/顶部的「单边强调色竖条」默认关闭,只有在用户明确要求「给重点卡片加强调条」时才使用,且限一条 3–4px、仅左或顶、其余三边无描边。不要在示例里默认带它,也不要为了「显得有设计感」自作主张给每张卡片加左边竖条。
统一圆角建议 8–16px,全套 PPT 保持一致。
布局类型
- 单一焦点:一张大卡片覆盖主要区域,适合强结论、大图表、大图片或架构图。
- 两栏对称:适合并列比较、问题与方案、Before 与 After。
- 两栏非对称:约 2/3 主内容加 1/3 辅助信息;有图时图占大栏。
- 三栏布局:适合三个阶段、方案、能力或案例。
- 主次结合:中间大卡片,两侧小卡片。
- 顶部英雄式:顶部宽幅核心结论,下方安排 2 至 4 张辅助卡片。
- 大图主导:一张大图占 55%–70%,文字集中在剩余区域。
- 混合网格:自由组合多种卡片尺寸,但必须保持层级、对齐和间距。
动态 SVG(讲原理、数据、流程、结构的页面)
被阶段六判定为「原理 / 数据 / 流程 / 结构」的图形化内容,除自绘矢量图外,鼓励做成动态 SVG,让讲述过程更生动。但必须守住一条铁律:
> 动画是锦上添花,静态首帧必须已经是一张完整、可读、可交付的图。
因为 SVG 导入 PowerPoint、转成图片、打印时动画都不播放,只渲染静态首帧。所以:
- 禁止任何元素以
opacity:0、visibility:hidden、display:none、transform:scale(0)、宽高从 0 生长、stroke-dashoffset等于全长(线条初始隐藏)作为初始态、再靠动画才出现——静态渲染会空白或残缺。 - 正确做法是「首帧完备 + 纯强调动画」:元素初始就是最终可见状态,动画只做脉冲、呼吸(透明度 0.6–1 之间,不到 0)、高亮、循环流动、微小位移,不改变可见性。
- 数字直接写目标值,不做「从 0 计数」;数据条/环首帧就是目标高度/百分比。
- CSS 动画必须配
@media (prefers-reduced-motion: reduce)降级。
8 类动画模式(流程流动、数据生长、结构拆解、受力/流向、时间轴、占比填充、路径追踪、层级展开)、SMIL 与 CSS 实现、各格式支持矩阵和最小模板见 references/motion-graphics.md。动态 SVG 同样受 scripts/validate_svg.py 校验:初始不可见靠动画显示的元素会报 ERROR。
阶段十:交付与输出
默认交付策略:两段式(HTML 先行,确认后转 PPTX)
除用户明确要求单一格式外,默认按两段交付,不要一次性把所有格式都产出:
第一段:产出 HTML → 用户预览、在页面上直接改 → 用户确认
↓
第二段:用户明确说"导出 PPTX" → 基于已确认的 deck.json 转换 → 交付 .pptx
这样做的理由:HTML 是唯一能让用户在浏览器里立刻看到全套效果、并直接改文字改版式的格式,是最合适的预览与协商载体;PPTX 一旦生成就意味着定稿,提前生成只会在返工时浪费一遍。
第一段的规则:
- 只产出 HTML(含编辑模式),不要同时生成 PPTX,也不要在用户没要求时主动生成。
- 交付时明确告知:这是预览稿,可以直接在页面上改;改完若需要 PowerPoint 文件,说一声"导出 PPTX"即可。
- 同时告知 PPTX 会丢失哪些 HTML 特性(动画、交互、滚动区域),让用户在确认阶段就知道最终形态。
确认节点(必须显式等待):
- 用户没有明确表示确认之前,不得自行推进到第二段。沉默不等于确认。
- 用户提出修改 → 改
deck.json→ 重新生成 HTML → 再次请其确认,循环直到通过。 - 用户说"导出 PPTX""转成 PPT""生成 PowerPoint"等,即视为确认并进入第二段。
第二段的规则:
- 转换的输入必须是用户确认的那份
deck.json(用户若在 HTML 里改过,先让其点「导出 deck.json」),不要重新生成策划稿,也不要反向解析渲染后的 DOM。 - 转换前必须先跑
--check-only:所见即所得的自由拖拽可能已违反卡片间距、越界、密度等门禁,用户可以无视实时警告强行保存。 - 以 HTML 为准,不得在转换时顺手改版式、调配色、动文案——用户确认的是他看到的那份。
- 若必须调整(如某页触发 ERROR),改
deck.json后同时重新生成 HTML 和 PPTX,并告知用户 HTML 也已更新。
具体转换步骤、data URI 图片自动落盘、HTML 独有特性的降级映射表见 references/pptx-output.md 第六点五节(路线 D)。
何时偏离两段式
- 用户开门见山就要 .pptx 且不需要预览 → 直接走 PPTX(路线 A/C),但仍建议先给一页样张确认风格。
- 用户只要网页展示,不需要 PowerPoint → 只做第一段,不必追问是否导出。
- 用户要的是「拖进 PowerPoint 继续编辑的矢量页面」→ 走 SVG,不是 PPTX。
SVG
在需要以下能力时优先选择 SVG:
- 导入 PowerPoint 后继续编辑
- 保持矢量清晰度
- 兼容设计软件
- 需要可缩放的图形页面
SVG 页面必须使用:
viewBox="0 0 1280 720"
生成时优先使用 references/prompts.md 中的“SVG 页面生成 Prompt”。注意检查字体、换行、溢出、嵌套、路径和目标 Office 版本的兼容性。
若页面使用了动态 SVG(见阶段九),注意:SVG 在浏览器直接打开时动画播放,但导入 PowerPoint、转图片或打印时动画不播放,只渲染静态首帧。因此必须保证静态首帧完备,validate_svg.py 会拦截「初始不可见靠动画才出现」的元素。动效收益主要在「浏览器直接看 SVG」和「HTML 演示」两个场景。
每页生成后立即运行 scripts/validate_svg.py 做硬指标校验,不要等全套做完才检查——早发现一页超限,改动成本远低于返工整套。用法见阶段十一「自动校验」。
HTML(第一段的交付物)
在以下场景优先选择 HTML:
- 只需展示或网页浏览
- 需要快速 DIY
- 需要交互、动画或响应式布局
- 需要「打开 HTML 就能在页面上直接改文字、拖拽元素」的所见即所得编辑体验
- 不强调导入 PowerPoint 后逐元素编辑
HTML 路线的硬规范:
- 单文件自包含:CSS/JS 内联、图片转 base64
data:URI 内嵌、无任何 CDN 或外链,断网双击可用。 - 由 deck.json 派生:HTML 与 SVG、PPTX 共用同一份
deck.json(schema 见references/pptx-output.md第二节),不手写散装 DOM。一份规划稿四路派生,编辑后导出的deck.json可回喂build_pptx.py和逐页 SVG,保持全格式一致。 - 画布基准 1280×720:逻辑坐标与 SVG/PPTX 一致,用 CSS
scale()适配屏幕。 - 默认带编辑模式:HTML 交付物默认内联零依赖编辑器,提供文字原地编辑、元素拖拽缩放、多选、层级、增删元素、页面重排。不要询问用户是否需要编辑能力——第一段交付的目的就是让用户直接在页面上改。仅当用户明确要求「只要放映 / 不要编辑 / 要最小体积」时,才产出去掉编辑脚本的精简版。
- 编辑态实时约束:所见即所得的自由拖拽必须实时跑与
validate_svg.py同一套阈值(卡片数、间距 ≥20px、越界、四边粗边框、密度、图片占比),把「能编辑」约束成「不能改坏」,ERROR 时在提示条明确警告。 - 双保存:File System Access API 原地存回同一 HTML(仅 Chromium 系 Chrome/Edge)+ 导出
deck.json供重新生成其它格式。非 Chromium 浏览器(Safari/Firefox 等)进入编辑模式时必须在页面内弹出常驻提醒说明原地存回不可用、修改将以下载方式保存、需原地存回请用 Chrome/Edge,并同步改写保存按钮文案,不得静默降级。
生成方式:以 references/html-template.html 为起点,把 __DECK__ 占位替换为实际 deck 数据并按内容扩展渲染分支,不要从零手写。模板已实现双模式、拖拽缩放、多选、增删、实时校验、双保存与兼容提醒,不得重写或删减这些能力。完整实现规范与数据模型见 references/html-output.md。
PPTX(第二段的交付物)
在用户明确需要标准 PowerPoint 文件、需要在 PowerPoint 里继续编辑、需要母版或演讲者备注、或按企业格式交付时选择 PPTX。不得把 HTML 或 SVG 文件改扩展名冒充 PPTX。
四条路线,按"JSON 来源"和"是否需要逐元素编辑"选:
| 路线 | 做法 | 适用 | 代价 |
|---|---|---|---|
| D 基于已确认 HTML(默认) | 用户在 HTML 里确认后导出的 deck.json → build_pptx.py |
走完两段式交付流程 | 受 HTML 已定版式约束 |
| A 原生生成 | scripts/build_pptx.py 读策划稿 JSON,用 python-pptx 生成原生形状与文本框 |
用户跳过 HTML 预览,直接要 PPTX | 视觉表现力弱于 SVG,复杂图形需退化 |
| B SVG 插入 | 每页 SVG 以图片形式插入 PPTX | 视觉复杂、只需放映不需深度编辑 | 文字不可直接改,等于贴图 |
| C 模板填充 | 用 pptx skill 基于企业模板填内容 |
用户提供了母版或品牌模板 | 受模板版式限制 |
路线 D / A 的用法(同一个脚本):
python3 scripts/build_pptx.py deck.json --check-only # 转换前必做:只校验不生成
python3 scripts/build_pptx.py deck.json -o 输出.pptx # 通过后再生成
python3 scripts/build_pptx.py --emit-sample > deck.json # 取样例规范
该脚本内建与 SVG 同一套门禁(卡片数与间距、四边粗边框、圆角区间、正文字数、字号层级、图片占比与最短边、越界、AI 生成图标注),存在 ERROR 时不生成文件,退出码 1。图片按 aspect-fill 裁切不拉伸变形;超量文字与资料来源自动写入演讲者备注。自包含 HTML 内嵌的 data:image/*;base64 图片会自动解码落盘到 assets/extracted/ 并按魔术字节校验真实类型,损坏或截断的直接 ERROR 阻断。
坐标换算、字体兼容坑、卡片无边框在 PPTX 中的实现方式,以及路线 B/C/D 的具体做法见 references/pptx-output.md。
两个必须提前确认的点:页面比例(16:9 还是 4:3,建页前定好,改尺寸不会自动重排元素)和字体(PPTX 不嵌入字体,非系统字体在对方电脑会被替换导致版面崩坏,中文优先 Microsoft YaHei)。若用户需要打印,门禁 2 阶段就应排除深色底方案。
两个必须提前确认的点:页面比例(16:9 还是 4:3,建页前定好,改尺寸不会自动重排元素)和字体(PPTX 不嵌入字体,非系统字体在对方电脑会被替换导致版面崩坏,中文优先 Microsoft YaHei)。若用户需要打印,门禁 2 阶段就应排除深色底方案。
阶段十一:质量检查
内容检查
- 事实和数据是否准确、有来源、有时间范围
- 是否存在编造或无法验证的内容
- 每页是否只有一个核心结论
- 是否存在重复、缺失或无关内容
- 总页数是否符合要求
逻辑检查
- 目录是否覆盖正文
- 章节和页面是否逻辑递进
- 上层观点是否概括下层内容
- 页面标题是否尽量结论先行
- 前后页是否有自然衔接
视觉检查
- 卡片间距是否至少 20px
- 重要信息是否拥有最高视觉权重
- 是否有文字溢出、遮挡或元素重叠
- 字号、颜色和对比度是否可读
- 页面是否过度拥挤或装饰过多
- 页面是否过空:元素是否缩在中间、四周留下大片死白,单卡页是否放大到接近满幅
- 留白是否出现在元素之间和卡片内部,而不是堆在画布四周边缘
- 全套页面是否采用一致视觉系统
输出检查
- SVG 是否可解析,viewBox 是否为
0 0 1280 720 - SVG 是否能在目标 Office 版本中导入
- 字体和文字换行是否兼容
- HTML 是否能在目标浏览器中正常打开
- PPTX 是否能打开、编辑和播放
- PPTX 页面比例是否为 16:9(1280×720),字体是否为目标环境已有字体
- AI 生成图是否已在页面上标注“示意图”、在来源清单标注“AI 生成示意图”
- 最终文件是否位于用户指定目录
逐项验收时使用 references/quality-checklist.md,该清单包含门禁、内容密度、卡片边框、图片使用、SVG/HTML/PPTX 输出的可勾选条目。
自动校验(SVG 输出必做)
生成 SVG 后必须运行校验脚本,不得仅凭目测判断合规。脚本为纯标准库实现,无需安装依赖:
python3 scripts/validate_svg.py 输出目录/ # 批量校验
python3 scripts/validate_svg.py page-03.svg # 单页校验
python3 scripts/validate_svg.py page-05.svg --hero-image # 大图主导页
python3 scripts/validate_svg.py 输出目录/ --json # 机器可读结果
脚本把以下硬指标从「建议」变成「门禁」:
| 检查项 | 判定 |
|---|---|
viewBox 是否为 0 0 1280 720 |
ERROR |
| 卡片数量 ≤ 6 | ERROR |
| 卡片间距 ≥ 20px、无重叠 | ERROR |
| 四边描边 ≥ 2px | ERROR |
| 描边颜色过深 | WARN |
| 圆角是否统一在 8–16px | WARN |
| 单页正文 ≤ 180 字(大图页 ≤ 90 字) | ERROR |
| 字号是否过小、层级是否清晰 | ERROR / WARN |
| 图片占比、最短边 ≥ 360px、小图数量 | ERROR |
图片外链、缺 preserveAspectRatio |
WARN |
| 文字溢出画布、元素越界 | WARN / ERROR |
| 页面过空:内容不足(覆盖 < 45% 且正文 < 40 字) | WARN SPARSE-PAGE |
| 页面过空:版面没放大(覆盖 < 45% 但字数够) | WARN SPARSE-LAYOUT |
动态 SVG:初始不可见靠动画才出现(opacity:0/scale(0)/dashoffset 全长/CSS 起始帧不可见) |
ERROR |
动态 SVG:动画目标 > 12、高频闪烁 < 0.8s、CSS 缺 prefers-reduced-motion |
WARN |
退出码:0 通过,1 存在 ERROR(或 --strict 下存在 WARN),2 文件缺失。
处理要求:ERROR 必须修正后重新运行至退出码为 0;WARN 需逐条判断,确认为有意设计时在交付说明中写明理由。脚本不覆盖事实准确性、逻辑递进和审美,这些仍按上面的清单人工复核。
两条过空告警不可当作噪音忽略,且解法相反,必须先分清是哪一条:
SPARSE-PAGE(内容不足)→ 按阶段六「内容充实策略」补内容:自有逻辑 → 联网补权威资料 → 改变承载方式 → 合并页面。SPARSE-LAYOUT(版面没放大)→ 不要加字,按阶段九「版面饱满度规范」放大卡片与配图,铺满横向与纵向可用区域。
大图主导页(图片占页 ≥70%)自动豁免这两项;存在旋转/斜切变换时判定降级为参考值(输出 SPARSE-SKIP)。若确为刻意的极简留白设计(如章节过渡页、金句页),可保留 WARN,但要在交付说明中写明理由。
自动校验(PPTX 输出必做)
走路线 D 或 A 生成 PPTX 时,scripts/build_pptx.py 已内建同一套门禁并在存在 ERROR 时拒绝生成文件,因此校验是强制的、无法跳过的:
python3 scripts/build_pptx.py deck.json --check-only # 定稿前先只校验
python3 scripts/build_pptx.py deck.json -o 输出.pptx # 通过后再生成
走路线 D(基于已确认 HTML)时 --check-only 尤其不可跳过:用户在 HTML 编辑态自由拖拽后可能已违反间距、越界、密度等硬指标,实时提示可以被无视但静态校验不能。
额外覆盖 SVG 校验器没有的三项:图片是否为本地文件(PPTX 不能嵌入网络外链)、AI 生成图是否带标注说明、data URI 内嵌图能否正确解码落盘(按魔术字节校验真实类型,损坏或截断直接 ERROR)。
局限要说清:脚本按字数估算,无法测量 PowerPoint 渲染后的真实换行;卡片识别依据是 JSON 里声明的 cards,不覆盖手工插入的异形图形。生成后仍必须打开一次 PowerPoint 目视复核溢出与字体替换。
发现问题后必须修正并重新检查,而不是只列出问题。
交付要求
根据用户需求交付以下一种或多种成果:
- 需求简报
- 背景调研摘要
- 结构化大纲
- 数字便利贴列表
- 逐页资料包
- 逐页内容与配图确认清单(用户确认记录,后续阶段的文案基线)
- 逐页策划稿
- 视觉规范
deck.json(跨格式共用的数据模型,四路派生的唯一数据源)- 第一段:HTML 预览稿(含编辑模式)
- 第二段:PPTX 文件(用户确认后按需生成);或按需求单线交付的 SVG 页面
- 质量检查报告
若用户只要求其中一个阶段,不要强制生成全部文件,但应确保该阶段的必要前置条件成立。
参考资源
references/prompts.md:保留原文公开的 PPT 结构架构师 Prompt、Bento Grid 规范和 SVG 页面生成 Prompt,并附门禁提问、风格提案、密度评估、逐页内容与配图确认清单等扩展模板。references/style-presets.md:按受众和内容属性选风格的决策逻辑,以及 6 套可直接复用的风格方案(含色值与卡片描边规范)。references/image-sourcing.md:配图先分流(照片走网络检索 / 图形化内容首选自绘矢量),网络图检索优先顺序、关键词模板、筛选标准、大图版式决策表(按内容性质给出优先版式与禁忌),图片最大化版式参数,网络图必须本地落地,以及找不到照片时的三级兜底(矢量图表 → AI 生成 → 无图版式)和生成图的禁止清单。references/layout-diversity-checklist.md:版式多样性自检清单(新增),逐页记录版式、统计分布、检测横向分栏配额、相邻冲突、图形化内容误用,防止所有有图页面死板套用同一种版式。阶段七策划稿和阶段九视觉设计强制使用。references/motion-graphics.md:动态 SVG 规范——「静态首帧完备」黄金法则、8 类动画模式库、SMIL 与 CSS 实现、各输出格式动画支持矩阵、性能与时长约定,以及与validate_svg.py动画校验的对接。references/pptx-output.md:PPTX 四条输出路线对比(含路线 D:基于已确认 HTML 导出,两段式交付的默认路径)、1280×720 → EMU 精确换算、卡片无边框在 PPTX 中的实现、图片 aspect-fill、data URI 图片落盘、HTML 特性降级映射表、字体与自动缩放等兼容性坑。references/html-output.md:HTML 自包含单文件规范、与 deck.json 共用数据模型、查看/编辑双模式、全功能所见即所得编辑(文字/拖拽缩放/多选/层级/增删)、编辑态实时约束校验、双保存(File System Access 原地存回 + 导出 deck.json),以及与 nyblnet/bento 的借鉴关系。references/html-template.html:HTML 交付的起点模板(完整可运行、零依赖、自包含)。已实现 Present/Edit 双模式、文字原地编辑写回 deck、拖拽缩放、框选多选、层级、增删元素、实时约束校验(阈值与validate_svg.py一致)、原地存回 + 非 Chromium 页面提醒 + 下载兜底 + 导出 deck.json。生成时把__DECK__占位替换为实际 deck 数据并按内容扩展渲染分支,不要从零手写、不要删减既有能力。references/quality-checklist.md:可操作的内容、逻辑、视觉和输出验收清单。scripts/validate_svg.py:SVG 硬指标自动校验器(viewBox、卡片数与间距、粗边框、正文字数、字号层级、图片占比、溢出越界、动态 SVG 静态首帧安全性),纯标准库,见阶段十一「自动校验」。scripts/build_pptx.py:由页面规范 JSON 生成原生可编辑 PPTX,内建与 SVG 同一套门禁,ERROR 时拒绝生成;依赖 python-pptx。