super-ppt
Super PPT - Python PPT 编辑器
基于 python-pptx 的 PPT 编辑工具,支持风格预设、样式提取和自然语言动画。
核心功能
- 编辑现有 PPT - 打开、修改指定页面、保存
- 风格预设系统 - 如
promotion(晋升答辩风格),新增/修改页面自动保持一致 - 样式提取 - 从 PPT/PDF 提取配色、字体,保存为用户自定义主题
- 动画支持 - 通过自然语言描述添加动画,支持银河系旋转效果
快速开始
安装依赖
pip install python-pptx lxml Pillow
# PDF 支持需要 poppler
brew install poppler # macOS
🎨 样式提取(新功能)
从现有 PPT 或 PDF 提取样式风格,保存为可复用的主题。
提取样式
import sys
sys.path.insert(0, '<skill_directory>/scripts')
from style_extractor import extract_style, list_styles
# 从 PPT 提取样式
style = extract_style("参考文档.pptx", name="my-company")
# 从 PDF 提取样式
style = extract_style("晋升答辩.pdf", name="promotion-v2")
# 查看已保存的样式
print(list_styles()) # ['my-company', 'promotion-v2']
命令行提取
# 从 PPT 提取
python scripts/style_extractor.py reference.pptx --name company-style
# 从 PDF 提取
python scripts/style_extractor.py document.pdf --name doc-style
# 列出所有样式
python scripts/style_extractor.py --list
# 删除样式
python scripts/style_extractor.py --delete old-style
使用提取的样式
from ppt_editor import open_ppt, create_ppt
# 使用用户自定义主题(从 ~/.ppt-styles/ 加载)
editor = open_ppt("my.pptx", theme="my-company")
# 或创建新 PPT 使用自定义主题
editor = create_ppt(theme="promotion-v2")
# 后续所有元素自动使用该主题的配色
editor.add_title(1, "标题") # 使用提取的主色
editor.add_card(1, ...) # 使用提取的卡片背景色
用户样式目录
~/.ppt-styles/
├── my-company.json # 从 PPT 提取的样式
├── promotion-v2.json # 从 PDF 提取的样式
└── my-corp.json # 自定义企业样式
样式配置格式
{
"name": "my-company",
"description": "从 参考文档.pptx 提取的样式",
"colors": {
"primary": "fc5a1f", // 主色(标题、强调)
"secondary": "3669cd", // 次色(链接、图标)
"text_dark": "434343", // 深色文字
"text_normal": "707070", // 正文文字
"text_light": "a4a4a3", // 辅助文字
"background": "ffffff", // 背景色
"card_bg": "f8f8f8", // 卡片背景
"accent_light": "fca787", // 浅色强调
"success": "51cf66" // 成功色
},
"fonts": {
"title": "Microsoft YaHei",
"body": "Microsoft YaHei",
"title_size": 28,
"body_size": 14
},
"style_prompt": "## 视觉风格指南\n..." // AI 风格提示词
}
🤖 风格 Prompt(AI 辅助设计)
提取样式时会自动生成一段描述性的 风格 Prompt,用于指导 AI 理解和应用该视觉风格:
# 获取当前主题的风格 prompt
editor = create_ppt(theme="my-company")
prompt = editor.get_style_prompt()
# 打印风格 prompt
editor.print_style_prompt()
# 输出示例:
# ## 视觉风格指南
# ### 整体风格
# 这是一个暖色调、积极活力的演示文稿风格...
# ### 配色方案
# - **主色调**: #fc5a1f(橙色)- 用于标题、强调...
# ### 设计原则
# 1. 简洁留白...
用途:
- 在使用 AI 辅助创建 PPT 时,将此 prompt 作为上下文
- 确保 AI 生成的内容与视觉风格保持一致
- 作为设计规范文档供团队参考
添加银河系旋转动画(一键命令)
# 为 PPT 第一页的所有圆形添加银河系旋转效果
python scripts/animation_engine.py galaxy your_slide.pptx 1 output.pptx
在 Python 中使用
import sys
sys.path.insert(0, '<skill_directory>/scripts')
from animation_engine import AnimationEngine, add_galaxy_rotation
from pptx import Presentation
# 方式 1: 一键添加银河系效果
add_galaxy_rotation("cover.pptx", slide_number=1, output_path="cover_animated.pptx")
# 方式 2: 精细控制每个形状的动画
prs = Presentation("cover.pptx")
engine = AnimationEngine(prs)
# 为特定形状添加旋转动画
engine.add_spin(slide_number=1, shape_index=5, duration=10.0, repeat="indefinite", clockwise=True)
engine.add_spin(slide_number=1, shape_index=6, duration=6.0, repeat="indefinite", clockwise=False)
# 保存
prs.save("output.pptx")
打开并编辑现有 PPT
import sys
sys.path.insert(0, '<skill_directory>/scripts')
from ppt_editor import open_ppt, create_ppt
# 打开现有 PPT(自动应用 promotion 风格)
editor = open_ppt("path/to/your.pptx", theme="promotion")
# 查看所有页面
editor.print_slides()
# 获取指定页面
slide = editor.get_slide(3) # 第 3 页
# 清空并重建某一页
editor.clear_slide(3)
editor.set_background(3)
editor.add_header_bar(3, "新标题")
editor.add_text(3, "这是正文内容", x=0.5, y=1.5)
# 保存
editor.save("output.pptx")
添加动画
from animation_engine import AnimationEngine, animate
# 方式 1: 自然语言描述
engine = AnimationEngine(editor)
engine.add_from_description("标题从左侧飞入", slide_number=1)
engine.add_from_description("内容依次淡入", slide_number=1)
# 方式 2: 直接 API
engine.add_entrance("fade", slide_number=1, shape_index=0, duration=0.5)
engine.add_slide_transition(1, "push")
可用主题
内置主题
| 主题 | 说明 | 主色 |
|---|---|---|
promotion |
晋升答辩风格 | 橙色 #fc5a1f |
tech |
技术分享风格 | 紫色 #4a00e0 |
用户自定义主题
通过 style_extractor.py 提取的主题保存在 ~/.ppt-styles/ 目录,可直接通过名称使用:
# 使用用户主题
editor = open_ppt("my.pptx", theme="my-corp") # 从 ~/.ppt-styles/my-corp.json 加载
核心 API
SuperPPTEditor
editor = open_ppt(path, theme="promotion") # 打开 PPT
editor = create_ppt(theme="promotion") # 创建新 PPT
# 页面操作
editor.get_slide(n) # 获取第 n 页
editor.add_slide() # 添加新页
editor.clear_slide(n) # 清空第 n 页
editor.print_slides() # 打印所有页面概览
# 添加元素(自动应用主题样式)
editor.add_header_bar(n, "标题")
editor.add_title(n, "标题", "副标题")
editor.add_text(n, "内容", x, y, width, height)
editor.add_card(n, x, y, w, h, title, content, card_type)
editor.add_feature_grid(n, features, columns=3)
# 保存
editor.save("output.pptx")
AnimationEngine
engine = AnimationEngine(editor)
# 进入动画
engine.add_entrance("fade", slide_number, shape_index, duration)
# 类型: fade, fly_in, fly_in_left, zoom, bounce, float_up, wipe, split
# 强调动画
engine.add_emphasis("pulse", slide_number, shape_index)
# 类型: pulse, flash, spin, grow
# 旋转动画(银河系效果专用)
engine.add_spin(slide_number, shape_index, duration=10.0, repeat="indefinite", clockwise=True)
# repeat: "1", "2", "indefinite"
# 银河系效果(自动为所有圆形添加旋转)
engine.add_galaxy_effect(slide_number)
# 退出动画
engine.add_exit("fade_out", slide_number, shape_index)
# 类型: fade_out, fly_out, zoom_out
# 页面切换
engine.add_slide_transition(slide_number, "push")
# 类型: fade, push, wipe, split, cube, flip, gallery
# 自然语言
engine.add_from_description("标题淡入", slide_number)
engine.add_from_description("圆形一直旋转", slide_number)
卡片类型
add_card() 支持以下类型:
| 类型 | 效果 | 使用场景 |
|---|---|---|
normal |
灰色背景 | 普通内容 |
highlight |
橙色强调 | 重要内容 |
problem |
红色标记 | 问题/痛点 |
solution |
绿色标记 | 解决方案 |
示例:完整工作流
# 1. 打开现有晋升 PPT
editor = open_ppt("晋升答辩.pptx", theme="promotion")
editor.print_slides()
# 2. 修改第 5 页 - 技术架构
editor.clear_slide(5)
editor.set_background(5)
editor.add_header_bar(5, "技术架构演进")
# 添加对比卡片
editor.add_card(5, x=0.5, y=1.2, width=4.5, height=2,
title="🚫 旧架构", content="描述旧架构的问题...",
card_type="problem")
editor.add_card(5, x=5.3, y=1.2, width=4.5, height=2,
title="✅ 新架构", content="描述新架构的优势...",
card_type="solution")
# 3. 添加动画
from animation_engine import AnimationEngine
engine = AnimationEngine(editor)
engine.add_from_description("卡片依次从底部弹出", slide_number=5)
engine.add_slide_transition(5, "push")
# 4. 保存
editor.save("晋升答辩-修改版.pptx")
参考文档
- 配色方案:
references/color-palette.md - 动画命令:
references/animation-commands.md
常见任务
修改指定页面保持风格一致
editor = open_ppt("existing.pptx", theme="promotion")
# 主题已加载,后续所有 add_* 方法自动使用 promotion 配色
editor.add_title(3, "新标题") # 自动使用橙色 #fc5a1f
editor.add_text(3, "内容") # 自动使用灰色 #707070
批量添加动画
engine = AnimationEngine(editor)
for i in range(1, editor.get_slide_count() + 1):
engine.add_slide_transition(i, "fade")
engine.add_from_description("所有元素依次淡入", slide_number=i)
创建新页面
n = editor.add_slide()
editor.add_header_bar(n, "新增内容")
editor.add_feature_grid(n, [
{"icon": "🎯", "text": "目标明确"},
{"icon": "📈", "text": "数据驱动"},
{"icon": "🔧", "text": "工具支持"},
])
More from huyansheng3/ppt-skills
single-slide-ppt
Quick professional single-slide PowerPoint creator for concept visualization, comparisons, feature showcases, and decision frameworks. Use when users need to create "one-page PPT", "single slide presentation", "快速做个PPT", "做一页PPT", or want to visualize concepts like "before/after", "problem/solution", "feature grid", "process flow" in presentation format. Ideal for creating visual summaries, product pitches, architecture diagrams, or comparison slides.
191pptx
Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks
124promotion-doc-designer
Professional promotion/review document designer following corporate presentation standards. Creates clean, minimal PPT/PDF documents with 16:9 layout, strategic color usage (primary brand orange #fc5a1f, secondary blue #3669cd), and sophisticated white-space design. Use when users ask to "create promotion doc", "design review presentation", "make professional PPT", "晋升文档设计", "述职报告", or need corporate-standard presentations with visual hierarchy and data visualization.
46drawio-to-png
Convert draw.io diagram files (.drawio, .dio, .xml) to high-resolution PNG images. Use when users ask to "convert drawio to png", "export drawio diagrams", "generate png from drawio", "drawio导出png", "转换drawio图片", "生成高清drawio图片", or need to convert draw.io files to image format for documentation, presentations, or publishing.
33pdf
Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
29