Export PPTX
Screenshot-based PPTX export — each <section> inside <deck-stage> becomes one slide (1920×1080 image + optional speaker notes).
Preflight
Bash(which node)— if missing, tell user to install Node 20+- Check
package.jsonhaspptxgenjs+puppeteer— if not, run:
(or tell user to runBash(npm install -D pptxgenjs puppeteer)/doctorfirst)
Steps
Resolve paths:
$0= deck HTML (required)$1= output (default: basename +.pptx)
Run the export script:
Bash(node scripts/export-pptx.mjs "<input>" "<output>")Report size + path.
Script dependencies
scripts/export-pptx.mjs must exist. If missing, create it (see template in spec §4.5 or ask user to run /doctor).
What the script does
- Launches headless Chromium (puppeteer)
- Loads the deck HTML at 1920×1080
- Reads
<deck-stage>.totalSlides - For each slide:
goToSlide(i), setnoscale,page.screenshotat clip 0,0,1920,1080 - Reads
#speaker-notesJSON (if present) and attaches per-slide notes - Builds
.pptxwithpptxgenjs(16:9 layout, one PNG-background slide each)
Notes
- Images can be large — 5 MB per slide at 1920×1080 is normal
- For smaller files, pass
--jpeg 0.8to the script (compress to JPEG at 80% quality) - Not editable in PowerPoint — each slide is a raster image. For native-editable export, skill not supported in v3.