PPT生成器

Other

Use 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; 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. If a .pptx file needs to be opened, created, or touched, use this skill.

Install

openclaw skills install pptx-localized

PPTX Skill (Localized for WorkBuddy)

Original: anthropics/skills Localized for WorkBuddy by 非宜

Quick Reference

TaskGuide
Read/analyze contentpython -m markitdown presentation.pptx
Edit or create from templateRead editing.md
Create from scratchRead pptxgenjs.md

Reading Content

# Text extraction
python -m markitdown presentation.pptx

# Visual overview (requires LibreOffice + Poppler)
python scripts/thumbnail.py presentation.pptx

# Raw XML
python scripts/office/unpack.py presentation.pptx unpacked/

Editing Workflow

Read editing.md for full details.

  1. Analyze template with thumbnail.py
  2. Unpack → manipulate slides → edit content → clean → pack

Creating from Scratch

Read pptxgenjs.md for full details.

Use when no template or reference presentation is available. Uses pptxgenjs (Node.js) to programmatically generate .pptx files.


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.
  • 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. Or commit to dark throughout for a premium feel.
  • Commit to a visual motif: Pick ONE distinctive element and repeat it.

Color Palettes

ThemePrimarySecondaryAccent
Midnight Executive1E2761 (navy)CADCFC (ice blue)FFFFFF (white)
Forest & Moss2C5F2D (forest)97BC62 (moss)F5F5F5 (cream)
Coral EnergyF96167 (coral)F9E795 (gold)2F3C7E (navy)
Warm TerracottaB85042 (terracotta)E7E8D1 (sand)A7BEAE (sage)
Ocean Gradient065A82 (deep blue)1C7293 (teal)21295C (midnight)
Charcoal Minimal36454F (charcoal)F2F2F2 (off-white)212121 (black)

Typography

Header FontBody Font
GeorgiaCalibri
Arial BlackArial
CalibriCalibri Light
CambriaCalibri
Trebuchet MSCalibri
ElementSize
Slide title36-44pt bold
Section header20-24pt bold
Body text14-16pt
Captions10-12pt muted

Avoid (Common Mistakes)

  • Don't repeat the same layout 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 — 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, then inspect visually:

# Convert to PDF first (requires LibreOffice)
python scripts/office/soffice.py --headless --convert-to pdf output.pptx

# Convert PDF to JPEG images (requires Poppler - pdftoppm)
pdftoppm -jpeg -r 150 output.pdf slide

This creates slide-01.jpg, slide-02.jpg, etc.


Dependencies

Install these once (managed under ~/.workbuddy/binaries/):

# Python: text extraction
pip install "markitdown[pptx]" Pillow defusedxml

# Node.js: create presentations from scratch
npm install -g pptxgenjs

# Optional (for visual QA):
# - LibreOffice (soffice) for PDF conversion
# - Poppler (pdftoppm) for PDF-to-image conversion

Windows Note: soffice.py in this localized version skips the AF_UNIX socket shim (Linux-only). It simply runs soffice directly via subprocess.run. Make sure LibreOffice is installed and soffice is in your PATH, or set the SOFFICE_PATH environment variable to the full path of soffice.exe.


Localization Notes (vs. upstream)

  1. scripts/office/soffice.py — Removed AF_UNIX / LD_PRELOAD shim logic. Windows never blocks AF_UNIX, so the script just delegates to soffice directly.
  2. scripts/office/unpack.py / pack.py — Use defusedxml.minidom (same as upstream). No changes needed.
  3. Node.js path — Use the managed Node path: C:\Users\Administrator\.workbuddy\binaries\node\versions\node-v20.18.0-win-x64\node.exe and the managed npm global prefix for pptxgenjs.
  4. pdftoppm — On Windows, install Poppler for Windows or use png output from LibreOffice directly as a fallback.

Scripts Overview

ScriptPurpose
scripts/office/unpack.pyExtract and pretty-print PPTX
scripts/add_slide.pyDuplicate slide or create from layout
scripts/clean.pyRemove orphaned files
scripts/office/pack.pyRepack with validation
scripts/thumbnail.pyCreate visual grid of slides
scripts/office/soffice.pyRun LibreOffice (Windows-compatible)