📦 create-pptx — 使用 Python 和 python-pptx 创建 PowerPoint 演示文稿

v1.0.0

使用 Python 和 python-pptx 库生成 PPTX 文件,支持时间线、图表、图表、自定义布局、颜色、形状、连接器、文本格式和过渡效果。适用于生成复杂的 PowerPoint 演示文稿,特别是需要程序化构建的场景。

0· 394·3 当前·3 累计
by @scottliu007 (fanzhuo)·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/20
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能内部一致,提供 Python 帮助代码和文档用于构建 PPTX 文件,使用 python-pptx,不请求无关的凭据、安装或网络访问。
评估建议
该技能如声称般工作,提供 python-pptx 帮助器和文档。使用前:(1)自行检查脚本;(2)从 PyPI 安装 python-pptx;(3)替换或移除示例中的绝对路径;(4)注意 Slidesgo 模板的归属滑块;(5)审查 XML 注入用于高级 PPTX 操作。如果需要额外确保,请求作者提供缺失资产或确认模板来源。...
详细分析 ▾
用途与能力
名称/描述与包含的 Python 帮助器(scripts/pptx_helpers.py)和参考文档匹配。没有请求无关的凭据、二进制文件或外部服务。小提示:SKILL.md 引用了模板资产和一个示例本地路径(/Users/scott/...),这些在文件清单中不可用 —— 看起来像是一个开发者留下的例子,而不是必需的秘密。
指令范围
运行时指令仅限安装 python-pptx、导入帮助器模块和运行本地 Python 脚本生成 .pptx 文件。SKILL.md 不指示读取无关系统文件或向外部端点发送数据。它建议使用模板文件(assets/)并为 Slidesgo 模板保留归属滑块。
安装机制
注册表中没有安装规格;SKILL.md 建议 'pip install python-pptx',这是适当且预期的。清单中没有从任意 URL 下载或提取步骤。
凭证需求
该技能不请求环境变量、凭据或配置路径。唯一的文件系统引用是一个示例绝对路径到本地模板文件(开发者特定);确保您提供或用您控制的文件替换模板。
持久化与权限
该技能不请求持久或特权平台存在(始终:false)。它不尝试修改其他技能或系统范围的代理设置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/20

["create-pptx 初始发布:使用 python-pptx 生成 PPTX 演示文稿。","支持时间线、图表、图表、自定义幻灯片布局、主题、颜色、形状、连接器、文本格式和过渡效果。","包含常见绘图任务的帮助器和关于 EMU 单位、幻灯片规划以及 WPS 兼容性的指南。","提供商业和教育模板资产以及模式、图表、标准幻灯片和 WPS 问题的参考。","工作流设计为多幻灯片渐进式揭示,以确保与 WPS 兼容。"]

无害

安装命令

点击复制
官方npx clawhub@latest install create-pptx
镜像加速npx clawhub@latest install create-pptx --registry https://cn.longxiaskill.com

技能文档

安装配置

pip install python-pptx
# 或者:uv pip install python-pptx

将脚本输出到合理的位置(例如 前端开发/demo/ 或项目文件夹),然后使用 python3 运行并打开结果。

核心辅助函数

读取并导入 scripts/pptx_helpers.py 以获取现成的绘图原语:背景、水平/垂直线条、文本框、椭圆、对角线连接器和淡入过渡。根据需要复制或导入。

关键单位:EMU(英制公制单位)。1 pt = 12700 EMU,1 cm ≈ 360000 EMU。标准 16:9 幻灯片 = 12192000 × 6858000 EMU。

工作流程

  • 理解内容 — 里程碑、分类、颜色、幻灯片数量
  • 规划布局 — 提前计算 EMU 单位的 X/Y 位置;避免使用魔法数字
  • 构建形状 — 使用辅助函数或 slide.shapes.add_shape/add_textbox
  • 添加过渡 — 始终从辅助函数调用 add_fade_transition(slide)
  • 运行并打开python3 script.py && open output.pptx

多幻灯片替代点击动画(WPS 安全默认)

WPS 不能可靠地支持点击触发的 PowerPoint 动画。始终使用多张幻灯片来逐步展示内容:

幻灯片 1 → 骨架 / 仅结构
幻灯片 2 → 骨架 + 第一层数据
幻灯片 3 → 骨架 + 所有数据层

为每张幻灯片添加淡入过渡(add_fade_transition)以实现平滑切换。如果用户明确要求动画且他们使用的是 Microsoft PowerPoint(而非 WPS),可以尝试基于 XML 的动画 — 但请先阅读 references/wps-compat.md 了解 XML 结构和已知问题。

常见模式

颜色和主题

在顶部将所有颜色定义为 RGBColor 常量。深色背景看起来更高级 — 使用近黑色(0x06, 0x0D, 0x1E)搭配明亮的高亮色。

时间线布局

TL_L, TL_R = 850000, 11950000  # 左右边距(EMU)
TL_W = TL_R - TL_L
M_STEP = TL_W // 11  # 12个月 → 11个间隔

def month_x(m): # 1-based month → EMU x-position return TL_L + M_STEP * (m - 1)

碰撞解决

当多张卡片共享相同或相近的 X 位置时,将它们分散开:

def resolve_collisions(events, card_w, gap):
    events.sort(key=lambda e: e['cx'])
    need = card_w + gap
    for _ in range(120):
        moved = False
        for i in range(len(events) - 1):
            a, b = events[i], events[i+1]
            if b['cx'] - a['cx'] < need:
                push = (need - (b['cx'] - a['cx'])) / 2
                a['cx'] -= push
                b['cx'] += push
                moved = True
        if not moved:
            break

动画用的形状 ID

python-pptx 自动分配形状 ID。创建后检索它们:

shp = slide.shapes.add_shape(...)
shape_id = shp.shape_id  # 在动画 XML 中使用此 ID

对于通过原始 XML 添加的连接器,先读取现有的最大 ID:

def _max_existing_id(slide):
    return max((int(el.get('id')) for el in slide.element.iter() if el.get('id') and el.get('id').isdigit()), default=1)

模板资源

assets/ 中有现成的 .pptx 基础文件。将它们用作起始 Presentation() 对象以继承其设计/主题:

from pptx import Presentation
prs = Presentation('/Users/scott/.cursor/skills/create-pptx/assets/business-dark.pptx')
文件风格来源
assets/business-dark.pptx深色商务 · Pitch Deck 风格 · 60 slidesSlidesgo "Product Vision Pitch Deck"(需署名)
assets/education.pptx明亮教育 · 笔记本课程风格 · 多 slidesSlidesgo "Notebook Lesson XL"(需署名)
署名:免费 Slidesgo 模板需要保留署名幻灯片。使用这些文件时,请勿删除最后的"Credits"幻灯片。

参考文件

根据任务阅读相关文件:

  • references/pptx-patterns.md — EMU 单位速查、预设形状 ID、连接器 XML、 过渡 XML、多段落文字框、典型脚本结构
  • references/charts.md — python-pptx 原生图表 API:柱状、折线、饼图、散点、 多系列、样式设置(当用户需要数据图表时读此文件)
  • references/standard-slides.md — 标准商务幻灯片函数库:标题页、目录页、 要点页、图文并排、数据页、章节分隔页、结尾页(当用户需要完整 PPT 结构时读此文件)
  • references/wps-compat.md — WPS 动画兼容性踩坑记录(当用户提到 WPS 或 动画效果异常时读此文件)
数据来源ClawHub ↗ · 中文优化:龙虾技能库