Generate Professional Presentations in Seconds using AI
Project description
AutoPPT
Generate polished, editable PowerPoint decks from a topic, an outline, or a template.
AutoPPT is a PowerPoint-native presentation generator built for people who need real .pptx files, not a web-only slide toy. It combines LLM planning, optional research, layout-aware rendering, and template support so the output stays editable in PowerPoint, Keynote, or Google Slides.
Why AutoPPT
- Native
.pptxoutput that stays editable after generation - Template-aware rendering for branded decks and repeatable formatting
- Layout planning before rendering, including richer slide types such as comparison and quote slides
- Slide-level workbench for regenerate and remix workflows
- Mock mode and offline mode for CI, demos, and local development without live API keys
See It In Action
Showcase Samples
These committed decks are the fastest way to judge current output quality.
| Sample | Focus | Slides |
|---|---|---|
| samples/en_visual_showcase.pptx | High-fidelity image-led showcase | 8 |
| samples/cn_visual_showcase.pptx | High-fidelity image-led showcase in Chinese | 8 |
| samples/en_tech.pptx | English technology deck | 9 |
| samples/cn_tech.pptx | Chinese technology deck | 9 |
| samples/en_life.pptx | English lifestyle deck | 8 |
| samples/cn_life.pptx | Chinese lifestyle deck | 8 |
| samples/en_art.pptx | English art deck | 8 |
| samples/cn_art.pptx | Chinese art deck | 8 |
Feature-oriented validation decks are documented in samples/README.md.
30-Second Quick Try
Install AutoPPT and generate a local deck without any external API key:
pip install autoppt
AUTOPPT_OFFLINE=1 autoppt --provider mock --topic "The Future of AI"
Run the web UI:
streamlit run autoppt/app.py
Core Capabilities
| Capability | What it gives you |
|---|---|
| Multi-provider generation | OpenAI, Google Gemini, Anthropic, or mock for local testing |
| Research pipeline | Optional web search, article extraction, and image discovery |
| Theme system | Multiple built-in themes plus auto-style selection |
| Template support | Reuse existing corporate .pptx templates |
| Slide planning | SlidePlan, SlideSpec, and DeckSpec provide a stable intermediate model |
| Deck QA | Detect duplicate titles, empty slides, and malformed richer layouts before export |
| Workbench | Regenerate or remix a single slide with an optional target layout |
| Thumbnail previews | Render slide grids for quick visual review |
| Docker support | Run the web app in Docker or Docker Compose |
Installation
Install from PyPI:
pip install autoppt
Install from source:
git clone https://github.com/yeasy/autoppt.git
cd autoppt
pip install -e .
Install development dependencies:
pip install -e ".[dev]"
The dependency source of truth is pyproject.toml. requirements.txt is kept as a thin local install wrapper.
Configuration
Copy the example environment file and add the providers you want to use:
cp .env.example .env
Typical variables:
OPENAI_API_KEY=sk-...
GOOGLE_API_KEY=AIza...
ANTHROPIC_API_KEY=sk-ant-...
# Optional local OpenAI-compatible endpoint
OPENAI_API_BASE=http://localhost:1234/v1
# Optional Anthropic-compatible endpoint
ANTHROPIC_BASE_URL=https://api.anthropic.com
# Optional offline mode
AUTOPPT_OFFLINE=1
Usage
CLI
# Generate with default settings
autoppt --topic "The Future of AI"
# Let AutoPPT infer the best theme
autoppt --topic "Machine Learning Tutorial" --auto-style
# Preview the outline before rendering
autoppt --topic "Startup Pitch" --confirm-outline
# Generate outline only
autoppt --topic "Q1 Report" --outline-only
# Use a specific provider, style, and slide count
autoppt --topic "Planets in Solar System" --provider google --style dark --slides 8
# Use a custom template and render thumbnails
autoppt --topic "Q3 Report" --template templates/your-template.pptx --thumbnails
# Stay fully local for testing and CI
AUTOPPT_OFFLINE=1 autoppt --provider mock --topic "System Design Review"
Web App
streamlit run autoppt/app.py
Then open http://localhost:8501.
Docker
Run with Docker Compose:
docker-compose up -d
docker-compose logs -f
Run with Docker CLI:
docker build -t autoppt .
docker run --rm \
-p 8501:8501 \
--env-file .env \
-v $(pwd)/output:/app/output \
autoppt
Themes
Built-in themes:
minimalist, technology, nature, creative, corporate, academic, startup, dark, luxury, magazine, tech_gradient, ocean, sunset, chalkboard, blueprint, sketch, retro, neon
Use --style <theme> to force a specific look, or --auto-style to let AutoPPT choose.
Samples
Refresh all committed samples deterministically:
python scripts/generate_samples.py --category all --output-dir samples
Refresh one sample:
python scripts/generate_sample.py en_visual_showcase --output-dir samples
Refresh README preview assets:
python scripts/generate_readme_previews.py --output-dir docs/assets
For the full sample catalog, see samples/README.md.
Testing
Run the full test suite:
pip install -e ".[dev]"
pytest
Run coverage:
pytest --cov=autoppt --cov-report=term-missing
Run a focused test file:
pytest tests/test_renderer.py -v
Templates
Template guidance lives in templates/README.md.
Architecture
Architecture notes live in docs/architecture.md.
Contributing
- Fork the repository.
- Create a branch:
git checkout -b feature/awesome - Install dev dependencies:
pip install -e ".[dev]" - Run validation:
pytest && python3 scripts/check_sensitive.py - Build and smoke test:
python -m build && pip install dist/*.whl && autoppt --help - Commit your changes.
- Push your branch and open a pull request.
License
Apache 2.0. See LICENSE.
Changelog
See CHANGELOG.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file autoppt-0.6.0.tar.gz.
File metadata
- Download URL: autoppt-0.6.0.tar.gz
- Upload date:
- Size: 160.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9e6041bba23f5c259352da36fef01860ddd44aa770655d1afb010a50f3b9b4f
|
|
| MD5 |
4858fb2c7831b6114052f1b727b1c15f
|
|
| BLAKE2b-256 |
6b5a49f9c8555004e4fdd993474b1cf7264177943d8a108082dff96b5a1987c0
|
Provenance
The following attestation bundles were made for autoppt-0.6.0.tar.gz:
Publisher:
workflow.yml on yeasy/AutoPPT
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoppt-0.6.0.tar.gz -
Subject digest:
b9e6041bba23f5c259352da36fef01860ddd44aa770655d1afb010a50f3b9b4f - Sigstore transparency entry: 1565994937
- Sigstore integration time:
-
Permalink:
yeasy/AutoPPT@df1fc8dc653f09cd823af5ac5d7f2fdcd4ea957b -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/yeasy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@df1fc8dc653f09cd823af5ac5d7f2fdcd4ea957b -
Trigger Event:
push
-
Statement type:
File details
Details for the file autoppt-0.6.0-py3-none-any.whl.
File metadata
- Download URL: autoppt-0.6.0-py3-none-any.whl
- Upload date:
- Size: 78.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ac54fbf8d7d8100f770b9b3a38c649f7b097bd1f08c24a50504c9235fad26d2
|
|
| MD5 |
ae217e032bba0f6ce3e78eefc7d265b6
|
|
| BLAKE2b-256 |
86ee192dd6a7370d108bc7f0c9a8ac7297ef181f6da854601586a7435c275b44
|
Provenance
The following attestation bundles were made for autoppt-0.6.0-py3-none-any.whl:
Publisher:
workflow.yml on yeasy/AutoPPT
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
autoppt-0.6.0-py3-none-any.whl -
Subject digest:
1ac54fbf8d7d8100f770b9b3a38c649f7b097bd1f08c24a50504c9235fad26d2 - Sigstore transparency entry: 1565994939
- Sigstore integration time:
-
Permalink:
yeasy/AutoPPT@df1fc8dc653f09cd823af5ac5d7f2fdcd4ea957b -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/yeasy
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
workflow.yml@df1fc8dc653f09cd823af5ac5d7f2fdcd4ea957b -
Trigger Event:
push
-
Statement type: