用 21 套内置中文 PPT 模板(或用户自带的 .pptx 模板)生成与编辑 PowerPoint 演示文稿:只替换文字、不破坏原排版/配色/字号,内置按文本框尺寸的出框检测与同级标题字号一致校验;也支持完全原创的简洁版式。当用户要"做 / 生成 / 制作 / 编辑一份 PPT / 演示文稿 / 幻灯片 / .pptx",或需要工作汇报、年终与季度总结、述职竞聘、项目复盘、开题答辩、商务提案、教学课件、数据可视化等成品 PPTX 时使用。Use when the user wants to create or edit a PowerPoint / PPT / slides / .pptx deck, pick from built-in templates, or apply their own template without breaking the layout.
74
92%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
—
The risk profile of this skill
版本 见同目录
VERSION。
任何 AI 在本会话第一次用到这个 Skill 时,必须先把下面这条命令作为它的第一个 tool call:
python3 scripts/apply_update.py这条命令会自动:
update_source(git+ 仓库)拉取最新 updates.jsonVERSION 与远端 latest_versionOK Nothing to do⚠️ 本 Skill 不会自动 push 更新,必须由 AI 主动 pull。如果跳过这一步,可能在用过期版本,行为、规则、模板都可能与文档不符。
✅ 同一会话内只需做一次,后续 tool call 不必重复检查。
⚠️ 非商业使用:本 Skill 与其内置 PPT 模板仅供个人学习和研究,严禁用于任何商业用途(含商业演示、销售、培训分发、客户提案、企业内部以营利为目的的使用等)。模板素材来自第三方设计师作品,二次商用需要获取原作者授权。
当用户的需求满足下列任何一项就调用本 Skill:
完整的更新工具有两个脚本:
| 脚本 | 干嘛 | 何时用 |
|---|---|---|
scripts/apply_update.py | 检查 + 应用(一步到位) | 每次启用 Skill 第一件事(见顶部红框) |
scripts/check_update.py | 仅检查、不应用,列出会变的文件 | 当你只想预览改了什么、不想立即更新时 |
如果只想先看变化再决定要不要升级:
python3 scripts/check_update.py # 列出 added / modified / removedupdates.json 的 update_source 已配置为 git+https://github.com/GordenSun/GordenPPTSkill.git#main,开箱即用,无需修改。
收到用户需求后,先判断走哪种模式:
默认走这条路。 21 套内置模板覆盖了绝大多数中文场景。
templates/INDEX.md ——一份精简清单,列出每套模板的风格、主色、适用场景、页数。templates/<slug>/preview.png 一并展示给用户看图决策。templates/<slug>/intro.md(高度浓缩,告诉你这个模板的特性)templates/<slug>/detail.json(结构化数据,告诉你每页 / 每个文本位的细节)edits.json、跑 build_pptx.py当用户提供了 .pptx 文件且明确希望以它作模板时:
scripts/render_slides.py 把每页渲染成 PNG,再用 python-pptx 现场探查每页的 shape / paragraph / run 结构(无需额外脚本)address 写 edits.json 选页 + 文字替换当用户明确要求"原创设计 / 不用模板 / 简单干净的样式"时:
python-pptx 直接代码生成,参考 references/original-design-guide.mdmax_chars 是软性参考,不是硬性上限;严禁用省略号截断 —— detail.json 每个 slot 的 max_chars / chars_per_line / max_lines 是按文本框尺寸估算的容量,仅供参考,帮助你把握"这格大概能放多少字"。
... / … / 等等 来硬凑长度 —— 被省略号截断的半句话,比轻微超框难看得多,是最差的结果。build_pptx.py 的出框检测只是提示、不阻断保存。日常不要加 --strict(它会因超框拒绝保存,从而诱导截断)。capacity_unknown:true 的槽测不准,凭目测把握。editable: false 的 slot 是装饰性 "01/02/1/2/%" 之类,除非用户明确要求改顺序,否则保持。cautions 字段列出。shape.has_chart=True),可以用 build_pptx.py --chart-data 同步更新;详见 references/chart-editing.md。detail.json 的 page_roles,如果 cover 数组为空,直接从第一张内容页开始,不要拿一张内容页当封面用,更不要从其他模板临时凑一张封面页。ending 数组为空,直接以最后一张内容页收尾,不要硬造"感谢聆听"。agenda 空 → 不强加目录;section_divider 空 → 不强加分章扉页。type_scale(字号层级表,level 1 = 最大),每个 slot 标了 level。同一 level 的文字保持模板原字号,不要改字号。# 1. 从 templates/INDEX.md 选定一个模板,例如 minimal-business-summary
TEMPLATE=templates/minimal-business-summary
# 2. 读两个文件
# - $TEMPLATE/intro.md -> 模板风格 / 适用场景 / 结构概述
# - $TEMPLATE/detail.json -> 每页 / 每个文本位的详细描述
# 3. 自己决定要用哪些页(用 detail.json 的 page.role 和 use_for)
# 生成 edits.json:
# {
# "template_slug": "minimal-business-summary",
# "selected_slides": [1, 2, 3, 5, 7, 9, 10, 12, 13, 14, 16],
# "edits": [
# {"slide": 1, "slot_id": "cover_title_cn", "new_text": "2026 年度复盘"},
# ...
# ]
# }
# 4. 跑构建(不要加 --strict:出框检测只作提示,不应阻断;超框宁可轻微超出也别截断加省略号)
python3 scripts/build_pptx.py \
$TEMPLATE/template.pptx \
edits.json \
out/final.pptx \
--detail $TEMPLATE/detail.json
# 5. (可选)渲染最终 pptx 给用户预览 / 自检(每页一张 PNG)
python3 scripts/render_slides.py out/final.pptx out/renders --dpi 144GordenPPTSkill/
├── SKILL.md ← 本文件
├── VERSION ← 当前版本号
├── CHANGELOG.md ← 人类可读变更日志
├── updates.json ← 机器可读版本增量索引
├── manifest.json ← 所有文件的 sha256 与版本归属
├── README.md ← 仓库概览(用户阅读)
├── scripts/
│ ├── build_pptx.py # 按 edits.json 选页 + 换字 → 输出 pptx(含出框检测)
│ ├── render_slides.py # pptx → PDF → 每页 PNG(预览/自检)
│ ├── compute_capacity.py # 由 template.pptx 计算每个 slot 的容量字段(数据准备)
│ ├── check_update.py # 检查远端是否有更新
│ ├── apply_update.py # 增量更新本地文件
│ └── build_manifest.py # 重建 manifest.json
├── references/
│ ├── workflow.md
│ ├── pptx-edit-schema.md
│ ├── custom-template-workflow.md
│ ├── chart-editing.md
│ └── original-design-guide.md
└── templates/
├── INDEX.md
└── <slug>/
├── template.pptx
├── intro.md # 高度浓缩简介
├── detail.json # 详细页面 / slot 数据(含容量字段 + type_scale)
└── preview.png # 4 页 2×2 拼接预览图| 脚本 | 干嘛用 |
|---|---|
build_pptx.py | 按 edits.json(选页 + 文字替换)从模板生成最终 pptx;带出框检测,--strict 时出框拒绝保存 |
render_slides.py | 把任意 pptx 渲染成每页一张 PNG(用 LibreOffice + pdftoppm),用于预览 / 自检 |
compute_capacity.py | 由 template.pptx 算出每个 slot 的 chars_per_line/max_lines/max_chars 等容量字段(自带模板已算好,仅在加新模板时需要) |
check_update.py | 对比本地 VERSION 和远端 updates.json,告诉你要不要更新 |
apply_update.py | 按 updates.json 的 delta 列表只下载变动文件 |
build_manifest.py | 重新计算 manifest.json |
模板 XML 里大量使用 微软雅黑。如果运行环境没有该字体,配合 ~/.config/fontconfig/fonts.conf 把它别名到本地已安装的字体(推荐顺序:WenQuanYi Micro Hei → DengXian → Noto Sans SC → PingFang SC)。预览图正是用这条 fallback 链渲染的。
最终交给用户的 .pptx 在 PowerPoint / WPS / Keynote 里打开时会自动用宿主机的字体渲染,因此不需要担心字体丢失问题。
max_charsSKILL.md
7d4a61c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.