Opencanvas – weekend project by mai/Google/Anthropic engineers

1 hour ago 2

Python 3.8+  MIT

AI-powered presentation generation system that creates beautiful HTML slide decks from topics or PDF documents, with automatic quality evaluation and continuous improvement.

  • 🎨 Dual Input Support - Generate from text topics or PDF documents
  • 🔍 Smart Research - Automatic web research when knowledge is insufficient
  • 📊 AI Evaluation - Comprehensive quality assessment with Claude, GPT, or Gemini
  • 🎯 Multiple Themes - Professional themes for different presentation contexts
  • 🔄 HTML to PDF - High-quality PDF conversion with customizable zoom
  • 📁 Organized Output - Structured folders with timestamps and source tracking
  • 🚀 REST API - Full RESTful interface for programmatic access
  • 🤖 Self-Evolution - Autonomous system that improves presentation quality over time
git clone https://github.com/genmini-ai/OpenCanvas.git cd OpenCanvas pip install -e . playwright install chromium
cp .env.example .env # Edit .env with your API keys

Required: ANTHROPIC_API_KEY (get from console.anthropic.com) Optional: BRAVE_API_KEY, GEMINI_API_KEY, OPENAI_API_KEY

Generate Your First Presentation

# From a topic opencanvas generate "AI in healthcare" --purpose "academic presentation" # From a PDF opencanvas generate "https://arxiv.org/pdf/2505.20286" --purpose "research seminar" # Full pipeline (generate + convert + evaluate) opencanvas pipeline "quantum computing" --purpose "conference talk" --evaluate
# Topic-based generation opencanvas generate "sustainable energy solutions" \ --purpose "corporate presentation" \ --theme "natural earth" # PDF-based generation (images extracted by default) opencanvas generate "paper.pdf" --purpose "conference presentation" # Disable image extraction opencanvas generate "paper.pdf" --no-extract-images
opencanvas convert output/slides.html \ --output presentation.pdf \ --zoom 1.5
opencanvas evaluate evaluation_folder/
opencanvas pipeline "machine learning ethics" \ --purpose "academic seminar" \ --evaluate \ --zoom 1.3

Start the API server:

opencanvas api --host 0.0.0.0 --port 8000

Make requests:

curl -X POST "http://localhost:8000/api/v1/generate" \ -H "Content-Type: application/json" \ -d '{ "input_source": "AI in healthcare", "purpose": "academic presentation", "theme": "professional blue" }'

Documentation: http://localhost:8000/docs Full API Guide: API_README.md

OpenCanvas creates organized directories for all outputs:

output/ └── quantum_computing_20241128_120000/ ├── slides/ │ ├── quantum_computing_slides.html │ └── quantum_computing_presentation.pdf ├── evaluation/ │ └── quantum_computing_evaluation.json └── sources/ ├── source_content.txt # For topic-based └── source.pdf # For PDF-based
Variable Required Default Description
ANTHROPIC_API_KEY - Claude API key (generation)
BRAVE_API_KEY - Web search API key
GEMINI_API_KEY - Gemini API key (evaluation)
OPENAI_API_KEY - OpenAI API key (evaluation)
EVALUATION_PROVIDER gemini claude, gpt, or gemini
EVALUATION_MODEL gemini-2.5-flash Model for evaluation
DEFAULT_THEME professional blue Presentation theme
DEFAULT_ZOOM 1.2 PDF zoom factor
  • professional blue - Clean corporate design
  • clean minimalist - Simple elegant layout
  • natural earth - Warm earth tones
  • modern contemporary - Trendy cutting-edge
  • warm earth tones - Cozy approachable
  • bold high contrast - High-impact design

Full list: See themes.py

# Run full test suite python run_tests.py # Light mode (faster) python run_tests.py light # Specific tests python run_tests.py topic # Topic generation only python run_tests.py pdf # PDF generation only

OpenCanvas includes an autonomous improvement system that learns from evaluation results:

# Run evolution cycle opencanvas evolve --max-iterations 3 --improvement-threshold 0.15

The system automatically:

  • Evaluates presentation quality
  • Identifies improvement opportunities
  • Evolves prompts and generates new tools
  • Tracks performance improvements

Learn more: docs/architecture/evolution-system.md

"opencanvas command not found"

pip install -e . which opencanvas

"ANTHROPIC_API_KEY is required"

cat .env | grep ANTHROPIC_API_KEY

Playwright not available

playwright install chromium # Or use selenium opencanvas convert slides.html --method selenium

Web research not working

# Add BRAVE_API_KEY to .env for web research # Without it, generation uses only Claude's knowledge

More troubleshooting: docs/troubleshooting.md

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

git clone https://github.com/genmini-ai/OpenCanvas.git cd OpenCanvas pip install -r requirements-all.txt playwright install chromium
python run_tests.py pytest tests/

This project is licensed under the MIT License - see the LICENSE file for details.

Built with:


Star this repo if you find it useful! ⭐

Read Entire Article