deckbuilder


Namedeckbuilder JSON
Version 1.2.7 PyPI version JSON
download
home_pageNone
SummaryMicrosoft PowerPoint, presentation slide library, MCP server and CLI tools. Designed for LLM generation of PPTX slides.
upload_time2025-07-20 10:15:02
maintainerNone
docs_urlNone
authorBruce McLeod
requires_python>=3.11
licenseApache-2.0
keywords mcp powerpoint presentations automation content-first template-management image-processing cli
VCS
bugtrack_url
requirements fastmcp python-pptx python-dotenv pyyaml opencv-python Pillow numpy pytest pytest-cov pytest-mock pytest-xdist pytest-html
Travis-CI No Travis.
coveralls test coverage No coveralls.
            > [!IMPORTANT]  
> Deckbuilder is currently under active development and should NOT be considered production ready.

# 🎯 Deckbuilder
[![PyPI version](https://badge.fury.io/py/deckbuilder.svg)](https://badge.fury.io/py/deckbuilder)
[![Test Suite](https://github.com/teknologika/deckbuilder/actions/workflows/test.yml/badge.svg)](https://github.com/teknologika/deckbuilder/actions/workflows/test.yml)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](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[![PyPI version](https://badge.fury.io/py/deckbuilder.svg)](https://badge.fury.io/py/deckbuilder)\n[![Test Suite](https://github.com/teknologika/deckbuilder/actions/workflows/test.yml/badge.svg)](https://github.com/teknologika/deckbuilder/actions/workflows/test.yml)\n[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](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"
}
        
Elapsed time: 1.33479s