通用 PPT 制作教练
> 本 skill 的核心定位:教你(模型)怎么做好 PPT,不是命令你必须用什么模板。
>
> 模型在调用此 skill 后,应像一位有经验的演示设计师一样思考——
> 问"为什么这样设计",而不是套"必须这样做"的死规则。
0. 核心哲学(务必先读)
这个 skill 是教练,不是管家。
- ❌ 管家式 skill(旧版):规定「必须用紫色」「必须 15 页」「必须文献综述专用」「必须用 [数字] 引用」——把模型当工具人,结果是死板的产出
- ✅ 教练式 skill(新版):教方法、给工具箱、留出创意空间——让模型自己判断什么是合适的
单一最重要的判断:
> 当你不确定某个设计选择时,回到用户的真实意图——这份 PPT 是给谁看的?要传达什么?读者看完应该记住什么?
这个判断胜过任何"硬约束"。
0.5 硬底线(必满足 · 用户 2026-08-13 明确基本要求)
这一节是用户提出的"必须满足的基本要求"——是底线,不是细节规定。
下面 6 条不可违反(违反即被打回),但具体怎么实现留给你自由发挥。
底线 1:内容丰富(说全说透)
每页、每段必须给具体内容——具体机制、具体例子、具体数据、具体数字、具体方法名。
- ❌ 空话套话:"本节介绍 X 方法" / "X 取得了较好的效果"
- ✅ 实义内容:"X 方法把推荐重新表述为条件生成任务,在 Amazon-Book 上 Recall@10 提升 12%,但推理延迟增加 3×"
判断标准:一段文字读完,读者能说出 ≥ 1 个具体知识点/数字/方法名——合格;否则不合格。
底线 2:不得有大空隙或留白
页面任何主要区域(≥ 70% 面积)不得出现肉眼可见的空白带。
留白时的处理优先级(与 §3.4 一致,此处为主表述):
1. 加内容(90% 适用)——加段、加图、加图标、加表格、加流程图
2. 缩字号或行距(仅当文字已很多)
3. 缩容器(最后手段)
绝对禁止:用"拉高 coreBox 容器 h"假装填满——这是 AI 偷懒的标志,用户一眼看穿。
判断标准:每张 PNG 渲染后,肉眼扫一遍——任何连续空白区域 ≥ 0.3 inch 都算违规。
例外:章扉页(章节首页)允许 30-40% 留白(美学需求,见 references/visual-signatures.md §6.1)——其余页面(含内容页/小结页)一律严守。
底线 3:不得多页同样的纯文本框排列(无图、无装饰、无变化)
⚠️ 澄清:这里的"重复"指的是多页都用同样的纯文本框排列方式(几页下来全是方框+文字,无图、无装饰、无视觉变化),不是"连续几页用同一种布局模式"。
具体含义:
- ❌ 多页都用"标题 + 一堆文字段 + 几个 bullet"模式堆叠——连续 2-3 页如此就开始模板化
- ❌ 多页都是方框+文本框堆叠,没有任何图片、图标、流程图、SVG、装饰元素穿插
- ✅ 多页可以有相同布局模式(左文右图),但每页应有自己的视觉锚点(图、图标、流程图、SVG、装饰条、数据徽章等)
- ✅ 视觉锚点不限于图——短竖条、配色变化、卡片形状变化、callout 警示框、引文块、图标+说明组合都算
判断标准:
- 连续翻 3 页,每页都"只有文字 + 文本框,没有任何视觉锚点" → 违规
- 即使每页布局不同,但都是"文字 + 文本框"形式 → 仍违规
- 解决方法:在每页加至少 1 个视觉锚点(详见 §五 怎么找图/怎么用图)
底线 4:不得大量使用方方正正的布局
方方正正 = 全页等宽均分卡片网格(如 2×2、3×3、4×4 严格均分)、左右栏严格对称、上下结构完全镜像。
应该用:非对称布局(左中右宽度不同、上下错位、大小卡片混合、嵌套、错位、点缀装饰元素)
判断标准:
- 2×2 卡片矩阵可以存在,但每个卡片的 w/h 可不同,或有视觉差异(颜色深浅、边框粗细、内容密度)
- 整页都是等宽均分 = 违规
- 应该有"视觉重心"——读者第一眼看哪、第二眼看哪,应该是有节奏的
底线 5:表格/大量文本框填满一页的情况不得超过每章 1-2 页
每章(10-20 页 PPT)的"表格页"和"多文本框密集页"加起来最多 1-2 页。
含义:
- 大表格(≥ 4 行 × 4 列)—— 整章最多 1 页
- "信息密集型文本框矩阵"(一页 ≥ 6 个独立文本块堆叠)—— 整章最多 1 页
- 其他页应该图文混排、段落穿插、有视觉呼吸
为什么:表格/密集文本框看起来"填满",但读起来累。AI 倾向用密集文本框掩盖内容贫乏,这是另一种偷懒。
判断标准:
- 翻完整章,数一下"纯表格页"+"纯密集文本框页"的数量,超过 2 页 = 违规
- 应该多见"图文结合页"(图 + 2-3 段解读)
底线 6:方框使用过多(v3.2 新增)
⚠️ AI 倾向大量使用"圆角矩形 + 文本"作为视觉容器——这是测试时发现的最常见问题。
方框(包括圆角矩形 roundRect、直角矩形 rect、胶囊形等)可以用,但要用得节制。
判定:每页方框数量 < 视觉锚点数。
具体规则:
- ❌ 一页有 4 个方框(callout + 2 卡片 + coreBox)+ 大量文字,无图、无图标、无其他视觉元素 → 违规
- ✅ 一页有 1-2 个方框 + 1 张图 + 1 个图标 + 适当文字 → 合理
- ✅ 一页全是图 + 短解读,无方框 → 也合理(方框少用)
方框之外的视觉锚点(多用这些替代方框):
- 📷 真实图片(论文原图、截图、照片)—— 详见 §5.1 / §5.2 来源 A、B
- 🎨 AI 生成图(ImageGen / ardot-slides 生成)—— 详见 §5.2 来源 C.B
- 📊 自绘流程图/架构图(addShape ellipse / arrow / line 组合)—— 详见 §5.2 来源 C.A
- 🔣 图标(圆形/方形 + emoji-like 简单图形 + 单行说明)
- 📈 数据可视化(matplotlib 图表 → PNG 嵌入)
- 📝 SVG 字符串(手绘风格示意图 → PNG 嵌入)
- 🎗️ 装饰元素(短竖条、点状标记、波浪线、阴影、圆点)
判断标准:
- 数本页的"方框数"和"非方框视觉锚点数"——锚点 ≥ 方框时合规
- 翻完整章,如果感觉"全是框"——违规
底线判断的优先级
如果底线之间冲突(如"内容丰富"要求加很多段落,但"方方正正"要求避免密集布局):
1. 底线 1(内容丰富) 和 底线 2(不留白) —— 最高优先级
2. 底线 6(方框不过度) —— 优先于方框/文本框堆叠
3. 底线 3(多页同样纯文本框) 和 底线 4(不对称)
4. 底线 5(表格不过度)
核心原则:先用图片/视觉锚点丰富(底线 6),再考虑布局变化(底线 3+4),最后控制方框/表格(底线 5)。
一、理解任务(启动前必做)
模型开始动手前,先回答 4 个问题:
Q1:这是给谁看的?
- 听众特征决定了视觉密度、信息深度、用词风格
- 例:同行专家 vs. 跨领域学者 vs. 投资人 vs. 大众 vs. 答辩评委
- 不同听众的审美敏感度天差地别——同样一份幻灯片,对专家可能"信息太浅",对外行可能"信息太密"
Q2:核心信息是什么?
- 一份 PPT 只能承载 1-3 个核心论点——多了就是失焦
- 找出最重要的 1-3 句话,然后用所有页面去支撑它们
- 失去焦点的 PPT = 没意义的 PPT
Q3:可调用的素材有哪些?
- 图片资源:用户提供了图吗?需要从论文/网页截吗?需要自己生成吗?
- 数据资源:有具体数字/统计/对比吗?
- 文字素材:用户给了大纲吗?有引文/案例吗?
- 素材的丰富程度直接决定 PPT 的承载力——素材贫瘠时,与其硬塞内容,不如让一页就讲一件事
Q4:风格调性是什么?
- 用户明确指定了风格吗?(如某特定汇报风/调色板)
- 还是让模型自由发挥?
- 风格应该服务于内容——学术答辩用花哨配色是错位,产品发布用纯黑白是乏味
二、内容策略(每页写什么)
2.1 单页信息密度原则
反对两种极端:
- ❌ 信息过载:一页塞 8 个段落、6 张图、4 个表格——读者看完什么都不记得
- ❌ 信息枯竭:一页就一句话 + 大片留白——浪费幻灯片这种载体
推荐原则:
- 单页承载 1-2 个核心信息点 + 3-5 个支撑细节
- 标题/章节小标点出信息点,正文/图/表提供支撑
2.2 "说全说透" vs "留白美学"
这是本 skill 唯一带有立场的内容原则:
> 默认追求"说全说透"——每段文字要给具体机制、具体例子、具体数据。
> 仅当用户明确说"希望简洁/极简/留白"时,才切换到"少即是多"风格。
原因:AI 经常用"留白"作为"我没内容可写"的借口,结果产出空洞。用户明确反对"两句话式缩略概括"——任何一段正文都应该有实质内容。
怎样让一段话"实"?四层结构(择 2-3 层填):
1. 核心机制/定义(是什么、为什么)
2. 具体做法/步骤/公式
3. 具体例子/数据/反例
4. 局限/适用边界/与其他方法的对比
2.3 写作语言
- 少用"接下来""让我们""本章将" 等水词——直接陈述内容
- 多用具象名词 + 具体动词 ——"TIGER 把推荐重新表述为生成"优于"TIGER 是一种生成式推荐方法"
- 避免"本文/本章/后文"自指——除非必要(论文/书章节)
三、视觉设计(怎么看着舒服)
3.1 风格不是孤立的——服务于内容
| 内容调性 | 适合的视觉风格 |
|---|---|
| 学术汇报 | 紫色学术调 / 黑白灰克制 / 微软雅黑+仿宋 |
| 产品发布 | 浅色调 + 大图 + 现代字体 |
| 数据报告 | 深色调 + 大量图表 + 等宽数字字体 |
| 故事叙事 | 暖色调 + 摄影图 + 手写感字体 |
| 教学课件 | 多色分类 + 图标 + 注释箭头 |
紫色学术调(可选参考风格:紫色调 + 微软雅黑/仿宋 + 高密度非对称布局)只是风格选择之一,可作为参考调色板,但不应强加于所有场景。
3.2 视觉 token(参考调色板)
以下颜色和字体作为示例 token,可根据用户场景自由替换:
// 示例:紫色学术调
const DEEP = "6E0F6D", PUR = "8D539A", SOFT = "A97FBB", PALE = "F4EEF8",
PALE2 = "EFE6F4", INK = "303030", GRAY = "7F7F7F", RED = "B02020";
// 示例:字体
const HEAD = "微软雅黑", BODY = "仿宋", TNR = "Times New Roman";
通用字号原则(不是死规则):
- 主标:22-28pt(视页面密度调整)
- 章节小标:14-16pt
- 正文:10.5-12pt(视受众调整;受众年级越高可越小)
- 注释/caption:9pt
3.3 反模式(这些不要做)
无论风格如何,以下做法几乎总是错的:
| 反模式 | 为什么差 | 替代方案 |
|---|---|---|
| 胶囊式文本框(圆角实心+图标) | 模板感、营销感 | 短竖条 + 文字 |
| emoji 做装饰 | 非正式、幼稚 | 删 |
| 彩虹渐变 | 视觉噪音 | 单色或两色 |
| 标题写"本章/本文" | 自指、废话 | 直接说内容 |
| 营销插画/3D 渲染 | 与学术/严肃内容错位 | 用真实图/架构图 |
| 大段空白无内容 | 浪费载体、看起来"没东西写" | 加内容(不是拉容器) |
| bullet 列表超过 5 行 | 信息密度不足 | 展开成段落 |
| 每页底部都有满宽总结框("核心判断/关键启示/主线") | 套路化、公式感——每页长得像一个模子刻出来的 | 短竖条(0.05"宽) + 一句话;标签用本页具体内容(如"第一空白"/"暗线三"/"贯穿脉络"),不用万能标签 |
| 总结用万能标签(核心/关键/启示/主线/共同/总之) | 措辞套路化——与内容无绑定,换任何一页都能用 | 给每个总结一个与本页内容强绑定的名字(例如讲"研究空白"就叫"第一空白",讲"暗线"就叫"暗线三") |
3.4 当用户说"留白太多"——该怎么办?
用户反馈 "留白/空白/看着空" 时,按 §0.5 底线 2 的处理优先级执行——第一选择永远是加内容(不是拉容器)。本节仅作速查引用,详细判定与阈值见 §0.5 底线 2。
容易被忽略的隐形原因:字号太小。 当正文普遍 <10pt、标题 <14pt 时,即使文字量不少,视觉上也会觉得"空"——因为每个字符占的面积太小,大面积背景色露出来。第一反应不是"内容不够",而是先检查字号是否偏小。如果小,整体放大 1-2pt(标题+正文+行距同步放),留白会自然减少,同时提升可读性。
分级放大参考(按当前字号档位不同增量不同,避免标题过大正文过小的悬殊):
- ≥30pt:+4pt
- 20–29pt:+3pt
- 14–19pt:+2pt
- 12–13.9pt:+1.5pt
- 10–11.9pt:+1.5pt
- 8.5–9.9pt:+1pt
- <7pt:+0.5pt
行距(lineSpacing)同步放大同档位增量。
四、布局设计(怎么安排空间)
4.1 布局是服务,不是装饰
- 不对称布局比对称网格更有动感、更现代
- 但完全对称有时也是合理的(如数据报告对比页)
- 选择布局时问自己:这页的核心信息是什么?读者视线应该先看哪里、再看哪里?
4.1.5 布局变化的硬要求(底线 3+4 落地)
整份 PPT 的布局节奏应该像音乐一样有起伏——两个层面:
层面 A:跨页节奏(底线 3 的核心):
- ✅ 每 2-3 页换一种布局(左右栏 → 上下结构 → 图主导 → 时间线 → 卡片矩阵……)
- ✅ 即使多页用同一种布局模式(如连续几页左文右图),每页也须有自己的视觉锚点(图、图标、流程图、SVG、装饰条、数据徽章等)——同布局≠同视觉
- ❌ 连续 3 页都是"纯文本框排列"(无图、无图标、无装饰、无其他视觉锚点)——这是底线 3 的违规
层面 B:单页内部(底线 4 的核心):
- ✅ 同一布局内可有变化(2×2 矩阵允许卡 w/h 不同、颜色深浅不同、密度不同)
- ✅ 混合布局元素(一页可以同时用 header + 左文右图 + 底部 coreBox + 卡片)
- ❌ 整页等宽均分(4 等分 2×2 卡片、左右严格对称、上下完全镜像)——这是底线 4 的违规
判断技巧:
- 跨页:做完 PPT 翻一遍,如果连续 3 页感觉"长得像"且都是纯文本框(无视觉锚点),就违反底线 3
- 单页:任何一页打开,如果是"严格等宽均分网格",就违反底线 4
4.2 常见布局选择(不限于以下,可自由组合)
- 章扉页:左侧大标题 + 右侧路线图 + 底部章节预览
- 左文右图:文字解读 + 论文原图/架构图
- 左图右文:图主导(左 60% 宽)+ 文字解读
- 左右对照:两栏对照(如"传统方法 vs 新方法")
- 上下结构:上方标题/总论 + 下方卡片网格
- 2×2 / 3×2 卡片矩阵:方法对比、分类坐标
- 时间线横向:演进脉络、里程碑
- 流程图:机制说明(自绘 or SVG)
- 大图 + 短解读:产品截图、论文核心图
- 大数字 + 一行解释:KPI 突出
- 混搭:同一页用 ≥2 种布局元素
不要套用固定模板——每一页根据内容选最合适的布局。
4.3 布局元素的"角色"
| 元素 | 角色 | 用在哪 |
|---|---|---|
| 顶部 header | 页标 + 章节定位 | 每页 |
| 短竖条 + 文字 | 段落引导 | 每个段落开头 |
| 实心圆角矩形(coreBox) | 关键判断/结论 | 页底或关键论点处 |
| 虚线框(dashBox) | 辅助说明/警示 | 需要强调但不喧宾夺主处 |
| 单箭头(→) | 流程连接 | 步骤之间 |
| 双向箭头(↔) | "互补/对照/并列" | 对照矩阵中心 |
| 大图 + 图说 | 论文原图/架构图 | 方法详解页 |
4.4 PptxGenJS 布局代码模板
assets/gen_ch2_patterns.js 提供了 14 个核心函数的可复用代码模板(header / secT / coreBox / dashBox / card / callout / arrowR / leftRightArrow / vdiv / hdiv / cap / centerCircle / threeStepHook / lbl)。这些是起点,不是终点——可以根据需要扩展或替换。
五、素材处理(怎么用图)
> 核心立场:PPT 应该是视觉载体而非文字载体——图片、图标、流程图、SVG、自绘图比"方框+文本"更有信息承载力。AI 倾向大量使用"圆角矩形 + 文本"是因为它简单,但这会让 PPT 失去视觉冲击力。
>
> 底线 6(方框使用过多):每页方框数 < 视觉锚点数。多用图片/图标/流程图替代纯方框。
5.0 为什么必须多用图——方框+文本的局限
方框(圆角矩形/胶囊/直角矩形)作为视觉容器的问题:
- ❌ 信息密度低——同样的"内容丰富"用图能传达 3-5 倍信息
- ❌ 视觉单调——连续几页方框堆叠,读者视觉疲劳
- ❌ 失去冲击力——专业的 PPT 应该有图、有流程、有数据可视化
- ❌ AI 偷懒标志——大量方框 = AI 没找到合适的图/不会生图
改进策略:
1. 每页至少 1 个非方框视觉锚点(图/图标/流程图/SVG/数据图)
2. 核心页用大图 + 解读(替代"一堆文字")
3. 方法页用架构图(自绘或截论文)
4. 数据页用图表(matplotlib/echarts)
5. 概念页用 AI 生图或 SVG 示意图
5.1 从对话历史/记忆中分辨可用素材
为什么这一步很重要:用户给的素材分散在对话历史、之前的工作产物、上传的文件中。AI 经常直接"无视"这些素材去硬造内容,导致用户感觉"AI 没看我给的东西"。
5.1.1 怎么分辨对话历史中的素材
主动扫 4 个来源:
1. 对话历史:之前 Read/Write/Edit 的文件、上传的图片、用户提到的论文/链接/数据
2. 项目工作目录:pwd 下的子文件夹(如 figures/、references/、素材/、风格参考/)
3. 临时目录:/tmp/、AppData/Local/Temp/(用户可能上传的 PPT 风格参考、fig 资源)
4. MEMORY.md(用户级 + 项目级)—— 之前工作提到的素材清单
具体动作:
在动手前,先回答:
- 用户提过哪些论文/数据/图片?是否在本地有 PDF?
- 用户上传过哪些 PPT 模板或参考图?
- 项目目录里是否有相关 fig/ 资源?
- 之前的 memory 里提到过哪些素材?
示例:
- 用户说"做文献综述第二章 PPT" → 去项目的 references/ 或论文目录找对应章节 PDF
- 用户说"按 XX 风格做" → 去项目的 风格参考/ 或 template/ 找参考图
- 用户上传过一张图 → 在 Read tool 历史里找路径
5.1.2 怎么从素材库识别可用图
素材库常见形态:
- references/ 或 papers/(论文 PDF,按主题分子目录)
- fig/ 或 resources/(已下载的图)
- style_preview/(风格参考)
- 上传目录(用户直接给)
识别可用图的 4 步法:
1. 先用 Read 工具扫 PDF 首页标题(避免下错文——实战教训)
2. 读 PDF 内嵌图(PyMuPDF 提取 → 存 PNG → 看是否清晰)
3. 判断图是否适合 PPT:
- 架构图 ✅(适合方法页)
- 流程图 ✅(适合机制页)
- 实验结果图 ✅(适合数据页)
- 算法伪代码 ⚠️(太大不适合,可用片段)
- 整页截图 ⚠️(可能模糊)
- 装饰性插画 ❌(与学术内容错位)
4. 记录可用图路径(写到 memory 或脚本里,下次直接复用)
5.2 三种图片来源 + 详细操作
来源 A:用户提供的图(最优选)
- 在哪里找:对话历史中
Read <image>调用、用户上传附件、fig/目录 - 怎么用:直接
s.addImage({ path: ... }),加图说 + 来源标注 - 判定:能用 A 就不用 B/C
来源 B:从论文/网页截取
- 截取工具:
- PyMuPDF(推荐):
fitz.open(pdf).load_page(i).get_pixmap().save("out.png") - Playwright(网页):
page.screenshot() - 直接 arxiv PDF 链接 → PDF → PyMuPDF
- 开卷核验硬约定(实战教训):
- 截取后先打印首页标题确认是正确论文(避免下错文 PDF)
- 错文 PDF 是 AI 最高频翻车之一
- 图说 + 来源:
图 2-5 COBRA 架构 (引自 [73] Figure 2)
来源 C:自己生成(重要技能 · v3.2 扩展)
| 方式 | 工具 | 适用场景 | 难度 |
|---|---|---|---|
| 自绘流程图/架构图 | PptxGenJS addShape(rect/ellipse/arrow/line) |
方法机制、流程、分类 | 低(最常用) |
| SVG 字符串 | 写 SVG → 转 PNG → addImage |
手绘风格示意图、概念图 | 中 |
| AI 生图 | ImageGen / ardot-slides | 封面、概念图、装饰 | 低(高自由度) |
| 数据可视化 | matplotlib / echarts → PNG | 数据报告、统计图 | 中 |
A. 自绘流程图/架构图(PptxGenJS addShape)
这是最常用、最可控的方式。代码示例(5 节点流程):
const steps = [
{ t: "输入", s: "用户行为", w: 1.50 },
{ t: "编码", s: "SentenceT5", w: 1.80 },
{ t: "量化", s: "RQ-VAE", w: 1.80 },
{ t: "生成", s: "Transformer", w: 1.80 },
{ t: "输出", s: "Top-N", w: 1.50 },
];
let x = 0.65;
steps.forEach((st, i) => {
s.addShape("roundRect", { x, y: 2.0, w: st.w, h: 1.0, rectRadius: 0.07, fill: { color: WHITE }, line: { color: PUR, width: 1.25 } });
s.addText(st.t, { x, y: 2.1, w: st.w, h: 0.3, fontFace: HEAD, fontSize: 11, bold: true, color: DEEP, align: "center" });
s.addText(st.s, { x: x + 0.05, y: 2.45, w: st.w - 0.10, h: 0.5, fontFace: BODY, fontSize: 9, color: INK, align: "center" });
x += st.w + 0.25;
if (i < 4) arrowR(s, x - 0.22, 2.4, 0.20, 0.22);
});
B. AI 生图(ImageGen / ardot-slides)
- 适合:封面、概念图、装饰、抽象示意
- prompt 要具体——"一张学术 PPT 封面,主题是生成式推荐,紫色调,简洁专业" 比 "封面图" 好 10 倍
- prompt 模板:
<主题> + <色调> + <风格> + <构图> - 范例 prompt:
- 学术风:
Minimalist academic PPT cover for "Generative Recommendation" research, purple gradient, clean typography, no people, professional - 故事风:
Warm illustration of "data flow" concept, hand-drawn style, soft colors
C. SVG 字符串
const svg = `<svg viewBox="0 0 600 200" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="50" width="80" height="100" fill="#6E0F6D" />
<text x="50" y="100" text-anchor="middle" fill="white" font-size="14">A</text>
<line x1="90" y1="100" x2="160" y2="100" stroke="#8D539A" stroke-width="2" />
<rect x="170" y="50" width="80" height="100" fill="#8D539A" />
<text x="210" y="100" text-anchor="middle" fill="white" font-size="14">B</text>
</svg>`;
// 先转 PNG(用 Pillow 或 cairosvg),再 addImage
D. 数据可视化
- matplotlib(推荐,跨平台)→ PNG
- echarts(更精美,但要交互转静态)
- 简单的
s.addShape("pie")也能画饼图
判断优先级:
能用 A(用户提供)→ 优先 A
需要方法图/架构图 → C.A 自绘
需要封面/装饰/概念图 → C.B AI 生图
需要数据图表 → C.D matplotlib
需要手绘风示意图 → C.C SVG
5.3 图片适配(怎么放进 PPT)
适配 ≠ 直接放——AI 经常直接把图丢进 PPT,不考虑版面:
| 适配环节 | 操作 | 常见错误 |
|---|---|---|
| 纵横比 | imgH = imgW / (原图w/原图h) |
写死 h 导致变形 |
| 尺寸 | 单图 ≤ 50% 页面宽;多图 ≤ 30% | 图太大压文字 |
| 位置 | 与文字段有 ≥ 0.10 inch padding | 图压文字 |
| 裁切 | 必要时用 addImage 的 sizing: { type: "crop", w, h, x, y } |
整张大图浪费版面 |
| 缩放 | 高分辨率图可放大;低分辨率图必须缩小 | 模糊 |
| 图说 | caption 紧贴图下方(y = 图 y + 图 h + 0.05) | 图说漂移 |
5.4 图片布局(怎么与其他元素搭配)
6 种常见搭配方式:
-
大图 + 短解读(图主导):
- 图:左 60% / 右 60%
- 解读:另一侧 1-3 段(每段 ≤ 80 字)
- 适合:核心架构图、流程图 -
左文右图(文字主导):
- 文:左 50%,多段
- 图:右 40%
- 适合:方法详解(左侧解读机制,右侧看图) -
上图下文:
- 图:上 40%
- 文:下 50%
- 适合:流程图 + 步骤解读 -
图片矩阵(2×2 / 3×2):
- 每张图大小一致或递减
- 每张图配 1 行图说
- 适合:对比分析 -
图 + 数据徽章:
- 图周围点缀数字徽章(圆角紫色 + 数字 + 一行解释)
- 适合:数据报告 -
图 + 引文块:
- 图右侧/下方放引文("原话:xxx —— XX 2023")
- 适合:引用专家观点
5.4.5 数据图标注策略(v3.4 新增·柱状图/折线图常见坑)
数据图(柱状图、折线图)的标注文字是最容易超边界、遮挡或看不清的。遵循以下原则:
- 柱状图的数值标注:
- 柱子足够长(>全宽的 35%)→ 标注放在柱内,白色/浅色文字
- 柱子很短(<全宽的 35%)→ 标注放在柱右侧,灰色文字
- 绝对不要所有柱都把标注放柱右侧——最长的柱 + 右侧标注会超页面边界 - 折线图的图例:
- 3 条以内:放在图表内部右上角(不与曲线重叠)
- 4 条以上:放在图表下方或右侧单列
- 末点标注数值时,要给右侧留至少 0.8" 空间放文字 - 图注 caption:
- 位置:图表底部,字号比正文小 1-1.5pt,灰色斜体
- 必须包含:图号 + 内容描述 + 来源/自绘说明
选择图表类型的经验:展示"递增/对比强度/分组比较"用柱状图更直观;展示"时间序列趋势/连续变化"才用折线图。
5.5 图片处理的核心规则(实战经验)
无论图片来源如何,必须逐项核对:
| 检查项 | 判定 | 翻车后果 |
|---|---|---|
| 纵横比 | 渲染 w/h = 原图 w/h ± 5% | 人脸/图表变形 |
| 裁切边界 | 4 边不切到关键信息(人脸/公式/轴标签) | 重要内容被切 |
| 遮挡 | 图片矩形不与文字/卡片重叠 | 覆盖正文 |
| 分辨率 | 渲染宽 inch × 150 dpi ≤ 原图像素宽 | 模糊 |
| 图说位置 | caption 紧贴图下方(y = 图 y + 图 h + 0.05) | 图说漂移 |
| 留 padding | 与相邻元素 ≥ 0.10 inch | 视觉拥挤 |
纵横比公式(必背):
const imgH = imgW / (原图w / 原图h); // 不能写 h: 拍脑袋数字
5.6 箭头处理(v2.5 新增教训)
箭头是 AI 经常出错的元素——遮挡文字、方向错、歪斜。必须核对:
| 检查项 | 判定 |
|---|---|
| 方向 | 与逻辑流向一致(左→右 / 上→下) |
| 方向一致性(v3.4 强化) | 流程箭头方向必须与步骤排布方向一致——步骤上下排列就用↓箭头(竖线+倒三角),步骤左右排列才用→箭头。不能"步骤竖排、箭头横指"(逻辑方向与视觉方向分裂,用户一眼就觉得错)。 |
| 遮挡 | 不与文字矩形重叠 |
| 尺寸 | w ≥ 0.20 inch;横向箭头 h ≈ w × 0.7 |
| 对齐 | 箭头 y = 前后框中心 y 平均值 ± 0.05 inch |
| 颜色 | 与页面色调协调(不要刺眼颜色) |
| 文字标签 | 紧贴箭头(y = 箭头 y ± 0.30 inch) |
| 坐标非负(致命·2026-08-13 新坑) | line 的 w/h 严禁为负。PptxGenJS 会把负值写进 XML <a:ext cy="-128016">,PowerPoint 打开直接报 0x80070570"文件损坏"(python-pptx 等宽松解析器却能正常读,极隐蔽)。 |
负坐标的修复模式:画"两点连线"必须用 segLine 模式,不能直接算 w: x2-x1, h: y2-y1(当 y2<y1 或 x2<x1 时产生负值):
// 两点连线:自动取 min 起点 + 绝对宽高(写进脚本头部,全局复用)
function segLine(s, x1, y1, x2, y2, opts = {}) {
s.addShape("line", Object.assign(
{ x: Math.min(x1, x2), y: Math.min(y1, y2),
w: Math.abs(x2 - x1), h: Math.abs(y2 - y1) }, opts));
}
// 用法:segLine(s, px, py, nx, ny, { line: { color: "#8D539A", width: 1.5 } })
高危场景:折线图/曲线图的"点连线"(后续点的 y 往往小于前一个点)、树状图向左伸展的分支。生成后用脚本全量扫 <(?:a:off|a:ext)[^>]*"-(\d+)" 应为 0。注意 0 值(h=0 横线 / w=0 竖线)合法,负值才致命。
5.7 复杂图例设计思维(v3.6 新增 · 做图前先读)
当一页需要一个复杂示意图(时间轴/同心环/矩阵/循环/台阶/流程/树/漏斗等非照片非数据图的逻辑图)时,不要先想"我有什么模板/代码",先想"这段内容里是什么逻辑关系"。完整方法论见 references/figure-thinking.md,此处立三条立场 + 一个流程:
三条立场:
1. 图例不是装饰,是内容逻辑的空间映射——读者不看文字就能"看见"关系才是好图。
2. 复杂图 = 简单原语 × 组合语法——skill 在组合(主轴/节奏/层次/对齐/强调/呼吸),不在稀奇原语。
3. 一图一信息——每张图只承载一个核心判断,塞两种以上逻辑结构 = 两张图硬拼,拆开。
设计流程(六步):提取逻辑骨架(写 1–3 条关系句)→ 隐喻映射(按逻辑关系查隐喻库选空间形态,可一主一辅叠加)→ 原语分解 → 坐标骨架(先主轴后节点再容器最后标注)→ 统一涂装(全档一致配方)→ 探针验证(旋转/斜切/渐变方向不猜,先探针页实测)。
模板/代码的定位:assets/ 和 figure-replication.md 里的配方是语法的实例,帮你不从零写代码,但选什么形态、怎么组合,永远从内容逻辑出发,不是从模板出发。
六、自检(提交前必须做)
6.1 内容自检(每页)
- [ ] 标题是否点出了本页核心信息?
- [ ] 正文是否给了具体机制/例子/数据(不是空泛概括)?
- [ ] 引用是否准确(如有引文)?
- [ ] 图说是否齐全?
- [ ] 是否有"接下来/本章/本文"等水词?
6.2 视觉自检(每页)
- [ ] 主要区域是否有明显留白带? → 按底线 2 处理(加内容优先)
- [ ] 文本框是否"贴底"?(h ≈ 实际行数 × 行高 + 缓冲)—— 见 §6.3
- [ ] 图片是否通过 §5.5 全部检查项(纵横比/裁切/遮挡/分辨率/图说/padding)?
- [ ] 箭头是否通过 §5.6 全部检查项(方向/遮挡/尺寸/对齐/颜色/标签)?
- [ ] 负坐标扫描:解压 pptx 全量扫
<(?:a:off|a:ext)[^>]*"-(\d+)"应为 0(负值 = PowerPoint 打不开,见 §5.6 坐标非负)? - [ ] 风格是否前后一致?
6.3 文本框 h 反推公式(v2.4 教训)
问题诊断:AI 经常给文本框一个"安全值"h(如 1.40),但实际文字只占 0.60——框内大量空白,AI 还以为"挺满的"。
公式:
每行 inch 高度 = lineSpacing / 72
每行字数 ≈ (w - 0.30) / (fontSize × 0.014)
rows = ceil(实际字符数 / 每行字数)
容器 h = rows × (lineSpacing/72) + 0.10 // 0.10 缓冲
辅助函数:见 assets/gen_ch2_patterns.js 的 fitH(text, w, fontSize, lineSpacing)——自动反推最小 h。
例外场合(允许 h > 实际文本高):
- 章扉页大数字(艺术设计)
- 底部核心判断框(呼吸感)
- 提示框(视觉强调)
七、技术流水线(怎么动手)
7.1 通用技术栈
- 生成:PptxGenJS(Node.js v22+)脚本化生成 .pptx
- 画布式设计:ardot-slides(用户偏好时)
- 导出验证:PowerShell COM (PowerPoint.Application) → PNG
- 图像分析:Python (Pillow / PyMuPDF)
7.2 通用工作流
1. 理解任务:§一 的 4 个问题
2. 选风格:参考调色板(§三)或自创
3. 列大纲:每页核心信息(§二.1)
4. 写脚本:gen_N.js(PptxGenJS)或 ardot-slides(画布)
5. 渲染验证:导出 PNG + 自检(§六)
6. 迭代:用户反馈 → 调整 → regen
7.3 验证方式(C 模式用尺子,A 模式用眼睛)
| 档位 | 判定 | 验证策略 |
|---|---|---|
| A 原生多模态 | 能直接看 PNG/PDF | 眼睛为主、尺子为辅——跳过量化工具直接肉眼评 |
| B 多模态受限 | 部分能看 | 中庸策略——能眼睛就用眼睛,受限项用尺子兜底 |
| C 纯文本 | 只能读代码 | 尺子为主——跑 fitH/纵横比/对齐公式 + 关键页人工复核 |
A 模式绝对不要:仍然依赖 grid_density.py 不看图(浪费原生能力)。
7.4 通用技术坑(必须规避)
- JS 字符串嵌套引号:
"X" "Y"会 SyntaxError,改用『X』『Y』或「」 - PptxGenJS 文件锁:每次 regen 前
Get-Process *PowerPoint* | Stop-Process -Force - 图片 w/h 不核原图比例:变形——必须先读原图尺寸再算 h
- 箭头与文字重叠:箭头 y 必须算清楚再放
- 文本框 h 给"安全值":用 fitH 反推
八、迭代协议(用户反馈后怎么办)
8.1 反馈分类速查
| 用户原话 | 类别 | 默认动作 |
|---|---|---|
| 留白太多 / 看着空 | content-gap | 加 100-200 字实义段(不是拉容器) |
| 内容稀疏 / 框内空白 | text-fit-violation | fitH 反推 h 收紧 |
| 丰富一下 | content-thin | 每段加 1-2 句 |
| 不要这种文本框 | dead-frame | 删边框 / 改短竖条 |
| 调一下间距 | spacing | 缩字号/lineSpacing |
| 调一下颜色/大小 | style | 主色保留,辅色微调 |
| 箭头被遮挡 | arrow-overlap | 缩卡片宽 + 加大间距 |
| 太紧凑了 | cramming | 拆为两段 / 加分割线 |
| 排版歪了 | alignment | x/y 对齐到 0.05 inch 倍数 |
| 字号不对 | typography | ±0.5pt 微调 |
| 缺图 | visual-missing | 从素材库选 or 自绘 |
| 文字截断 | overflow | h += 0.05~0.10 / 字号 -0.5pt |
| 整体不像想要的风格 | style-mismatch | 整体重设调色板,不动内容 |
8.2 多选区同时反馈的处理
- 列清单(页码 + 反馈类型 + 修复策略)
- 按风险排序:纯文字 > 颜色字号 > 位置 > 结构调整
- 一次脚本 edit 修完所有点
- regen + verify 一次完成(避免半成品状态)
8.3 何时算"到位"
满足任一即可:
- 用户明确认可"可以"
- 内容三段都填实了(机制+例子+局限/衔接)
- 视觉密度合理(无明显留白带)
九、bundled 资源
references/
design-spec.md:示例调色板(紫色学术调 / 现代极简 / 暖色故事三种)+ 通用字号/行距/间距 token + 反套路化指南(底部满宽总结框 + 万能标签识别与替代)+ 字号分级放大策略layout-patterns.md:通用布局代码模板(可扩展、自由组合)writing-patterns.md:通用写作原则(说全说透、段首加粗短句、平行结构等)visual-signatures.md:某紫色学术调的视觉 DNA 参考示例——仅该风格被明确指定时严格遵守;其他场景仅作"如何沉淀视觉 DNA"的方法示例(v3.3 起明确此定位)feedback-taxonomy.md:通用反馈分类速查(16 类 · 新增套路化/数据图超界,箭头方向并入类别 9)validation-modes.md:A/B/C 三档模型能力的差异化验证策略figure-replication.md:图例分析与复刻手册(逆向)——用户拿来外来风格化 PPT 要求"分析图例并做类似复杂图"时:解包/页媒映射/XML 参数提取、8 类复杂图构造表、阴影/渐变/色板配方、curvedDownArrow 旋转方向表(探针实测:右 0 下 90 左 180 上 270,与图例八/V 开口朝向/箭头方向三者对照)、python-pptx vs PptxGenJS 覆盖度figure-thinking.md:复杂图例设计思维(正向 · v3.6 核心)——拿到一段内容如何自己设计出恰当的复杂图:三条核心立场(图=逻辑的空间映射 / 复杂=原语×语法 / 一图一信息)+ 按逻辑关系组织的隐喻库(10 类+组合叠加)+ 组合语法六条(主轴/节奏/层次/对齐/强调/呼吸)+ 视觉变量→语义映射表 + 设计六步法 + 探针工作法 + 反模式。做图先读这篇,模板是实例不是答案
scripts/
grid_density.py:4×4 网格密度分析(C 模式兜底)whitespace.py:垂直 gap 检测(C 模式兜底)export_pngs.ps1:PowerPoint COM 导出 PNG
assets/
gen_ch2_patterns.js:核心函数库(14 个函数:header/secT/coreBox/dashBox/card/callout/arrowR/leftRightArrow/vdiv/hdiv/cap/centerCircle/threeStepHook/lbl/fitH)—— 起点,可自由扩展gen_ch_example.js:最小可运行示例("Hello World" 章节)
十、不要做的事(无论什么风格)
| 反模式 | 后果 | 替代方案 |
|---|---|---|
| 套用固定模板不思考 | 死板 | 根据内容重新选布局 |
| 强加配色不沟通 | 风格错位 | 让用户选风格 |
| 内容空洞/空话套话 | 底线 1:内容丰富不达标 | 给具体机制/数据/方法名 |
| 大段空白无内容 | 底线 2:违反不留白 | 加内容(不是拉容器) |
| 连续 3 页都是纯文本框排列(无图无装饰无视觉锚点) | 底线 3:多页纯文本框排列 | 每页加 1 个非方框视觉锚点(即使同布局也须有不同锚点) |
| 整页等宽均分(2×2/3×3/4×4 严格对称) | 底线 4:方方正正 | 非对称布局 + 视觉重心 |
| 每章 ≥ 3 页纯表格页/纯密集文本框页 | 底线 5:表格/密集框过多 | 多图文结合页(每章最多 1-2 页) |
| 一页全是方框+文本,无图/无图标/无其他视觉锚点 | 底线 6:方框使用过多 | 每页至少 1 个非方框视觉锚点(图/图标/流程图/SVG/数据图) |
| 仅拉高容器假装填满 | 用户立刻识破 | 加内容 |
| bullet 列表 >5 行 | 信息密度不足 | 展开成段落 |
| emoji 做装饰 | 幼稚 | 删 |
| 标题写"本章/本文" | 自指 | 直接说内容 |
| 用营销插画/3D | 与严肃内容错位 | 真实图/架构图 |
| 图片不核纵横比 | 变形 | h = w / (原图w/原图h) |
| 文本框 h 给"安全值" | 框内大量空白 | fitH 反推 |
| 箭头遮挡文字 | 视觉错乱 | 算清楚 y 再放 |
| 每页底部满宽总结框("核心判断/关键启示") | 套路化·公式感·每页像一个模子刻出来的 | 短竖条 + 一句话;标签与本页内容强绑定 |
| 万能标签总结(核心/关键/启示/主线/共同/总之) | 措辞套路化·换任何一页都能用 | 给总结起个具体名字(如"第一空白"/"暗线三"/"贯穿脉络") |
| 流程箭头方向与步骤排布方向不一致(步骤竖排但箭头横指) | 逻辑方向分裂·用户一眼觉得错 | 步骤上下排列用↓(竖线+倒三角),左右排列才用→ |
| 未看用户素材就开做 | 方向跑偏 | 先 Read 素材 |
十一、v3.0 重构说明(与 v2.6.1 对比)
用户原话(2026-08-13,节选):
> "这个 skill 做得太死板了,我想要的是一个通用的 ppt 制作技能,而不仅限于某个特定主题的框架下。不要对具体内容做任何限制,要在所有场景都能调用此skill生成同样式的ppt。这个 skill 要做的是引导模型如何制作,教模型怎么从素材中选图、怎么自己生图,辅导其布局排版、丰富内容,而不是强加内容、定死模板、限制发挥。"
v2.6.1 → v3.0 主要改动:
- 名称保持(避免破坏现有 trigger)但 display_name 改为"通用 PPT 制作教练"
- 删除所有"个人风格专属"措辞——紫色作为可选参考调色板,不是必须
- 删除"7 条硬约束"——改为"内容策略"和"视觉设计"两节,给原则而非命令
- 删除"15 页 S1-S15 固定结构"——改为"常见布局选择",可自由组合
- 删除"文本框 h 反推公式"作为硬约束——改为"§六.3 自检工具",可参考
- 删除"反模式表"中针对综述内容的具体规则——保留通用项
- 增加 §一「理解任务」4 问——让模型先想清楚再动手
- 增加 §五.1「图片三种来源」——教模型如何选图/生图
- 保留视觉 token / 字体 / 布局函数库作为起点参考——可自由替换
未删除(保留为参考):
- assets/gen_ch2_patterns.js 14 个函数——通用布局工具,可任意场景复用
- 字号/行距参考值——通用建议,非硬约束
- 自检清单(§六)——通用自检工具
- 反馈分类速查(§八.1)——通用反馈响应
- 技术坑(§七.4)——通用技术避坑
附:本 skill 的诞生
- v1.0 → v2.6.1:作为「某个人风格(紫色学术调)」专属 skill,迭代 19 轮(2026-08-08~09)
- v3.0.0:用户反思"太死板,要通用"——重构为通用教练,移除具体内容限制
- v3.1.0 → v3.2.0:用户加回"基本要求"——6 条硬底线 + 找图方法论(教练式引导 + 底线式约束的两层结构)
- v3.3.0:深度通读优化——修复底线定义与后文章节的全部交叉引用/表述冲突,visual-signatures.md 明确"风格示例"定位
- v3.4.0:反套路化指南(底部满宽总结框 + 万能标签双重识别)+ 箭头方向一致性 + 柱状图标注策略 + 字号分级放大
- v3.5.0:新增 figure-replication.md——外来 PPT 图例分析与复刻方法论(含弧箭方向表与 python-pptx 复刻配方)
- v3.6.0:新增 figure-thinking.md——复杂图例设计思维(正向方法论:逻辑关系→空间隐喻→组合语法→设计六步法),把图例制作从"模板复刻"升级为"从内容逻辑出发的自由设计";SKILL.md 加 §5.7 指引节
- 设计哲学:宁可少给规则,让模型自己判断;不要给太多规则,把模型变机械。但用户划的 6 条底线一律严守
<!-- ═══════════════════════════════════════════════════════════
制作者彩蛋 · Easter Egg
═══════════════════════════════════════════════════════════ -->
██████╗ ██████╗ ████████╗
██╔══██╗██╔══██╗╚══██╔══╝
██████╔╝██████╔╝ ██║
██╔═══╝ ██╔═══╝ ██║
██║ ██║ ██║
╚═╝ ╚═╝ ╚═╝
> 你翻到了这里——说明你真的读到了最后。
> 这份 skill 由 Rh.xu 打磨而成,愿它帮你做出每一页都漂亮的演示文稿。✨