PPTAgent Documentation

An Agentic Framework for Reflective PowerPoint Generation

4,286 stars Python Python 1 file Β· ~2,070 tokens #agent#agentic-ai#llm#mcp#openclaw#presentation#slide
RAW Doc

🌐 Language

We strongly recommend deploying our fine-tuned model for the best experience with our agent project. According to our experiments, it significantly outperforms existing open-source models.

Format HuggingFace ModelScope
GGUF (Quantized) Forceless/DeepPresenter-9B-GGUF forceless/DeepPresenter-9B-GGUF
Full Weights Forceless/DeepPresenter-9B forceless/DeepPresenter-9B

πŸ“… News

  • [2026/04] πŸŽ‰ DeepPresenter accepted to ACL 2026!
  • [2026/03] πŸ€— We released fine-tuned models and taskset on Hugging Face.
  • [2026/01] πŸ†• Freeform & template generation now support PPTX export and offline mode. Context management added to prevent context overflow.
  • [2025/12] πŸ”₯ Released DeepPresenter codebase with major upgrades β€” Deep Research Integration, Free-Form Visual Design, Autonomous Asset Creation, Text-to-Image Generation, and an Agent Environment with sandbox & 20+ tools.
  • [2025/09] πŸ› οΈ MCP server support added β€” see MCP Server for configuration details.
  • [2025/08] πŸŽ‰ PPTAgent accepted to EMNLP 2025!
  • [2025/05] ⭐ Reached 1,000 stars on GitHub!
  • [2025/01] πŸ”“ Open-sourced the PPTAgent codebase.

Usage πŸ“–

[!IMPORTANT]
Windows is not supported. If you are on Windows, please use WSL.

We strongly recommend starting with the CLI and minimum task to confirm dependencies and environment is configured correctly.

Configuration

If you use the CLI, pptagent onboard can help create and update these configurations interactively. If you use Docker Compose or build from source, you should prepare them manually:

bash
cp deeppresenter/config.yaml.example deeppresenter/config.yaml
cp deeppresenter/mcp.json.example deeppresenter/mcp.json

Optional Services That Improve Quality

The following services can noticeably improve generation quality, especially for research depth, PDF parsing, and visual asset creation:

If you want a fully offline setup, deploy MinerU locally and set offline_mode: true in deeppresenter/config.yaml to avoid loading network-dependent tools such as web search.

More configurable variables can be found in constants.py.

1. Personal Use / OpenClaw Integration: CLI

[!NOTE]
On macOS, the CLI may automatically install several local dependencies, including Homebrew, Node.js, Docker, poppler, Playwright, and llama.cpp.

On Linux, you should prepare the environment by yourself.

Use this mode if you want the fastest local setup or want to plug DeepPresenter into OpenClaw through the CLI.

bash
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# First-time interactive setup
uvx pptagent onboard

# Generate a presentation
uvx pptagent generate "Single Page with Title: Hello World" -o hello.pptx

# Generate with attachments
uvx pptagent generate "Q4 Report" \
  -f data.xlsx \
  -f charts.pdf \
  -p "10-12" \
  -o report.pptx
Command Description
pptagent onboard Interactive configuration wizard
pptagent generate Generate presentations
pptagent config View current configuration
pptagent reset Reset configuration
pptagent serve Start the local inference service used by the CLI

Docker Images

DeepPresenter publishes two runtime images:

Local image name Purpose Docker Hub 1ms.run mirror
deeppresenter-host Host service for the web UI and orchestration runtime forceless/deeppresenter-host docker.1ms.run/forceless/deeppresenter-host
deeppresenter-sandbox Sandbox image used by the runtime for isolated tool execution forceless/deeppresenter-sandbox docker.1ms.run/forceless/deeppresenter-sandbox

2. Minimal Setup / Development: Build From Source

Use this mode if you want the smallest abstraction layer and full control over dependencies during development.

bash
uv pip install -e .
playwright install-deps
playwright install chromium
npm install --prefix deeppresenter/html2pptx
modelscope download forceless/fasttext-language-id

docker pull forceless/deeppresenter-sandbox
docker pull forceless/deeppresenter-host
docker tag forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag forceless/deeppresenter-host deeppresenter-host

# or pull through the 1ms.run mirror
docker pull docker.1ms.run/forceless/deeppresenter-sandbox
docker pull docker.1ms.run/forceless/deeppresenter-host
docker tag docker.1ms.run/forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag docker.1ms.run/forceless/deeppresenter-host deeppresenter-host

# or build from dockerfile
docker build -t deeppresenter-sandbox -f deeppresenter/docker/SandBox.Dockerfile .
docker build -t deeppresenter-host -f deeppresenter/docker/Host.Dockerfile .

Start the app:

bash
python webui.py

3. Server Deployment: Docker Compose

Use this mode for a stable server environment with explicit dependencies.

bash
# Pull the public images to avoid build from source
docker pull forceless/deeppresenter-sandbox
docker pull forceless/deeppresenter-host
docker tag forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag forceless/deeppresenter-host deeppresenter-host

# Or pull through the 1ms.run mirror
docker pull docker.1ms.run/forceless/deeppresenter-sandbox
docker pull docker.1ms.run/forceless/deeppresenter-host
docker tag docker.1ms.run/forceless/deeppresenter-sandbox deeppresenter-sandbox
docker tag docker.1ms.run/forceless/deeppresenter-host deeppresenter-host

# Or build from source
docker build -t deeppresenter-sandbox -f deeppresenter/docker/SandBox.Dockerfile .
docker build -t deeppresenter-host -f deeppresenter/docker/Host.Dockerfile .

# Start the host service
docker compose up -d

The service exposes the web UI on http://localhost:7861.

Case Study πŸ’‘

  • Prompt: Please present the given document to me.

  • Prompt: 请介绍小米 SU7 ηš„ε€–θ§‚ε’Œδ»·ζ Ό

  • Prompt: θ―·εˆΆδ½œδΈ€δ»½ι«˜δΈ­θ―Ύε ‚ε±•η€Ίθ―Ύδ»ΆοΌŒδΈ»ι’˜δΈΊβ€œθ§£η η«‹ζ³•θΏ‡η¨‹οΌšη†θ§£ε…Άε―Ήε›½ι™…ε…³η³»ηš„ε½±ε“β€


Contributors 🌟

Force1ess Puelloc hongyan BrandonHu Dnoob
Sadahlu lnennnn KurisuMakiseSame Aarish Alam Angelen
Eliot White EvolvedGhost ISCAS-zwl 白雨 James Brown JunZhang
Open AI Tx Sense_wang SuYao Zakir Jiwani Zhenyu

Citation πŸ™

If you find this project helpful, please use the following to cite it:

text
/* Detailed source-code truncated for AI context efficiency. */