mcpField
P
pptx

pptx

github.com/stvlynn文档处理121129 次安装32 周前更新
代码仓库

关于 pptx

pptx 是用于创建、读取和编辑 PowerPoint 演示文稿的 Skill,面向需要自动化制作或处理演示文稿的用户。它涵盖 HTML 转 PPT、批量生成、文本与批注提取,以及 OOXML 层面的分析和修改。

主要功能

  1. 01从 HTML 生成 PPT
  2. 02按模板或数据批量创建幻灯片
  3. 03提取文本、批注和演讲者备注
  4. 04编辑幻灯片内容、布局与主题
  5. 05解包和重打包 OOXML 文件

适用场景

  1. 01将 HTML 或数据转换为报告演示文稿
  2. 02批量生成产品或销售幻灯片
  3. 03提取演讲者备注和评论
  4. 04修改现有 PPT 的内容或主题

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/stvlynn/dingtalk-wukong-skills --skill pptx

安装后在 Claude Code 中输入/pptx确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

docs/
00-SKILL-完整制作指南.md
ooxml/schemas/ecma/fouth-edition/
opc-contentTypes.xsd
opc-coreProperties.xsd
opc-digSig.xsd
opc-relationships.xsd
ooxml/schemas/ISO-IEC29500-4_2016/
dml-chart.xsd
dml-chartDrawing.xsd
dml-diagram.xsd
dml-lockedCanvas.xsd
dml-main.xsd
dml-picture.xsd
dml-spreadsheetDrawing.xsd
dml-wordprocessingDrawing.xsd
pml.xsd
shared-additionalCharacteristics.xsd
shared-bibliography.xsd
shared-commonSimpleTypes.xsd
shared-customXmlDataProperties.xsd
shared-customXmlSchemaProperties.xsd
shared-documentPropertiesCustom.xsd
shared-documentPropertiesExtended.xsd
shared-documentPropertiesVariantTypes.xsd
shared-math.xsd
shared-relationshipReference.xsd
sml.xsd
vml-main.xsd
vml-officeDrawing.xsd
vml-presentationDrawing.xsd
vml-spreadsheetDrawing.xsd
vml-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 种精选配色方案

商业与专业
  1. 经典蓝:海军蓝(#1C2833)、石板灰(#2E4053)、银色(#AAB7B8)、米白色(#F4F6F6)
  2. 黑金:金色(#BF9A4A)、黑色(#000000)、奶油色(#F4F6F6)
  3. 炭灰与红色:炭灰色(#292929)、红色(#E33737)、浅灰色(#CCCBCB)
创意与活力 (创意/活力)
  1. 青绿色与珊瑚色:青绿色 (#5EA8A7)、深青绿色 (#277884)、珊瑚色 (#FE4447)、白色 (#FFFFFF)
  2. 复古彩虹:紫色 (#722880)、粉色 (#D72D51)、橙色 (#EB5C18)、琥珀色 (#F08800)、金色 (#DEB600)
  3. 活力橙色:橙色 (#F96D00)、浅灰色 (#F2F2F2)、炭灰色 (#222831)
  4. 大胆红色:红色 (#C0392B)、亮红色 (#E74C3C)、橙色 (#F39C12)、黄色 (#F1C40F)、绿色 (#2ECC71)
自然与温暖 (自然/温暖)
  1. 鼠尾草绿与陶土色:鼠尾草绿 (#87A96B)、陶土色 (#E07A5F)、奶油色 (#F4F1DE)、炭灰色 (#2C2C2C)
  2. 森林绿:黑色 (#191A19)、绿色 (#4E9F3D)、深绿色 (#1E5128)、白色 (#FFFFFF)
  3. 复古大地色:芥末黄 (#E3B448)、鼠尾草绿 (#CBD18F)、森林绿 (#3A6B35)、奶油色 (#F4F1DE)
  4. 奶油色与森林绿:奶油色 (#FFE1C7)、森林绿 (#40695B)、白色 (#FCFCFC)
优雅与柔和 (优雅/柔和)
  1. 暖腮红色:灰紫色 (#A49393)、腮红色 (#EED6D3)、玫瑰色 (#E8B4B8)、奶油色 (#FAF7F2)
  2. 海岸玫瑰色:古玫瑰色 (#AD7670)、海狸棕 (#B49886)、蛋壳色 (#F3ECDC)、灰绿色 (#BFD5BE)
  3. 粉色与紫色:粉色 (#F8275B)、珊瑚色 (#FF574A)、玫瑰色 (#FF737D)、紫色 (#3D2F68)
奢华与大胆 (奢华/大胆)
  1. 勃艮第奢华色:勃艮第酒红 (#5D1D2E)、深红色 (#951233)、铁锈色 (#C15937)、金色 (#997929)
  2. 深紫色与翡翠绿:紫色 (#B165FB)、深蓝色 (#181B24)、翡翠绿 (#40695B)、白色 (#FFFFFF)
清新与现代 (清新/现代)
  1. 青柠绿与李子色:青柠绿 (#C5DE82)、李子色 (#7C3A5F)、珊瑚色 (#FD8C6E)、蓝灰色 (#98ACB5)
  2. 橙色与绿松石色:浅橙色 (#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