| name | ppt_generator |
| description | PPT 生成技能。当用户给出一段内容描述,要求"生成一页 PPT / 做一张幻灯片 / 生成精美 PPT"
时触发。流程:先把内容整理成 Markdown,再**根据该 Markdown 的实际结构每次生成一个
贴合内容的 Python 脚本**(import ppt_kit 复用绘图原语),执行该脚本产出 .pptx。
不套用固定模板,布局随内容而变。
|
PPT 生成技能 (ppt_generator)
给定一段内容描述,生成一页精美 PPT。
核心思想:输入内容千变万化,固定模板无法适配所有场景。因此本技能不提供"固定
spec + 固定布局",而是要求 Agent:
- 先把用户内容转成 Markdown(
*.md);
- 根据该 Markdown 的实际结构,每次生成一个全新的、贴合内容的 Python 脚本;
- 执行该脚本,产出
.pptx 并返回路径。
布局(表格 / 多栏要点 / 流程时间线 / 图文混排……)由内容的实际结构决定,不要强行
套用某一种固定排版。
触发场景
- 用户说:"根据下面描述的内容,帮我生成一页精美的 PPT"
- 用户说:"把这段话做成一张幻灯片 / 做一页 PPT"
- 用户提供一段文字 / 表格 / 列表,要求可视化呈现为单页 PPT
关键文件
本技能目录下提供:
| 文件 | 用途 |
|---|
ppt_kit.py | 可复用绘图工具箱:主题配色 + 原语(new_presentation / add_header / add_divider / add_card / add_bullets / add_table / add_bottom_bar / add_quote / add_text / add_rect / save)。生成的脚本只需 import ppt_kit 复用,不必重写绘图代码。 |
reference_gen_ppt.py | 参考实现:演示"读 Markdown → 生成贴合内容的脚本 → 产 PPT"的标准写法(表格型示例)。Agent 生成自己的脚本时应参考其风格,但布局要随自己内容而变。 |
reference_content.md | 参考输入 Markdown(ETCSV 模型说明,含表格 + 结论)。 |
调用 skill_tool(skill_name="ppt_generator") 可获取本技能目录的绝对路径
(返回字段 skill_directory)。ppt_kit.py 即在该目录下。
ppt_kit 提供的原语(速查)
from ppt_kit import (
new_presentation,
set_bg, add_rect,
add_text, add_bullets,
add_header,
add_divider,
add_card,
add_table,
add_bottom_bar,
add_quote,
save,
Rect, TextStyle, BulletStyle, CardStyle, TableStyle,
COLOR_PRIMARY, COLOR_ACCENT, COLOR_WARN, COLOR_TEXT, COLOR_LIGHT,
COLOR_BG, COLOR_WHITE, FONT_CN,
)
几何参数统一用 Rect(left, top, width, height) 封装;样式参数用对应 *Style
dataclass 封装(均可选,有合理默认值)。accent 取值:warn(橙) / primary(蓝)
/ accent(绿);不同元素用不同色区分。
执行流程
1. 内容 → Markdown
把用户的内容描述整理成结构清晰的 Markdown,写入输出目录,例如
<output>/content.md(用 fs.writeFile)。Markdown 元素约定:
# 标题 → 幻灯片主标题
> 引用 → 副标题 / 一句话定位
- 要点 或 1. 要点 → 列表(多栏卡片 / 项目符号)
| 表头 | … | → 表格
## 结论 后的段落 → 底部金句
整理 Markdown 时应忠实保留用户的层级与并列结构,不要为了凑版式而拆散或合并。
一页装不下时主动精炼,而不是堆砌。
2. 按 Markdown 结构生成 Python 脚本
阅读上一步的 Markdown,根据其主结构选择布局,生成一个全新的脚本
(例如 <output>/gen_ppt.py,用 fs.writeFile 写入)。脚本骨架:
import sys, os, logging
SKILL_DIR = r"<skill 目录绝对路径>"
sys.path.append(SKILL_DIR)
from ppt_kit import (new_presentation, add_header, add_divider, save,
add_card, add_table, add_quote, Rect, CardStyle, TableStyle, ...)
from pptx.util import Inches
logging.basicConfig(level=logging.INFO, format="%(message)s")
prs, slide = new_presentation()
add_header(slide, "<主标题>", "<副标题>", badge="DeepAgent · 动态生成 PPT")
add_divider(slide)
add_card(slide, Rect(Inches(0.6), Inches(1.65), Inches(3.9), Inches(4.5)),
"栏标题1", ["要点1","要点2","要点3"], CardStyle(accent="warn"))
add_card(slide, Rect(Inches(4.7), Inches(1.65), Inches(3.9), Inches(4.5)),
"栏标题2", ["..."], CardStyle(accent="primary"))
add_card(slide, Rect(Inches(8.8), Inches(1.65), Inches(3.9), Inches(4.5)),
"栏标题3", ["..."], CardStyle(accent="accent"))
add_quote(slide, )
save(prs, )
logging.info(, )
reference_gen_ppt.py 是布局 (B) 的完整可运行范例——读它的写法,但不要照抄布局:
你的内容若以分栏为主,就写 (A);以流程为主,就写 (C)。布局必须贴合你的 Markdown。
3. 执行脚本生成 PPT
用 code.executeCode(language="python") 执行上一步生成的 gen_ppt.py。
ppt_kit 首次 import 时会自动 pip install python-pptx;若自动安装失败
(无网络/无 pip),改用 shell.executeCmd 执行
python -m pip install python-pptx 后重试。
4. 确认产物并返回
- 用
fs.listFiles 确认 .pptx 已生成且非空。
- 向用户返回 .pptx 绝对路径,并说明采用了哪种布局、内容如何组织。
注意事项
- 每次都要根据内容生成贴合的脚本,不要套用固定模板/spec。 这是本技能与"固定
spec"方式的根本区别,也是它能覆盖各种场景的关键。
- 一页 16:9(13.333 × 7.5 英寸);文字不宜过多,超长内容主动精炼。
- 所有文件写到输出目录(系统提示词给出),不要写到技能目录。
- 中文默认
Microsoft YaHei(ppt_kit 已设)。
- 必须产出
.pptx 文件并返回路径,不要只输出文字描述。