$npx -y skills add agentscope-ai/QwenPaw --skill pptx-zh当涉及到 .pptx 文件的任何操作时使用此技能——无论是作为输入、输出还是两者兼有。包括:创建幻灯片、演示文稿或路演材料;读取、解析或提取任何 .pptx 文件中的文本(即使提取的内容将用于其他地方,如邮件或摘要);编辑、修改或更新现有演示文稿;合并或拆分幻灯片文件;处理模板、布局、演讲者备注或批注。当用户提到“演示文稿”、”幻灯片“、”PPT“或引用 .pptx 文件名时触发,无论他们之后打算如何使用内容。如果需要打开、创建或操作 .pptx 文件,就使用此技能。
| 1 | > **重要:** 所有 `scripts/` 路径都相对于此技能目录。 |
| 2 | > 运行方式:`cd {this_skill_dir} && python scripts/...` |
| 3 | > 或使用 `execute_shell_command` 的 `cwd` 参数。 |
| 4 | |
| 5 | # PPTX 技能 |
| 6 | |
| 7 | ## 前置依赖 |
| 8 | |
| 9 | - **markitdown[pptx]**:从演示文稿中提取文本 |
| 10 | - **Pillow**:生成缩略图网格 |
| 11 | - **pptxgenjs**(`npm install -g pptxgenjs`):从零开始创建演示文稿 |
| 12 | - **LibreOffice**(`soffice`):演示文稿转 PDF |
| 13 | - **pdftoppm**(poppler-utils):PDF 转图片,用于缩略图/视觉工作流 |
| 14 | - 如果 `pdftoppm` 不可用,可使用 Python 备选方案 `pdf2image`。 |
| 15 | - 在 Windows 上,依赖项必须已安装并在 `PATH` 中可用;如果缺失,报告依赖问题并停止(不要反复重试)。 |
| 16 | |
| 17 | ## 快速参考 |
| 18 | |
| 19 | | 任务 | 指南 | |
| 20 | |------|------| |
| 21 | | 读取/分析内容 | `python -m markitdown presentation.pptx` | |
| 22 | | 编辑或基于模板创建 | 阅读 [editing.md](editing.md) | |
| 23 | | 从零开始创建 | 阅读 [pptxgenjs.md](pptxgenjs.md) | |
| 24 | |
| 25 | --- |
| 26 | |
| 27 | ## 读取内容 |
| 28 | |
| 29 | ```bash |
| 30 | # 文本提取 |
| 31 | python -m markitdown presentation.pptx |
| 32 | |
| 33 | # 视觉概览 |
| 34 | python scripts/thumbnail.py presentation.pptx |
| 35 | |
| 36 | # 原始 XML |
| 37 | python scripts/office/unpack.py presentation.pptx unpacked/ |
| 38 | ``` |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## 编辑工作流 |
| 43 | |
| 44 | **阅读 [editing.md](editing.md) 了解完整细节。** |
| 45 | |
| 46 | 1. 使用 `thumbnail.py` 分析模板 |
| 47 | 2. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包 |
| 48 | |
| 49 | --- |
| 50 | |
| 51 | ## 从零开始创建 |
| 52 | |
| 53 | **阅读 [pptxgenjs.md](pptxgenjs.md) 了解完整细节。** |
| 54 | |
| 55 | 当没有模板或参考演示文稿可用时使用。 |
| 56 | |
| 57 | --- |
| 58 | |
| 59 | ## 设计思路 |
| 60 | |
| 61 | **不要创建无聊的幻灯片。** 白底加纯文本要点无法打动任何人。为每张幻灯片考虑以下设计思路。 |
| 62 | |
| 63 | ### 开始之前 |
| 64 | |
| 65 | - **选择大胆的、与内容相关的配色方案**:配色应该让人觉得是专门为这个主题设计的。如果把你的颜色换到一个完全不同的演示文稿中依然"适用",说明你的选择还不够有针对性。 |
| 66 | - **主次分明**:一种颜色应占主导(60-70% 视觉权重),搭配 1-2 种辅助色调和一种鲜明的点缀色。切勿让所有颜色等量分配。 |
| 67 | - **明暗对比**:标题页和结尾页用深色背景,内容页用浅色("三明治"结构)。或者全程使用深色背景营造高端感。 |
| 68 | - **坚持一个视觉主题**:选择一个独特元素并反复使用——圆角图片框、彩色圆圈中的图标、粗单边边框。将其贯穿每张幻灯片。 |
| 69 | |
| 70 | ### 配色方案 |
| 71 | |
| 72 | 选择与主题匹配的颜色——不要默认使用通用蓝色。以下配色方案供参考: |
| 73 | |
| 74 | | 主题 | 主色 | 辅助色 | 点缀色 | |
| 75 | |------|------|--------|--------| |
| 76 | | **Midnight Executive** | `1E2761` (navy) | `CADCFC` (ice blue) | `FFFFFF` (white) | |
| 77 | | **Forest & Moss** | `2C5F2D` (forest) | `97BC62` (moss) | `F5F5F5` (cream) | |
| 78 | | **Coral Energy** | `F96167` (coral) | `F9E795` (gold) | `2F3C7E` (navy) | |
| 79 | | **Warm Terracotta** | `B85042` (terracotta) | `E7E8D1` (sand) | `A7BEAE` (sage) | |
| 80 | | **Ocean Gradient** | `065A82` (deep blue) | `1C7293` (teal) | `21295C` (midnight) | |
| 81 | | **Charcoal Minimal** | `36454F` (charcoal) | `F2F2F2` (off-white) | `212121` (black) | |
| 82 | | **Teal Trust** | `028090` (teal) | `00A896` (seafoam) | `02C39A` (mint) | |
| 83 | | **Berry & Cream** | `6D2E46` (berry) | `A26769` (dusty rose) | `ECE2D0` (cream) | |
| 84 | | **Sage Calm** | `84B59F` (sage) | `69A297` (eucalyptus) | `50808E` (slate) | |
| 85 | | **Cherry Bold** | `990011` (cherry) | `FCF6F5` (off-white) | `2F3C7E` (navy) | |
| 86 | |
| 87 | ### 每张幻灯片 |
| 88 | |
| 89 | **每张幻灯片都需要视觉元素**——图片、图表、图标或形状。纯文本幻灯片令人印象淡薄。 |
| 90 | |
| 91 | **布局选项:** |
| 92 | - 两栏布局(左侧文字,右侧插图) |
| 93 | - 图标 + 文字行(彩色圆圈中的图标、粗体标题、下方描述) |
| 94 | - 2x2 或 2x3 网格(一侧图片,另一侧内容块网格) |
| 95 | - 半出血图片(铺满左侧或右侧)加内容叠加 |
| 96 | |
| 97 | **数据展示:** |
| 98 | - 大数字突出显示(60-72pt 大数字搭配下方小标签) |
| 99 | - 对比列(前后对比、优缺点、并排选项) |
| 100 | - 时间线或流程图(编号步骤、箭头) |
| 101 | |
| 102 | **视觉润色:** |
| 103 | - 章节标题旁放置小彩色圆圈中的图标 |
| 104 | - 关键数据或标语使用斜体点缀文字 |
| 105 | |
| 106 | ### 字体排版 |
| 107 | |
| 108 | **选择有趣的字体搭配**——不要默认使用 Arial。选择一个有个性的标题字体,搭配一个简洁的正文字体。 |
| 109 | |
| 110 | | 标题字体 | 正文字体 | |
| 111 | |----------|----------| |
| 112 | | Georgia | Calibri | |
| 113 | | Arial Black | Arial | |
| 114 | | Calibri | Calibri Light | |
| 115 | | Cambria | Calibri | |
| 116 | | Trebuchet MS | Calibri | |
| 117 | | Impact | Arial | |
| 118 | | Palatino | Garamond | |
| 119 | | Consolas | Calibri | |
| 120 | |
| 121 | | 元素 | 尺寸 | |
| 122 | |------|------| |
| 123 | | 幻灯片标题 | 36-44pt 粗体 | |
| 124 | | 章节标题 | 20-24pt 粗体 | |
| 125 | | 正文 | 14-16pt | |
| 126 | | 说明文字 | 10-12pt 柔和色 | |
| 127 | |
| 128 | ### 间距 |
| 129 | |
| 130 | - 最小边距 0.5" |
| 131 | - 内容块之间 0.3-0.5" |
| 132 | - 留出呼吸空间——不要填满每一寸 |
| 133 | |
| 134 | ### 避免(常见错误) |
| 135 | |
| 136 | - **不要重复相同的布局**——在不同幻灯片之间变换列、卡片和标注样式 |
| 137 | - **不要居中正文文本**——段落和列表左对齐;仅标题居中 |
| 138 | - **不要忽视大小对比**——标题需要 36pt+ 才能与 14-16pt 正文区分开 |
| 139 | - **不要默认使用蓝色**——选择能反映特定主题的颜色 |
| 140 | - **不要随意混用间距**——选择 0.3" 或 0.5" 的间距并保持一致 |
| 141 | - **不要只设计一张幻灯片而其余留白**——要么全部精心设计,要么全程保持简约 |
| 142 | - **不要创建纯文本幻灯片**——添加图片、图标、图表或视觉元素;避免纯标题加要点 |
| 143 | - **不要忘记文本框内边距**——当将线条或形状与文本边缘对齐时,设置文本框的 `margin: 0` 或偏移形状以补偿内边距 |
| 144 | - **不要使用低对比度元素**——图标和文字都需要与背景有强烈对比;避免浅色背景上的浅色文字或深色背景上的深色文字 |
| 145 | - **绝对不要在标题下使用强调线**——这是 AI 生成幻灯片的典型标志;改用留白或背景色 |
| 146 | |
| 147 | --- |
| 148 | |
| 149 | ## 质量检查(必须执行) |
| 150 | |
| 151 | **假设存在问题,你的任务就是找到它们。** |
| 152 | |
| 153 | 你的首次渲染几乎不会完全正确。将质量检查视为找 Bug 的过程,而非确认步骤。如果第一次检查就零问题,说明你检查得不够仔细。 |
| 154 | |
| 155 | ### 内容检查 |
| 156 | |
| 157 | ```bash |
| 158 | python -m markitdown output.pptx |
| 159 | ``` |
| 160 | |
| 161 | 检查是否有遗漏内容、错别字、顺序错误。 |
| 162 | |
| 163 | **使用模板时,检查是否有残留的占位符文本:** |
| 164 | |
| 165 | ```bash |
| 166 | python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout" |
| 167 | ``` |
| 168 | |
| 169 | 如果 grep 返回结果,修复后再宣布完成。 |
| 170 | |
| 171 | ### 视觉检查 |
| 172 | |
| 173 | **⚠️ 使用子代理**——即使只有 2-3 张幻灯片。你一直盯着代码看,会看到你期望看到的而非实际的内容。子代理有全新的视角。 |
| 174 | |
| 175 | 将幻灯片转换为图片(参见[转换为图片](#转换为图片)),然后使用以下提示: |
| 176 | |
| 177 | ``` |
| 178 | 视觉检查这些幻灯片。假设存在问题——找到它们。 |
| 179 | |
| 180 | 检查以下方面: |
| 181 | - 元素重叠(文字穿过形状、线条穿过文字、元素堆叠) |
| 182 | - 文本溢出或在边缘/框边界处被截断 |
| 183 | - 为单行文本定位的装饰线,但标题换成了两行 |
| 184 | - 来源引用或页脚与上方内容冲突 |
| 185 | - 元素间距过小(< 0.3" 间隙)或卡片/区域几乎相接 |
| 186 | - 间距不均(某处大面积留白,另一处过于紧凑) |
| 187 | - 距幻灯片边缘的边距不足(< 0.5") |
| 188 | - 列或类似元素未一致对齐 |
| 189 | - 低对比度文字(如浅灰色文字在奶油色背景上) |
| 190 | - 低对比度图标(如深色图标在深色背景上且没有对比色圆圈) |
| 191 | - 文本框过窄导致过度换行 |
| 192 | - 残留的占位符内容 |
| 193 | |
| 194 | 对每张幻灯片列出问题或关注点,即使是小问题也要列出。 |
| 195 | |
| 196 | 读取并分析这些图片: |
| 197 | 1. /path/to/slide-01.jpg(预期:[简要描述]) |
| 198 | 2. /path/to/slide-02.jpg(预期:[简要描述]) |
| 199 | |
| 200 | 报告发现的所有问题,包括轻微问题。 |
| 201 | ``` |
| 202 | |
| 203 | ### 验证循环 |
| 204 | |
| 205 | 1. 生成幻灯片 → 转换为图片 → 检查 |
| 206 | 2. **列出发现的问题**(如果没发现问题,用更严格的标准再检查一遍) |
| 207 | 3. 修复问题 |
| 208 | 4. **重新验证受影响的幻灯片**——一个修复往往会引发另一个问题 |
| 209 | 5. 重复直到完整检查一遍不再发现新问题 |
| 210 | |
| 211 | **在完成至少一个修复-验证循环之前,不要宣布成功。** |
| 212 | |
| 213 | --- |
| 214 | |
| 215 | ## 转换为图片 |
| 216 | |
| 217 | 将演示文稿转换为单独的幻灯片图片以进行视觉检查: |
| 218 | |
| 219 | ```bash |
| 220 | python scripts/offic |