A CLI tool for generating PowerPoint presentations programmatically.
Install this tool using uv:
uv tool install nietzscheOr using pip:
pip install nietzscheOr run it directly without installing using uvx:
uvx --from nietzsche power --help# Create a presentation with a template
power create deck.pptx -t Galaxy.pptx --title "My Presentation"
# Generate from YAML/JSON
power generate slides.yaml -o output.pptx -t Galaxy.pptx
# Inspect template layouts
power inspect Galaxy.pptx
# Interactive mode
power new -t Galaxy.pptx| Command | Description |
|---|---|
power create |
Create presentation with title slide |
power generate |
Generate from YAML/JSON specification |
power inspect |
Inspect template layouts and placeholders |
power new |
Interactive presentation builder |
power add |
Add slide to existing presentation |
power remove |
Remove slide by index |
power replace |
Replace {{PLACEHOLDER}} text |
power cloud |
Generate presentations via cloud API |
Generate presentations via REST API:
# Check API health
power cloud health
# Generate via cloud
power cloud generate slides.yaml -o presentation.pptx
# Or use the REST API directly
curl -X POST "https://power-api-944767079044.us-central1.run.app/generate" \
-H "Content-Type: application/json" \
-d '{"title": "My Deck", "slides": [{"type": "content", "title": "Hello", "bullets": ["Point 1"]}]}' \
--output presentation.pptxAPI Documentation: https://power-api-944767079044.us-central1.run.app/
title: Quarterly Report
subtitle: Q4 2024
slides:
- type: section
title: Executive Summary
- type: content
title: Key Points
bullets:
- First point
- Second point
- Third point
- type: table
title: Financial Data
headers: [Metric, Q3, Q4]
data:
- [Revenue, "$2.1M", "$2.6M"]
- [Profit, "$0.7M", "$1.1M"]
- type: chart
title: Sales by Region
chart_type: bar
categories: [North, South, East, West]
series:
2023: [100, 200, 150, 180]
2024: [120, 250, 170, 210]from power import PowerPresentation
# Create with template
ppt = PowerPresentation(template="Galaxy.pptx")
ppt.clear_slides()
# Add slides
ppt.add_title_slide("Welcome", "Subtitle")
ppt.add_content_slide("Agenda", ["Topic 1", "Topic 2", "Topic 3"])
ppt.add_section_slide("Part 1")
# Custom slide with builder
slide = ppt.add_slide(5)
slide.set_title("Data Overview")
slide.add_table(
data=[["A", "100"], ["B", "200"]],
headers=["Item", "Value"]
)
slide.add_bar_chart(
categories=["Q1", "Q2", "Q3", "Q4"],
series_data={"Revenue": [100, 150, 200, 250]}
)
ppt.save("output.pptx")- title: Title slide with optional subtitle
- section: Section header slide
- content: Bullet points slide
- table: Data table slide
- chart: Bar, line, or pie chart (bar, line, pie)
- blank: Empty slide for custom content
- Python 3.9+
- python-pptx
- click
- rich
- pyyaml
- pillow
MIT