PowerPoint Generator
Generate professional PPTX files using python-pptx.
Rules (Mandatory)
- Every presentation MUST have: title slide, agenda/outline, content slides, summary/next-steps slide
- No wall-of-text slides — max 6 bullet points per slide, max 8 words per bullet
- Every data claim gets a chart or table — never present numbers as plain text
- Speaker notes on every slide — full context the presenter needs
- Consistent theme — colors, fonts, and spacing uniform throughout
- File output — always save to a concrete path and confirm it exists
Slide Types
| Type |
When |
Layout |
| Title |
Opening |
Large title + subtitle + date |
| Section |
Chapter break |
Section title + brief description |
| Content |
Key points |
Title + bullets (max 6) |
| Two-Column |
Comparison |
Title + left/right content |
| Chart |
Data |
Title + chart (bar/line/pie) + caption |
| Table |
Structured data |
Title + table + footnote |
| Image |
Visual |
Title + placeholder for image path |
| Quote |
Testimonial |
Large quote + attribution |
| Summary |
Closing |
Key takeaways + next steps |
python-pptx Patterns
from pptx import Presentation
from pptx.util import Inches, Pt, Emu
from pptx.dml.color import RGBColor
from pptx.enum.text import PP_ALIGN, MSO_ANCHOR
from pptx.enum.chart import XL_CHART_TYPE
prs = Presentation()
prs.slide_width = Inches(13.333) # 16:9 widescreen
prs.slide_height = Inches(7.5)
# Add slide
slide_layout = prs.slide_layouts[1] # Title + Content
slide = prs.slides.add_slide(slide_layout)
slide.shapes.title.text = "Slide Title"
# Add chart
chart_data = CategoryChartData()
chart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']
chart_data.add_series('Revenue', (1.2, 1.5, 1.8, 2.3))
slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)
# Speaker notes
slide.notes_slide.notes_text_frame.text = "Full context here"
prs.save("output.pptx")
Workflow
- Structure — outline slides with types and key content
- Theme — set colors, fonts, slide dimensions (default 16:9)
- Build — create slides programmatically
- Charts/Tables — add data visualizations
- Notes — add speaker notes to every slide
- Save — write to file, verify it exists
Install
pip install python-pptx
1---2name: pptx-generator3description: Generate professional PowerPoint presentations from structured content. Slide layouts, themes, charts, tables, speaker notes. Uses python-pptx. Use when creating presentations, pitch decks, reports as slides, or converting content to PPTX format.4---56# PowerPoint Generator78Generate professional PPTX files using `python-pptx`.910## Rules (Mandatory)11121. **Every presentation MUST have**: title slide, agenda/outline, content slides, summary/next-steps slide132. **No wall-of-text slides** — max 6 bullet points per slide, max 8 words per bullet143. **Every data claim gets a chart or table** — never present numbers as plain text154. **Speaker notes on every slide** — full context the presenter needs165. **Consistent theme** — colors, fonts, and spacing uniform throughout176. **File output** — always save to a concrete path and confirm it exists1819## Slide Types2021| Type | When | Layout |22|------|------|--------|23| Title | Opening | Large title + subtitle + date |24| Section | Chapter break | Section title + brief description |25| Content | Key points | Title + bullets (max 6) |26| Two-Column | Comparison | Title + left/right content |27| Chart | Data | Title + chart (bar/line/pie) + caption |28| Table | Structured data | Title + table + footnote |29| Image | Visual | Title + placeholder for image path |30| Quote | Testimonial | Large quote + attribution |31| Summary | Closing | Key takeaways + next steps |3233## python-pptx Patterns3435```python36from pptx import Presentation37from pptx.util import Inches, Pt, Emu38from pptx.dml.color import RGBColor39from pptx.enum.text import PP_ALIGN, MSO_ANCHOR40from pptx.enum.chart import XL_CHART_TYPE4142prs = Presentation()43prs.slide_width = Inches(13.333) # 16:9 widescreen44prs.slide_height = Inches(7.5)4546# Add slide47slide_layout = prs.slide_layouts[1] # Title + Content48slide = prs.slides.add_slide(slide_layout)49slide.shapes.title.text = "Slide Title"5051# Add chart52chart_data = CategoryChartData()53chart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']54chart_data.add_series('Revenue', (1.2, 1.5, 1.8, 2.3))55slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data)5657# Speaker notes58slide.notes_slide.notes_text_frame.text = "Full context here"5960prs.save("output.pptx")61```6263## Workflow64651. **Structure** — outline slides with types and key content662. **Theme** — set colors, fonts, slide dimensions (default 16:9)673. **Build** — create slides programmatically684. **Charts/Tables** — add data visualizations695. **Notes** — add speaker notes to every slide706. **Save** — write to file, verify it exists7172## Install7374```bash75pip install python-pptx76```