| name | creating-presentations |
| description | Creates, edits, and analyzes PowerPoint presentations (.pptx files), including slide design, chart and table insertion, HTML-to-PPTX conversion, and template-based generation. Activates when the user works with .pptx files or requests presentation authoring. |
PowerPoint (.pptx) Guide
This guide covers creating, editing, and analyzing PowerPoint presentations. For HTML-to-PPTX conversion, see html2pptx.md. For OOXML technical details, see ooxml.md.
Workflows Overview
| Task | Approach | Reference |
|---|
| Read/analyze slides | Markdown conversion or raw XML | This file |
| Create from HTML | html2pptx library | html2pptx.md |
| Create from template | Python scripts | This file |
| Edit existing PPTX | Unpack/modify/repack | ooxml.md |
Important: .pptx files are ZIP archives containing XML and resources.
Reading & Analysis
Convert to Markdown
markitdown presentation.pptx > slides.md
Access Raw XML
python ooxml/scripts/unpack.py presentation.pptx unpacked/
cat unpacked/ppt/slides/slide1.xml
cat unpacked/ppt/notesSlides/notesSlide1.xml
Create Thumbnail Grid
python scripts/thumbnail.py presentation.pptx thumbnails/
Creates a visual grid showing all slides for quick analysis.
Creating New Presentations
Using html2pptx (Recommended)
- Create HTML slides with proper dimensions
- Convert using html2pptx library
- Add charts/data programmatically
See html2pptx.md for complete guide.
Using Template
python scripts/inventory.py template.pptx > inventory.json
python scripts/replace.py template.pptx replacements.json output.pptx
Design Principles
Required
- State design approach before writing code
- Use web-safe fonts only: Arial, Helvetica, Times New Roman, Georgia, Courier New, Verdana, Tahoma, Trebuchet MS
- Ensure text contrast ratio ≥ 4.5:1 for readability
- Validate output immediately after creation
Recommended
- Content-informed design (colors/style match topic)
- Consistent visual hierarchy across slides
- Maximum 6 bullet points per slide
- Meaningful use of whitespace
Example Color Palettes
Choose palette based on content:
| Style | Background | Primary | Secondary | Accent |
|---|
| Corporate | FFFFFF | 2C3E50 | 34495E | 3498DB |
| Creative | F5F5F5 | E74C3C | F39C12 | 9B59B6 |
| Tech | 1A1A2E | 16213E | 0F3460 | E94560 |
| Nature | F0F4F0 | 27AE60 | 2ECC71 | 16A085 |
| Elegant | FAF9F5 | 141413 | B0AEA5 | D97757 |
Supporting Scripts
thumbnail.py
Creates thumbnail grids for visual analysis.
python scripts/thumbnail.py input.pptx output_dir/ [--columns 5]
inventory.py
Extracts all text shapes with properties.
python scripts/inventory.py input.pptx > inventory.json
Output includes:
- Slide number and shape ID
- Text content and formatting
- Position (x, y) and dimensions
- Overflow detection
replace.py
Applies text replacements from JSON.
python scripts/replace.py input.pptx replacements.json output.pptx
Replacements format:
{
"slide_1": {
"shape_2": "New title text",
"shape_5": "Updated bullet points"
}
}
rearrange.py
Duplicates, reorders, or deletes slides.
python scripts/rearrange.py input.pptx operations.json output.pptx
Operations format (0-indexed):
{
"operations": [
{"action": "duplicate", "source": 0, "count": 2},
{"action": "delete", "index": 5},
{"action": "move", "from": 3, "to": 1}
]
}
validate.py
Validates PPTX structure and content.
python ooxml/scripts/validate.py output.pptx
Checks:
- XML well-formedness
- Required files present
- Relationship integrity
- Content overflow
Editing Existing Presentations
Workflow
- Unpack:
python ooxml/scripts/unpack.py input.pptx unpacked/
- Modify: Edit XML files directly
- Validate:
python ooxml/scripts/validate.py unpacked/
- Repack:
python ooxml/scripts/pack.py unpacked/ output.pptx
Common Modifications
- Text changes: Edit
<a:t> elements in slide XML
- Add images: Add to
ppt/media/, update relationships
- Reorder slides: Modify
presentation.xml <p:sldIdLst>
See ooxml.md for detailed XML patterns.
Dependencies
pip install markitdown python-pptx Pillow defusedxml
npm install pptxgenjs playwright sharp
brew install libreoffice poppler
apt-get install libreoffice poppler-utils
Best Practices
- Always validate output immediately after creation
- Use web-safe fonts to ensure cross-platform compatibility
- Check overflow - text that doesn't fit won't render
- Batch similar operations for efficiency
- Keep unused resources out of final file (fonts, media)
- Test on target platform - PowerPoint vs Keynote vs Google Slides