--- name: pptx description: "当涉及到 .pptx 文件的任何操作时使用此技能——无论是作为输入、输出还是两者兼有。包括:创建幻灯片、演示文稿或路演材料;读取、解析或提取任何 .pptx 文件中的文本(即使提取的内容将用于其他地方,如邮件或摘要);编辑、修改或更新现有演示文稿;合并或拆分幻灯片文件;处理模板、布局、演讲者备注或批注。当用户提到“演示文稿”、”幻灯片“、”PPT“或引用 .pptx 文件名时触发,无论他们之后打算如何使用内容。如果需要打开、创建或操作 .pptx 文件,就使用此技能。" license: Proprietary. LICENSE.txt has complete terms metadata: builtin_skill_version: "1.1" --- > **重要:** 所有 `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](editing.md) | | 从零开始创建 | 阅读 [pptxgenjs.md](pptxgenjs.md) | --- ## 读取内容 ```bash # 文本提取 python -m markitdown presentation.pptx # 视觉概览 python scripts/thumbnail.py presentation.pptx # 原始 XML python scripts/office/unpack.py presentation.pptx unpacked/ ``` --- ## 编辑工作流 **阅读 [editing.md](editing.md) 了解完整细节。** 1. 使用 `thumbnail.py` 分析模板 2. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包 --- ## 从零开始创建 **阅读 [pptxgenjs.md](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 的过程,而非确认步骤。如果第一次检查就零问题,说明你检查得不够仔细。 ### 内容检查 ```bash python -m markitdown output.pptx ``` 检查是否有遗漏内容、错别字、顺序错误。 **使用模板时,检查是否有残留的占位符文本:** ```bash 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(预期:[简要描述]) 报告发现的所有问题,包括轻微问题。 ``` ### 验证循环 1. 生成幻灯片 → 转换为图片 → 检查 2. **列出发现的问题**(如果没发现问题,用更严格的标准再检查一遍) 3. 修复问题 4. **重新验证受影响的幻灯片**——一个修复往往会引发另一个问题 5. 重复直到完整检查一遍不再发现新问题 **在完成至少一个修复-验证循环之前,不要宣布成功。** --- ## 转换为图片 将演示文稿转换为单独的幻灯片图片以进行视觉检查: ```bash python scripts/office/soffice.py --headless --convert-to pdf output.pptx pdftoppm -jpeg -r 150 output.pdf slide ``` 这将创建 `slide-01.jpg`、`slide-02.jpg` 等文件。 修复后重新渲染特定幻灯片: ```bash pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed ```