| name | pptx |
| description | 任何时候涉及 .pptx 文件都使用此技能 — 作为输入、输出或两者兼有。包括:创建幻灯片、演示文稿或提案;从任何 .pptx 文件读取、解析或提取文本(即使提取的内容将用于其他地方,如邮件或摘要);编辑、修改或更新现有演示文稿;合并或拆分幻灯片文件;处理模板、布局、演讲者备注或批注。每当用户提到 "deck"、"slides"、"presentation"、"演示文稿"、"幻灯片" 或引用 .pptx 文件名时触发,无论他们计划对内容做什么。如果需要打开、创建或处理 .pptx 文件,请使用此技能。 |
| license | Proprietary. LICENSE.txt has complete terms |
| metadata | {"name_zh":"PPT 制作","name_zh-tw":"PPT 製作","description_zh":"创建、编辑和提取 PPT 演示文稿内容,支持幻灯片、模板和演讲者备注","description_zh-tw":"建立、編輯和擷取 PPT 簡報內容,支援幻燈片、範本和演講者備註"} |
PPTX 技能
快速参考
读取内容
python -m markitdown presentation.pptx
python scripts/thumbnail.py presentation.pptx
python scripts/office/unpack.py presentation.pptx unpacked/
编辑工作流
阅读 editing.md 了解完整细节。
- 使用
thumbnail.py 分析模板
- 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包
从头创建
阅读 pptxgenjs.md 了解完整细节。
当没有模板或参考演示文稿时使用。
设计理念
不要创建无聊的幻灯片。 白底配纯项目符号列表毫无吸引力。每张幻灯片都应从以下列表中选择合适的设计理念。
开始之前
- 选择大胆且与内容匹配的配色方案:配色方案应专为当前主题设计。如果把配色换到完全不同的演示文稿中还"能用",说明选择不够精准。
- 主色优于均等:一种颜色应占主导(60-70% 视觉权重),配 1-2 种辅助色和一种鲜明的强调色。避免所有颜色权重均等。
- 深色/浅色对比:标题和结尾幻灯片用深色背景,内容用浅色("三明治"结构)。或全程使用深色营造高端感。
- 坚持视觉主题:选择一个独特元素并重复使用——圆角图片框、彩色圆圈中的图标、粗单侧边框。在每张幻灯片上保持一致。
配色方案
选择与主题匹配的颜色,不要默认使用通用蓝色。以下配色方案可供参考:
| 主题 | 主色 | 辅助色 | 强调色 |
|---|
| 午夜行政 | 1E2761(海军蓝) | CADCFC(冰蓝) | FFFFFF(白色) |
| 森林与苔藓 | 2C5F2D(森林绿) | 97BC62(苔藓绿) | F5F5F5(奶油色) |
| 珊瑚活力 | F96167(珊瑚色) | F9E795(金色) | 2F3C7E(海军蓝) |
| 暖色赤陶 | B85042(赤陶色) | E7E8D1(沙色) | A7BEAE(鼠尾草绿) |
| 海洋渐变 | 065A82(深蓝) | 1C7293(蓝绿) | 21295C(午夜蓝) |
| 炭灰极简 | 36454F(炭灰色) | F2F2F2(灰白) | 212121(黑色) |
| 蓝绿信任 | 028090(蓝绿) | 00A896(海沫绿) | 02C39A(薄荷绿) |
| 浆果与奶油 | 6D2E46(浆果色) | A26769(灰玫瑰) | ECE2D0(奶油色) |
| 鼠尾草宁静 | 84B59F(鼠尾草绿) | 69A297(桉叶绿) | 50808E(石板蓝) |
| 樱桃大胆 | 990011(樱桃红) | FCF6F5(灰白) | 2F3C7E(海军蓝) |
每张幻灯片
每张幻灯片都需要一个视觉元素——图片、图表、图标或形状。纯文本幻灯片容易让人遗忘。
布局选项:
- 两栏布局(左文右图)
- 图标 + 文本行(彩色圆圈图标、粗体标题、下方描述)
- 2x2 或 2x3 网格(一侧图片,另一侧内容块)
- 半出血图片(左侧或右侧全幅)配内容叠加
数据展示:
- 大号数据标注(60-72pt 大数字配下方小标签)
- 对比栏(前/后、优/缺、并排选项)
- 时间线或流程图(编号步骤、箭头)
视觉润色:
- 章节标题旁的小彩色圆圈图标
- 关键数据或标语使用斜体强调
排版
选择有趣的字体搭配——不要默认使用 Arial。选择有个性的标题字体,搭配简洁的正文体。
| 标题字体 | 正文字体 |
|---|
| Georgia | Calibri |
| Arial Black | Arial |
| Calibri | Calibri Light |
| Cambria | Calibri |
| Trebuchet MS | Calibri |
| Impact | Arial |
| Palatino | Garamond |
| Consolas | Calibri |
| 元素 | 字号 |
|---|
| 幻灯片标题 | 36-44pt 粗体 |
| 章节标题 | 20-24pt 粗体 |
| 正文 | 14-16pt |
| 说明文字 | 10-12pt 柔和色 |
间距
- 最小 0.5" 边距
- 内容块之间 0.3-0.5"
- 留出呼吸空间 — 不要填满每一寸
避免(常见错误)
- 不要重复相同布局——在不同幻灯片间交替使用栏、卡片和标注
- 不要居中对齐正文——段落和列表左对齐,仅标题居中
- 不要忽视大小对比——标题需要 36pt+ 才能从 14-16pt 正文中脱颖而出
- 不要默认使用蓝色——选择能反映特定主题的颜色
- 不要随意混用间距——选择 0.3" 或 0.5" 间距并保持一致
- 不要只美化一张幻灯片——要么全力投入,要么全程保持简洁
- 不要创建纯文本幻灯片——添加图片、图标、图表或视觉元素,避免纯标题 + 项目符号
- 不要忘记文本框内边距——对齐线条或形状与文本边缘时,在文本框上设置
margin: 0 或偏移形状以考虑内边距
- 不要使用低对比度元素——图标和文本都需要与背景形成强对比,避免浅色背景配浅色文本或深色背景配深色文本
- 永远不要在标题下使用强调线——这是 AI 生成幻灯片的标志,使用空白或背景颜色代替
质量保证(必需)
假设有问题存在,你的任务是找到它们。
第一次渲染几乎从不正确。把质量保证当作 bug 搜索,而不是确认步骤。如果第一次检查没发现问题,说明你看得不够仔细。
内容质量保证
python -m markitdown output.pptx
检查缺失内容、错别字、错误顺序。
使用模板时,检查是否有残留的占位符文本:
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
如果 grep 返回结果,先修复这些问题再宣布成功。
视觉质量保证
⚠️ 使用子代理——即使是 2-3 张幻灯片。你已经盯着代码看了,会看到你期望看到的,而不是实际存在的。子代理能提供全新视角。
将幻灯片转换为图片(参见转换为图片),然后使用以下提示:
视觉检查这些幻灯片。假设有问题 — 找到它们。
查找:
- 重叠的元素(文本穿过形状、线条穿过文字、堆叠的元素)
- 文本溢出或在边缘/框边界处被截断
- 装饰线为单行文本定位但标题换行到两行
- 来源引用或页脚与上方内容碰撞
- 元素太近(< 0.3" 间距)或卡片/章节几乎接触
- 不均匀的间距(一处大面积空白,另一处拥挤)
- 幻灯片边缘边距不足(< 0.5")
- 列或相似元素未一致对齐
- 低对比度文本(例如,奶油色背景上的浅灰色文本)
- 低对比度图标(例如,深色背景上没有对比圆圈的深色图标)
- 文本框太窄导致过度换行
- 残留的占位符内容
对于每张幻灯片,列出问题或关注区域,即使是次要的。
读取并分析这些图片:
1. /path/to/slide-01.jpg(预期:[简短描述])
2. /path/to/slide-02.jpg(预期:[简短描述])
报告所有发现的问题,包括次要问题。
验证循环
- 生成幻灯片 → 转换为图片 → 检查
- 列出发现的问题(如果没找到,更仔细地再看)
- 修复问题
- 重新验证受影响的幻灯片——一个修复经常会引发另一个问题
- 重复直到完整一遍没发现新问题
在完成至少一轮修复和验证循环之前,不要宣布成功。
转换为图片
将演示文稿转换为单独的幻灯片图片,用于视觉检查:
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
这会生成 slide-01.jpg、slide-02.jpg 等文件。
修复后重新渲染特定幻灯片:
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
依赖项
pip install "markitdown[pptx]" - 文本提取
pip install Pillow - 缩略图网格
npm install -g pptxgenjs - 从头创建
- LibreOffice(
soffice) - PDF 转换(通过 scripts/office/soffice.py 为沙箱环境自动配置)
- Poppler(
pdftoppm) - PDF 转图片