> [!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)
[](https://www.python.org/downloads/)
**Create professional PowerPoint presentations from Markdown or JSON**
Deckbuilder is a Python library, Command Line tool, and MCP server that generates PowerPoint presentations from structured content. Focus on your content - Deckbuilder handles the formatting and layout.
## ✨ 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 ability to update the fonts and language of all slide objects using the command line tools using the CLI.
- **Professional Tables**: Custom styling with themes and colors.
- **Supported Layouts**: Progressive library of templates being added.
### 🧠 **Smart Template System**
- **Intelligent Layout Selection**: Automatic layout recommendations based on content type
- **Pattern-Based Architecture**: Customize any layout with your own templates
- **Rich Content Support**: Tables, images, multi-column layouts with professional styling
### 🖼️ **Smart Image Processing**
- **Automatic Image Fallbacks**: Missing images? Deckbuilder generates professional placeholders automatically
- **Smart Cropping**: Face detection and intelligent composition for perfect image sizing
- **Professional Filters**: Business-appropriate styling with grayscale and other effects
### ⚡ **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 customisation
- **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
## 🚀 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 & intelligence
deckbuilder template analyze default --verbose
deckbuilder template validate default
deckbuilder template list
# Smart template recommendations available through MCP tools
# Image generation with crop-first approach
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:
**Option 1: Direct installation (recommended)**
```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
## 🚀 What's New in v1.2.0
### Smart Template Recommendations
- **Content Analysis**: Automatically analyzes your content to suggest the best layouts
- **MCP Integration**: Available through Claude Desktop with intelligent recommendations
### Enhanced Image Processing
- **Better Image Sizing**: Smart cropping ensures images fit perfectly without distortion
- **Automatic Fallbacks**: Professional placeholder images when your images are missing
### Improved Pattern System
- **User Customization**: Create custom layout patterns in `{template_folder}/patterns/`
- **Dynamic Loading**: All layouts now use flexible pattern files instead of hard-coded templates
## 🏗️ Architecture
```
Your Content (Markdown/JSON)
↓
┌─────────────────────┐
│ Content Analysis │ ← Analyzes your content type and audience
└─────────┬───────────┘
↓
┌─────────────────────┐
│ Template Selection │ ← Recommends best layouts for your content
└─────────┬───────────┘
↓
┌─────────────────────┐
│ PowerPoint Engine │ ← Generates professional presentations
└─────────┬───────────┘
↓
Your Professional Presentation
```
## 🎨 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 [Feature Documentation](docs/old_docs/Features/) for detailed specifications.
## 🛠️ 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
- **[Complete Documentation](docs/)** - Full documentation index
- **[Supported Templates](docs/supported_templates.md)** - Complete layout library (26+ patterns)
- **[Deckbuilder Library](docs/deckbuilder.md)** - Python API reference and classes
- **[Command-Line Interface](docs/cli.md)** - CLI commands and usage examples
- **[MCP Server](docs/mcp_server.md)** - Smart template recommendations and MCP tools
- **[PlaceKitten Library](docs/placekitten.md)** - Image processing with crop-first approach
- **[PlaceKitten Source](src/placekitten/README.md)** - Technical implementation details
## 🔧 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/b8/b7/29a8101094ff8b853a7eb063d99f00e42dd8f6b6f5886a48f87cb4711582/deckbuilder-1.2.7.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[](https://www.python.org/downloads/)\n\n**Create professional PowerPoint presentations from Markdown or JSON**\n\nDeckbuilder is a Python library, Command Line tool, and MCP server that generates PowerPoint presentations from structured content. Focus on your content - Deckbuilder handles the formatting and layout.\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 ability to update the fonts and language of all slide objects using the command line tools using the CLI.\n- **Professional Tables**: Custom styling with themes and colors.\n- **Supported Layouts**: Progressive library of templates being added.\n\n### \ud83e\udde0 **Smart Template System**\n- **Intelligent Layout Selection**: Automatic layout recommendations based on content type\n- **Pattern-Based Architecture**: Customize any layout with your own templates\n- **Rich Content Support**: Tables, images, multi-column layouts with professional styling\n\n### \ud83d\uddbc\ufe0f **Smart Image Processing**\n- **Automatic Image Fallbacks**: Missing images? Deckbuilder generates professional placeholders automatically\n- **Smart Cropping**: Face detection and intelligent composition for perfect image sizing\n- **Professional Filters**: Business-appropriate styling with grayscale and other effects\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 customisation\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## \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 & intelligence\ndeckbuilder template analyze default --verbose\ndeckbuilder template validate default\ndeckbuilder template list\n\n# Smart template recommendations available through MCP tools\n\n# Image generation with crop-first approach\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**Option 1: Direct installation (recommended)**\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**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## \ud83d\ude80 What's New in v1.2.0\n\n### Smart Template Recommendations\n- **Content Analysis**: Automatically analyzes your content to suggest the best layouts\n- **MCP Integration**: Available through Claude Desktop with intelligent recommendations\n\n### Enhanced Image Processing \n- **Better Image Sizing**: Smart cropping ensures images fit perfectly without distortion\n- **Automatic Fallbacks**: Professional placeholder images when your images are missing\n\n### Improved Pattern System\n- **User Customization**: Create custom layout patterns in `{template_folder}/patterns/`\n- **Dynamic Loading**: All layouts now use flexible pattern files instead of hard-coded templates\n\n## \ud83c\udfd7\ufe0f Architecture\n\n```\n Your Content (Markdown/JSON)\n \u2193\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Content Analysis \u2502 \u2190 Analyzes your content type and audience\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2193\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Template Selection \u2502 \u2190 Recommends best layouts for your content\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2193\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 PowerPoint Engine \u2502 \u2190 Generates professional presentations\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2193\n Your Professional Presentation\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 [Feature Documentation](docs/old_docs/Features/) for detailed specifications.\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- **[Complete Documentation](docs/)** - Full documentation index\n- **[Supported Templates](docs/supported_templates.md)** - Complete layout library (26+ patterns)\n- **[Deckbuilder Library](docs/deckbuilder.md)** - Python API reference and classes\n- **[Command-Line Interface](docs/cli.md)** - CLI commands and usage examples\n- **[MCP Server](docs/mcp_server.md)** - Smart template recommendations and MCP tools\n- **[PlaceKitten Library](docs/placekitten.md)** - Image processing with crop-first approach\n- **[PlaceKitten Source](src/placekitten/README.md)** - Technical implementation details\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": "Microsoft PowerPoint, presentation slide library, MCP server and CLI tools. Designed for LLM generation of PPTX slides.",
"version": "1.2.7",
"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": "651efaeb45cd87e7cdd5465af8e3fab6a35c68a93030cba0db6963cf941c7d4b",
"md5": "093e7f576b871bf976d1b5b1a74a7c05",
"sha256": "714d5dfe3ead7d81e573992d75075795eac7d4f5fb7bc36614d0300f418aa426"
},
"downloads": -1,
"filename": "deckbuilder-1.2.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "093e7f576b871bf976d1b5b1a74a7c05",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 17266776,
"upload_time": "2025-07-20T10:15:00",
"upload_time_iso_8601": "2025-07-20T10:15:00.219307Z",
"url": "https://files.pythonhosted.org/packages/65/1e/faeb45cd87e7cdd5465af8e3fab6a35c68a93030cba0db6963cf941c7d4b/deckbuilder-1.2.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "b8b729a8101094ff8b853a7eb063d99f00e42dd8f6b6f5886a48f87cb4711582",
"md5": "d6070f4870b46fa90a2681646b4e0d72",
"sha256": "0cd17f762f53c5a077059f2c13fdeb4ce5ad615774c107644a231eca04483133"
},
"downloads": -1,
"filename": "deckbuilder-1.2.7.tar.gz",
"has_sig": false,
"md5_digest": "d6070f4870b46fa90a2681646b4e0d72",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 17371773,
"upload_time": "2025-07-20T10:15:02",
"upload_time_iso_8601": "2025-07-20T10:15:02.987532Z",
"url": "https://files.pythonhosted.org/packages/b8/b7/29a8101094ff8b853a7eb063d99f00e42dd8f6b6f5886a48f87cb4711582/deckbuilder-1.2.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-20 10:15:02",
"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"
}