Turn a topic/content into an 'image-based PPT': design → generate images → composite. Each page is an image generated by imagegen. Image generation must be used; you cannot draw via SVG; you must call an image generation model.
内容 ─▶ A2 设计大纲(outline.json) ─▶ A3 每页提示词 ─▶ A4 GPT imagegen 出图 ─▶ A5 合成图片型 .pptx
Runtime and image backend (read first)
How image generation is invoked varies by runtime;before starting, read references/runtime-notes.md. Core conventions:
- Images must always use a raster image generation backend(Codex must call the built-in imagegen; other runtimes use their native image generation tools).Prohibitedto use SVG/HTML/Canvas/code drawing to fake images.
- Prohibited to use code to add/overlay/modify text on an already-generated bitmap. It's fine if the text is wrong; after converting to an editable pptx later, manual modification is supported.
- Images produced by Codex's built-in tool are by default in
$CODEX_HOME/generated_images/,Be sure to copy them to this task's output directoryafter use, and keep the original images in the default directory. - Stage A4 must write
imagegen-manifest.json, recording page by page the model-generated source image and the copied slide path; if there is no manifest or any page is missinggenerated_source, this skill execution fails.
imagegen hard gate
In this skill, 'generate an image' only means calling an image generation model, not drawing a PNG with code.
The following methods are prohibited for generating full-page slide images:
- Python/PIL, SVG, HTML, Canvas, matplotlib, PowerPoint shapes, screenshot rendering.
- First generate an editable PPTX, then export it as images.
- Use code to draw the page skeleton, charts, icons, and text and save them as a PNG.
What code is allowed to do is limited to:
- Write
outline.json、prompts/NN-*.md、imagegen-manifest.json、deck.json。 - From
$CODEX_HOME/generated_images/<thread-id>/...pngcopy already-generated images toslides/。 - Crop/scale the entire already-generated image to unify the aspect ratio (must not add text or redraw partial content).
- Composite the image-based PPTX, generate previews, and do QA checks.
If imagegen is unavailable, you must stop and explain the blocking reason; you cannot fall back to drawing with code.
Global iron rules
- 🔴 Never produce placeholder images: what this skill produces arefinished slide images containing all real text (verbatim), not empty templates. The [page text] in the image generation prompt must be filled with real text;
outline.json'svisual_generation_prompt(describes only the visuals)is prohibited from being generated as an image separately, it must be merged with all the text before generating (see the iron rule at the top of the image-prompt-guide). The appearance of lorem/placeholder boxes/textless cards is judged a failure; revise the prompt and regenerate. - Zero fabricated data: use entirely the data/values/proper names provided by the user. If there is little data, make the content richer (real structured breakdown) + large font size/center-focused layout,neverfabricate or fill in false content.
- Language follows the user: Q&A uses the user's language; text within the slides uses the content's language (default Chinese).
- Use green sparingly: Avoid large areas of pure green as much as possible (the downstream GordenImage2PPTX default green-screen cutout will conflict).
- Clean footer: Do not add page numbers/logo/watermark (unless the user requests it).
Default style and complexity
Default = extremely high information density, complex layout, modular grid, one non-repeating high-level framework per page(house shape/Möbius strip/Bento box/concentric radar/multi-layer architecture/fishbone/funnel/3D staircase, etc.).Simple = unacceptable. For the complete prompt system, mandatory complexity checklist, style library, chart-form catalog, and verbatim rules, see references/image-prompt-guide.md。
- ⭐ Content first(the easiest pitfall): "the layout is too simple" is almost always becauseeach page's content is too thin。Prepare thick content first, then generate the image: each page has ≥4 parallel modules, each module has a title + 2~3 key points + 1 extra-large metric, plus a lead-in (keyword highlighted) + bottom banner (≈20+ information points/page). See image-prompt-guide §0.
- No repeats per page + unified color scheme: choose one per pagedifferentcomplex framework; throughout the deckuse one unified color scheme(if there is a reference image, extract its color scheme). See §1.7, §4.
- Luxurious ≠ gaudy: clarity always comes first; avoid excessive glow/3D dramatization that makes it flashy and hard to read; "clear tech" is the safe default (light background + fine grid + flat modules + restrained emphasis + high density). See §1.7, §5.
- Layout reference gallery
参考图/: before generating the image, pick reference images with similar structures and write thelayout skeletoninto the prompt (it can also be passed to the backend as a reference); you can learn its layout and stylistic feel, but do not copy its text/brand ( §1.6). - Aspect ratio: follow the user. Default 16:9; if the user wants 3:2 (or the backend natively does 3:2 and accepts it), directly output 3:2, keep the whole set consistent, and do not crop. See runtime-notes §5.
Workflow (check off item by item)
- [ ] A1 确认:风格 / 受众 / 页数 / 语言(除非用户说"直接生成/不用确认")
- [ ] A2 大纲(outline.json):解构内容 → 每页指派不重复的复杂框架、统一配色、写厚 detailed_content(见 image-prompt-guide §7 / §1.7)
- [ ] A3 每页提示词:把 outline 落地成 self-contained 提示词(含【全部真实文字 verbatim】),存 prompts/NN-*.md
- [ ] A4 出图:解析后端 → 逐页调用 imagegen 出图(每页含全部真实文字,绝不占位符)→ 复制到输出目录 → 写 imagegen-manifest.json
- [ ] A5 合成:compose_pptx.py 把每页图片做成全幅图片型 .pptx
Key points:
- Page count: if the user specifies it, use that; if not, decide based on the amount of content (generally 11–20 pages, with a cover + ending required).
- A3 prompt self-contained: colors (hex), layout,all text, chart form, and font style are all hard-coded, making it reproducible and easy to regenerate a single page.
- A4: first confirm that all
prompts/NN-*.mdare in place before starting; each page must have one real imagegen call; for failures/typos, retry only that page; when copying the source image, keep the$CODEX_HOME/generated_images/...original image. - imagegen-manifest.json: must record page by page
slide、prompt_file、generated_source、copied_to、backend. This is the acceptance evidence for stage 1. - A5: generate
deck.json(each slide has onlybackgroundpointing to that page's PNG), run:
python3 scripts/compose_pptx.py deck.json out/<topic>-image-deck.pptx
Output directory structure
<topic-slug>/
├── outline.json # A2 设计大纲(逐页结构化)
├── imagegen-manifest.json # A4 每页 imagegen 生成证据
├── prompts/NN-*.md # A3 每页出图提示词(可复现)
├── slides/NN-*.png # A4 生成的每页图片
├── deck.json # A5 合成清单(每页 background)
└── out/<topic>-image-deck.pptx
Scripts and dependencies
| Script | What it does |
|---|---|
scripts/compose_pptx.py |
Compose each page's image into a full-slide image-based .pptx according to deck.json (--preview-dir can produce a preview) |
- Dependencies:
python3+python-pptx、Pillow(if missing,pip3 install python-pptx pillow)。 - Next step: if you need an editable pptx → use GordenImage2PPTX; if you want a one-click full workflow → use GordenSuperPPTSkill。