Presentation creation, editing, and analysis. When Claude needs to work with presentations (.pptx files) for: (1) Creating new presentations, (2) Modifying or editing content, (3) Working with layouts, (4) Adding comments or speaker notes, or any other presentation tasks
Quickly determine which workflow applies to your situation:
python -m markitdown presentation.pptxThree approaches for pulling information out of a .pptx file:
Plain-text extraction:
python -m markitdown presentation.pptx
Slide thumbnail overview:
python scripts/thumbnail.py presentation.pptx
Underlying XML inspection:
python scripts/office/unpack.py presentation.pptx unpacked/
Full instructions live in editing.md. The condensed version:
thumbnail.pyFull instructions live in pptxgenjs.md.
Choose this path when there is no existing file or reference deck to work from.
Boring slides are unacceptable. White backgrounds with plain bullet points produce forgettable presentations. Apply the following guidance to every slide you build.
| Decision | Guidance | |----------|----------| | Palette selection | Colors must speak to the subject matter. If they could transfer to an unrelated topic unchanged, they are not distinctive enough. | | Weight hierarchy | One dominant hue (60–70%), one or two supporting tones, one high-contrast accent. Equal distribution looks amateur. | | Background rhythm | Alternate light and dark backgrounds — dark bookends (opener + closer) with lighter body slides, or fully dark for premium aesthetics. | | Visual motif | Commit to one recurring treatment (circular image masks, colored icon badges, heavy one-sided borders) carried through every slide. |
Pick hues appropriate to the topic. Generic blue is a last resort.
| Name | Primary | Secondary | Accent |
|------|---------|-----------|--------|
| Deep Night | 1E2761 (navy) | CADCFC (ice blue) | FFFFFF (white) |
| Woodland | 2C5F2D (forest) | 97BC62 (moss) | F5F5F5 (cream) |
| Vibrant Coral | F96167 (coral) | F9E795 (gold) | 2F3C7E (navy) |
| Earth Tone | B85042 (terracotta) | E7E8D1 (sand) | A7BEAE (sage) |
| Deep Sea | 065A82 (deep blue) | 1C7293 (teal) | 21295C (midnight) |
| Graphite | 36454F (charcoal) | F2F2F2 (off-white) | 212121 (black) |
| Aquatic Trust | 028090 (teal) | 00A896 (seafoam) | 02C39A (mint) |
| Wine & Linen | 6D2E46 (berry) | A26769 (dusty rose) | ECE2D0 (cream) |
| Eucalyptus | 84B59F (sage) | 69A297 (eucalyptus) | 50808E (slate) |
| Crimson Impact | 990011 (cherry) | FCF6F5 (off-white) | 2F3C7E (navy) |
No slide should exist without a visual component — whether that is an image, chart, icon, or decorative shape.
Arrangement patterns:
Data presentation:
Finishing touches:
Avoid defaulting to Arial. Select a header typeface with character, paired with a clean body font.
| Heading | Body | |---------|------| | Georgia | Calibri | | Arial Black | Arial | | Calibri | Calibri Light | | Cambria | Calibri | | Trebuchet MS | Calibri | | Impact | Arial | | Palatino | Garamond | | Consolas | Calibri |
Sizing scale:
| Role | Size | |------|------| | Main slide heading | 36–44pt bold | | Subheading | 20–24pt bold | | Paragraph text | 14–16pt | | Footnotes/captions | 10–12pt muted |
Treat each item as a hard constraint. Violating any one degrades the final result.
| Mistake | Why it fails | Fix |
|---------|-------------|-----|
| Monotonous layouts | Viewer fatigue | Alternate between columns, card grids, and callout styles |
| Centered body copy | Reduces readability | Left-align running text; reserve centering for titles only |
| Weak size contrast | Hierarchy collapses | Titles must be 36pt+ vs 14–16pt body |
| Automatic blue | Generic appearance | Choose palette colors that suit the specific topic |
| Inconsistent spacing | Visual noise | Pick 0.3″ or 0.5″ gaps and apply uniformly |
| Partial styling | Looks unfinished | Commit fully to a visual system or keep it minimal throughout |
| Walls of text | Unreadable | Supplement every slide with imagery, icons, charts, or shapes |
| Ignoring text-box padding | Misalignment | Set margin: 0 or offset to compensate for default padding |
| Poor contrast | Illegible content | Ensure strong contrast — light-on-light or dark-on-dark is unreadable |
| Accent lines beneath titles | Machine-generated look | Prefer whitespace or background color separation |
Start with the assumption that something is wrong. Your task is to identify it.
First drafts are virtually never error-free. Treat QA as a bug-hunting exercise rather than a rubber stamp. Finding zero issues on the first pass means you have not looked carefully enough.
python -m markitdown output.pptx
Verify completeness, correctness, and ordering of all slide content.
When working from templates, scan for residual placeholder text:
python -m markitdown output.pptx | grep -iE "xxxx|lorem|ipsum|this.*(page|slide).*layout"
Any matches must be resolved before the presentation is considered done.
Delegate to subagents — even for decks with only 2–3 slides. After spending time deep in the code, you will see what you expect rather than what actually rendered. Fresh eyes catch more.
Render slides to images (see Rendering to Images), then provide subagents with this prompt:
Examine these slide images carefully. Work under the assumption that problems exist — your job is to locate them.
Check for:
- Overlapping content (text bleeding through shapes, lines crossing words, stacked items)
- Truncated or overflowing text at edges or container boundaries
- Decorative elements sized for single-line headings that now wrap to two lines
- Source attributions or footers colliding with body content
- Cramped spacing (< 0.3" between elements) or unbalanced whitespace
- Content pushed too close to slide edges (< 0.5" margin)
- Misaligned columns or parallel elements
- Hard-to-read text (light text on pale backgrounds, etc.)
- Hard-to-see icons (dark icons against dark backgrounds without contrasting circles)
- Overly narrow text boxes causing excessive line wrapping
- Unreplaced placeholder content
For every slide, enumerate any concerns — even minor ones.
Inspect the following images:
1. /path/to/slide-01.jpg (Expected: [brief description])
2. /path/to/slide-02.jpg (Expected: [brief description])
Report everything you find.
Do not declare the work finished until at least one fix-then-verify cycle has completed.
Convert the final .pptx into per-slide images for visual review:
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide
This produces slide-01.jpg, slide-02.jpg, and so on.
To re-render only specific slides after corrections:
pdftoppm -jpeg -r 150 -f N -l N output.pdf slide-fixed
pip install "markitdown[pptx]" — text extractionpip install Pillow — thumbnail generationnpm install -g pptxgenjs — scratch presentation creationsoffice) — PDF conversion (sandboxed environments handled automatically by scripts/office/soffice.py)pdftoppm) — PDF-to-image conversionSearch for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer