pptx
Installation
SKILL.md
重要: 所有
scripts/路径都相对于此技能目录。 运行方式:cd {this_skill_dir} && python scripts/...或使用execute_shell_command的cwd参数。
PPTX 技能
前置依赖
- markitdown[pptx]:从演示文稿中提取文本
- Pillow:生成缩略图网格
- pptxgenjs(
npm install -g pptxgenjs):从零开始创建演示文稿 - LibreOffice(
soffice):演示文稿转 PDF - pdftoppm(poppler-utils):PDF 转图片,用于缩略图/视觉工作流
- 如果
pdftoppm不可用,可使用 Python 备选方案pdf2image。 - 在 Windows 上,依赖项必须已安装并在
PATH中可用;如果缺失,报告依赖问题并停止(不要反复重试)。
快速参考
| 任务 | 指南 |
|---|---|
| 读取/分析内容 | python -m markitdown presentation.pptx |
| 编辑或基于模板创建 | 阅读 editing.md |
| 从零开始创建 | 阅读 pptxgenjs.md |
读取内容
# 文本提取
python -m markitdown presentation.pptx
# 视觉概览
python scripts/thumbnail.py presentation.pptx
# 原始 XML
python scripts/office/unpack.py presentation.pptx unpacked/
编辑工作流
阅读 editing.md 了解完整细节。
- 使用
thumbnail.py分析模板 - 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包
从零开始创建
阅读 pptxgenjs.md 了解完整细节。
当没有模板或参考演示文稿可用时使用。
设计思路
不要创建无聊的幻灯片。 白底加纯文本要点无法打动任何人。为每张幻灯片考虑以下设计思路。
开始之前
- 选择大胆的、与内容相关的配色方案:配色应该让人觉得是专门为这个主题设计的。如果把你的颜色换到一个完全不同的演示文稿中依然"适用",说明你的选择还不够有针对性。
- 主次分明:一种颜色应占主导(60-70% 视觉权重),搭配 1-2 种辅助色调和一种鲜明的点缀色。切勿让所有颜色等量分配。
- 明暗对比:标题页和结尾页用深色背景,内容页用浅色("三明治"结构)。或者全程使用深色背景营造高端感。
- 坚持一个视觉主题:选择一个独特元素并反复使用——圆角图片框、彩色圆圈中的图标、粗单边边框。将其贯穿每张幻灯片。
配色方案
选择与主题匹配的颜色——不要默认使用通用蓝色。以下配色方案供参考:
| 主题 | 主色 | 辅助色 | 点缀色 |
|---|---|---|---|
| Midnight Executive | 1E2761 (navy) |
CADCFC (ice blue) |
FFFFFF (white) |
| Forest & Moss | 2C5F2D (forest) |
97BC62 (moss) |
F5F5F5 (cream) |
| Coral Energy | F96167 (coral) |
F9E795 (gold) |
2F3C7E (navy) |
| Warm Terracotta | B85042 (terracotta) |
E7E8D1 (sand) |
A7BEAE (sage) |
| Ocean Gradient | 065A82 (deep blue) |
1C7293 (teal) |
21295C (midnight) |
| Charcoal Minimal | 36454F (charcoal) |
F2F2F2 (off-white) |
212121 (black) |
| Teal Trust | 028090 (teal) |
00A896 (seafoam) |
02C39A (mint) |
| Berry & Cream | 6D2E46 (berry) |
A26769 (dusty rose) |
ECE2D0 (cream) |
| Sage Calm | 84B59F (sage) |
69A297 (eucalyptus) |
50808E (slate) |
| Cherry Bold | 990011 (cherry) |
FCF6F5 (off-white) |
2F3C7E (navy) |
每张幻灯片
每张幻灯片都需要视觉元素——图片、图表、图标或形状。纯文本幻灯片令人印象淡薄。
布局选项:
- 两栏布局(左侧文字,右侧插图)
- 图标 + 文字行(彩色圆圈中的图标、粗体标题、下方描述)
- 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