把任意资料转换成一套图片驱动的 16:9 PowerPoint,并通过可复用的风格模板保证整套 PPT 的视觉一致性。
这个仓库同时包含两层能力:
skill层:告诉模型如何把“任意输入材料”变成一套完整 decktool层:提供生成单页图片和组装.pptx的脚本
它适合这种场景:
- 把文章、网页、项目、研究笔记、汇报材料整理成 PPT
- 希望先统一叙事,再统一风格
- 接受最终 PPT 是“整页图片式幻灯片”,而不是完全可编辑的原生元素
这套 skill 现在明确把“流程”和“风格”拆开了:
- 流程定义在
SKILL.md - 风格系统定义在
references/style-system.md - 预置风格在
references/styles/ - 新风格模板写法定义在
references/create-style-template.md
核心机制是:
- 先读取源材料,理解内容和受众
- 再选择一个风格模板
- 从风格模板里提炼出一个
style_contract - 用
style_contract约束整套 deck 的页数倾向、字数密度、图像/图表比例、版式原语、每类页面的表现方式 - 按页生成 16:9 slide image
- 最后把这些图片确定性地组装成
.pptx
也就是说,风格模板不是一句“科技风”“高级感”这种模糊形容词,而是一份最小完备的 PPT 模板说明书。
minimal-tech:简洁科技风,偏结构化、偏图解、适合技术和产品叙事apple-keynote-like:极简发布会风,少字、大标题、强视觉主物体cinematic-photo-impact:大图叙事风,偏实景照片、地图、证据面板和冲击力red-patriotic-education:红色教育风格,默认全中文,适合红课、党史、革命历史、纪念主题和爱国教育类 PPT
SKILL.md:主流程说明,定义如何规划 deck、拼装 prompt、控制生成顺序references/style-system.md:定义风格模板的职责和运行方式references/create-style-template.md:定义如何创建新的风格模板references/styles/*.md:可直接复用的风格模板scripts/generate_image_via_responses.mjs:通过 Responses API 保存生成图片scripts/render_slide_via_gpt_image.sh:生成单页 slide image 的包装脚本scripts/render_slides_parallel.py:在 prompt 全部准备好后并发渲染多页图片scripts/build_pptx_from_images.py:把有序图片组装成 16:9.pptx
- Node.js 18+
- Python 3.10+
python-pptxOPENAI_API_KEYRESPONSES_URL
安装 Python 依赖:
python3 -m pip install -r requirements.txt准备环境变量:
cp .env.example .env
set -a
source .env
set +a如果你是在 Codex 里调用它,推荐的使用方式是:
-
给出源材料 比如一篇文章、一个 repo、一个网页、一些笔记,或者混合材料。
-
指定风格 你可以直接说:
用 minimal-tech 做一套 8 页 PPT
也可以描述需求:
做成简洁科技风,字不要太多,图解要多
还可以要求创建新模板:
先按“高端咨询风”给我新建一个 style,再基于这个 style 出 PPT
-
让模型按 skill 流程执行 它会先读
SKILL.md,再读对应 style 文件,然后再规划和生成。 -
检查 slide images 如果某页不够好,优先重生成单页,而不是手工改 PPT。
-
组装最终 PPT 确认所有图片没问题后,再统一打包成
.pptx。
如果 prompt 已经全部写完,生图阶段可以直接并行。
推荐做法是准备一个 manifest 文件,然后用 scripts/render_slides_parallel.py 按 --jobs 控制并发数。
默认并发数是 4。如果遇到接口限流,再把并发调低。
生成单页图片:
scripts/render_slide_via_gpt_image.sh \
outputs/slide-images \
slide-01 \
"Create a polished 16:9 presentation slide image. Deck style profile: 'minimal-tech'. Slide role: 'title'. Slide title: 'Embodied Multimodality'. Core message: 'A practical path from multimodal perception to embodied agents'. Layout: large headline with restrained technical visual. Visual composition: minimal bright technology layout with structured spacing. Text policy for this style: medium-low density, balanced detail. Role treatment: strong title with one quiet technical motif. Include only this slide text: title and one short subtitle. Style prompt block: bright restrained technology aesthetic, cool grayscale palette, cyan accent, generous whitespace, precise geometry. Avoid: photo collage, decorative clutter, poster-like overload."把一组图片组装成 .pptx:
python3 scripts/build_pptx_from_images.py \
--images-dir outputs/slide-images \
--pattern 'slide-*.png' \
--output outputs/deck.pptx并行生成多页图片:
先准备一个 slides.json:
[
{
"basename": "slide-01",
"prompt_file": "prompts/slide-01.txt"
},
{
"basename": "slide-02",
"prompt_file": "prompts/slide-02.txt"
}
]然后执行:
python3 scripts/render_slides_parallel.py \
--manifest slides.json \
--output-dir outputs/slide-imagesmanifest 支持两种写法:
prompt:直接内联 prompt 文本prompt_file:从单独的.txt/.md文件读取 prompt
补充:
manifest可以是 JSON 数组,也可以是 JSONL- 可以用
--retries 1或--retries 2自动重试失败页 - 可以用
--skip-existing跳过已经生成过的 slide - 如果想覆盖默认值,再显式传
--jobs N
新增风格时,不要只写“高级、现代、简洁”这种形容词。
一个合格的风格模板至少要明确:
- 字多还是字少
- 细节层级高还是低
- 偏照片、偏图解、偏大字标题,还是平衡型
- 常用版式有哪些
- title / section / explainer / comparison / case study / conclusion 分别怎么长
- 必须避免什么
直接参考:
references/create-style-template.mdreferences/styles/minimal-tech.mdreferences/styles/apple-keynote-like.mdreferences/styles/cinematic-photo-impact.mdreferences/styles/red-patriotic-education.md
.
├── README.md
├── README.en.md
├── requirements.txt
├── .env.example
├── SKILL.md
├── references/
│ ├── create-style-template.md
│ ├── style-system.md
│ └── styles/
│ ├── apple-keynote-like.md
│ ├── cinematic-photo-impact.md
│ ├── minimal-tech.md
│ └── red-patriotic-education.md
└── scripts/
├── build_pptx_from_images.py
├── generate_image_via_responses.mjs
├── render_slides_parallel.py
└── render_slide_via_gpt_image.sh
- 最终 deck 是图片式幻灯片,不是完整原生可编辑版式
OUTER_MODEL默认是gpt-5.4IMAGE_MODEL默认是gpt-image-2- 风格一致性来自
references/styles/下的模板,而不是主流程里写死的一段审美描述