name: document-pptx description: 创建、编辑和分析PowerPoint (.pptx) 演示文稿:生成幻灯片集(如商业计划书/季度业务回顾/培训材料),应用模板/母版,添加图表/图片/表格,管理演讲者笔记,以及提取幻灯片内容。当用户提到PowerPoint/PPTX、幻灯片、商业计划书、QBR/董事会演示文稿或演示文稿自动化时使用。支持python-pptx、PptxGenJS和PPTX-Automizer。
文档PPTX技能 - 快速参考
此技能使您能够以编程方式创建和编辑PowerPoint演示文稿。当用户需要生成商业计划书、报告、培训材料或自动化演示文稿工作流时,Claude应应用这些模式。
现代最佳实践(2026年1月):
- 一幻灯片 = 一要点;围绕决策或听众目标设计幻灯片集。
- 引用数字(定义 + 时间范围 + 来源)并为图表保持单一真实来源。
- 可访问性:幻灯片标题、阅读顺序、对比度和有意义的替代文本;遵循您组织的标准(通常是WCAG 2.2 AA / EN 301 549)。
- 版本化幻灯片集并强制执行审核循环(避免"final_final_v7.pptx")。
快速参考
| 任务 | 工具/库 | 语言 | 使用场景 |
|---|---|---|---|
| 创建PPTX | python-pptx | Python | 演示文稿、幻灯片集 |
| 创建PPTX | PptxGenJS | Node.js | 服务器端生成 |
| 模板驱动 | PPTX-Automizer | Node.js | 企业品牌、模板注入 |
| 模板 | python-pptx | Python | 母版幻灯片、主题 |
| 图表 | python-pptx | Python | 数据可视化 |
| 提取内容 | python-pptx | Python | 解析现有幻灯片集 |
选择指南
- 当您有品牌的.pptx模板并需要“将数据注入幻灯片”时,首选PPTX-Automizer。
- 在Python密集型流水线(报告、笔记本、ETL)中,首选python-pptx。
- 在Node.js流水线(服务器端生成、Web应用)中,首选PptxGenJS。
核心操作
创建演示文稿(Python)
from pptx import Presentation
prs = Presentation()
# 标题幻灯片
title_layout = prs.slide_layouts[0] # 标题幻灯片布局
slide = prs.slides.add_slide(title_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = "2025年第四季度业务回顾"
subtitle.text = "由产品团队呈现"
# 带项目符号的内容幻灯片
bullet_layout = prs.slide_layouts[1] # 标题和内容
slide = prs.slides.add_slide(bullet_layout)
slide.shapes.title.text = "关键亮点"
body = slide.placeholders[1]
tf = body.text_frame
tf.text = "收入同比增长25%"
p = tf.add_paragraph()
p.text = "客户基础扩大到10,000+"
p.level = 0
p = tf.add_paragraph()
p.text = "新企业层级推出"
p.level = 1 # 缩进项目符号
# 添加演讲者笔记
notes_slide = slide.notes_slide
notes_slide.notes_text_frame.text = "在这里强调企业增长故事。"
prs.save('presentation.pptx')
创建演示文稿(Node.js)
import pptxgen from 'pptxgenjs';
async function main() {
const pptx = new pptxgen();
pptx.author = '产品团队';
pptx.title = '第四季度业务回顾';
// 标题幻灯片
let slide = pptx.addSlide();
slide.addText('2025年第四季度业务回顾', {
x: 1, y: 2, w: '80%',
fontSize: 36, bold: true, color: '363636',
align: 'center',
});
slide.addText('由产品团队呈现', {
x: 1, y: 3.5, w: '80%',
fontSize: 18, color: '666666',
align: 'center',
});
// 带项目符号的内容幻灯片
slide = pptx.addSlide();
slide.addText('关键亮点', {
x: 0.5, y: 0.5, w: '90%',
fontSize: 28, bold: true,
});
slide.addText([
{ text: '收入同比增长25%', options: { bullet: true } },
{ text: '客户基础扩大到10,000+', options: { bullet: true } },
{ text: '新企业层级推出', options: { bullet: true, indentLevel: 1 } },
], { x: 0.5, y: 1.5, w: '90%', fontSize: 18 });
// 添加图表
slide = pptx.addSlide();
slide.addChart(pptx.ChartType.bar, [
{ name: '销售', labels: ['Q1', 'Q2', 'Q3', 'Q4'], values: [100, 150, 180, 225] },
], { x: 1, y: 1.5, w: 8, h: 4 });
await pptx.writeFile({ fileName: 'presentation.pptx' });
}
main();
添加图表(Python)
from pptx import Presentation
from pptx.util import Inches
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6]) # 空白
# 图表数据
chart_data = CategoryChartData()
chart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']
chart_data.add_series('收入', (100, 150, 180, 225))
chart_data.add_series('支出', (80, 90, 100, 110))
# 添加图表
x, y, cx, cy = Inches(1), Inches(1.5), Inches(8), Inches(5)
chart = slide.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED,
x, y, cx, cy,
chart_data
).chart
chart.has_legend = True
chart.legend.include_in_layout = False
prs.save('charts.pptx')
添加图片和表格
from pptx import Presentation
from pptx.util import Inches
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[6]) # 空白
# 添加图片
slide.shapes.add_picture('logo.png', Inches(0.5), Inches(0.5), width=Inches(2))
# 添加表格
rows, cols = 4, 3
table = slide.shapes.add_table(rows, cols, Inches(1), Inches(2), Inches(8), Inches(3)).table
# 设置列标题
table.cell(0, 0).text = '产品'
table.cell(0, 1).text = '销售'
table.cell(0, 2).text = '增长'
# 填充数据
data = [
('部件A', '$1.2M', '+25%'),
('部件B', '$800K', '+15%'),
('部件C', '$500K', '+40%'),
]
for row_idx, (product, sales, growth) in enumerate(data, 1):
table.cell(row_idx, 0).text = product
table.cell(row_idx, 1).text = sales
table.cell(row_idx, 2).text = growth
prs.save('images_and_tables.pptx')
提取内容
from pptx import Presentation
prs = Presentation('existing.pptx')
for slide_num, slide in enumerate(prs.slides, 1):
print(f"
--- 幻灯片 {slide_num} ---")
for shape in slide.shapes:
if shape.has_text_frame:
for paragraph in shape.text_frame.paragraphs:
print(paragraph.text)
if shape.has_table:
table = shape.table
for row in table.rows:
row_text = [cell.text for cell in row.cells]
print(row_text)
幻灯片布局参考
| 布局索引 | 名称 | 使用案例 |
|---|---|---|
| 0 | 标题幻灯片 | 开场、部分分隔 |
| 1 | 标题和内容 | 标准项目符号幻灯片 |
| 2 | 部分标题 | 部分过渡 |
| 3 | 两内容 | 并排比较 |
| 4 | 比较 | 优缺点、前后对比 |
| 5 | 仅标题 | 自定义内容放置 |
| 6 | 空白 | 完全创意控制 |
| 7 | 带标题的内容 | 图片 + 描述 |
演示文稿结构模式
商业计划书(10幻灯片)
商业计划书结构
1. 标题(公司、标语)
2. 问题(痛点)
3. 解决方案(您的产品)
4. 市场规模(TAM/SAM/SOM)
5. 商业模式(如何赚钱)
6. 进展(指标、增长)
7. 团队(创始人、顾问)
8. 竞争(格局)
9. 财务(预测)
10. 请求(融资、下一步)
季度回顾(8幻灯片)
季度回顾结构
1. 标题 + 议程
2. 执行摘要(KPI仪表板)
3. 收入与增长
4. 产品更新
5. 客户亮点
6. 挑战与学习
7. 下季度目标
8. 问答
做 / 避免(2025年12月)
做
- 使用幻灯片叙事计划(标题 + 一句要点 + 支持视觉)。
- 对于决策演示文稿,将执行摘要放在前面。
- 保持演讲者笔记与幻灯片要点一致。
避免
- 密集的幻灯片包含多个信息。
- 未引用的数字或没有定义的图表。
- 像素化的截图和不可读的表格。
良好实践的样子
- 叙事:每张幻灯片有一句要点并支持单一决策或洞察。
- 结构:开场执行摘要 + 清晰弧线(问题 -> 洞察 -> 推荐 -> 下一步)。
- 数据卫生:图表显示单位、时间范围、来源和一致轴。
- 设计:一致的排版、间距和对比度;没有“文本墙”幻灯片。
- 可访问性:设置阅读顺序和在有需要时有意义的替代文本。
可选:AI / 自动化
仅在明确请求且符合政策时使用。
- 起草幻灯片标题和演讲者笔记;人类验证准确性和语气。
- 从数据生成图表代码;人类验证标签、单位和来源。
导航
资源
- references/pptx-layouts.md - 母版幻灯片、主题、模板
- references/pptx-charts.md - 图表类型、数据可视化
- data/sources.json - 库文档链接
模板
- assets/pitch-deck.md - 创业计划书结构
- assets/quarterly-review.md - 业务回顾模板
- assets/slide-narrative-template.md - 每幻灯片一句要点
相关技能
- …/document-pdf/SKILL.md - 导出演示文稿到PDF
- …/document-xlsx/SKILL.md - 图表数据源
- …/product-management/SKILL.md - 产品策略演示文稿