pptx

Installation
SKILL.md

重要: 所有 scripts/ 路径都相对于此技能目录。 运行方式:cd {this_skill_dir} && python scripts/... 或使用 execute_shell_commandcwd 参数。

PPTX 技能

前置依赖

  • markitdown[pptx]:从演示文稿中提取文本
  • Pillow:生成缩略图网格
  • pptxgenjsnpm install -g pptxgenjs):从零开始创建演示文稿
  • LibreOfficesoffice):演示文稿转 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 了解完整细节。

  1. 使用 thumbnail.py 分析模板
  2. 解包 → 操作幻灯片 → 编辑内容 → 清理 → 打包

从零开始创建

阅读 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(预期:[简要描述])

报告发现的所有问题,包括轻微问题。

验证循环

  1. 生成幻灯片 → 转换为图片 → 检查
  2. 列出发现的问题(如果没发现问题,用更严格的标准再检查一遍)
  3. 修复问题
  4. 重新验证受影响的幻灯片——一个修复往往会引发另一个问题
  5. 重复直到完整检查一遍不再发现新问题

在完成至少一个修复-验证循环之前,不要宣布成功。


转换为图片

将演示文稿转换为单独的幻灯片图片以进行视觉检查:

python scripts/office/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide

这将创建 slide-01.jpgslide-02.jpg 等文件。

修复后重新渲染特定幻灯片:

pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
Weekly Installs
3
GitHub Stars
16.1K
First Seen
3 days ago