super-ppt

Python-based PPT editor with style presets, natural language animation support, and style extraction from PPT/PDF. Use when users need to "edit existing PPT", "modify slide", "add animation to PPT", "apply promotion style", "extract style from PPT/PDF", "提取样式", "编辑PPT", "修改第X页", "添加动画", "应用晋升风格", or want to maintain consistent styling across PPT slides. Supports editing specific pages, applying theme presets (promotion/tech), extracting styles from existing documents, and adding animations via natural language descriptions.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "super-ppt" with this command: npx skills add huyansheng3/ppt-skills/huyansheng3-ppt-skills-super-ppt

Super PPT - Python PPT 编辑器

基于 python-pptx 的 PPT 编辑工具,支持风格预设、样式提取和自然语言动画。

核心功能

  1. 编辑现有 PPT - 打开、修改指定页面、保存
  2. 风格预设系统 - 如 promotion(晋升答辩风格),新增/修改页面自动保持一致
  3. 样式提取 - 从 PPT/PDF 提取配色、字体,保存为用户自定义主题
  4. 动画支持 - 通过自然语言描述添加动画,支持银河系旋转效果

快速开始

安装依赖

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": "工具支持"},
])

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

pptx

No summary provided by upstream source.

Repository SourceNeeds Review
General

single-slide-ppt

No summary provided by upstream source.

Repository SourceNeeds Review
General

drawio-to-png

No summary provided by upstream source.

Repository SourceNeeds Review
General

promotion-doc-designer

No summary provided by upstream source.

Repository SourceNeeds Review