把任意公司 .pptx 模板,提炼成一个可复用的公司专属 Skill——以后所有按该模板出的 PPT 视觉永远一致(配色/LOGO/字体/版式/品牌元素),内容每次换新。
这是一个两层架构的元技能:
- 第1层(本技能)= 生成器:模板 → Skill 的提炼引擎,可分享给任何人
- 第2层(产物)= 公司专属 Skill:如「电网公司PPT模板制作助手1」,用来批量出 PPT
🌐 English summary(点击展开)
PPT Template Extractor turns any company .pptx template into a reusable, company-specific AI Skill. The AI then generates PPTs that always mirror the template's visual identity (color scheme / LOGO / fonts / layouts / brand elements), while you supply fresh content each time.
It is a two-layer meta-skill:
- Layer 1 (this repo) = the generator — a shareable engine that distills a template into a Skill.
- Layer 2 (the output) = a company-specific Skill — e.g. "电网公司PPT模板制作助手1", used to mass-produce on-brand PPTs.
Highlights: accurate design-token extraction (page ratio / theme colors / fonts / auto-detected LOGO), a template-type decision tree (page-library / master-clone / hybrid), automated sample generation with visual-diff convergence, and a self-evolving case library. Runs on Python + python-pptx and works with WorkBuddy and any Agent that supports the SKILL.md convention (Claude Code / Cline, etc.).
| 项 | 说明 |
|---|---|
| 主要平台 | WorkBuddy(放入 ~/.workbuddy/skills/PPT模板提取术/ 即可被识别调用) |
| 其他 Agent | 兼容。SKILL.md 是标准 Agent Skill 格式,Claude Code / Cline 等支持 SKILL.md 约定的 Agent 均可加载使用;核心脚本(extract/gen/verify)用 Python + python-pptx 编写,跨平台(macOS/Linux 用 python3,Windows 用 python,脚本本身跨平台) |
| 给谁用 | 任何"反复按同一公司模板出 PPT"的人(内部汇报 / 课件 / 项目交付) |
| 输入 | 一份公司模板 .pptx(+ 可选补充说明,如"必须 16:9"、"清除某水印") |
| 产物 | 一个公司专属 Skill(命名规范:〈公司名〉PPT模板制作助手〈序号〉,如「电网公司PPT模板制作助手1」) |
| 不是 | 不是 PowerPoint 插件、不是云端服务、不是一个 PPT 模板包 |
一句话定位:把"这份模板的设计"沉淀成"AI 能自动遵守的规则",让 AI 出 PPT 时视觉永远照着模板,内容按你的大纲来。
- 两层架构:第1层元技能(生成器)可分享;第2层产物(专属 Skill)自带全部执行代码,自包含
- 强路优先:模板文件落库为
assets/company-template.pptx作生成底座——生成时打开它、复用它,不是从空白新建(弱路 = 凭文字重画,fidelity 靠运气) - 自动提取设计令牌:
extract_template.py代码精确读 XML(非肉眼意会)——页面比例(EMU→比值)、主题色(Office clrScheme 12 色 hex)、字体(扫描 slide/版式/母版 run.font.name)、版式列表、自动判 LOGO(排除铺满>60%的背景图,取离四角最近者,母版>版式>slide 优先级) - 模板类型分类决策树:只看两个数字(slide 数与版式数)→ 判「页面库型 / 母版克隆型 / 混合型」→ 选最稳的生成策略
- 自动样例生成 + 视觉比对收敛:
gen_sample.py生成样例 →verify_sample.py自动比对(比例✓/页数=期望✓/页面实色⊆模板✓/LOGO原图二进制✓/字体✓/版式同源✓/可编辑✓/残留占位符=0✓)→ 最多 3 轮收敛循环 - 自进化事例库:每次成功提炼往
examples/追加一条案例(类型/策略/关键事实/踩坑/可复用经验)——事例越多,分类越准、生成越接近原版 - 硬规则 11 条:原样保留在产物 SKILL.md 中(尤其第 11 条:清除第三方水印)
- 批量家族模板支持:182 个第一PPT 家族模板实测——批量抽令牌 → 自动分类聚类 → 每类型写 1 条案例 + 1 份全量清单兜底,不撑爆事例库
把模板做成可复用Skill / 用这个模板风格批量生成PPT / 提炼模板 / 模板提取 / PPT模板提取术
在 WorkBuddy / 其他 Agent 中说:
「用 PPT模板提取术 把这份模板做成专属 Skill:
你的模板路径.pptx,公司名XX」
- 本 SKILL.md + README.md(给接收者看的门面)+ references/ 脚本 + examples/ 事例库
- 用户的公司模板 .pptx(与本技能同目录或用户指定路径)
- 可选:用户补充说明(如"必须 16:9""清除某水印")
⚠️ 模板是二进制,无法塞进 SKILL.md,必须作为单独文件随任务提供。
- 检测目标 Skill 目录(
~/.workbuddy/skills/<公司名>PPT模板制作助手<序号>)是否已存在:- 已存在 → 走「校验增强」:重跑提取、比对差异、补事例、更新 SKILL.md
- 不存在 → 走「完整创建」
- 能力自检(自动降级兜底):
- 有
python+python-pptx→ 自动提取(代码精确读 XML) - 无
python-pptx→ 先pip install python-pptx补齐;仍装不上才降级 - 无
python→ 降级为「分析 + 产出待办清单」,明确告知需补环境
- 有
运行 references/extract_template.py <模板.pptx> <输出目录>:
- 页面比例(EMU → 比值)
- 主题色(Office clrScheme 12 色 hex)
- 字体(扫描 slide/版式/母版 run.font.name)
- 版式列表(slide_layouts 名称)
- 全部图片不落盘(随
company-template.pptx底座继承即可);仅自动判 LOGO:- 排除铺满 >60% 页面的背景图(
is_bg) - 在剩余图中取"离页面四角最近"者,优先级 母版 > 版式 > slide
- 真 LOGO 存为
assets/logo.<ext>
- 排除铺满 >60% 页面的背景图(
- 产出
assets/tokens.md(机器可读令牌)
记录关键事实:版式数量与 slide 数量的比值——这是分类的核心依据(Step 3)。
读 references/classification.md 决策树,结合 assets/tokens.md 判定类型:
| 类型 | 判据 | 生成策略(写进 Layer2 SKILL.md) |
|---|---|---|
| 页面库型 | slide 多(≥10)且版式极少(≤3) | 复制模板页 + 替换文字(保留全部页作库,挑页删余) |
| 母版克隆型 | 版式丰富(≥5)且 slide 少 | 克隆母版 + 用版式新增页 |
| 混合型 | 介于两者之间 | 母版克隆为主,缺页时从现有 slide 复制补 |
⚠️ 这一步决定成败:分类错(如对页面库型误用母版克隆)会丢失大量既有设计,fidelity 暴跌。 电网模板实测:slide=35、版式=2 → 页面库型;曾误用母版克隆 → 33 种设计全丢,收敛失败。修正为页面库法后 2 轮收敛全 ✓。 事例库(examples/)是分类的经验来源——抽前先扫一眼同类案例(大批量同家族模板先查examples/全量清单.md)。
- 复制模板为
assets/company-template.pptx(生成底座,强路核心) - 复制生成器进 Layer2(自包含,关键):把本技能
references/gen_sample.py与references/verify_sample.py复制到 Layer2 的references/目录——Layer2 自带"打开底座→挑页→替换文字→删余页"的执行代码与比对器,任何 Agent 用 Layer2 时直接调用,不必重新推导代码(避免弱路漂移) - 用 Layer2 SKILL.md 模板填空:替换
<公司/模板描述>、<触发场景>、<比例>、<主题色>、<LOGO 路径>、<字体>、<可用页面类型>、<生成策略段落>;硬规则 11 条原样保留,不得删改;把examples/中同类案例的"坑"同步进硬规则或备注
- 逐项自检 Layer2 SKILL.md:比例/LOGO原图/色值/中间页版式/内容真实/真克隆或真复制底座/可编辑/禁重绘 LOGO/清第三方水印 — 缺项补齐
- 生成 3 页样例:用
references/gen_sample.py(按 Step 3 策略)产出样例-<主题>.pptx - 自动比对
references/verify_sample.py(判据:比例✓/页数=期望值✓/页面实色⊆模板✓/LOGO原图二进制✓/字体✓/版式同源✓/可编辑✓/残留占位符=0✓)⚠️ 必须带--expect <生成页数>,否则"删页失效却保留全页"会蒙混 ALL_PASS
- 收敛循环(最多 3 轮):任一 ✗ → 定位根因 → 修正(换页/修替换逻辑/升级比对项)→ 重生成重比对;连续 2 轮零 ✗ 提前停
- 向用户输出提炼报告:Skill 路径 / 模板类型 / 策略 / 收敛轮数 / 判据全 ✓ / 遗留风险(字体缺失、页面库未覆盖类型、矢量LOGO等)
- 自进化(必做):把本次提炼写成一条案例,追加到
examples/<模板名>-<类型>.md,格式:
## <模板名>(<日期>)
- 类型: 页面库型 / 母版克隆型 / 混合型
- 策略: <用了哪套>
- 关键事实: slide=N 版式=M 比例= 字体=
- 踩坑: <真实翻车点 + 怎么修>
- 结果: 收敛轮数 / 判据 / 遗留风险
- 可复用经验: <下次同类模板直接用的结论>
大批量同家族模板(如 182 个第一PPT 模板):不要逐个建案例文件。做法:① 跑
extract_template.py批量抽令牌 → ② 按决策树自动分类聚类 → ③ 每类型挑代表验证收敛 → ④ 每类型写 1 条结构化案例 + 1 份examples/全量清单.md(逐文件索引兜底)。
- 模板文件必须落库为
assets/company-template.pptx,否则退化为弱路(凭文字重画,fidelity 靠运气) - LOGO / 图片只许文件引用,严禁文字/形状重绘(二进制无法被文字复现)
- 模板为底座,不是参考——生成时打开它、复用它,不是从空白 Presentation 新建一套
- 不自欺:遗留风险如实列,不宣称"零问题"
1. 保留原模板页面比例
2. 视觉以"复制模板页+替换文字/克隆母版"实现,不重新绘制风格
3. LOGO 只许母版继承或插入 assets/logo.<ext>,严禁用形状/文字重绘
4. 保留模板固定品牌元素(背景图/页脚/装饰)
5. 优先复用原页面版式,不新造
6. 每页只表达一个核心观点
7. 不编造资料中不存在的数据/案例/机构
8. 所有元素必须可继续编辑
9. 生成前先给建议页数与页面大纲(标明每页用模板第几页)
10. 完成后说明每页核心内容、所用模板页、需人工复核页
11. 【清除第三方水印】若模板带任何来源/广告水印,生成的公司 PPT 不得保留;复制的页带此类字样必须清除。
PPT模板提取术/
├── README.md ← 给"人"看的使用说明
├── SKILL.md ← 给"Agent"看的执行编排(7 步流程)
├── references/
│ ├── extract_template.py ← 提取模板令牌(比例/色/字体/LOGO)
│ ├── gen_sample.py ← 样例生成器(两种策略)
│ ├── verify_sample.py ← 自动比对(比例/实色/LOGO二进制/字体/版式/可编辑)
│ └── classification.md ← 模板类型分类决策树(+ 第一PPT 家族实测统计)
└── examples/ ← 事例库(自进化引擎)
├── 第一PPT家族-通用特征.md ← 跨模板通用规律(182 个实测)
├── 国家电网-页面库型.md ← 页面库型代表案例(含 6 条踩坑)
├── 混合型-第一PPT.md
├── 母版克隆型-第一PPT.md
└── 全量清单.md ← 182 行逐文件索引(覆盖第一PPT 家族全部模板)
~/.workbuddy/skills/<公司名>PPT模板制作助手<序号>/
├── SKILL.md ← 专属 Skill 的"使用说明书"(给 Agent)
├── references/
│ ├── gen_sample.py ← 自带生成器(直接调用,不重造)
│ └── verify_sample.py ← 自带比对器
└── assets/
├── company-template.pptx ← 模板底座(强路核心)
├── logo.png ← 真 LOGO 原件
└── tokens.md ← 设计令牌(比例/色/字体/LOGO)
# 1. 安装(一次性):把整个目录复制到
cp -r PPT模板提取术 ~/.workbuddy/skills/
# 2. 装依赖(一次性):Python 3.8+ 和 python-pptx
pip3 install python-pptx # macOS / Linux
pip install python-pptx # Windows
# 验证装好了
python -c "import pptx; print(pptx.__version__)"
# 3. 开始用:准备好公司 .pptx 模板,打开 WorkBuddy 说
# 「用 PPT模板提取术 把这份模板做成专属 Skill: 你的模板路径.pptx, 公司名 XX」Agent 会自动完成:提取设计令牌 → 判断模板类型选策略 → 落库底座 + 写专属 Skill → 生成样例 + 比对收敛 → 输出提炼报告 + 沉淀案例。
标准 SKILL.md 格式 + 纯 Python 脚本,任何支持 SKILL.md 约定的 Agent 均可加载使用:
- 放入你的 Agent 的 skills 目录(如
.claude/skills/) - 依赖
python-pptx(pip 安装即可,跨平台脚本) - 按 SKILL.md 的 7 步流程执行:判定 → 提取令牌 → 分类选策略 → 落库写 Layer2 → 自检收敛 → 输出报告 + 自进化
新任务中直接说:
「用 XX公司PPT模板制作助手1 做一份《XXX》PPT,大纲:封面 → 背景 → 三点成效 → 总结」
Agent 会按模板视觉出 PPT,内容由你给。
多份模板:同一公司多份模板 → XX公司PPT模板制作助手2 / 3 / ...;其他公司 → YY公司PPT模板制作助手1 / 2 / ...。
- 视觉永远=模板的样式(配色/LOGO/字体/版式/品牌元素)
- 内容每次换新(你给大纲,它填文字图)
- 多份同类模板 → 多份专属 Skill,各自互不干扰
- 沉淀案例越用越准(每次提炼都往
examples/加一条)
- 不承诺 100% 像素级一致:特殊字体(方正/书法类)在目标环境缺失时回退系统字体,视觉微调
- 页面库型:模板有的页型都支持;模板没有的需在母版上新建,fidelity 微跌
- 第三方模板(免费下载类):几乎都带来源水印,提炼时会自动清理,但仍属"清理后近似"
- 不能把"非模板的 PPT"反过来做模板(只吃 .pptx 模板)
- 不能编辑已生成 PPT 的视觉(若想换模板,用新模板的专属 Skill 重出)
- 不能跨平台(Win/Mac)字体差异自动适配(目标环境缺字体就回退,不会远程下载)
Q: 这和直接把模板复制一份有什么区别? A: 复制 .pptx 只是同一份文件;你还得手动改文字/图。这个 Skill 是让 AI "按这份模板的样式自动填你要的内容"——你给大纲,出 PPT,不用再手动排版。
Q: 一定要装 python-pptx 吗? A: 是。这是 Skill 的执行依赖,不装脚本就跑不了。安装命令见上方。
Q: 提炼出来效果不好怎么办? A: 看提炼报告的"遗留风险"段(字体/版式/水印);若页面库型模板的某页型没有,改用模板里相近的页;若字体缺失,把缺失字体文件放入系统字体目录再重提炼。
Q: 多份同类模板(如同公司不同部门模板)怎么办?
A: 一份一份提炼,各得一个专属 Skill,序号递增:电网公司PPT模板制作助手1 / 2 / ...。互相独立,互不影响。
Q: 案例库会不会越用越膨胀? A: 不会。Skill 设计成"聚类沉淀":同家族批量模板会先批量抽令牌 → 按类型聚类 → 每类型写 1 条案例 + 1 份全量清单兜底,不逐个建案例文件。
Q: 这能赚钱吗 / 能商用吗? A: 元技能本身是公开方法论(模板→Skill 的提炼流程);生成的 Layer2 专属 Skill 是你的内部资产,自己用没问题,但生成的 PPT 仍受原模板的版权约束(免费模板请遵守模板来源协议)。
关键事实:slide=35、版式=2 → 页面库型;比例 1.778(16:9);母版有 2 图(401KB 全页背景图 + 40KB 右上角真 LOGO)。
踩坑 6 条(真实):
- LOGO 误判背景图:原"离角最近"逻辑把铺满全页的背景大图当 LOGO → 加
is_bg()排除 >60% 页面尺寸图 - 母版克隆法失效:版式仅 2 个,用"克隆母版"会丢 33 种设计 → 改页面库法
- 主题色假性 ✗:python-pptx 保存时 accent1/accent5 互换 → 升级为"页面实色比对"
- 第三方水印:第 33 页带"行业PPT模板 http://www.1ppt.c"广告水印 → 硬规则第 11 条强制清除
- 删除 slide 关系 bug:
sld.get(R+"id")拼成双重 id → 用qn('r:id')正确取值 - 页面库删页失效:用
prs.slides的 Slide 对象比对 sldIdLst 元素定位删除页(非同一 XML 节点,比对恒 False)→ 用sldIdLst元素迭代删除 + verify 加--expect <页数>断言
可复用经验:凡 slide≥10 且版式≤3 → 直接判页面库型,别试母版克隆;LOGO 判定永远先排背景图;免费/第一PPT 类模板先扫来源水印写进硬规则;比对判据用"页面实色"而非"theme 色板"。
- 类型分布:页面库型 133 / 混合型 45 / 母版克隆型 4
- 比例:169/182 为 16:9(1.778 系);仅 2 个为 1.6 系 → 默认 16:9 底座
- LOGO:182/182 全部带 LOGO(提取时必存在,
is_bg排除背景图后取角最近即可) - 水印:182/182 全部带第三方水印(181 含
http/www,85 含"ppt模板"字样)→ 家族级硬规则:第一PPT 模板提炼 Layer2 时必须清除来源水印
| 版本 | 说明 |
|---|---|
| 当前版 | 双层架构(生成器 + 产物)· 事例库自进化 · 批量家族模板聚类沉淀 · 硬规则 11 条 |
作者:松幽(SongYouAI)
- 📱 公众号:松幽舒苑
- 🎬 视频号:松幽Ai提效
License:MIT — 可自由使用、修改、分发,保留出处即可。
生成的公司 PPT 仍受原模板的版权约束;免费模板请遵守模板来源协议。
本 Skill 让 AI 按你的模板出 PPT,内容由你提供。模板版权归原作者所有,使用请遵守来源协议。