| name | pptx |
| description | Use this skill any time a .pptx file is involved — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file; editing, modifying, or updating existing presentations; combining or splitting slide files; working with templates, layouts, speaker notes, or comments. Trigger whenever the user mentions 'deck,' 'slides,' 'presentation,' or references a .pptx filename. |
| license | Proprietary. LICENSE.txt has complete terms |
PPTX Skill
Quick Reference
Reading Content
python -m markitdown presentation.pptx
python scripts/thumbnail.py presentation.pptx
python scripts/unpack.py presentation.pptx unpacked/
Editing Workflow
Read references/editing.md for OOXML editing details.
- Analyze template with
thumbnail.py
- Unpack → manipulate slides → edit content → clean → pack
Creating from Scratch
Two approaches:
Creating from a Template
Detailed workflow using inventory.py, rearrange.py, and replace.py:
-
Extract template text AND create visual thumbnail grid:
python -m markitdown template.pptx > template-content.md
python scripts/thumbnail.py template.pptx
-
Analyze template and save inventory:
python scripts/inventory.py working.pptx text-inventory.json
-
Duplicate, reorder, and delete slides:
python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
-
Apply text replacements:
python scripts/replace.py working.pptx replacement-text.json output.pptx
Design Ideas
Don't create boring slides. Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide.
Before Starting
- Pick a bold, content-informed color palette: The palette should feel designed for THIS topic. If swapping your colors into a completely different presentation would still "work," you haven't made specific enough choices.
- Dominance over equality: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent.
- Dark/light contrast: Dark backgrounds for title + conclusion slides, light for content ("sandwich" structure).
- Commit to a visual motif: Pick ONE distinctive element and repeat it — rounded image frames, icons in colored circles, thick single-side borders.
Color Palettes
| Theme | Primary | Secondary | Accent |
|---|
| Midnight Executive | 1E2761 (navy) | CADCFC (ice blue) | FFFFFF (white) |
| Forest & Moss | 2C5F2D (forest) | 97BC62 (moss) | F5F5F5 (cream) |
| Coral Energy | F96167 (coral) | F9E795 (gold) | 2F3C7E (navy) |
| Warm Terracotta | B85042 (terracotta) | E7E8D1 (sand) | A7BEAE (sage) |
| Ocean Gradient | 065A82 (deep blue) | 1C7293 (teal) | 21295C (midnight) |
| Charcoal Minimal | 36454F (charcoal) | F2F2F2 (off-white) | 212121 (black) |
| Teal Trust | 028090 (teal) | 00A896 (seafoam) | 02C39A (mint) |
| Berry & Cream | 6D2E46 (berry) | A26769 (dusty rose) | ECE2D0 (cream) |
Typography
| Header Font | Body Font |
|---|
| Georgia | Calibri |
| Arial Black | Arial |
| Trebuchet MS | Calibri |
| Impact | Arial |
| Element | Size |
|---|
| Slide title | 36-44pt bold |
| Section header | 20-24pt bold |
| Body text | 14-16pt |
| Captions | 10-12pt muted |
Avoid
- Don't repeat the same layout — vary columns, cards, and callouts across slides
- Don't center body text — left-align paragraphs and lists; center only titles
- Don't default to blue — pick colors that reflect the specific topic
- Don't create text-only slides — add images, icons, charts, or visual elements
- NEVER use accent lines under titles — hallmark of AI-generated slides; use whitespace or background color instead
QA (Required)
Assume there are problems. Your job is to find them.
Content QA
python -m markitdown output.pptx
Check for missing content, typos, wrong order. When using templates, check for leftover placeholder text:
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
Visual QA
Convert slides to images and inspect for overlapping elements, text overflow, contrast issues, and positioning problems. See Converting to Images.
Verification Loop
- Generate slides → Convert to images → Inspect
- List issues found (if none found, look again more critically)
- Fix issues
- Re-verify affected slides — one fix often creates another problem
- Repeat until a full pass reveals no new issues
Do not declare success until you've completed at least one fix-and-verify cycle.
Scripts
| Script | Purpose |
|---|
unpack.py | Extract and pretty-print PPTX |
pack.py | Repack with validation |
validate.py | Validate PPTX XML against schemas |
add_slide.py | Duplicate slide or create from layout |
clean.py | Remove orphaned files |
thumbnail.py | Create visual grid of slides |
inventory.py | Extract text inventory from presentation |
rearrange.py | Duplicate, reorder, and delete slides |
replace.py | Apply text replacements to shapes |
html2pptx.js | Convert HTML slides to PowerPoint |
Converting to Images
Convert presentations to individual slide images for visual inspection:
python scripts/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
This creates slide-01.jpg, slide-02.jpg, etc.
To re-render specific slides after fixes:
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
Dependencies
pip install "markitdown[pptx]" - text extraction
pip install Pillow - thumbnail grids
npm install -g pptxgenjs - creating from scratch (PptxGenJS approach)
npm install -g playwright - HTML rendering (html2pptx approach)
- LibreOffice (
soffice) - PDF conversion (via scripts/soffice.py)
- Poppler (
pdftoppm) - PDF to images
pip install defusedxml - secure XML parsing