Skip to content

ppt-master

AI Agents & Assistants

AI tool that converts any document into a natively editable, fully‑featured PPTX file

Python Latest v2.9.0 · 3d ago Security brief →

Features

  • Generates PowerPoint (PPTX) files from arbitrary documents
  • Produces edit‑ready decks with native slide formatting
  • Supports advanced features like narrated slides and example templates

Security Response History

1 CVE
CVE Severity Disclosed Patched (this tool) vs Ecosystem Median
CVE-2023-4863 KEV high
CVSS 8.8
2023-09-13 2026-04-12 2y 7mo / median 2y 4mo

Recent releases

View all 7 releases →
No immediate action
v2.9.0 Mixed

Direct edit + LaTeX + export fixes

v2.8.0 Mixed
⚠ Upgrade required
  • Update project layout to separate `templates/brands/`, `templates/layouts/`, and `templates/decks/` directories; existing monolithic templates must be migrated using the provided multi‑path fusion steps.
  • Review Git‑style conflict resolution guidance in `docs/templates-architecture.md` when merging multiple source segments of the same kind.
  • When customizing AI image rendering, ensure any `custom` escape hatch prose does not exceed one paragraph per dimension and respects the ≤1 custom candidate limit.
Notable features
  • Live Preview enters main pipeline with browser‑based per‑page annotation and AI rewrite.
  • Template architecture split into brand, layout, and deck kinds with multi‑path fusion and Git‑style conflict resolution.
  • Brand identity preset subsystem adds first‑class `templates/brands/` directory with reference brands.
Full changelog

Highlights

Live Preview enters the main pipeline

  • Browser-based per-page preview launches automatically during generation. Click any element to write annotations directly on the page, then say "apply my annotations" — the AI rewrites that region with your guidance baked in. (workflows/live-preview.md)
  • EN/ZH UI, slide navigation toolbar, error surfacing, faster rendering, no more stacked dev servers.
  • Built on @WodenJay's #85. Annotation deletions persist to disk on save-all (#127 fix).

Template architecture — three-kind refactor (brand / layout / deck)

Templates split into three independent kinds, each in its own physical directory with a dedicated schema:

| Kind | Writes | Workflow |
|---|---|---|
| brand (templates/brands/) | identity only — color / typography / logo / voice / icon style | workflows/create-brand.md |
| layout (templates/layouts/) | structure only — canvas / page rhythm / SVG roster | workflows/create-template.md (layout branch) |
| deck (templates/decks/) | full replica — identity + structure + middle | workflows/create-template.md (default) |

  • Multi-path fusion with segment-level integer replacement: brand + deck → brand overrides identity segment; layout + deck → layout overrides structure segment; brand + layout + deck → both override, deck supplies middle.
  • Git-style conflict resolution for same-kind multiples (brand × 2 etc.) — every cross-source segment difference is reported as a conflict; user picks per segment.
  • Authoritative architecture doc: docs/templates-architecture.md (中文).

Brand identity preset subsystem

  • New first-class kind for identity-only presets under templates/brands/. Includes anthropic and google as reference brands.
  • Brand assets reverse-engineered from logos / brand sites / branded PPTX / brand PDFs via workflows/create-brand.md.
  • Trigger rule mirrors layout templates: explicit directory path only; no bare-name resolution.

AI image: three-dimension lock + hero_page + custom escape hatch

  • rendering × palette × type three-dimension system with Strategist h.5 lock — downstream Image_Generator consumes a fixed contract instead of re-deciding per image.
  • Strategist h.5 presents ≥3 candidates (4-line format: title / visual / color / mood) when AI images are in scope, instead of single auto-pick. Includes a Reference images pointer to ai-image-comparison/ PNGs.
  • page_role: hero_page dual-track — local insert + full-canvas hero image coexist with four composition primitives (single-subject / portrait / typographic / atmospheric).
  • Type narrowed to 11 internal infographic skeletons; hero/background/portrait/typography folded into composition primitives.
  • NEW: custom escape hatch. When no preset carries the deck's actual temperament (niche cultural aesthetic, brand HEX outside preset ranges, ceremonial / wuxia / ink-wash, etc.), Strategist may set image_rendering: custom and/or image_palette: custom with a one-paragraph *_behavior prose. Image_Generator splices the prose directly into the prompt in place of the preset's fewshot snippet. Per-dimension limit (≤1 custom candidate per dimension; one candidate may carry both). End-to-end contract: image-renderings/_index.md §1.5, image-palettes/_index.md §2, Strategist h.5 hard-rule + Recording the lock, spec_lock fields, Image_Generator Step 2.
  • Color-as-truth rule: AI image always adapts to deck HEX, never the reverse.

Image layout patterns — Primary + Modifier composition

  • Image layout vocabulary split into Primary patterns (composition skeleton) + Modifier patterns (refinement). Compose freely: #48 side-by-side comparison + #21 rounded rectangle crop + #29 two-stop scrim.
  • Strategist gated to read patterns and produce verbatim #<id> references in §VIII Layout pattern column.
  • Layout pattern diversity self-check added — avoid AI-default left-image / right-image everywhere.

Visual review workflow

New rubric-based per-page visual self-check, run between Executor and post-processing on request (workflows/visual-review.md) — does not auto-trigger; user must invoke. Brand-token H4 hits never silently edit the SVG; per-round Hard hits addressed in same iteration.

Animation customization — slim scaffold + per-slide

  • animation_config.py scaffold and list-groups subcommands (skills/ppt-master/scripts/animation_config.py).
  • Per-slide explicit transition + animation rules — only groups inherit from deck-level defaults.
  • Default auto semantic animation mode added to svg_to_pptx.
  • New workflows/customize-animations.md runbook for object-level animation tuning.

Capability-showcase example decks

Two new full decks stress-testing core engine guarantees:

  • examples/ppt169_brutalist_ai_newspaper_2026/ — 10-page editorial annual report: wall-to-wall small type + irregular columns + halftone monochrome + single-spot red + real native shapes. Stresses text-position precision and cross-page consistency.
  • examples/ppt169_kubernetes_blueprint_2026/ — 10-page Kubernetes architecture walkthrough: isometric blueprint aesthetic, blueprint cyan/amber palette, fully hand-authored SVG geometry (no raster images), custom drawing-in animation. Stresses geometric shape generalization and chart-structure extensibility.

PPTX export hardening

  • Pattern fill PPTX safety net in svg_quality_checker.py — warns on <pattern> without data-pptx-pattern (silent fallback to ltUpDiag); errors on values outside OOXML ST_PresetPatternVal (schema-failed PPTX that won't open). shared-standards.md §7 documents the closed preset enum.
  • --merge-paragraphs flag for editable paragraph text frames (default off; flatten-tspan per-line split is still default).
  • --svg-snapshot makes the SVG-snapshot PPTX opt-in (no longer always written).
  • <g rotate(angle,cx,cy)> pivot fixed in grpSp export.
  • Ancestor translate preserved when entering matrix mode (image landing at (0,0) bug fixed).
  • <image> ctx transform no longer double-applied.
  • meet aspect-fit allowed when clip-path is a no-op rect.
  • Pie / donut / gauge arc-endpoint miscomputation corrected; bullet / bubble / sankey / stacked-area visual consistency improved.
  • verify-charts workflow expanded to cover all data-driven chart geometries.

Public roadmap

Roadmap published in EN/ZH (docs/roadmap.md / docs/zh/roadmap.md) covering recent capability evolution, current focus, and Non-goals (read-arbitrary-PPTX, native PowerPoint charts, uv-as-default, pure speed optimization, CLI/SaaS/desktop forms).

Other improvements

  • image_gen.py: JSON manifest mode required for in-pipeline AI image generation; adaptive concurrency; Markdown sidecar auto-rendered from manifest.
  • project_manager.py import-sources: propagates source image assets into project images/ with namespacing.
  • pptx_to_svg: <a:hslClr> hue decoded with correct unit scale (#102).
  • svg_to_pptx: text box width expansion reduced.
  • live-preview server backup decoupled from SVG snapshot.
  • README gallery: 6 new decks front-loaded with PPTX download links; Bilibili capability-showcase collection linked.

Full changelog: https://github.com/hugohe3/ppt-master/compare/v2.7.0...v2.8.0

Review required
v2.7.0 Breaking risk
Breaking upgrade

Structural chart filenames + animation sidecar

patches CVE-2023-4863
Open
v2.6.0 Breaking risk
Breaking changes
  • Removed `--legacy-render` flag from `pptx_template_import.py`.
Security fixes
  • SVG visual editor: javascript protocol stripping and sanitizer fixes to prevent XSS.
Notable features
  • Native PPTX ↔ SVG round‑trip with new `pptx_to_svg` converter and enhanced `svg_to_pptx`.
  • Overhauled `/create-template` supporting native‑only import, replication modes (`standard`, `fidelity`) and updated `layouts_index.json`.
  • Browser‑based SVG visual editor with element annotation, multi‑select UI and security hardening.
Full changelog

Highlights

Native PPTX ↔ SVG round-trip

  • pptx_to_svg — semantic OOXML→SVG converter (reverse of svg_to_pptx). Reads .pptx directly via zipfile + xml.etree, no PowerPoint COM, no Keynote→PDF rasterization. Each <p:sp prst=\"rect\"> becomes <rect>, each <p:pic> becomes <image>, each <p:txBody> becomes real <text>+<tspan> with original font preserved. 14 modules under scripts/pptx_to_svg/ (~2.6k LOC).
  • svg_to_pptx improvements: consume svg_output/ directly for native pptx, auto-split source per product, elliptical-corner rect via custGeom, croppable images preserved, tspan flattening + whitespace fixes, honour preserveAspectRatio=\"meet\".
  • finalize_svg consolidation — crop / fix-aspect / embed-images merged into a single align-images pass.

/create-template overhaul

  • Native-only PPTX import: drops legacy PowerPoint-COM / Keynote-PDF renderer, drops inline_* asset normalization, removes reference_svg_selection.json. pptx_template_import.py shrinks ~460 → ~110 lines, runs anywhere Python runs.
  • Replication mode: standard (default 5-page roster) | fidelity (preserve every distinct layout cluster from source PPTX). Variant naming follows letter-suffix convention (02a_chapter_full.svg, 03a_content_two_col.svg); variants reuse parent placeholder set.
  • layouts_index.json gains a pages field listing the SVG roster — Strategist template selection can see fidelity templates' coverage.

SVG visual editor (browser)

  • Element-level annotation editor with multi-select, Ctrl+click, rubber-band selection, keyboard shortcuts, element property display, in-place project edit. Security hardening: javascript: protocol stripping, sanitizer fixes. English UI.
  • Surfaced as a standalone visual-edit workflow — easier trigger recognition.

Web image search (zero-config)

  • License-tier filtered web image acquisition path, added as a first-class alternative to AI image generation.
  • Quality-first sourcing with attribution checks; query relevance is the primary scoring dimension.

Audio narration backends

  • ElevenLabs, MiniMax Qwen, CosyVoice — multi-backend with voice cloning surfaced as first-class.
  • Default MiniMax endpoint switched to domestic api.minimaxi.com.

Other

  • Image generation: ModelScope backend (#83); negative prompts removed across docs/CLI/backends.
  • Claude Code plugin manifest (Option C, npx-validated).
  • docs/rules/ — style guides for references and Python code.
  • technical-design.md rewritten as why-only (drops how-detail duplication).

Install / upgrade

See README for the four supported install paths (Claude Code / Cursor / VS Code + Copilot / Codebuddy). No breaking changes for existing projects; the legacy --legacy-render flag in pptx_template_import.py has been removed (was opt-in only).

Full Changelog: https://github.com/hugohe3/ppt-master/compare/v2.5.0...v2.6.0

v2.5.0 Breaking risk
Breaking changes
  • Removed `chart-calibration` command from CLAUDE.md and AGENTS.md
Notable features
  • `generate-audio` workflow for localized voice narration
  • Recorded narration export in `svg_to_pptx` enabling narrated video output
  • Per-element animations enabled by default with slower pacing
Full changelog

✨ Highlights

Audio Narration & Video Export

  • generate-audio workflow: turn speaker notes into localized voice narration, with locale-aware voice picking
  • Recorded narration export: svg_to_pptx embeds audio as PPT recorded narration, enabling direct export to narrated video
  • TTS-friendly speaker notes: Executor rewrites the notes spec to prevent English label leakage in localized output

Animations

  • Per-element animations on by default: svg_to_pptx splits animations by top-level <g id> out of the box
  • Slower default pacing: more composed animation timing suited for live presentation

Skill Packaging

  • skills/ppt-master/ made self-contained, ready for standalone installation into other AI IDE workspaces

Docs

  • New audio narration & video export guide
  • Removed the redundant chart-calibration command block from CLAUDE.md and AGENTS.md

Full commit history: `git log v2.4.0..v2.5.0` (9 commits)

🤖 Generated with Claude Code

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
23,488
Forks
2,140
Languages
Python JavaScript HTML

Beta — feedback welcome: [email protected]