Professional PowerPoint production skill for Notrat / agent workflows
使用 Notrat 创建、改编和检查专业 PowerPoint 演示文稿。
支持 图片型 / 原生可编辑型 / 混合可编辑型,以及对象组合与进入 / 强调 / 退出 / 路径动画。
默认editable,并自觉编排对象动画(无需用户点名)。
元素逐组飞入,标题先入,卡片按阅读顺序依次出现。
背景为 AI 生成的视觉氛围层,前景文字和图形为可编辑对象,带有进入/强调动画。
💡 运行
node src/demo_build.js可生成本地 demo PPTX(需先npm install)。
Notrat PPT Studio 是一套面向 Agent 的 PowerPoint 生产规范与运行时。它把文章、报告、方案、数据、讲稿、品牌资料或既有 PPT,转换为结构清晰、视觉统一、可交付的演示文稿。
| 项目 | 说明 |
|---|---|
| 版本 | 1.0.1 |
| 入口契约 | [SKILL.md](./SKILL.md) |
| 命令网关 | python scripts/notrat-ppt.py <command> |
| 动画后端 | @bapunhansdah/pptxgenjs@1.1.3 + OOXML 后处理 |
| 出品 | notrat.cn |
适用场景:路演、汇报、提案、培训、发布会、产品介绍、从大纲/文章/数据生成可编辑 PPTX、全页视觉大片、对象动画与语义组合、PPTX 结构校验。
- 叙事优先:先大纲与页角色,再视觉与动画
- 三模式生产:
editable(默认)/hybrid/image - 自觉对象动画:用户未禁止时,每页主动编排约 3–7 步时间线
- 语义组合:卡片、步骤、标签等按意义成组再动画
- 统一命令网关:准备、调度、装配、动画后处理、校验一条命令面
- 样式模板库:
templates/styles/<style-id>/12 种可复用视觉系统 - Schema 契约:manifest / job / style 机器可读
- Worker 角色提示:
prompts/workers/约束子任务输出
| 优先级 | 条件 | 模式 | 动画 |
|---|---|---|---|
| 1 | 用户明确要全页视觉大片、不要求可编辑 | image |
仅可选翻页;交付时写明无对象动画 |
| 2 | 用户要氛围背景 + 可改文字 | hybrid |
必须前景对象动画 |
| 3 | 其他所有常规 PPT 需求(默认) | editable |
必须对象动画 |
⚠️ 重要:必须使用@bapunhansdah/pptxgenjs@1.1.3(动画 fork),不能用标准pptxgenjs。标准版会忽略animation字段,导致所有页面变成静态 PPT。
- 每页完整 16:9 位图,适合概念提案、品牌展示、强视觉叙事
- 不能承载对象进入/强调/退出/路径
- 装配命令:
assemble
- 标题、正文、形状、表格、图表为原生对象,文本不栅格化
- 对象动画主路径
- 位图仅作背景/氛围,关键文案与数据在前景原生对象上
- 动画只加在前景;背景保持静态
python scripts/notrat-ppt.py <command> [args]| 命令 | 说明 | 路径 |
|---|---|---|
runtime |
环境检测、路径初始化、远程图像配置 | core/runtime.py |
styles validate |
校验样式模板 | core/catalog.py |
image |
图像生成 API 调用 | media/generator.py |
chroma |
色彩处理与适配 | media/chroma.py |
prepare |
从大纲生成逐页任务 | pipeline/prepare.py |
dispatch |
调度逐页任务 | pipeline/record_dispatch.py |
result |
记录任务结果 | pipeline/record_result.py |
blocker |
记录阻塞项 | pipeline/record_blocker.py |
status |
查询项目状态 | pipeline/status.py |
assemble |
组装图片型 PPT(无对象动画) | pipeline/assembler.py |
animate |
OOXML 动画后处理(默认交付路径) | animation/postprocess.py |
validate |
动画引用与结构校验(默认交付路径) | animation/validate.py |
animation-lab |
对象动画能力实验台(Node.js) | animation/capability_lab.js |
editable/hybrid → animate → validate → 交付
image → prepare → dispatch → result → assemble → 交付
<deck_project>/
├── deck.manifest.json # 项目清单
├── content/ # 源材料 & 大纲 (outline.json)
├── asset/ # 品牌素材 (logo, brand-colors)
├── job/ # 逐页任务 (image 模式)
├── work/ # 工作区 (candidates/, slides/)
├── state/ # 运行状态 (run.json)
└── output/ # 最终 PPTX / PDF
对象动画使用 @bapunhansdah/pptxgenjs@1.1.3 的 animation 字段声明进入/强调/退出效果。语义组合通过 layout.js 的 groupAnchor / groupMember / afterGroup API 实现,多段序列与真实组合走 notrat-ppt.py animate 进行 OOXML 后处理。
| 动画类型 | 类别 | 说明 |
|---|---|---|
fadein |
进入 | 淡入 |
floatin |
进入 | 上浮 + 淡入 |
flyin |
进入 | 方向飞入 |
wipe |
进入 | 擦除显现 |
zoom |
进入/强调 | 缩放 |
pulse |
强调 | 脉冲 |
fadeout |
退出 | 淡出 |
flyout |
退出 | 飞出 |
| 触发器 | 行为 |
|---|---|
onClick |
点击后出现(组锚点) |
withPrevious |
与上一元素同时出现 |
afterPrevious |
上一元素完成后顺序出现 |
templates/styles/ 下有 12 种可复用样式包:
| ID | 名称 | 适用场景 |
|---|---|---|
clean-professional |
简洁专业 | 企业、报告、提案 |
strategy-consulting |
战略咨询 | 路演、战略 |
data-dashboard |
数据仪表盘 | 分析、指标 |
education |
教育 | 培训、课程 |
editorial-creative |
编辑创意 | 品牌、媒体 |
research-defense |
研究答辩 | 学术、论文 |
civic-red |
政务红 | 政府、公共 |
retro-flat |
复古扁平 | 创意、休闲 |
warm-craft |
暖色手作 | 手工、匠心 |
whiteboard |
白板 | 研讨、工作坊 |
handdrawn-technical |
手绘技术 | 工程、图示 |
eink-editorial |
电子墨水 | 阅读、长文 |
notrat-ppt-studio/
├── SKILL.md # Agent 权威工作流契约
├── skill-card.md # 发布卡片摘要
├── README.md # 本文件
├── package.json # Node 依赖(pptxgenjs fork)
├── requirements.txt # Python 依赖
├── THIRD_PARTY_NOTICES.md # 第三方声明
├── _meta.json # 技能元数据
├── docs/ # 详细参考文档(13 篇)
├── scripts/
│ └── notrat-ppt.py # 统一命令网关
├── src/
│ ├── notrat_ppt_studio/ # Python 核心
│ │ ├── core/ # 运行时、状态、样式目录
│ │ ├── pipeline/ # 准备、调度、装配、状态
│ │ ├── media/ # 图像生成与 provider
│ │ └── animation/ # 组合、动画后处理、校验
│ ├── demo_build.js # 参考实现(8 页 editable demo)
│ └── layout.js # 布局引擎 + 组合动画 API
├── prompts/workers/ # Worker 角色提示
├── templates/styles/ # 12 种样式包
├── schemas/ # JSON Schema
├── tests/ # 测试
└── frontend/ # 产品网站
├── index.html
└── assets/ # GIF 演示 + Logo
- Python 3.10+(建议 3.12)
- Node.js 18+(用于 pptxgenjs 动画能力与
animation-lab) - 可选:图像生成 API Key(仅 image / hybrid 背景链路)
pip install -r requirements.txt
npm installpython scripts/notrat-ppt.py --help
python scripts/notrat-ppt.py styles validate
npm test| Script | 说明 |
|---|---|
npm run cli |
调用 Python 命令网关 |
npm run styles:validate |
校验样式模板 |
npm run animation:lab |
动画能力实验台 |
npm test |
Python unittest |
| 文档 | 内容 |
|---|---|
| docs/architecture.md | 系统分层、模块职责、数据流 |
| docs/backend-selection.md | 后端选择决策树、pptxgenjs fork vs python-pptx |
| docs/cli-api-fallback.md | CLI/API 降级路径、图像生成备用命令 |
| docs/editable-hybrid-layout.md | 网格系统、布局函数、Hybrid 规则 |
| docs/image-model-configuration.md | 图像模型配置(API Key、Base URL、Model) |
| docs/migration.md | 架构迁移映射表 |
| docs/object-animation-and-grouping.md | 动画类型、组合 API、OOXML 后处理 |
| docs/outline-style-and-sample.md | 大纲格式、页面角色、动画意图写法 |
| docs/project-assembly-and-reporting.md | 项目目录、manifest、交付报告 |
| docs/slide-generation-and-subagents.md | Worker 体系、并行与顺序、状态追踪 |
| docs/style-library.md | 样式目录结构、style.json 字段、12 种样式 |
| docs/user-supplied-assets.md | 用户素材处理(Logo、品牌色、字体) |
| docs/workflow-gates-and-progress.md | 7 步工作流、检查清单、状态机 |
- 远程图像服务可能收到提示词与经批准的输入素材;敏感数据请先脱敏
- 生成项目会持久化 prompts、图片、状态与输出文件
- 高级动画兼容性必须在目标 PowerPoint / WPS 版本中实机验证
- 本仓库不承诺跨 PowerPoint、WPS、LibreOffice 完全一致播放
- 版权所有: notrat.cn
- 许可: MIT License。详见 LICENSE
- 部分组件改编自
codex-ppt(MIT-0);动画集成@bapunhansdah/pptxgenjs@1.1.3(MIT)。详见 THIRD_PARTY_NOTICES.md
默认
editable+ 自觉对象动画;必须用@bapunhansdah/pptxgenjs@1.1.3fork,否则 animation 字段会被静默丢弃。
© notrat.cn · v1.0.1


