Html2pptx
Convert HTML/WebDeck slide presentations into editable PowerPoint PPTX files using a browser-rendered DOM-to-SVG pipeline and native DrawingML conversion. Use when Codex needs to export .html/.htm slide decks, WebDeck documents, ECharts-heavy decks, or DOM/CSS presentations to editable .pptx while preserving text, shapes, SVG primitives, and chart vectors better than screenshot-based export.From its SKILL.md
npx -y skills add GX-Alex/html2pptx --skill html2pptxAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 4 commands, including `python scripts/html2pptx.py input.html -o output.pptx` and 3 more.
SKILL.md
3.4 KB, 710 tokens by cl100k_base, as published. Nobody here has run it
HTML2PPTX
Use this skill to convert browser-rendered HTML slide decks into editable PPTX. The bundled pipeline is:
html_dom_to_editable_svg.js: launch Chromium, render the deck, extract DOM/CSS/SVG/ECharts into editable SVG primitives.svg_to_pptx: convert SVG primitives to native PowerPoint DrawingML shapes.html2pptx.py: wrapper CLI that runs both steps and validates the generated PPTX structure.
Quick Start
Run the wrapper script from this skill folder:
python scripts/html2pptx.py input.html -o output.pptx
If Chromium is not discoverable or browser launch fails, pass an executable:
python scripts/html2pptx.py input.html -o output.pptx \
--chrome "/path/to/Google Chrome or Chromium"
--chrome-path is also accepted as an alias. On Windows, prefer:
python scripts/html2pptx.py examples/basic-deck.html -o basic-deck.pptx \
--chrome-path "C:/Program Files/Google/Chrome/Application/chrome.exe"
Keep intermediate SVG files for debugging:
python scripts/html2pptx.py input.html -o output.pptx \
--workdir /tmp/html2pptx-debug --keep-workdir
Recommended Workflow
- Confirm the input is an HTML slide deck, usually containing
.deck-slide,.deck-stage,.deck-page, or similar fixed-size slide containers. Plain single-page HTML is also supported and will be wrapped as one 1280x720 slide automatically. - Run
scripts/html2pptx.py. - Inspect the command summary:
pictures=0is ideal for fully editable output.- A large
shapescount means the deck was converted as native shapes/text.
- If specific pages look wrong, rerun with
--keep-workdirand inspectsvg_output/NN_slide.svg. - For malformed source decks, read
references/troubleshooting.md.
Output Expectations
The generated PPTX is editable, not pixel-perfect. It preserves:
- Text as editable text boxes where possible.
- Rectangles, lines, circles, paths, and many SVG primitives as editable shapes.
- Rounded boxes with uniform CSS borders as editable rounded rectangles.
- ECharts charts as vector SVG primitives when the chart can render or be rebuilt in SVG mode.
- Common Font Awesome Free solid
<i class="fa-...">icons as editable SVG paths through an offline subset. - Speaker notes generated from slide text.
Known limitations:
- Full HTML documents nested inside each slide may still require preprocessing.
- Long scroll-page layouts are clipped to the 1280x720 slide viewport.
- CSS pseudo-elements, filters, shadows, complex masks, unsupported external icon fonts, and advanced gradients may degrade.
- The pipeline requires local Chromium/Chrome and Node.js.
Cross-Agent Usage
- Codex: invoke this skill as
$html2pptx, then runscripts/html2pptx.py. - Claude Code: read this
SKILL.md, then call the same wrapper script. - opencode: use the wrapper script directly, or follow the repo-level
AGENTS.mdif present.
For project setup and multilingual documentation, use the repository README files outside the skill folder.
What ships with it: 23 files
247.4 KB alongside SKILL.md, 20 of them executable
agents/
- openai.yaml188 B
references/
- integration.md1.3 KB
- troubleshooting.md4.9 KB
scripts/
- fontawesome_subset.pyruns17.1 KB
- html2pptx.pyruns12.7 KB
- html_dom_to_editable_svg.jsruns27.0 KB
- svg_to_pptx/drawingml_context.pyruns4.2 KB
- svg_to_pptx/drawingml_converter.pyruns12.0 KB
- svg_to_pptx/drawingml_elements.pyruns53.2 KB
- svg_to_pptx/drawingml_paths.pyruns13.5 KB
- svg_to_pptx/drawingml_styles.pyruns19.6 KB
- svg_to_pptx/drawingml_utils.pyruns9.8 KB
- svg_to_pptx/__init__.pyruns465 B
- svg_to_pptx/pptx_builder.pyruns25.5 KB
- svg_to_pptx/pptx_cli.pyruns14.3 KB
- svg_to_pptx/pptx_dimensions.pyruns4.1 KB
- svg_to_pptx/pptx_discovery.pyruns2.9 KB
- svg_to_pptx/pptx_media.pyruns2.4 KB
- svg_to_pptx/pptx_narration.pyruns7.3 KB
- svg_to_pptx/pptx_notes.pyruns4.5 KB
- svg_to_pptx/pptx_slide_xml.pyruns4.6 KB
- svg_to_pptx/tspan_flattener.pyruns1.7 KB
- svg_to_pptx/use_expander.pyruns4.3 KB