关于 pptx
pptx 是用于创建、读取和编辑 PowerPoint 演示文稿的 Skill,面向需要自动化制作或处理演示文稿的用户。它涵盖 HTML 转 PPT、批量生成、文本与批注提取,以及 OOXML 层面的分析和修改。
主要功能
- 01从 HTML 生成 PPT
- 02按模板或数据批量创建幻灯片
- 03提取文本、批注和演讲者备注
- 04编辑幻灯片内容、布局与主题
- 05解包和重打包 OOXML 文件
适用场景
- 01将 HTML 或数据转换为报告演示文稿
- 02批量生成产品或销售幻灯片
- 03提取演讲者备注和评论
- 04修改现有 PPT 的内容或主题
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ stvlynn/ dingtalk-wukong-skills --skill pptx安装后在 Claude Code 中输入/pptx确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
docs/00-SKILL-完整制作指南.mdooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsdopc-coreProperties.xsdopc-digSig.xsdopc-relationships.xsdooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsddml-chartDrawing.xsddml-diagram.xsddml-lockedCanvas.xsddml-main.xsddml-picture.xsddml-spreadsheetDrawing.xsddml-wordprocessingDrawing.xsdpml.xsdshared-additionalCharacteristics.xsdshared-bibliography.xsdshared-commonSimpleTypes.xsdshared-customXmlDataProperties.xsdshared-customXmlSchemaProperties.xsdshared-documentPropertiesCustom.xsdshared-documentPropertiesExtended.xsdshared-documentPropertiesVariantTypes.xsdshared-math.xsdshared-relationshipReference.xsdsml.xsdvml-main.xsdvml-officeDrawing.xsdvml-presentationDrawing.xsdvml-spreadsheetDrawing.xsdvml-wordprocessingDrawing.xsd详细介绍
PPT 演示文稿处理专家 Real Skill
一句话说明
从 HTML 自动生成精美 PPT,支持演示文稿编辑、批注管理和内容提取。
演示文稿创建与编辑 - 从 HTML 创建演示文稿、编辑内容、管理批注和提取文本。
使用场景
适用:
- 从数据/HTML 自动生成标准化 PPT 报告
- 创建精美的演示文稿(销售、培训、汇报)
- 提取 PPT 文本、批注、演讲者备注
- 修改幻灯片内容、布局、主题
- 批量生成多个演示文稿
不适用:
- 复杂动画制作(使用专业软件)
- 实时协同编辑(使用 Google Slides 进行实时协作)
核心流程
用户需求 → 内容分析 → 配色选择 → 工具选择 → 生成 PPT → 验证输出
User request → Content analysis → Color palette → Tool selection → Generate PPT → Validate
任务类型判断:
创建演示文稿
-
HTML 转 PPT 工作流(推荐)
- 编写带样式的 HTML 幻灯片
- 使用 html2pptx 库进行转换
- 精确定位和格式化
- 仅使用 Web 安全字体(Arial、Helvetica、Georgia 等)
-
Python-PPTX 工作流
- 以编程方式创建幻灯片
- 根据数据批量生成
- 基于模板自动化
读取与分析
- 文本提取 → markitdown(转换为 Markdown)
- 批注与备注 → 解包 OOXML 并读取 XML
- 设计分析 → 从 XML 中提取主题、颜色和字体
编辑现有文稿
- 简单编辑 → python-pptx 库
- 复杂编辑 → 解包 OOXML、修改 XML、重新打包
任务完成标准
必须满足(缺一不可):
- PPT 可正常打开并播放
- 幻灯片内容清晰可读
- 配色协调,视觉层次分明
- 布局合理,文字不拥挤
质量评级:
- ⭐⭐⭐⭐⭐ 优秀 - 设计精美 + 内容完整 + 自动化生成
- ⭐⭐⭐ 及格 - 内容正确 + PPT 可用 + 格式规范
- ⭐ 失败 - PPT 损坏或内容错误
参考资料(供 AI 使用)
| 类型 | 路径 | 说明 |
|---|---|---|
| 核心文档 | docs/00-SKILL-完整制作指南.md | 完整的 PPT 制作指南(约 500 行) |
| OOXML 库 | ooxml/ | 底层 XML 操作 |
| 工具脚本 | scripts/unpack.py | 解包 PPTX 文件 |
| 工具脚本 | scripts/pack.py | 打包 PPTX 文件 |
关键原则(AI 必读)
1. 设计先行——以内容为依据
关键:创建任何演示文稿之前,先分析内容:
- 考虑主题:内容是什么?适合什么语气、行业和氛围?
- 检查品牌:如果提到了公司,请考虑品牌色
- 让配色契合内容:选择能体现主题的颜色
- 说明设计思路:编写代码之前,先解释设计选择
2. 仅使用 Web 安全字体
允许的字体:Arial、Helvetica、Times New Roman、Georgia、Courier New、Verdana、Tahoma、Trebuchet MS、Impact
- 不使用自定义字体:它们无法正确渲染
- 字体搭配:每份演示文稿最多使用 2–3 种字体
3. 视觉层次
- 极大的字号对比:72pt 标题与 11pt 正文
- 字重变化:粗体标题、常规正文、细体说明文字
- 颜色强调:使用强调色突出关键信息
- 结构清晰:标题 → 主要内容 → 补充细节
4. 图表布局规则
优先选择——双栏布局:
- 横跨全宽的页眉
- 一栏放置文字/项目符号(40%),另一栏放置图表/表格(60%)
- 平衡性和可读性更佳
替代方案——整页布局:
- 图表/表格占据整张幻灯片,以获得最大视觉效果
绝不垂直堆叠:
- ❌ 不要在单栏中将图表/表格放在文字下方
- ❌ 这会导致可读性差和布局问题
5. 配色方案选择(18 种配色方案)
不要局限于默认选项:哪些颜色真正适合这个主题? 从多个角度考虑:主题、行业、氛围、活力、受众、品牌 大胆尝试:医疗保健不一定要用绿色,金融也不一定要用海军蓝
18 种精选配色方案
商业与专业
- 经典蓝:海军蓝(#1C2833)、石板灰(#2E4053)、银色(#AAB7B8)、米白色(#F4F6F6)
- 黑金:金色(#BF9A4A)、黑色(#000000)、奶油色(#F4F6F6)
- 炭灰与红色:炭灰色(#292929)、红色(#E33737)、浅灰色(#CCCBCB)
创意与活力 (创意/活力)
- 青绿色与珊瑚色:青绿色 (#5EA8A7)、深青绿色 (#277884)、珊瑚色 (#FE4447)、白色 (#FFFFFF)
- 复古彩虹:紫色 (#722880)、粉色 (#D72D51)、橙色 (#EB5C18)、琥珀色 (#F08800)、金色 (#DEB600)
- 活力橙色:橙色 (#F96D00)、浅灰色 (#F2F2F2)、炭灰色 (#222831)
- 大胆红色:红色 (#C0392B)、亮红色 (#E74C3C)、橙色 (#F39C12)、黄色 (#F1C40F)、绿色 (#2ECC71)
自然与温暖 (自然/温暖)
- 鼠尾草绿与陶土色:鼠尾草绿 (#87A96B)、陶土色 (#E07A5F)、奶油色 (#F4F1DE)、炭灰色 (#2C2C2C)
- 森林绿:黑色 (#191A19)、绿色 (#4E9F3D)、深绿色 (#1E5128)、白色 (#FFFFFF)
- 复古大地色:芥末黄 (#E3B448)、鼠尾草绿 (#CBD18F)、森林绿 (#3A6B35)、奶油色 (#F4F1DE)
- 奶油色与森林绿:奶油色 (#FFE1C7)、森林绿 (#40695B)、白色 (#FCFCFC)
优雅与柔和 (优雅/柔和)
- 暖腮红色:灰紫色 (#A49393)、腮红色 (#EED6D3)、玫瑰色 (#E8B4B8)、奶油色 (#FAF7F2)
- 海岸玫瑰色:古玫瑰色 (#AD7670)、海狸棕 (#B49886)、蛋壳色 (#F3ECDC)、灰绿色 (#BFD5BE)
- 粉色与紫色:粉色 (#F8275B)、珊瑚色 (#FF574A)、玫瑰色 (#FF737D)、紫色 (#3D2F68)
奢华与大胆 (奢华/大胆)
- 勃艮第奢华色:勃艮第酒红 (#5D1D2E)、深红色 (#951233)、铁锈色 (#C15937)、金色 (#997929)
- 深紫色与翡翠绿:紫色 (#B165FB)、深蓝色 (#181B24)、翡翠绿 (#40695B)、白色 (#FFFFFF)
清新与现代 (清新/现代)
- 青柠绿与李子色:青柠绿 (#C5DE82)、李子色 (#7C3A5F)、珊瑚色 (#FD8C6E)、蓝灰色 (#98ACB5)
- 橙色与绿松石色:浅橙色 (#FC993E)、灰绿松石色 (#667C6F)、白色 (#FCFCFC)
快速命令参考 (快速命令)
文本提取 (文本提取)
# Convert PPTX to markdown
python -m markitdown presentation.pptx
创建简单演示文稿 (创建简单演示文稿)
from pptx import Presentation
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[0]) # Title slide
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "Hello World!"
subtitle.text = "My First Presentation"
prs.save("output.pptx")
解压 PPTX 以供分析 (解压分析)
# Unpack PPTX to access raw XML
python ooxml/scripts/unpack.py presentation.pptx output_dir
# Key files to examine:
# ppt/presentation.xml - Main metadata
# ppt/slides/slide1.xml - Individual slide contents
# ppt/theme/theme1.xml - Theme colors and fonts
# ppt/comments/ - Comments
# ppt/notesSlides/ - Speaker notes
编辑后重新打包 (编辑后打包)
# Pack modified XML back to PPTX
python ooxml/scripts/pack.py output_dir new_presentation.pptx
HTML 转 PPT 工作流 (HTML 转 PPT)
# Step 1: Write HTML slides
html_content = """
<!DOCTYPE html>
<html>
<head>
<style>
.slide { width: 960px; height: 720px; padding: 40px; }
h1 { font-family: Arial; font-size: 48px; color: #1C2833; }
p { font-family: Arial; font-size: 24px; color: #2E4053; }
</style>
</head>
<body>
<div class="slide">
<h1>Welcome</h1>
<p>This is my presentation</p>
</div>
</body>
</html>
"""
# Step 2: Convert to PPTX
from html2pptx import html2pptx
with open("slides.html", "w") as f:
f.write(html_content)
html2pptx("slides.html", "output.pptx")
安装依赖 (依赖安装)
Python 依赖
pip install -r requirements.txt
# Includes: python-pptx, html2pptx, markitdown
常见场景示例 (常见场景)
场景 1:创建专业标题页 (创建专业标题页)
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6]) # Blank layout
# Add title
left = Inches(1)
top = Inches(2.5)
width = Inches(8)
height = Inches(1.5)
title_box = slide.shapes.add_textbox(left, top, width, height)
title_frame = title_box.text_frame
title_frame.text = "2024 Sales Report"
# Format title
title_para = title_frame.paragraphs[0]
title_para.font.size = Pt(72)
title_para.font.bold = True
title_para.font.color.rgb = RGBColor(28, 40, 51) # Navy
# Add subtitle
subtitle_box = slide.shapes.add_textbox(left, Inches(4), width, Inches(0.5))
subtitle_frame = subtitle_box.text_frame
subtitle_frame.text = "Q4 Performance Review"
subtitle_para = subtitle_frame.paragraphs[0]
subtitle_para.font.size = Pt(24)
subtitle_para.font.color.rgb = RGBColor(46, 64, 83) # Slate
prs.save("title_slide.pptx")
场景 2:提取所有演讲者备注 (提取所有演讲者备注)
# Step 1: Unpack PPTX
python ooxml/scripts/unpack.py presentation.pptx unpacked/
# Step 2: Extract notes using grep
cd unpacked/ppt/notesSlides/
grep -r "a:t>" . | sed 's/<[^>]*>//g' > ../../all_notes.txt
场景 3:根据数据批量生成幻灯片 (批量生成幻灯片)
from pptx import Presentation
from pptx.util import Inches, Pt
data = [
{"name": "Product A", "sales": 1200, "growth": "15%"},
{"name": "Product B", "sales": 980, "growth": "8%"},
{"name": "Product C", "sales": 1450, "growth": "22%"}
]
prs = Presentation()
for item in data:
slide = prs.slides.add_slide(prs.slide_layouts[1]) # Title and content
title = slide.shapes.title
title.text = item["name"]
body = slide.placeholders[1]
tf = body.text_frame
tf.text = f"Sales: ${item['sales']}M"
p = tf.add_paragraph()
p.text = f"Growth: {item['growth']}"
p.level = 1
prs.save("batch_report.pptx")
评论
支持 Markdown