$npx -y skills add agentscope-ai/QwenPaw --skill pptx-enUse this skill any time a .pptx file is involved in any way — as input, output, or both. This includes: creating slide decks, pitch decks, or presentations; reading, parsing, or extracting text from any .pptx file (even if the extracted content will be used elsewhere, like in an
| 1 | > **Important:** All `scripts/` paths are relative to this skill directory. |
| 2 | > Run with: `cd {this_skill_dir} && python scripts/...` |
| 3 | > Or use the `cwd` parameter of `execute_shell_command`. |
| 4 | |
| 5 | # PPTX Skill |
| 6 | |
| 7 | ## Prerequisites |
| 8 | |
| 9 | - **markitdown[pptx]**: text extraction from presentations |
| 10 | - **Pillow**: thumbnail grid generation |
| 11 | - **pptxgenjs** (`npm install -g pptxgenjs`): creating presentations from scratch |
| 12 | - **LibreOffice** (`soffice`): presentation-to-PDF conversion |
| 13 | - **pdftoppm** (poppler-utils): PDF-to-image conversion for thumbnail/visual workflows |
| 14 | - If `pdftoppm` is unavailable, a Python fallback path may use `pdf2image`. |
| 15 | - On Windows, dependencies must be installed and available in `PATH`; if missing, report the dependency issue and stop (do not keep retrying). |
| 16 | |
| 17 | ## Quick Reference |
| 18 | |
| 19 | | Task | Guide | |
| 20 | |------|-------| |
| 21 | | Read/analyze content | `python -m markitdown presentation.pptx` | |
| 22 | | Edit or create from template | Read [editing.md](editing.md) | |
| 23 | | Create from scratch | Read [pptxgenjs.md](pptxgenjs.md) | |
| 24 | |
| 25 | --- |
| 26 | |
| 27 | ## Reading Content |
| 28 | |
| 29 | ```bash |
| 30 | # Text extraction |
| 31 | python -m markitdown presentation.pptx |
| 32 | |
| 33 | # Visual overview |
| 34 | python scripts/thumbnail.py presentation.pptx |
| 35 | |
| 36 | # Raw XML |
| 37 | python scripts/office/unpack.py presentation.pptx unpacked/ |
| 38 | ``` |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## Editing Workflow |
| 43 | |
| 44 | **Read [editing.md](editing.md) for full details.** |
| 45 | |
| 46 | 1. Analyze template with `thumbnail.py` |
| 47 | 2. Unpack → manipulate slides → edit content → clean → pack |
| 48 | |
| 49 | --- |
| 50 | |
| 51 | ## Creating from Scratch |
| 52 | |
| 53 | **Read [pptxgenjs.md](pptxgenjs.md) for full details.** |
| 54 | |
| 55 | Use when no template or reference presentation is available. |
| 56 | |
| 57 | --- |
| 58 | |
| 59 | ## Design Ideas |
| 60 | |
| 61 | **Don't create boring slides.** Plain bullets on a white background won't impress anyone. Consider ideas from this list for each slide. |
| 62 | |
| 63 | ### Before Starting |
| 64 | |
| 65 | - **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. |
| 66 | - **Dominance over equality**: One color should dominate (60-70% visual weight), with 1-2 supporting tones and one sharp accent. Never give all colors equal weight. |
| 67 | - **Dark/light contrast**: Dark backgrounds for title + conclusion slides, light for content ("sandwich" structure). Or commit to dark throughout for a premium feel. |
| 68 | - **Commit to a visual motif**: Pick ONE distinctive element and repeat it — rounded image frames, icons in colored circles, thick single-side borders. Carry it across every slide. |
| 69 | |
| 70 | ### Color Palettes |
| 71 | |
| 72 | Choose colors that match your topic — don't default to generic blue. Use these palettes as inspiration: |
| 73 | |
| 74 | | Theme | Primary | Secondary | Accent | |
| 75 | |-------|---------|-----------|--------| |
| 76 | | **Midnight Executive** | `1E2761` (navy) | `CADCFC` (ice blue) | `FFFFFF` (white) | |
| 77 | | **Forest & Moss** | `2C5F2D` (forest) | `97BC62` (moss) | `F5F5F5` (cream) | |
| 78 | | **Coral Energy** | `F96167` (coral) | `F9E795` (gold) | `2F3C7E` (navy) | |
| 79 | | **Warm Terracotta** | `B85042` (terracotta) | `E7E8D1` (sand) | `A7BEAE` (sage) | |
| 80 | | **Ocean Gradient** | `065A82` (deep blue) | `1C7293` (teal) | `21295C` (midnight) | |
| 81 | | **Charcoal Minimal** | `36454F` (charcoal) | `F2F2F2` (off-white) | `212121` (black) | |
| 82 | | **Teal Trust** | `028090` (teal) | `00A896` (seafoam) | `02C39A` (mint) | |
| 83 | | **Berry & Cream** | `6D2E46` (berry) | `A26769` (dusty rose) | `ECE2D0` (cream) | |
| 84 | | **Sage Calm** | `84B59F` (sage) | `69A297` (eucalyptus) | `50808E` (slate) | |
| 85 | | **Cherry Bold** | `990011` (cherry) | `FCF6F5` (off-white) | `2F3C7E` (navy) | |
| 86 | |
| 87 | ### For Each Slide |
| 88 | |
| 89 | **Every slide needs a visual element** — image, chart, icon, or shape. Text-only slides are forgettable. |
| 90 | |
| 91 | **Layout options:** |
| 92 | - Two-column (text left, illustration on right) |
| 93 | - Icon + text rows (icon in colored circle, bold header, description below) |
| 94 | - 2x2 or 2x3 grid (image on one side, grid of content blocks on other) |
| 95 | - Half-bleed image (full left or right side) with content overlay |
| 96 | |
| 97 | **Data display:** |
| 98 | - Large stat callouts (big numbers 60-72pt with small labels below) |
| 99 | - Comparison columns (before/after, pros/cons, side-by-side options) |
| 100 | - Timeline or process flow (numbered steps, arrows) |
| 101 | |
| 102 | **Visual polish:** |
| 103 | - Icons in s |