> [!IMPORTANT]
> Deckbuilder is currently under active development and should NOT be considered production ready.
# 🎯 Deckbuilder
[](https://badge.fury.io/py/deckbuilder)
[](https://github.com/teknologika/deckbuilder/actions/workflows/test.yml)
[](src/placekitten/README.md)
[](https://www.python.org/downloads/)
Deckbuilder is a powerful Python library, Command Line, and MCP (Model Context Protocol) server for PowerPoint presentation generation.
Deckbuilder currently supports JSON and Frontmatter formatted Markdown for content. Any slide template can be mapped using JSON with template support being progressivley added to Markdown.
The MCP server will be enhanced to be with a **content-first design philosophy**, Deckbuilder's MCP server will transform 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***`
- **Language & Font updating**:The aility to update the fonts and language of all slide objects using the command line tools.
- **Professional Tables**: Custom styling with themes and colors
- **50+ Business Layouts**: Progressive library of professional presentation templates
### 🖼️ **Smart Image Processing**
- **Placekitten Generation**: Professional placeholder generation
- **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**
- **Professional Hierarchical Interface**: Clean command structure (`deckbuilder <command> <subcommand>`)
- **One-Command Setup**: `deckbuilder init` creates templates and configuration
- **Context-Aware Paths**: CLI args > env vars > current directory precedence
- **Always Local Output**: CLI outputs to current directory for predictable local development
- **Global Arguments**: `-t/--template-folder`, `-l/--language`, `-f/--font` for complete customization
- **Comprehensive Command Structure**:
- `deckbuilder template` → analyze, validate, document, enhance, list
- `deckbuilder config` → show, languages, completion
- `deckbuilder image` → generate, crop
- `deckbuilder remap` → update existing PowerPoint files with language/font changes
- **Template Management**: Analyze, validate, and enhance PowerPoint templates with detailed validation
### 🎯 **Content-First Intelligence - Currently under design**
Instead of asking "*what layouts exist?*", Deckbuilder will ask "*what do you want to communicate?*" This will transform the system from a layout picker into an intelligent presentation consultant.
## 🚀 Quick Start
### Installation
```bash
pip install deckbuilder
```
### CLI Usage (Standalone)
```bash
# Initialize templates (one-time setup) This will create the default template and mapping JSON.
deckbuilder init
# Create presentation from markdown (outputs to current directory)
deckbuilder create presentation.md
# Use custom template folder (CLI arg overrides env vars)
deckbuilder --template-folder /custom/templates create presentation.md
# Create with custom language and font (supports both formats)
deckbuilder create presentation.md --language "es-ES" --font "Arial"
deckbuilder create presentation.md --language "Spanish (Spain)" --font "Times New Roman"
# View supported languages
deckbuilder config languages
# Template management
deckbuilder template analyze default --verbose
deckbuilder template validate default
deckbuilder template list
# Image generation
deckbuilder image generate 800 600 --filter grayscale
deckbuilder image crop image.jpg 800 600
# Language and font remapping for existing PowerPoint files
deckbuilder remap existing.pptx --language en-US --font Arial
# View current configuration (shows path sources)
deckbuilder config show
# Get help
deckbuilder --help
```
### MCP Server (Claude Desktop)
Add to your Claude Desktop configuration:
```json
{
"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",
"DECK_PROOFING_LANGUAGE": "en-AU",
"DECK_DEFAULT_FONT": "Calibri"
}
}
}
}
```
**New Environment Variables:**
- `DECK_PROOFING_LANGUAGE`: Set proofing language for spell-check and grammar (accepts both "en-AU" and "English (Australia)" formats)
- `DECK_DEFAULT_FONT`: Set default font family for all presentations
- **Default Language**: Australian English (`en-AU`) if not specified
## 📝 Usage Examples
### Markdown with Frontmatter (Recommended)
```markdown
---
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)
```json
{
"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
```python
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}")
```
## 🌍 Language & Font Support
### Supported Languages (20)
Deckbuilder supports 20 proofing languages for spell-check and grammar. You can use either locale codes (`en-AU`) or full names (`English (Australia)`):
```bash
# View all supported languages (shows both formats)
deckbuilder config languages
```
**Available Languages:**
- English (United States, United Kingdom, Canada, Australia)
- Spanish (Spain, Mexico, Latin America)
- French (France, Canada)
- German (Germany, Austria, Switzerland)
- Italian, Portuguese (Brazil, Portugal)
- Chinese (Simplified, Traditional), Japanese, Korean
- Dutch, Russian, Arabic
### Font Customization
```bash
# Set language and font globally (supports both formats)
export DECK_PROOFING_LANGUAGE="en-AU" # Locale code format
export DECK_PROOFING_LANGUAGE="English (Australia)" # Full name format
export DECK_DEFAULT_FONT="Arial"
# Or use CLI arguments (both formats work)
deckbuilder create presentation.md --language "fr-CA" --font "Times New Roman"
deckbuilder create presentation.md --language "French (Canada)" --font "Arial"
# Check current settings (shows locale codes and descriptions)
deckbuilder config show
```
## 🖼️ PlaceKitten Image Processing
**Smart Image Fallback System** - When images are missing or invalid, PlaceKitten automatically generates professional placeholders:
```python
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 Markdown 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](docs/Features/SupportedTemplates.md) for complete roadmap.
## 🛠️ Development
### Prerequisites
- Python 3.11+
- Virtual environments are recommended.
### Development Install
```bash
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
```bash
# 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
1. Fork the repository
2. Create feature branch: `git checkout -b feature-name`
3. Follow code quality standards
4. Add comprehensive tests
5. Submit pull request with clear description
## 📚 Documentation
- **[PLANNING.md](PLANNING.md)** - Project architecture and design principles
- **[TASK.md](TASK.md)** - Current to-do list and planned features
- **[API Documentation](docs/API.md)** - Complete API reference
- **[Feature Specifications](docs/Features/)** - Detailed feature documentation
- **[PlaceKitten Library](src/placekitten/README.md)** - 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** for unit testing
- **Anthropic Claude** - for most of the development gruntwork :-)
## 📋 Troubleshooting
**Template not found:**
```bash
# 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](LICENSE) file for details.
---
<div align="center">
**Built with ❤️ for intelligent presentation generation - Copyright Bruce McLeod**
[🚀 Get Started](#quick-start) • [📖 Documentation](docs/) • [🐛 Report Issues](https://github.com/teknologika/deckbuilder/issues)
</div>
Raw data
{
"_id": null,
"home_page": null,
"name": "deckbuilder",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "mcp, powerpoint, presentations, automation, content-first, template-management, image-processing, cli",
"author": "Bruce McLeod",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/56/c8/8f8c8ce4ffa814b46b98a3114d7695be697e24b13fb0742304cb35425c36/deckbuilder-1.1.0.tar.gz",
"platform": null,
"description": "> [!IMPORTANT] \n> Deckbuilder is currently under active development and should NOT be considered production ready.\n\n# \ud83c\udfaf Deckbuilder\n[](https://badge.fury.io/py/deckbuilder)\n[](https://github.com/teknologika/deckbuilder/actions/workflows/test.yml)\n[](src/placekitten/README.md)\n[](https://www.python.org/downloads/)\n\nDeckbuilder is a powerful Python library, Command Line, and MCP (Model Context Protocol) server for PowerPoint presentation generation.\n\nDeckbuilder currently supports JSON and Frontmatter formatted Markdown for content. Any slide template can be mapped using JSON with template support being progressivley added to Markdown.\n\nThe MCP server will be enhanced to be with a **content-first design philosophy**, Deckbuilder's MCP server will transform how AI creates presentations by focusing on *what you want to communicate* rather than just *what layouts exist*.\n\n## \u2728 Key Features\n\n### \ud83d\ude80 **One-Shot Presentation Generation**\nCreate complete PowerPoint presentations from JSON or Markdown with YAML frontmatter in a single command.\n\n### \ud83c\udfa8 **Rich Content Support**\n- **Advanced Formatting**: `**bold**`, `*italic*`, `___underline___`, `***bold italic***`\n- **Language & Font updating**:The aility to update the fonts and language of all slide objects using the command line tools.\n- **Professional Tables**: Custom styling with themes and colors\n- **50+ Business Layouts**: Progressive library of professional presentation templates\n\n### \ud83d\uddbc\ufe0f **Smart Image Processing** \n- **Placekitten Generation**: Professional placeholder generation \n- **Intelligent Fallbacks**: Automatic handling of missing/invalid images\n- **Smart Cropping**: Face detection and rule-of-thirds composition\n- **Professional Filters**: 10+ effects optimized for business presentations\n- **Performance Optimized**: <2s generation, intelligent caching\n\n### \u26a1 **Enhanced CLI Experience**\n- **Professional Hierarchical Interface**: Clean command structure (`deckbuilder <command> <subcommand>`)\n- **One-Command Setup**: `deckbuilder init` creates templates and configuration\n- **Context-Aware Paths**: CLI args > env vars > current directory precedence\n- **Always Local Output**: CLI outputs to current directory for predictable local development\n- **Global Arguments**: `-t/--template-folder`, `-l/--language`, `-f/--font` for complete customization\n- **Comprehensive Command Structure**:\n - `deckbuilder template` \u2192 analyze, validate, document, enhance, list\n - `deckbuilder config` \u2192 show, languages, completion\n - `deckbuilder image` \u2192 generate, crop\n - `deckbuilder remap` \u2192 update existing PowerPoint files with language/font changes\n- **Template Management**: Analyze, validate, and enhance PowerPoint templates with detailed validation\n\n### \ud83c\udfaf **Content-First Intelligence - Currently under design**\nInstead of asking \"*what layouts exist?*\", Deckbuilder will ask \"*what do you want to communicate?*\" This will transform the system from a layout picker into an intelligent presentation consultant.\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install deckbuilder\n```\n\n### CLI Usage (Standalone)\n\n```bash\n# Initialize templates (one-time setup) This will create the default template and mapping JSON.\ndeckbuilder init\n\n# Create presentation from markdown (outputs to current directory)\ndeckbuilder create presentation.md\n\n# Use custom template folder (CLI arg overrides env vars)\ndeckbuilder --template-folder /custom/templates create presentation.md\n\n# Create with custom language and font (supports both formats)\ndeckbuilder create presentation.md --language \"es-ES\" --font \"Arial\"\ndeckbuilder create presentation.md --language \"Spanish (Spain)\" --font \"Times New Roman\"\n\n# View supported languages\ndeckbuilder config languages\n\n# Template management\ndeckbuilder template analyze default --verbose\ndeckbuilder template validate default\ndeckbuilder template list\n\n# Image generation \ndeckbuilder image generate 800 600 --filter grayscale\ndeckbuilder image crop image.jpg 800 600\n\n# Language and font remapping for existing PowerPoint files\ndeckbuilder remap existing.pptx --language en-US --font Arial\n\n# View current configuration (shows path sources)\ndeckbuilder config show\n\n# Get help\ndeckbuilder --help\n```\n\n### MCP Server (Claude Desktop)\n\nAdd to your Claude Desktop configuration:\n\n```json\n{\n \"mcpServers\": {\n \"deckbuilder\": {\n \"command\": \"deckbuilder-server\",\n \"env\": {\n \"DECK_TEMPLATE_FOLDER\": \"/Users/username/Documents/Deckbuilder/Templates\",\n \"DECK_TEMPLATE_NAME\": \"default\",\n \"DECK_OUTPUT_FOLDER\": \"/Users/username/Documents/Deckbuilder\",\n \"DECK_PROOFING_LANGUAGE\": \"en-AU\",\n \"DECK_DEFAULT_FONT\": \"Calibri\"\n }\n }\n }\n}\n```\n\n**New Environment Variables:**\n- `DECK_PROOFING_LANGUAGE`: Set proofing language for spell-check and grammar (accepts both \"en-AU\" and \"English (Australia)\" formats)\n- `DECK_DEFAULT_FONT`: Set default font family for all presentations\n- **Default Language**: Australian English (`en-AU`) if not specified\n\n## \ud83d\udcdd Usage Examples\n\n### Markdown with Frontmatter (Recommended)\n\n```markdown\n---\nlayout: Title Slide\n---\n# **Deckbuilder** Presentation\n## Creating presentations with *content-first* intelligence\n\n---\nlayout: Four Columns\ntitle: Feature Comparison\ncolumns:\n - title: Performance\n content: \"**Fast** processing with optimized algorithms\"\n - title: Security\n content: \"***Enterprise-grade*** encryption and compliance\"\n - title: Usability\n content: \"*Intuitive* interface with minimal learning curve\"\n - title: Cost\n content: \"___Transparent___ pricing with proven ROI\"\n---\n\n---\nlayout: Picture with Caption\ntitle: Market Analysis\nmedia:\n image_path: \"charts/revenue_growth.png\" # Auto-fallback to PlaceKitten if missing\n alt_text: \"Revenue growth chart\"\n caption: \"**Q4 Revenue Growth** - 23% increase\"\n---\n```\n\n### JSON Format (Programmatic)\n\n```json\n{\n \"presentation\": {\n \"slides\": [\n {\n \"type\": \"Title Slide\",\n \"title\": \"**Deckbuilder** Presentation\",\n \"subtitle\": \"Content-first presentation generation\"\n },\n {\n \"type\": \"Title and Content\",\n \"title\": \"Key Benefits\",\n \"content\": [\n \"**Intelligent** content analysis\",\n \"*Semantic* layout recommendations\",\n \"***Professional*** template system\"\n ]\n }\n ]\n }\n}\n```\n\n### Python API\n\n```python\nfrom deckbuilder import Deckbuilder\n\n# Initialize engine\ndb = Deckbuilder()\n\n# Create from markdown\nresult = db.create_presentation_from_markdown(\n markdown_content=open(\"presentation.md\").read(),\n fileName=\"My_Presentation\"\n)\n\n# Create from JSON\nresult = db.create_presentation(\n json_data={\"presentation\": {\"slides\": [...]}},\n fileName=\"JSON_Presentation\"\n)\n\nprint(f\"\u2705 Created: {result}\")\n```\n\n## \ud83c\udf0d Language & Font Support\n\n### Supported Languages (20)\nDeckbuilder supports 20 proofing languages for spell-check and grammar. You can use either locale codes (`en-AU`) or full names (`English (Australia)`):\n\n```bash\n# View all supported languages (shows both formats)\ndeckbuilder config languages\n```\n\n**Available Languages:**\n- English (United States, United Kingdom, Canada, Australia)\n- Spanish (Spain, Mexico, Latin America)\n- French (France, Canada)\n- German (Germany, Austria, Switzerland)\n- Italian, Portuguese (Brazil, Portugal)\n- Chinese (Simplified, Traditional), Japanese, Korean\n- Dutch, Russian, Arabic\n\n### Font Customization\n\n```bash\n# Set language and font globally (supports both formats)\nexport DECK_PROOFING_LANGUAGE=\"en-AU\" # Locale code format\nexport DECK_PROOFING_LANGUAGE=\"English (Australia)\" # Full name format\nexport DECK_DEFAULT_FONT=\"Arial\"\n\n# Or use CLI arguments (both formats work)\ndeckbuilder create presentation.md --language \"fr-CA\" --font \"Times New Roman\"\ndeckbuilder create presentation.md --language \"French (Canada)\" --font \"Arial\"\n\n# Check current settings (shows locale codes and descriptions)\ndeckbuilder config show\n```\n\n## \ud83d\uddbc\ufe0f PlaceKitten Image Processing\n\n**Smart Image Fallback System** - When images are missing or invalid, PlaceKitten automatically generates professional placeholders:\n\n```python\nfrom placekitten import PlaceKitten\n\npk = PlaceKitten()\nplaceholder = (pk.generate(1920, 1080, image_id=1)\n .smart_crop(1920, 1080)\n .apply_filter(\"grayscale\")\n .save(\"professional_placeholder.jpg\"))\n```\n\n**Features:**\n- \u2705 **File Validation**: Checks image existence, format, and accessibility\n- \u2705 **Professional Styling**: Automatic grayscale filtering for business context \n- \u2705 **Smart Cropping**: Computer vision-based cropping with face detection\n- \u2705 **Performance Optimized**: Intelligent caching prevents duplicate processing\n- \u2705 **Seamless Integration**: Zero user intervention required\n\n## \ud83c\udfd7\ufe0f Architecture\n\n```\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 MCP Server Layer \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 FastMCP \u2502 \u2502 Content-First \u2502 \u2502\n\u2502 \u2502 Endpoints \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 MCP Tools \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Presentation Engine \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 PowerPoint \u2502 \u2502 Template \u2502 \u2502\n\u2502 \u2502 Generation \u2502\u25c4\u2500\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 Management \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2502 \u2502 \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 Content Intelligence \u2502\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u2502\n\u2502 \u2502 Layout \u2502 \u2502 PlaceKitten \u2502 \u2502\n\u2502 \u2502 Intelligence \u2502 \u2502 Processing \u2502 \u2502\n\u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## \ud83c\udfa8 Supported Markdown Layouts\n\n### \u2705 Currently Implemented\n- **Title Slide** - Opening slide with title and subtitle\n- **Title and Content** - Rich text with headings, paragraphs, bullets\n- **Four Columns** - Quad content areas with structured frontmatter\n- **Two Content** - Side-by-side content areas\n- **Comparison** - Left vs right comparison layout\n- **Table** - Data tables with professional styling\n- **Section Header** - Divider slides between topics\n- **Picture with Caption** - Image-focused slides with smart fallbacks\n\n### \ud83d\udea7 Progressive Implementation (50+ Planned)\n- Big Number displays, SWOT Analysis, Feature Matrix\n- Timeline, Process Flow, Organizational Chart\n- Dashboard, Metrics, Financial layouts\n- And 40+ more business presentation layouts\n\nSee [Supported Templates](docs/Features/SupportedTemplates.md) for complete roadmap.\n\n## \ud83d\udee0\ufe0f Development\n\n### Prerequisites\n- Python 3.11+\n- Virtual environments are recommended.\n\n### Development Install\n\n```bash\ngit clone https://github.com/teknologika/deckbuilder.git\ncd deckbuilder\npython3 -m venv .venv\nsource .venv/bin/activate # Windows: .venv\\Scripts\\activate\npip install -e .[dev]\n```\n\n### Code Quality Standards\n\n```bash\n# Format code (required before commits)\nblack --line-length 100 src/\n\n# Check linting (required)\nflake8 src/ tests/ --max-line-length=100 --ignore=E203,W503,E501\n\n# Run tests (required)\npytest tests/\n```\n\n### Contributing\n\n1. Fork the repository\n2. Create feature branch: `git checkout -b feature-name`\n3. Follow code quality standards\n4. Add comprehensive tests\n5. Submit pull request with clear description\n\n## \ud83d\udcda Documentation\n\n- **[PLANNING.md](PLANNING.md)** - Project architecture and design principles\n- **[TASK.md](TASK.md)** - Current to-do list and planned features\n- **[API Documentation](docs/API.md)** - Complete API reference\n- **[Feature Specifications](docs/Features/)** - Detailed feature documentation\n- **[PlaceKitten Library](src/placekitten/README.md)** - Image processing documentation\n\n## \ud83d\udd27 Technology Stack\n\n- **Python 3.11+** with modern type hints and comprehensive error handling\n- **FastMCP** for Model Context Protocol server implementation\n- **python-pptx** for PowerPoint generation and template manipulation\n- **PyYAML** for structured frontmatter processing\n- **OpenCV + Pillow** for computer vision and image processing\n- **pytest** for unit testing\n- **Anthropic Claude** - for most of the development gruntwork :-)\n\n## \ud83d\udccb Troubleshooting\n\n**Template not found:**\n```bash\n# Create templates folder\ndeckbuilder init\n\n# Check configuration\ndeckbuilder config\n```\n\n**Permission denied when saving:**\n- Verify output folder has write permissions\n- Ensure files aren't open in PowerPoint\n\n**MCP connection failures:**\n- Verify virtual environment is activated\n- Check Python path in Claude Desktop config\n- Ensure all dependencies are installed\n\n## \ud83d\udcc4 License\n\nApache License 2.0 - See [LICENSE](LICENSE) file for details.\n\n---\n\n<div align=\"center\">\n\n**Built with \u2764\ufe0f for intelligent presentation generation - Copyright Bruce McLeod**\n\n[\ud83d\ude80 Get Started](#quick-start) \u2022 [\ud83d\udcd6 Documentation](docs/) \u2022 [\ud83d\udc1b Report Issues](https://github.com/teknologika/deckbuilder/issues)\n\n</div>\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Intelligent PowerPoint presentation generation with content-first design philosophy, PlaceKitten image processing, and comprehensive CLI tools",
"version": "1.1.0",
"project_urls": {
"Bug Reports": "https://github.com/teknologika/deckbuilder/issues",
"Changelog": "https://github.com/teknologika/deckbuilder/releases",
"Documentation": "https://github.com/teknologika/deckbuilder/blob/main/README.md",
"Homepage": "https://github.com/teknologika/deckbuilder",
"Issues": "https://github.com/teknologika/deckbuilder/issues",
"Repository": "https://github.com/teknologika/deckbuilder.git",
"Source Code": "https://github.com/teknologika/deckbuilder"
},
"split_keywords": [
"mcp",
" powerpoint",
" presentations",
" automation",
" content-first",
" template-management",
" image-processing",
" cli"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "09a149af673f2197720a4a173d0524899f3941969b4f1efe4c3cd40f8bbc8a2f",
"md5": "fff4589ddda0d5a878524b254e623ff2",
"sha256": "49aafe255e98da604f8d31284926169287d1668564e6c9b986192ab9e509c7cc"
},
"downloads": -1,
"filename": "deckbuilder-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fff4589ddda0d5a878524b254e623ff2",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 17219898,
"upload_time": "2025-07-09T06:48:53",
"upload_time_iso_8601": "2025-07-09T06:48:53.462723Z",
"url": "https://files.pythonhosted.org/packages/09/a1/49af673f2197720a4a173d0524899f3941969b4f1efe4c3cd40f8bbc8a2f/deckbuilder-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "56c88f8c8ce4ffa814b46b98a3114d7695be697e24b13fb0742304cb35425c36",
"md5": "9c31480785a5089d8c29c313f7fb68bc",
"sha256": "a0ebff67f3bd86485b3618a9339f0fb673642ef7a251a2067c4da212e9011ef3"
},
"downloads": -1,
"filename": "deckbuilder-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "9c31480785a5089d8c29c313f7fb68bc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 17318111,
"upload_time": "2025-07-09T06:48:55",
"upload_time_iso_8601": "2025-07-09T06:48:55.578531Z",
"url": "https://files.pythonhosted.org/packages/56/c8/8f8c8ce4ffa814b46b98a3114d7695be697e24b13fb0742304cb35425c36/deckbuilder-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-09 06:48:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "teknologika",
"github_project": "deckbuilder",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "fastmcp",
"specs": [
[
">=",
"0.3.0"
]
]
},
{
"name": "python-pptx",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
">=",
"1.0.0"
]
]
},
{
"name": "pyyaml",
"specs": [
[
">=",
"6.0.0"
]
]
},
{
"name": "opencv-python",
"specs": [
[
">=",
"4.8.0"
]
]
},
{
"name": "Pillow",
"specs": [
[
">=",
"10.0.0"
]
]
},
{
"name": "numpy",
"specs": [
[
">=",
"1.24.0"
]
]
},
{
"name": "pytest",
"specs": [
[
">=",
"7.0.0"
]
]
},
{
"name": "pytest-cov",
"specs": [
[
">=",
"4.0.0"
]
]
},
{
"name": "pytest-mock",
"specs": [
[
">=",
"3.10.0"
]
]
},
{
"name": "pytest-xdist",
"specs": [
[
">=",
"3.0.0"
]
]
},
{
"name": "pytest-html",
"specs": [
[
">=",
"3.0.0"
]
]
}
],
"lcname": "deckbuilder"
}