| name | svg2pptx |
| description | Convert any SVG into a native, fully-editable PowerPoint (.pptx) where every shape, text run, arrow and gradient becomes a real DrawingML object — not a flattened image. Use when the user has an SVG (often AI-generated by GPT/Claude, or hand-authored) and wants an editable .pptx they can refine in PowerPoint/Keynote and re-export to PDF, or asks to "turn this SVG/diagram into PowerPoint", "make this figure editable", "svg to pptx", "矢量转 PPT", "把图做成可编辑的 PPT".
|
svg2pptx — SVG → native, editable PowerPoint
This skill converts SVG into native PowerPoint shapes (DrawingML): rectangles, paths, text
frames, gradients, arrowheads — each independently clickable, recolorable, and re-typeable in
PowerPoint. The opposite of pasting a picture onto a slide.
When to use
- The user generated a draft diagram as PNG or SVG (e.g. asked GPT/Claude to draw a mechanism,
architecture, flow, or chart) and now wants an editable deck, not a flat export.
- PNG input → first have a vision model redraw it as a spec-compliant SVG using the ready-made
prompt in
references/png-to-svg-prompt.md (recommended: GPT-5.5
Pro / Claude Opus 4.6+), then run this skill. (Auto-tracing is worse — it turns text into outlines.)
- The user wants to finish a figure in PowerPoint and export to PDF / Keynote / Google Slides.
PNG → SVG → PPTX (when the input is a raster image)
If the user gives a PNG/JPG: read references/png-to-svg-prompt.md,
apply that prompt to the image (yourself, if you are vision-capable) to produce a clean editable SVG
that obeys references/shared-standards.md, then continue with the
fast/controlled path below. If the quality gate flags an issue, re-author the SVG and retry.
Fast path (one command)
python3 convert.py diagram.svg
python3 convert.py slides/ -o deck.pptx
python3 convert.py diagram.svg --check-only
python3 convert.py diagram.svg --svg-snapshot
convert.py stages the SVG, runs the quality gate, finalizes, and exports automatically.
Controlled path (manual 3 steps)
The engine reads SVGs from <project>/svg_output/*.svg. Run one command at a time, in order:
mkdir -p myproj/svg_output && cp diagram.svg myproj/svg_output/01.svg
python3 scripts/svg_quality_checker.py myproj
python3 scripts/finalize_svg.py myproj
python3 scripts/svg_to_pptx.py myproj
A folder of numbered SVGs (01.svg, 02.svg, …) exports as a multi-page deck.
Authoring SVG that converts cleanly
PowerPoint's DrawingML is a strict subset of SVG. Before authoring (or when fixing a gate error),
read references/shared-standards.md — the compatibility
contract. The essentials:
- No
<style>/class/CSS, mask, @font-face, <foreignObject>, <symbol>+<use>,
textPath, <animate*>, <script>. Use inline attributes only.
- Characters: typography/symbols as raw Unicode (
—, →, ±, α); escape only & < > " '
as XML entities. One bad entity aborts the export.
- Use these (they convert to native objects):
marker-start/marker-end → arrowheads;
clip-path on <image> → cropped picture; <pattern data-pptx-pattern="..."> → preset fill;
gradients, stroke-dasharray, rotation, donut/pie arc paths.
- Text: one logical line = one
<text> (inline <tspan> for color/weight runs; don't put
x/y/dy on inline tspans or the line splits).
- viewBox must equal the canvas pixel size; work in pixels, not pt.
The quality gate is the contract
svg_quality_checker.py enforces the rules above before export (finalize rewrites the SVG and
would mask source-level violations). Any error must be fixed by re-authoring the offending
element — there is no auto-fix; the substitute must keep the design intent. Warnings are advisory.
Setup
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
Optional: pip install cairosvg (preferred PNG-fallback renderer for legacy-Office compatibility;
needs the system cairo lib — brew install cairo on macOS). Without it the toolkit falls back to
svglib+reportlab, which are already in requirements.txt.