EditDeck is an open-source project aimed at solving the problem of fragmented steps when making slides: organizing the story, writing page content, generating visuals, and exporting to PPT. If a truly editable presentation is needed, it often has to be rebuilt from scratch. EditDeck turns this process into one continuous workflow.
[Purpose] Starting from purely linguistic requirements, generate a structured PPT outline and page-level content; render each slide page as a visual image and package it into a standard pptx; and reconstruct an editable pptx from the generated run directory or existing slide images. It is suitable for a way of working where you want to "first quickly get a visual draft, then continue until it is editable and usable."
[Main Capabilities]
- Single configuration entry point: the project by default only reads config/app.yaml.
- Dual workflow support: generate from scratch, or regenerate an editable PPT from existing images.
- Complete editable pipeline: image parsing, element extraction, placeholder matching, and browser export are all connected.
- More complete cross-platform support: the browser path can be left blank, and at runtime it is automatically detected from explicit parameters, environment variables, and the system PATH.
- Easy overriding: CLI parameters and Web/API request parameters can both override the configuration file at runtime.
- Provides the same workflow via Web UI, CLI, and HTTP API.
[Usage]
- Install dependencies.
- Edit the configuration: modify config/app.yaml. The api_key field in the template is left blank by default; you can continue to use the existing base_url address in the file; see config/README.md for a more complete field reference.
- Choose how to run:
- Start the Web server and open it in a browser; the Web entry point is provided by webapp/main.py, suitable for filling in requirements, styles, and run parameters directly on the page.
- Use the CLI directly. Style input supports two modes: style_description (text) or style_template (reference image), choose one of the two. Reference files can be uploaded via source_files (multiple files), supporting .txt / .md / .pdf / .docx. In replica mode, source slide images can be uploaded via replica_images (multiple files), supporting .png / .jpg / .jpeg / .webp. Common CLI scenario examples:
- Generate only images and standard PPT;
- Generate PPT with requirements and supplementary reference documents (supports pdf, docx, txt, md, etc.);
- Generate with styles and uploaded reference files;
- After generating a standard PPT, continue to generate an editable PPT;
- Continue generating an editable PPT from an existing run directory;
- Generate an editable PPT directly from existing images. Common parameters: --config-file: specify the configuration file, default config/app.yaml --style-description: specify the style via text --style-template: specify the style via an image --source-file: upload reference files (repeatable) --editable-ppt: after image generation, continue to generate an editable PPT -edit / --edit: enable the currently available editable asset matching backend --mineru-api-key: override mineru.api_key as needed --force-reextract-assets: force re-extraction of elements --disable-asset-reuse: prevent a single asset from being reused across multiple placeholders Note: --style-description and --style-template are mutually exclusive; CLI parameters take precedence over YAML configuration.
Main HTTP API endpoints: GET /api/health: health check POST /api/generate: synchronous generation POST /api/generate/start: asynchronous generation POST /api/editable/start: start an editable PPT task from an existing run_id GET /api/generate/status/{job_id}: query asynchronous task status To directly produce an editable PPT during the generation stage, the request must include: generate_editable_ppt=true and asset_backend=edit. Asset extraction for editable PPTs and parsing of image-only (scanned) PDF reference files require MinerU. When no usable mineru.api_key is available in config/app.yaml, mineru_api_key must be explicitly passed in the request.
[Configuration] The project retains one main configuration file. Configuration sections include: app: output directory and default slidepage count models.text: the model used for outline and copy generation models.editable: the editable PPT generation pipeline models.image: the image generation model mineru: page element parsing and asset extraction Fallback rules:
- When models.image.api_key is empty, fall back to models.text.api_key
- When models.editable.base_url is empty, fall back to models.text.base_url
- When models.editable.api_key is empty, fall back to models.text.api_key
- When mineru.api_key is empty, further fall back to models.editable.api_key, then fall back to models.text.api_key models.editable.browser_path may be left empty; at runtime, explicit parameters, environment variables, and the system PATH are tried in sequence. For a complete example and field reference, see config/README.md.
[Applicable scenarios] Individuals or teams that need to quickly generate slide visual drafts from requirement text and continue to produce editable PPTs; developers who want to coordinate text models, image models, and parsing services through unified configuration; engineering scenarios that need to integrate the same process into a system (via HTTP API). The project team also provides a public-interest site editdeck.top for free trial; when the main domain is unavailable, a backup address can be used http://118.195.198.236/;项目加星后每个用户获得 5 free generations, with an extra 1 free generation for daily check-in; due to server cost limits, occasional unexpected errors may occur, and feedback is welcome.
[Limitations and Known Issues] Asset extraction for editable PPT and image-only PDF parsing depend on MinerU; when no usable mineru.api_key is available, it must be passed explicitly. If browser execution or download fails, you can first leave models.editable.browser_path empty; if you need to explicitly specify a browser, you can pass --editable-browser-path, or set the environment variables EDITABLE_PPT_BROWSER_PATH, CHROME_PATH, GOOGLE_CHROME_BIN, CHROMIUM_PATH, BROWSER_PATH; if the system has no usable browser, run playwright install chromium. If placeholder replacement is abnormal, you can increase mineru.max_refine_depth, enable --force-reextract-assets, or enable --disable-asset-reuse. If you only want to reuse existing assets, you can use --assets-json, but currently it is best suited for directly specifying an existing assets.json in single-image mode. Other specific features, charges, prices, platforms, or effect details are not yet provided in the materials.
[Showcase Cases] The project showcase uses a left-right comparison format (referencing the PPTAgent style): the left side is the image-only result, and the right side is the fully editable reconstructed result. Example requirements include: the English AI Productivity Playbook for Knowledge Teams; a six-page PPT titled "AI Customer Service Knowledge Base Upgrade Plan", 16:9 widescreen dark tech style, with primary colors of deep navy blue, cool cyan-blue, and electric blue, supplemented by highlighted cyan data accent colors, a dark blue-black gradient background, fine grid, faint glowing lines, and glass-textured panels, using the Source Han Sans/PingFang/Microsoft YaHei font system; a six-page PPT titled "Dual-Engine Implementation Roadmap for Enterprise Copilot Deployment", aimed at group management, 16:9 widescreen academic business style, with Microsoft red and blue as the main color palette, paired with light gray and blue-gray background colors, Source Han Sans/PingFang/Microsoft YaHei font system, a top title bar + left vertical timeline + right diagonal zoned dual-engine composition, and cards with unified 18–22px rounded corners and lightweight shadows.