| name | ppt-master |
| description | 专业PPT设计制作技能。⚠️【强制】必须先完成需求分析(Step 1),不允许直接开始制作。无论用户提供什么材料,都必须通过提问收集完整需求后才能继续。触发条件:用户需要制作PPT、设计幻灯片、汇报演讲、课件制作、PPT模板设计、PPT美化、PPT排版、幻灯片设计、slides、.pptx文件生成等任何与PPT相关的任务。融合了专业设计原理(CRAP原则、配色心理学、版式设计)、PptxGenJS代码生成能力和SVG高级图形绘制,包含22个PptxGenJS预建模板、52种SVG图表模板和Q1-Q9设计决策框架。 |
PPT Master - 专业PPT设计制作技能
⚠️ 执行警示(必读)
10%核心原则:PPT设计的80%价值来自20%的核心知识。不要为了查"图片处理12法"而忽略了核心原则的应用。
每次必查的20%
🚨 强制执行警告
🚨 违规警告:如果在没有完成 Step 1 需求分析的情况下直接开始生成内容,所产生的内容不被认为是正确的技能执行。正确的流程永远是:提问 → 确认 → 执行。
⚠️ 【强制规则 - 绝对禁止跳过】
- 即使用户给了完整文档,也要提问确认
- 即使用户说"直接做",也要先完成需求收集
- 需求分析是第一步也是唯一的第一步,在完成之前禁止:
- 违反此规则将导致生成内容不符合用户需求
核心决策流程
⚠️ 【强制入口】必须从这里开始,不允许跳过
↓
[Step 1: 需求分析] → ★★★ 必须先完成 Step 1 ★★★
↓
[Step 2: 场景判定] → ★ 必须等 Step 1 完成 ★
↓
[Step 3前: 设计决策] → ★ Q1-Q9 + CRAP框架自问 ★
↓
[Step 3: 设计执行] → 按must-read + scenario读取references
↓
[Step 4前: 设计验证] → ★ 单页+全局检查清单 ★
↓
[Step 4: 代码生成] → PptxGenJS实现
Step 1: 需求分析(强制执行)
⚠️ 【强制规则 - 绝对禁止跳过】
在完成需求分析之前,你 绝对不能 做以下任何事情:
- ❌ 阅读用户的材料文件
- ❌ 分析材料内容
- ❌ 规划PPT结构
- ❌ 生成任何代码
必须使用 AskUserQuestion 工具提问
必要信息检查
| 必要信息 | 说明 |
|---|
| 主题 | 汇报什么/演讲什么 |
| 受众 | 谁来听(影响风格和内容深度) |
| 页数 | 预计多少页(影响信息密度) |
| 风格 | 正式/轻松/技术深度(影响用词和视觉) |
| 场景 | 什么场合 |
⚠️!!! 即使提供了材料,也要向用户确认以上信息。材料 ≠ 完整需求。
提问清单
| # | 问题 | 选项示例 |
|---|
| 1 | 听众是谁? | 内部同事/领导/客户/投资人/学术/其他 |
| 2 | 什么场景? | 工作汇报/商业提案/产品发布/培训/个人展示 |
| 3 | 几分钟/几页? | 5-10页/10-20页/20-30页/40页+ |
| 4 | 有材料吗? | 完整文档/部分素材/大纲/无材料 |
| 5 | 什么风格? | 正式商务/科技简约/轻松活泼/高端大气 |
进阶分析:观众分层和KANO需求分析见 references/thinking.md
需求确认模板
## 需求摘要(待确认)
| 项目 | 您提供 |
|------|--------|
| 主题 | [提炼的主题] |
| 受众 | [用户选择 - 决定风格和内容深度] |
| 场景 | [用户选择 - 决定信息密度] |
| 时长/页数 | [用户选择 - 决定篇幅] |
| 风格 | [用户选择 - 决定视觉和用词] |
请确认以上信息是否准确?
Step 2: 场景判定(核心决策点)
根据受众+场景组合判定PPT等级和设计策略。
听众 → 内容深度
| 听众 | 技术深度 | 术语处理 |
|---|
| 学生/学术 | 低 | 通俗解释 |
| 技术人员 | 高 | 可用专业术语 |
| 管理层 | 中 | 侧重价值/成本 |
| 客户/投资人 | 低~中 | 侧重商业价值 |
| 普通大众 | 极低 | 避免术语 |
PPT三等判定
| 等级 | 特征 | 适用场景 |
|---|
| 一等 | 极简、故事、打动人 | 产品发布/路演/TED |
| 二等 | 结构清晰、信息分层 | 学术汇报/培训/工作汇报 |
| 三等 | 功能完整、操作熟练 | 日常汇报/入门演示 |
场景 → 等级映射
| 场景 | 等级 | 信息密度 | 核心原则 |
|---|
| 产品发布/路演 | 一等 | 极低(一页一信息) | 乔布斯极简法 |
| 学术汇报/培训 | 二等 | 中~高 | 专业严谨、逻辑清晰 |
| 工作汇报/述职 | 二等 | 中 | 结论先行、数据支撑 |
| 商业提案/BP | 一等~二等 | 低~中 | 结论先行、说服力 |
| 内部分享 | 二等~三等 | 中~高 | 技术清晰、适度详细 |
三维体系快速自检
| 维度 | 问题 | 检查点 |
|---|
| 难忘感 | 观众离开后能记住什么? | 金句/画面/数据 |
| 设计感 | PPT是否专业好看? | 配色/字体/排版 |
| 仪式感 | 演讲是否有感染力? | 开场/结尾 |
完整说明见 references/three-dimensions.md
★ Step 3前: 设计决策(强制节点)
⚠️ 必须执行:在选择配色/字体/版式之前,先用 Q1-Q9 + CRAP框架自问。
Q1-Q9 设计决策清单
每页必须完成 Q1-Q9,Q4 记忆点不能答"无"。
快速清单:
| # | 问题 | 关键检查 |
|---|
| Q1 | 观众是谁?关注什么? | 核心观众+关注点 |
| Q2 | 演示后观众会做什么? | 具体行动 |
| Q3 | 需求层级? | 基本型/期望型/兴奋型 |
| Q4 | 记忆点?(不能"无") | 金句/画面/数据 |
| Q5 | PPT等级?目标? | 一等打动人/二等说明白/三等做出来 |
| Q6 | 3秒能说清核心吗? | 一句话核心信息 |
| Q7 | 有念稿内容吗? | 念稿→删除 |
| Q8 | 删减检查? | 每句回答保留/删除 |
| Q9 | 字体选择? | 参考typography-guide.md |
完整模板:
页面 {N}:
- Q1观众:{核心观众}
- Q2行动:{演示后观众会}
- Q3需求:{层级}
- Q4记忆点:{金句/画面/数据}
- Q5等级:{一等/二等/三等}
- Q6核心:{一句话}
- Q7念稿:{有/无}→{处理}
- Q8删减:{保留/删除}
- Q9字体:{字体名}
- 版式:{选择}
- 配色:{确定值}
CRAP自问:
| 原则 | 自问 | 检查 |
|---|
| 对比 | 标题vs正文≥2倍?颜色有区分? | 是/否 |
| 重复 | 整体风格一致? | 是/否 |
| 对齐 | 元素有参考线? | 是/否 |
| 接近 | 相关内容靠近?间距一致? | 是/否 |
版式判定树
内容页(6种): 标题+正文 | 左右分栏 | 上下分割 | 三栏并列 | 卡片式 | 时间轴
封面(3种): 居中式(学术/正式) | 左右分栏(企业/产品) | 全图型(创意/活动)
目录(2种): 垂直列表(3-5章) | 双栏网格(4-6章)
Step 3: 设计执行
按场景读取必要文件,选择设计要素。
必读文件(每次)
场景文件(必须读)
按需读取
🚫 【强制禁止规则】
⚠️ 禁止不读场景文件就直接跳过
| 场景 | 必须读 |
|---|
| 学术汇报 | academic.md |
| 商业/产品发布 | commercial.md |
| 培训/教育 | training.md |
| 工作汇报 | workplace.md |
| 涉及数据表格 | charts.md |
| 涉及配色 | color-system.md |
| 涉及字体 | typography-guide.md |
| 涉及复杂图形 | svg-graphics-guide.md |
3.5 设计要素选择
配色:见 color-system.md 行业配色18套
字体:见 typography-guide.md
动画设计(可选)
⚠️ PptxGenJS不支持动画,需在PowerPoint中手动添加
三大作用:指南针(引导逻辑)| 魔术师(制造悬念)| 放大镜(强调重点)
规划:每页最多1个动画,时长≤3秒,风格统一
★ Step 4前: 设计验证(强制节点)
单页检查
□ 核心信息突出? □ 对比足够?(标题vs正文≥2倍)
□ 风格统一? □ 元素对齐?
□ 适当留白? □ 记忆点视觉化?
□ 3秒测试通过?
全局检查
□ 配色统一? □ 字体统一? □ 标题位置一致?
□ 页码位置一致? □ 信息密度符合场景?
详细清单见 references/quality-checklist.md
Step 4: 代码生成
4.0 可视化技术选择(重要)
核心原则:简单用 PptxGenJS,复杂用 SVG
页面需要图形/图表?
│
├── 不需要 → PptxGenJS 纯文本布局
│
├── 需要简单图形 → PptxGenJS
│ • 基础形状(矩形/圆形/箭头)
│ • 简单图表(柱状/折线/饼图)
│ • 标准文本布局
│
└── 需要复杂图形 → SVG 生成图片插入
• 甘特图、桑基图、热力图
• 金字塔、鱼骨图、思维导图
• 仪表盘、漏斗图、雷达图
• SWOT、波特五力、2×2矩阵
• 渐变背景、阴影卡片、特效
SVG 生成方案(简化版):
不同于 ai-pptx 的整页 SVG 工作流,ppt-master 采用局部 SVG 图形方案:
- 用 PptxGenJS 创建页面框架(标题、页脚等)
- 用 SVG 生成复杂图形区域
- 导出 PNG 插入 PptxGenJS 页面
使用流程:
read_file references/svg-generation-guide.md
read_file templates/svg-charts/charts_index.json
read_file templates/svg-charts/swot_analysis.svg
代码示例:
const sharp = require('sharp');
let slide = pres.addSlide();
slide.addText("SWOT分析", { x: 0.5, y: 0.5, fontSize: 32 });
const svgString = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
<!-- SWOT 四象限 -->
<rect x="20" y="20" width="370" height="270" rx="8" fill="#E8F5E9"/>
<rect x="20" y="20" width="370" height="40" rx="8" fill="#4CAF50"/>
<text x="40" y="48" font-size="20" font-weight="bold" fill="#FFFFFF">优势 S</text>
<!-- ... 其他内容 -->
</svg>`;
await sharp(Buffer.from(svgString))
.png()
.toFile('swot.png');
slide.addImage({
path: 'swot.png',
x: 0.5, y: 1.5, w: 9, h: 5.5
});
52种 SVG 模板分类:
| 类别 | 数量 | 模板示例 | 适用场景 |
|---|
| 对比分析 | 8 | bar_chart, waterfall_chart, butterfly_chart | 数据对比、排名 |
| 趋势分析 | 4 | line_chart, area_chart | 时间趋势 |
| 构成分析 | 3 | pie_chart, donut_chart | 占比展示 |
| 指标仪表 | 3 | kpi_cards, gauge_chart | KPI看板 |
| 高级分析 | 8 | radar_chart, heatmap_chart, funnel_chart | 多维分析 |
| 流程项目 | 5 | gantt_chart, timeline, sankey_chart | 项目管理 |
| 战略框架 | 2 | swot_analysis, porter_five_forces | 战略分析 |
| 信息图 | 20 | pyramid_chart, mind_map, fishbone_diagram | 信息可视化 |
4.1 项目结构
slides/
├── slide-01-cover.js
├── slide-02-toc.js
├── ...(每页一个文件)
├── compile.js
└── output/
4.2 Theme 定义(必须 - 5键结构)
const theme = {
primary: "1A237E",
secondary: "3949AB",
accent: "F57C00",
light: "E8EAF6",
bg: "FFFFFF"
};
4.3 Slide 模块格式
const pptxgen = require("pptxgenjs");
function createSlide(pres, theme, options = {}) {
const slide = pres.addSlide();
}
module.exports = { createSlide, slideConfig: { type, index, title } };
4.4 CRAP 原则代码检查清单(强制执行)
每次生成代码前,必须完成以下检查:
C - 对比 (Contrast)
const FONT = {
coverTitle: 54,
pageTitle: 32,
subtitle: 20,
body: 16,
caption: 12
};
R - 重复 (Repetition)
slide.addText("标题", { color: theme.primary });
slide.addText("标题", { color: "1A237E" });
const MARGIN = { left: 0.5, right: 0.5, top: 0.4, bottom: 0.4 };
const HEADER_Y = 0.4;
A - 对齐 (Alignment)
const GRID = {
x: [0.5, 1.25, 2.0, 2.75, 3.5, 4.25, 5.0, 5.75, 6.5, 7.25, 8.0, 8.75],
y: [0.4, 1.3, 2.2, 3.1, 4.0, 4.9]
};
slide.addText("文本1", { x: GRID.x[0], y: GRID.y[1] });
slide.addText("文本2", { x: GRID.x[0], y: GRID.y[2] });
P - 接近 (Proximity)
const SPACING = { tight: 0.2, normal: 0.4, loose: 0.8 };
items.forEach((item, idx) => {
slide.addText(item, { y: 1.5 + idx * 0.4 });
});
安全区域检查(强制)
4.5 Compile 脚本(完整示例)
const pptxgen = require("pptxgenjs");
const fs = require("fs");
const path = require("path");
const pres = new pptxgen();
pres.layout = "LAYOUT_16x9";
const theme = {
primary: "1A237E", secondary: "3949AB", accent: "F57C00", light: "E8EAF6", bg: "FFFFFF"
};
const outputDir = path.join(__dirname, "output");
if (!fs.existsSync(outputDir)) fs.mkdirSync(outputDir, { recursive: true });
const slides = ["slide-01-cover.js", "slide-02-toc.js", ];
slides.forEach(file => {
try {
const mod = require(path.join(__dirname, file));
mod.createSlide(pres, theme);
} catch (err) {
console.error(`✗ ${file}: ${err.message}`);
}
});
pres.writeFile({ fileName: path.join(outputDir, "presentation.pptx") })
.then(() => console.log("✓ 生成成功"))
.catch(err => console.error("✗ 失败:", err));
详细完整版参考:assets/compile-enhanced.js
⚠️ 动画声明
PptxGenJS 不支持动画。动画需在 PowerPoint 中手动添加。
预建模板库(22个)
位于 assets/ 目录,可直接使用或按需修改:
| 类型 | 文件名 | 说明 |
|---|
| 封面 | slide-01-cover.js | 居中标准封面 |
| 封面 | slide-01a-cover-split.js | 左右分栏 |
| 封面 | slide-01b-cover-fullimage.js | 全图型 |
| 目录 | slide-02-toc.js | 垂直列表 |
| 目录 | slide-02a-toc-grid.js | 双栏网格 |
| 章节 | slide-03-section.js | 标准章节页 |
| 章节 | slide-03-section-enhanced.js | 增强章节页 |
| 内容 | slide-04-content.js | 标准内容页 |
| 内容 | slide-04a-content-card.js | 卡片式 |
| 内容 | slide-04b-content-image-text.js | 图文左右 |
| 内容 | slide-04c-content-chart.js | 图表页 |
| 内容 | slide-04d-content-timeline.js | 时间轴 |
| 内容 | slide-04e-content-compare.js | 对比式 |
| 内容 | slide-04f-content-table.js | 表格页 |
| 总结 | slide-05-summary.js | 标准总结页 |
| 总结 | slide-05-summary-enhanced.js | 增强总结页 |
| 结束 | slide-06-end.js | 标准结束页 |
| 结束 | slide-06-end-enhanced.js | 增强结束页 |
| 图表 | chart-bar.js | 柱状图 |
| 图表 | chart-line.js | 折线图 |
| 图表 | chart-pie.js | 饼图 |
每个模板特性:
- 独立预览脚本(
node slide-04a-preview.js 直接生成单页)
- Q4 记忆点设计
- PptxGenJS 兼容性标注
SVG 高级图形生成指南
核心区别:ai-pptx vs ppt-master
| 维度 | ai-pptx | ppt-master(我们的简化方案) |
|---|
| 生成目标 | 整页 SVG 幻灯片 | 局部 SVG 图形 |
| 工作流程 | 多角色协作(Strategist→Executor) | 单步骤直接生成 |
| 后处理 | finalize_svg.py + svg_to_pptx.py | sharp 直接导出 PNG |
| 复杂度 | 高 | 简化 |
ppt-master SVG 方案核心:
PptxGenJS 创建页面框架(标题/页脚)
↓
SVG 生成复杂图形(图表/信息图)
↓
sharp 导出 PNG
↓
PptxGenJS 插入图片
52种 SVG 模板参考
位于 templates/svg-charts/ 目录,不要直接复制,只作为结构参考。
| 需求 | 推荐模板 | 路径 |
|---|
| 项目进度 | 甘特图 | svg-charts/gantt_chart.svg |
| SWOT分析 | 四象限图 | svg-charts/swot_analysis.svg |
| 能力评估 | 雷达图 | svg-charts/radar_chart.svg |
| 转化漏斗 | 漏斗图 | svg-charts/funnel_chart.svg |
| KPI看板 | 仪表盘 | svg-charts/kpi_cards.svg |
| 战略层级 | 金字塔 | svg-charts/pyramid_chart.svg |
| 因果分析 | 鱼骨图 | svg-charts/fishbone_diagram.svg |
| 知识框架 | 思维导图 | svg-charts/mind_map.svg |
使用步骤
Step 1: 阅读 SVG 生成实战指南(必读)
read_file references/svg-generation-guide.md
Step 2: 参考模板结构(不要复制颜色)
read_file templates/svg-charts/charts_index.json
read_file templates/svg-charts/swot_analysis.svg
Step 3: 生成 SVG 代码
Step 4: 导出 PNG 并插入
const sharp = require('sharp');
const svgString = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 600">
<!-- 你的 SVG 代码 -->
</svg>`;
await sharp(Buffer.from(svgString))
.png()
.toFile('graphic.png');
slide.addImage({ path: 'graphic.png', x: 0.5, y: 1.5, w: 9, h: 4.5 });
完整分类
详见 templates/svg-charts/charts_index.json:
- 8种对比图表、4种趋势图表、3种构成图表
- 3种指标仪表、8种高级分析、5种流程项目
- 2种战略框架、20种信息图
文档索引
快速预览命令
cd assets
node slide-04a-content-card.js
node slide-04d-content-timeline.js
node chart-bar.js
node compile-enhanced.js
模板索引速查
| 场景需求 | 推荐模板 | 命令 |
|---|
| 需要一页数据对比 | slide-04f-content-table.js | node slide-04f-content-table.js |
| 需要时间轴/流程 | slide-04d-content-timeline.js | node slide-04d-content-timeline.js |
| 需要三栏对比 | slide-04a-content-card.js | node slide-04a-content-card.js |
| 需要图文混排 | slide-04b-content-image-text.js | node slide-04b-content-image-text.js |
| 需要柱状图 | chart-bar.js | node chart-bar.js |
References 文件索引(按使用时机重组)
must-read(每次必读)
scenario-specific(按场景必须读)
on-demand(按需查阅)
📚 完整文档索引
⚠️ 重要:详细文档请查看 references/README.md
快速分类:
QA 验证建议
python -m markitdown output/presentation.pptx
python -m markitdown output/presentation.pptx | grep -iE "xxxx|lorem|ipsum|placeholder"