Intelligent PowerPoint presentation generation with content-first design philosophy, PlaceKitten image processing, and comprehensive CLI tools
Project description
๐ฏ Deckbuilder
Transform LLMs from layout pickers into presentation consultants
Deckbuilder is a powerful Python library and MCP (Model Context Protocol) server for intelligent PowerPoint presentation generation. Built with a content-first design philosophy, Deckbuilder transforms how AI creates presentations by focusing on what you want to communicate rather than just what layouts exist.
โจ Key Features
๐ One-Shot Presentation Generation
Create complete PowerPoint presentations from JSON or Markdown with YAML frontmatter in a single command.
๐จ Rich Content Support
- Advanced Formatting:
**bold**,*italic*,___underline___,***bold italic*** - Mixed Content: Seamlessly combine headings, paragraphs, and bullet points
- Professional Tables: Custom styling with themes and colors
- 50+ Business Layouts: Progressive library of professional presentation templates
๐ผ๏ธ Smart Image Processing
- PlaceKitten Integration: Professional placeholder generation with computer vision
- Intelligent Fallbacks: Automatic handling of missing/invalid images
- Smart Cropping: Face detection and rule-of-thirds composition
- Professional Filters: 10+ effects optimized for business presentations
- Performance Optimized: <2s generation, intelligent caching
โก Enhanced CLI Experience
- One-Command Setup:
deckbuilder initcreates templates and configuration - Smart Defaults: Intuitive file paths and environment resolution
- Tab Completion: Bash completion for commands, templates, and files
- Global Arguments:
-t/--templatesand-o/--outputfor custom paths - Template Management: Analyze, validate, and enhance PowerPoint templates
๐ฏ Content-First Intelligence
Instead of asking "what layouts exist?", Deckbuilder asks "what do you want to communicate?" This transforms the system from a layout picker into an intelligent presentation consultant.
๐ Quick Start
Installation
pip install deckbuilder
CLI Usage (Standalone)
# Initialize templates (one-time setup)
deckbuilder init
# Create presentation from markdown
deckbuilder create presentation.md
# Template management
deckbuilder analyze default --verbose
deckbuilder templates
# Image generation
deckbuilder image 800 600 --filter grayscale
# Get help
deckbuilder --help
MCP Server (Claude Desktop)
Add to your Claude Desktop configuration:
{
"mcpServers": {
"deckbuilder": {
"command": "deckbuilder-server",
"env": {
"DECK_TEMPLATE_FOLDER": "/Users/username/Documents/Deckbuilder/Templates",
"DECK_TEMPLATE_NAME": "default",
"DECK_OUTPUT_FOLDER": "/Users/username/Documents/Deckbuilder"
}
}
}
}
๐ Usage Examples
Markdown with Frontmatter (Recommended)
---
layout: Title Slide
---
# **Deckbuilder** Presentation
## Creating presentations with *content-first* intelligence
---
layout: Four Columns
title: Feature Comparison
columns:
- title: Performance
content: "**Fast** processing with optimized algorithms"
- title: Security
content: "***Enterprise-grade*** encryption and compliance"
- title: Usability
content: "*Intuitive* interface with minimal learning curve"
- title: Cost
content: "___Transparent___ pricing with proven ROI"
---
---
layout: Picture with Caption
title: Market Analysis
media:
image_path: "charts/revenue_growth.png" # Auto-fallback to PlaceKitten if missing
alt_text: "Revenue growth chart"
caption: "**Q4 Revenue Growth** - 23% increase"
---
JSON Format (Programmatic)
{
"presentation": {
"slides": [
{
"type": "Title Slide",
"title": "**Deckbuilder** Presentation",
"subtitle": "Content-first presentation generation"
},
{
"type": "Title and Content",
"title": "Key Benefits",
"content": [
"**Intelligent** content analysis",
"*Semantic* layout recommendations",
"***Professional*** template system"
]
}
]
}
}
Python API
from deckbuilder import Deckbuilder
# Initialize engine
db = Deckbuilder()
# Create from markdown
result = db.create_presentation_from_markdown(
markdown_content=open("presentation.md").read(),
fileName="My_Presentation"
)
# Create from JSON
result = db.create_presentation(
json_data={"presentation": {"slides": [...]}},
fileName="JSON_Presentation"
)
print(f"โ
Created: {result}")
๐ผ๏ธ PlaceKitten Image Processing
Smart Image Fallback System - When images are missing or invalid, PlaceKitten automatically generates professional placeholders:
from placekitten import PlaceKitten
pk = PlaceKitten()
placeholder = (pk.generate(1920, 1080, image_id=1)
.smart_crop(1920, 1080)
.apply_filter("grayscale")
.save("professional_placeholder.jpg"))
Features:
- โ File Validation: Checks image existence, format, and accessibility
- โ Professional Styling: Automatic grayscale filtering for business context
- โ Smart Cropping: Computer vision-based cropping with face detection
- โ Performance Optimized: Intelligent caching prevents duplicate processing
- โ Seamless Integration: Zero user intervention required
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ MCP Server Layer โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ FastMCP โ โ Content-First โ โ
โ โ Endpoints โโโโโโโโโบโ MCP Tools โ โ
โ โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Presentation Engine โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ PowerPoint โ โ Template โ โ
โ โ Generation โโโโโโโโโบโ Management โ โ
โ โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Content Intelligence โ
โ โโโโโโโโโโโโโโโโโโโ ๏ฟฝโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Layout โ โ PlaceKitten โ โ
โ โ Intelligence โโโโโโโโโบโ Processing โ โ
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐จ Supported Layouts
โ Currently Implemented
- Title Slide - Opening slide with title and subtitle
- Title and Content - Rich text with headings, paragraphs, bullets
- Four Columns - Quad content areas with structured frontmatter
- Two Content - Side-by-side content areas
- Comparison - Left vs right comparison layout
- Table - Data tables with professional styling
- Section Header - Divider slides between topics
- Picture with Caption - Image-focused slides with smart fallbacks
๐ง Progressive Implementation (50+ Planned)
- Big Number displays, SWOT Analysis, Feature Matrix
- Timeline, Process Flow, Organizational Chart
- Dashboard, Metrics, Financial layouts
- And 40+ more business presentation layouts
See Supported Templates for complete roadmap.
๐ ๏ธ Development
Prerequisites
- Python 3.11+
- Virtual environment (recommended)
Development Install
git clone https://github.com/teknologika/deckbuilder.git
cd deckbuilder
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e .[dev]
Code Quality Standards
# Format code (required before commits)
black --line-length 100 src/
# Check linting (required)
flake8 src/ tests/ --max-line-length=100 --ignore=E203,W503,E501
# Run tests (required)
pytest tests/
Contributing
- Fork the repository
- Create feature branch:
git checkout -b feature-name - Follow code quality standards
- Add comprehensive tests
- Submit pull request with clear description
๐ Documentation
- PLANNING.md - Project architecture and design principles
- API Documentation - Complete API reference
- Feature Specifications - Detailed feature documentation
- PlaceKitten Library - Image processing documentation
๐ง Technology Stack
- Python 3.11+ with modern type hints and comprehensive error handling
- FastMCP for Model Context Protocol server implementation
- python-pptx for PowerPoint generation and template manipulation
- PyYAML for structured frontmatter processing
- OpenCV + Pillow for computer vision and image processing
- pytest with 108 comprehensive tests including image integration
๐ Troubleshooting
Template not found:
# Create templates folder
deckbuilder init
# Check configuration
deckbuilder config
Permission denied when saving:
- Verify output folder has write permissions
- Ensure files aren't open in PowerPoint
MCP connection failures:
- Verify virtual environment is activated
- Check Python path in Claude Desktop config
- Ensure all dependencies are installed
๐ License
Apache License 2.0 - See LICENSE file for details.
Built with โค๏ธ for intelligent presentation generation
๐ Get Started โข ๐ Documentation โข ๐ Report Issues
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 deckbuilder-1.0.0b1.tar.gz.
File metadata
- Download URL: deckbuilder-1.0.0b1.tar.gz
- Upload date:
- Size: 17.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d2d0d9cb5490a482a30507e53910597c9ce5d520129b055af4f662df37585199
|
|
| MD5 |
f52a9bae15a4085136fcf7024ecc41a0
|
|
| BLAKE2b-256 |
6207fda6d8f14dc9be2a67d68107cfc7b10b7c3ce5b7d169d07b215ecf3fcdf3
|
File details
Details for the file deckbuilder-1.0.0b1-py3-none-any.whl.
File metadata
- Download URL: deckbuilder-1.0.0b1-py3-none-any.whl
- Upload date:
- Size: 17.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dcd2d4fdcf90be1a2d66ed12b449c53997e7e9f3a70bb49626492421c0abefe8
|
|
| MD5 |
3fd09f10d178a60a4fe2da94525075e6
|
|
| BLAKE2b-256 |
ad283d33d7abf1488b4f8630479a82aa35ed39ce00ee77fb99c7d4fb2ee19505
|