Auto PPT
Overview
本技能将「做一份 PPT」拆解为四步流水线:确定风格来源 → 提炼风格规范 → 生成大纲并确认 → 生成 .pptx 交付。支持三种风格来源:技能模板库(assets/templates/)、用户临时提供的 .pptx 模板或截图、默认商务风格。最终交付可在 Office/WPS 中编辑的 .pptx 文件。
交互流程(第一步,必做)
用户提出做 PPT 需求后,先主动询问、再动手。用 AskUserQuestion 一次性收集两类信息:
1. 风格确认(必问)
向用户提问「本次 PPT 使用什么风格?」,提供两个选项:
- 选项一:使用推荐模板风格(推荐) — 从模板库推荐最匹配的模板。当前模板库:
入职第一课·青绿庄重风(id:induction-first-lesson):青绿色主基调(主色 #0E5D54、辅色 #328B79,红 #D22344 / 橙 #FFAC56 点缀),庄重校园/党政宣讲风,适合学校宣讲、入职培训、专题汇报- 用户选中后按
references/template-guide.md的「读取模板的流程」加载对应style.json。
- 选项二:重新制定风格 — 告知用户需要提供风格来源,二选一:
- 上传一份 .pptx 模板文件(用
scripts/extract_pptx_theme.py提取主题色与字体) - 提供 PPT 截图/图片(按
references/style-extraction.md提炼风格规范)
- 上传一份 .pptx 模板文件(用
若用户对选项一的推荐模板不满意但未提供新素材,回到选项二继续引导;不得在未确认风格的情况下擅自生成。
2. 内容大纲(必问)
同时询问四要素:主题、受众、页数(默认 10 页左右)、内容素材(用户提供材料 / 需要自行组织)。用户后续补充素材时,先产出逐页大纲:每页一行,含页码、页面类型(封面/目录/章节页/内容页/结尾页)、标题、3–5 条要点或版式说明(如"此处放数据图表:Q1–Q4 营收对比"),展示给用户确认。用户给了完整素材且明确说"直接做"时可跳过大纲确认。
风格来源判定
按以下优先级确定本次 PPT 的风格(与交互流程衔接):
- 用户在选项一中选中模板库模板:读
assets/templates/index.json匹配,加载对应style.json。 - 选项二收到截图:用 Read 逐张读图,按
references/style-extraction.md提炼风格规范。 - 选项二收到 .pptx 模板文件:运行
scripts/extract_pptx_theme.py <文件>提取主题色与字体;同时统计幻灯片 XML 中srgbClr出现频次获取实际用色(主题色可能是默认 Office 配色,不代表真实风格)。 - 两种素材都没有:再次引导用户提供,或经用户同意后采用默认商务风格(主色深蓝 #1F4E79、强调色 #2E9BD6、背景白色 #FFFFFF、标题深灰 #333333、正文 #444444、微软雅黑),并向用户说明所用默认风格。
风格规范必须落到具体值:hex 色值、字体名、字号比例、版式描述。禁止模糊表述("蓝色系""简约风")。
生成 .pptx(第二步)
- 调用 Skill 工具加载 tencent-pptx 技能,把大纲 + 风格规范作为生成依据传入;若该技能支持参考 pptx/图片,将模板文件或截图一并传入。
- 生成要求:
- 严格套用风格规范中的配色、字体、版式;每页版式按大纲的页面类型选择。
- 内容页信息密度适中:每页一个核心观点,要点不超过 5 条,每条不超过 2 行。
- 数据类内容优先用图表而非文字罗列。
- 中文场景遵循中国配色习惯与简体中文文案。
- 生成完成后必须调用 present_files 展示最终 .pptx 文件。
模板入库(按需触发)
用户说「把这份 PPT/这套截图存为模板 XX」或「预置这份模板」时,按 references/template-guide.md 的登记流程:复制文件到 assets/templates/<id>/、提取主题色与实际用色(主题色为默认 Office 配色时以页面实际用色为准)、提炼风格写入 style.json、更新 index.json。入库后在下次风格确认时作为可选推荐项。
资源索引
scripts/extract_pptx_theme.py— 从 .pptx 提取主题色/字体/版式名(仅标准库,--json输出 JSON)references/style-extraction.md— 从截图提炼风格规范的完整流程与输出格式references/template-guide.md— 模板库目录结构、index.json 格式、登记与读取流程assets/templates/— 模板库(index.json为登记表)
微信扫一扫