PPT模板提取术(第1层·元技能)
把任意公司 PPT 模板,提炼成一个可复用的公司专属 Skill。
第1层(本技能)= 模板→Skill 的生成器;第2层(产物)= 某公司的「〈公司名〉PPT模板制作助手〈序号〉」(如「电网公司PPT模板制作助手1」),用来批量出 PPT。
本技能内含事例库(examples/)。每成功提炼一次,就往里追加一条案例;事例越多,下次分类与生成越准。
0. 输入
- 本 SKILL.md +
README.md(给接收者看的门面) + references/ 脚本 + examples/ 事例库(随本技能自带)
- 用户的公司模板 .pptx(与本技能同目录或用户指定路径)
- 可选:用户补充说明(如"必须 16:9""清除某水印")
⚠️ 模板是二进制,无法塞进本文件,必须作为单独文件随任务提供。
1. 阶段判定(自动)
- 检测目标 Skill 目录(
~/.workbuddy/skills/<公司名>PPT模板制作助手<序号> 或用户指定)是否已存在:
- 已存在 → 走「校验增强」:重跑提取、比对差异、补事例、更新 SKILL.md。
- 不存在 → 走「完整创建」。
- 能力自检(自动降级兜底):
- 有
python + python-pptx → 走自动提取(代码精确读 XML,非肉眼意会)。
- 无
python-pptx → 先执行 pip install python-pptx(或 python -m pip install python-pptx)补齐;仍装不上才降级。
- 无
python → 降级为「分析 + 产出待办清单」,明确告知用户需补环境或人工补全令牌。
- 跨平台: 下文命令里的
python3 在 Windows 上请用 python(脚本本身跨平台, 仅命令名不同)。
2. 提取设计令牌(Step 1,自动)
运行 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>
- 产出
assets/tokens.md(机器可读令牌)
读 assets/tokens.md,记录关键事实:版式数量与slide 数量的比值——这是分类的核心依据(见 Step 3)。
3. 模板类型分类 + 选生成策略(Step 2,核心)
读 references/classification.md 决策树,结合 assets/tokens.md 判定类型,选对应生成策略:
| 类型 |
判据 |
生成策略(写进 Layer2 SKILL.md) |
| 页面库型 |
slide 多(≥10)且版式极少(≤3) |
复制模板页 + 替换文字(保留全部页作库,挑页删余) |
| 母版克隆型 |
版式丰富(≥5)且 slide 少 |
克隆母版 + 用版式新增页 |
| 混合型 |
介于两者之间 |
母版克隆为主,缺页时从现有 slide 复制补 |
⚠️ 这一步决定成败:分类错(如对页面库型误用母版克隆)会丢失大量既有设计, fidelity 暴跌。事例库(examples/)是分类的经验来源——抽前先扫一眼同类案例(大批量同家族模板, 先查 examples/全量清单.md 确认其已登记的类型与特征, 避免重复提炼)。
4. 落库底座 + 写 Layer2 SKILL.md(Step 3)
- 复制模板为
assets/company-template.pptx(生成底座,强路核心)。
- 复制生成器进 Layer2(自包含,关键):把本技能
references/gen_sample.py 与 references/verify_sample.py 复制到 Layer2 的 references/ 目录。这样 Layer2 自带"打开底座→挑页→替换文字→删余页"的执行代码与比对器,任何 Agent 用 Layer2 时直接调用,不必重新推导代码(避免弱路漂移)。
- 用下方「Layer2 SKILL.md 模板」填空:
- 替换
<公司/模板描述>、<触发场景>、<比例>、<主题色>、<LOGO 路径>、<字体>、<可用页面类型>、<生成策略段落>。
- 硬规则 11 条原样保留,不得删改(尤其第 11 条清第三方水印)。
- 把
examples/ 中同类案例的"坑"同步进硬规则或备注。
Layer2 SKILL.md 模板(填空用)
---
name: <公司>PPT模板制作助手
description: 用"<公司/模板描述>"公司 PPT 模板生成可编辑 PPTX。触发:<触发场景>类 PPT。
---
# <公司>PPT模板制作助手
## 生成底座(<生成策略名>)
<生成策略段落:页面库法/母版克隆法/混合法,讲清"打开底座→挑页/用版式→替换文字→删余页">
> 本 Skill 自带执行代码,**直接调用,勿重造**:
> `python3 references/gen_sample.py --tpl assets/company-template.pptx --out 产出.pptx --strategy <页面库法|母版克隆法> --pages <索引,逗号分隔>`
> ⚠️ `--pages` 语义因策略而异: **页面库法**=模板页(slide)索引; **母版克隆法**=版式(layout)索引(0=封面, 1=标题内容, 2=...)。填错会删错页或版式越界报错。
> 生成后用 `python3 references/verify_sample.py assets/company-template.pptx 产出.pptx --expect <页数>` 自检(页数断言防删除失效假通过)。
## 设计令牌(从 assets/tokens.md 原样填入)
- 页面比例: <比例>
- 主题色: <hex>
- LOGO: assets/logo.<ext>(<位置/尺寸>;母版继承优先,缺时插此文件)
- 字体: <字体列表>(⚠️ 缺失字体回退系统字体,视觉可能微调)
- 可用页面类型: <节选自模板,标明每页索引>
- 图片资产: 模板内全部图片随底座继承,无需单独引用;仅 assets/logo.<ext>(真LOGO)缺时插入,严禁重绘
## 【硬规则】
1. 保留原模板页面比例
2. 视觉以"复制模板页+替换文字/克隆母版"实现,不重新绘制风格
3. LOGO 只许母版继承或插入 assets/logo.<ext>,严禁用形状/文字重绘
4. 保留模板固定品牌元素(背景图/页脚/装饰)
5. 优先复用原页面版式,不新造
6. 每页只表达一个核心观点
7. 不编造资料中不存在的数据/案例/机构
8. 所有元素必须可继续编辑
9. 生成前先给建议页数与页面大纲(标明每页用模板第几页)
10. 完成后说明每页核心内容、所用模板页、需人工复核页
11. 【清除第三方水印】若模板带任何来源/广告水印,生成的公司 PPT 不得保留;复制的页带此类字样必须清除。
5. 自检 + 自测收敛(Step 4–5,自动)
- 逐项自检 Layer2 SKILL.md:比例 / LOGO原图 / 色值 / 中间页版式 / 内容真实 / 真克隆或真复制底座 / 可编辑 / 禁重绘 LOGO / 清第三方水印 — 缺项补齐。
- 生成 3 页样例:用
references/gen_sample.py(按 Step 3 策略)产出 样例-<主题>.pptx。
- 自动比对
references/verify_sample.py(判据:比例✓ / 页数=期望值(--expect)✓ / 页面实色⊆模板✓ / LOGO原图二进制✓ / 字体✓ / 版式同源✓ / 可编辑✓ / 残留占位符=0✓)。⚠️ 必须带 --expect <生成页数>,否则"删页失效却保留全页"会蒙混 ALL_PASS。
- 收敛循环(最多 3 轮):任一 ✗ → 定位根因 → 修正(换页/修替换逻辑/升级比对项)→ 重生成重比对;连续 2 轮零 ✗ 提前停。
6. 输出报告 + 自进化(Step 6,关键)
- 向用户输出提炼报告:Skill 路径 / 模板类型 / 策略 / 收敛轮数 / 判据全 ✓ / 遗留风险(字体缺失、页面库未覆盖类型、矢量LOGO等)。
- 自进化(必做):把本次提炼写成一条案例,追加到
examples/<模板名>-<类型>.md,格式:
## <模板名>(<日期>)
- 类型: 页面库型 / 母版克隆型 / 混合型
- 策略: <用了哪套>
- 关键事实: slide=N 版式=M 比例= 字体=
- 踩坑: <真实翻车点 + 怎么修>
- 结果: 收敛轮数 / 判据 / 遗留风险
- 可复用经验: <下次同类模板直接用的结论>
事例越多 → 分类越准、生成越接近原版。这是本技能"越用越准"的引擎。
大批量同家族模板(如 182 个第一PPT 模板):不要逐个建案例文件(会撑爆事例库、Agent 反而忽略)。
做法:① 跑 extract_template.py 批量抽令牌 → ② 按 classification.md 决策树自动分类聚类 →
③ 每类型挑代表验证收敛 → ④ 每类型写 1 条 结构化案例 + 一份 examples/全量清单.md(逐文件索引兜底)。
已沉淀: 第一PPT家族-通用特征.md / 国家电网-页面库型.md / 混合型-第一PPT.md / 母版克隆型-第一PPT.md / 全量清单.md。
7. 硬纪律(给执行 Agent)
- 模板文件必须落库为
assets/company-template.pptx,否则退化为弱路(凭文字重画, fidelity 靠运气)。
- LOGO / 图片只许文件引用,严禁文字/形状重绘(二进制无法被文字复现)。
- 模板为底座,不是参考——生成时打开它、复用它,不是从空白 Presentation 新建一套。
- 不自欺:遗留风险如实列,不宣称"零问题"。
1---2name: ppt3description: 把任意公司 .pptx 模板提炼为一个公司专属 PPT 模板 Skill(命名规范:〈公司名〉PPT模板制作助手〈序号〉, 如「电网公司PPT模板制作助手1」; 强路·可编辑·视觉一致)。触发:用户给了一个 .pptx 模板并希望"以后用这个模板风格批量生成 PPT"或"把这个模板做成可复用 Skill"。这是第1层元技能,产物是第2层公司专属 Skill。4---56# PPT模板提取术(第1层·元技能)78> 把任意公司 PPT 模板,提炼成一个**可复用的公司专属 Skill**。9> 第1层(本技能)= 模板→Skill 的**生成器**;第2层(产物)= 某公司的「〈公司名〉PPT模板制作助手〈序号〉」(如「电网公司PPT模板制作助手1」),用来批量出 PPT。10> 本技能内含**事例库**(`examples/`)。每成功提炼一次,就往里追加一条案例;事例越多,下次分类与生成越准。1112---1314## 0. 输入1516- 本 SKILL.md + `README.md`(给接收者看的门面) + `references/` 脚本 + `examples/` 事例库(随本技能自带)17- 用户的**公司模板 .pptx**(与本技能同目录或用户指定路径)18- 可选:用户补充说明(如"必须 16:9""清除某水印")1920⚠️ 模板是二进制,**无法塞进本文件**,必须作为单独文件随任务提供。2122---2324## 1. 阶段判定(自动)2526- 检测目标 Skill 目录(`~/.workbuddy/skills/<公司名>PPT模板制作助手<序号>` 或用户指定)是否已存在:27 - **已存在** → 走「校验增强」:重跑提取、比对差异、补事例、更新 SKILL.md。28 - **不存在** → 走「完整创建」。29- 能力自检(自动降级兜底):30 - 有 `python` + `python-pptx` → 走**自动提取**(代码精确读 XML,非肉眼意会)。31 - 无 `python-pptx` → 先执行 `pip install python-pptx`(或 `python -m pip install python-pptx`)补齐;仍装不上才降级。32 - 无 `python` → 降级为「分析 + 产出待办清单」,明确告知用户需补环境或人工补全令牌。33- **跨平台**: 下文命令里的 `python3` 在 Windows 上请用 `python`(脚本本身跨平台, 仅命令名不同)。3435---3637## 2. 提取设计令牌(Step 1,自动)3839运行 `references/extract_template.py <模板.pptx> <输出目录>`:4041- 页面比例(EMU → 比值)42- 主题色(Office clrScheme 12 色 hex)43- 字体(扫描 slide/版式/母版 run.font.name)44- 版式列表(slide_layouts 名称)45- 全部图片**不落盘**(随 `company-template.pptx` 底座继承即可);仅**自动判 LOGO**:46 - 排除铺满 >60% 页面的背景图(`is_bg`)47 - 在剩余图中取"离页面四角最近"者,优先级 母版 > 版式 > slide48 - 真 LOGO 存为 `assets/logo.<ext>`49- 产出 `assets/tokens.md`(机器可读令牌)5051读 `assets/tokens.md`,记录关键事实:**版式数量**与**slide 数量**的比值——这是分类的核心依据(见 Step 3)。5253---5455## 3. 模板类型分类 + 选生成策略(Step 2,核心)5657读 `references/classification.md` 决策树,结合 `assets/tokens.md` 判定类型,**选对应生成策略**:5859| 类型 | 判据 | 生成策略(写进 Layer2 SKILL.md) |60|---|---|---|61| **页面库型** | slide 多(≥10)且版式极少(≤3) | 复制模板页 + 替换文字(保留全部页作库,挑页删余) |62| **母版克隆型** | 版式丰富(≥5)且 slide 少 | 克隆母版 + 用版式新增页 |63| **混合型** | 介于两者之间 | 母版克隆为主,缺页时从现有 slide 复制补 |6465⚠️ **这一步决定成败**:分类错(如对页面库型误用母版克隆)会丢失大量既有设计, fidelity 暴跌。事例库(`examples/`)是分类的经验来源——抽前先扫一眼同类案例(大批量同家族模板, 先查 `examples/全量清单.md` 确认其已登记的类型与特征, 避免重复提炼)。6667---6869## 4. 落库底座 + 写 Layer2 SKILL.md(Step 3)70711. 复制模板为 `assets/company-template.pptx`(生成底座,**强路核心**)。722. **复制生成器进 Layer2(自包含,关键)**:把本技能 `references/gen_sample.py` 与 `references/verify_sample.py` 复制到 Layer2 的 `references/` 目录。这样 Layer2 自带"打开底座→挑页→替换文字→删余页"的执行代码与比对器,任何 Agent 用 Layer2 时**直接调用**,不必重新推导代码(避免弱路漂移)。733. 用下方「Layer2 SKILL.md 模板」填空:74 - 替换 `<公司/模板描述>`、`<触发场景>`、`<比例>`、`<主题色>`、`<LOGO 路径>`、`<字体>`、`<可用页面类型>`、`<生成策略段落>`。75 - **硬规则 11 条原样保留,不得删改**(尤其第 11 条清第三方水印)。76 - 把 `examples/` 中同类案例的"坑"同步进硬规则或备注。7778### Layer2 SKILL.md 模板(填空用)7980```81---82name: <公司>PPT模板制作助手83description: 用"<公司/模板描述>"公司 PPT 模板生成可编辑 PPTX。触发:<触发场景>类 PPT。84---8586# <公司>PPT模板制作助手8788## 生成底座(<生成策略名>)8990<生成策略段落:页面库法/母版克隆法/混合法,讲清"打开底座→挑页/用版式→替换文字→删余页">9192> 本 Skill 自带执行代码,**直接调用,勿重造**:93> `python3 references/gen_sample.py --tpl assets/company-template.pptx --out 产出.pptx --strategy <页面库法|母版克隆法> --pages <索引,逗号分隔>`94> ⚠️ `--pages` 语义因策略而异: **页面库法**=模板页(slide)索引; **母版克隆法**=版式(layout)索引(0=封面, 1=标题内容, 2=...)。填错会删错页或版式越界报错。95> 生成后用 `python3 references/verify_sample.py assets/company-template.pptx 产出.pptx --expect <页数>` 自检(页数断言防删除失效假通过)。9697## 设计令牌(从 assets/tokens.md 原样填入)98- 页面比例: <比例>99- 主题色: <hex>100- LOGO: assets/logo.<ext>(<位置/尺寸>;母版继承优先,缺时插此文件)101- 字体: <字体列表>(⚠️ 缺失字体回退系统字体,视觉可能微调)102- 可用页面类型: <节选自模板,标明每页索引>103- 图片资产: 模板内全部图片随底座继承,无需单独引用;仅 assets/logo.<ext>(真LOGO)缺时插入,严禁重绘104105## 【硬规则】1061. 保留原模板页面比例1072. 视觉以"复制模板页+替换文字/克隆母版"实现,不重新绘制风格1083. LOGO 只许母版继承或插入 assets/logo.<ext>,严禁用形状/文字重绘1094. 保留模板固定品牌元素(背景图/页脚/装饰)1105. 优先复用原页面版式,不新造1116. 每页只表达一个核心观点1127. 不编造资料中不存在的数据/案例/机构1138. 所有元素必须可继续编辑1149. 生成前先给建议页数与页面大纲(标明每页用模板第几页)11510. 完成后说明每页核心内容、所用模板页、需人工复核页11611. 【清除第三方水印】若模板带任何来源/广告水印,生成的公司 PPT 不得保留;复制的页带此类字样必须清除。117```118119---120121## 5. 自检 + 自测收敛(Step 4–5,自动)1221231. **逐项自检** Layer2 SKILL.md:比例 / LOGO原图 / 色值 / 中间页版式 / 内容真实 / 真克隆或真复制底座 / 可编辑 / 禁重绘 LOGO / 清第三方水印 — 缺项补齐。1242. **生成 3 页样例**:用 `references/gen_sample.py`(按 Step 3 策略)产出 `样例-<主题>.pptx`。1253. **自动比对** `references/verify_sample.py`(判据:比例✓ / **页数=期望值(--expect)**✓ / 页面实色⊆模板✓ / LOGO原图二进制✓ / 字体✓ / 版式同源✓ / 可编辑✓ / 残留占位符=0✓)。⚠️ 必须带 `--expect <生成页数>`,否则"删页失效却保留全页"会蒙混 ALL_PASS。1264. **收敛循环**(最多 3 轮):任一 ✗ → 定位根因 → 修正(换页/修替换逻辑/升级比对项)→ 重生成重比对;连续 2 轮零 ✗ 提前停。127128---129130## 6. 输出报告 + 自进化(Step 6,关键)1311321. 向用户输出**提炼报告**:Skill 路径 / 模板类型 / 策略 / 收敛轮数 / 判据全 ✓ / **遗留风险**(字体缺失、页面库未覆盖类型、矢量LOGO等)。1332. **自进化(必做)**:把本次提炼写成一条案例,追加到 `examples/<模板名>-<类型>.md`,格式:134135```136## <模板名>(<日期>)137- 类型: 页面库型 / 母版克隆型 / 混合型138- 策略: <用了哪套>139- 关键事实: slide=N 版式=M 比例= 字体=140- 踩坑: <真实翻车点 + 怎么修>141- 结果: 收敛轮数 / 判据 / 遗留风险142- 可复用经验: <下次同类模板直接用的结论>143```144145事例越多 → 分类越准、生成越接近原版。这是本技能"越用越准"的引擎。146147> **大批量同家族模板(如 182 个第一PPT 模板)**:不要逐个建案例文件(会撑爆事例库、Agent 反而忽略)。148> 做法:① 跑 `extract_template.py` 批量抽令牌 → ② 按 classification.md 决策树自动分类聚类 →149> ③ 每类型挑代表验证收敛 → ④ 每类型写 **1 条** 结构化案例 + 一份 `examples/全量清单.md`(逐文件索引兜底)。150> 已沉淀: `第一PPT家族-通用特征.md` / `国家电网-页面库型.md` / `混合型-第一PPT.md` / `母版克隆型-第一PPT.md` / `全量清单.md`。151152---153154## 7. 硬纪律(给执行 Agent)155156- 模板文件**必须落库**为 `assets/company-template.pptx`,否则退化为弱路(凭文字重画, fidelity 靠运气)。157- LOGO / 图片**只许文件引用,严禁文字/形状重绘**(二进制无法被文字复现)。158- 模板为底座,**不是参考**——生成时打开它、复用它,不是从空白 Presentation 新建一套。159- 不自欺:遗留风险如实列,不宣称"零问题"。