Skywork-Skills Skywork-ppt
git clone https://github.com/SkyworkAI/Skywork-Skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/SkyworkAI/Skywork-Skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skywork-ppt" ~/.claude/skills/skyworkai-skywork-skills-skywork-ppt && rm -rf "$T"
skywork-ppt/SKILL.mdPPT Write Skill
Four capabilities: generate, template imitation, edit existing PPT, and local file operations.
Prerequisites
API Key Configuration (Required First)
This skill requires a SKYWORK_API_KEY to be configured in OpenClaw.
If you don't have an API key yet, please visit: https://skywork.ai
For detailed setup instructions, see: references/apikey-fetch.md
Privacy & Remote Calls (Read Before Use)
- Remote upload & processing: Layers 1/2/4 upload local files and send the full, verbatim user query to the Skywork service. Avoid sensitive or confidential content unless you trust the remote service and its data handling policies.
- Local-only operations: Layer 3 (local ops) runs entirely on-device and does not call the remote gateway. Use Layer 3 if you need strict local processing.
- Polling behavior: The generation/edit workflows include periodic status polling (about every 5 seconds) while waiting for backend jobs. This is expected.
Routing — Identify the user's intent first
| User intent | Which path |
|---|---|
| Generate a new PPT from a topic, set of requirements or reference files | Layer 1 — Generate |
| Use an existing .pptx as a layout/style template to create a new presentation | Layer 2 — Imitate |
| Edit an existing PPT: modify slides, add slides, change style, split/merge | Layer 4 — Edit |
| Delete / reorder / extract / merge slides in a local file (no backend) | Layer 3 — Local ops |
Environment check (always run this first)
This skill requires Python 3 (>=3.8). Run the following before any script to locate a valid Python binary and install dependencies.
PYTHON_CMD="" for cmd in python3 python python3.13 python3.12 python3.11 python3.10 python3.9 python3.8; do if command -v "$cmd" &>/dev/null && "$cmd" -c "import sys; exit(0 if sys.version_info >= (3,8) else 1)" 2>/dev/null; then PYTHON_CMD="$cmd" break fi done if [ -z "$PYTHON_CMD" ]; then echo "ERROR: Python 3.8+ not found." echo "Install on macOS: brew install python3 or visit https://www.python.org/downloads/" exit 1 fi echo "Found Python: $PYTHON_CMD ($($PYTHON_CMD --version))" $PYTHON_CMD -m pip install -q --break-system-packages python-pptx echo "Dependencies ready."
After this check, replace
with the discoveredpython(e.g.$PYTHON_CMD) in all subsequent commands.python3
Layer 1 — Generate PPT
Steps
- REQUIRED FIRST STEP — Read workflow_generate.md NOW, before taking any other action. After reading, output exactly:
— then proceed.✅ workflow_generate.md loaded. - Environment check — run the check above to get
.$PYTHON_CMD - Upload reference files (if the user provides local files as content source) — parse the file using tool in script/parse_file.py and pass the result to
. See the--files
note below.--files - Web search (required if no relevant content is already in the conversation) — call web_search tool in script to search the topic and distill results into a
file of ≤ 2000 words.reference-file - Run the script:
Important: set exec tool
toyieldMs
(10 minutes).600000 - Deliver — provide the absolute
path and the download URL..pptx
Layer 2 — Imitate PPT (template-based generation)
Steps
- REQUIRED FIRST STEP - Read workflow_imitate.md immidiately before any action you do!!!
- Environment check — run the check above to get
.$PYTHON_CMD - Locate the template — extract the absolute path of the local
from the user's message; ask the user if it's unclear..pptx - Upload the template — upload it and extract
from the output.TEMPLATE_URL - Upload reference files (if the user provides additional local files as content source) — parse the file using tool in script/parse_file.py and pass the result to
. See the--files--files - Web search (required if no relevant content is already in the conversation) — call web_search tool in script to search the new topic and distill results into a
file of ≤ 2000 words.reference-file - Run the script:
Important: set exec tool
toyieldMs
(10 minutes).600000 - Deliver — provide the absolute
path, the download URL, and the template filename used..pptx
Layer 4 — Edit PPT (AI-powered modification)
Use this layer when the user wants to modify an existing PPT using natural language. Requires an OSS/CDN URL of the PPTX (from a previous generation or upload).
Steps
- Detailed workflow - Read workflow_edit.md immediately before any action you do!!!
- Environment check — run the check above to get
.$PYTHON_CMD - Get PPTX URL — from the user's message or upload a local file first.
- Run the script with
:--pptx-url$PYTHON_CMD scripts/run_ppt_write.py "edit instruction" \ --language Chinese \ --pptx-url "https://cdn.example.com/file.pptx" \ -o /absolute/path/output.pptxImportant: set exec tool
toyieldMs
(10 minutes).600000 - Deliver — provide download link, local path, and summary of changes.
Layer 3 — Local file operations
# Inspect slide count and titles $PYTHON_CMD scripts/local_pptx_ops.py info --file my.pptx # Delete slides (1-based index; supports ranges like 3,5,7-9; omit -o to overwrite in place) $PYTHON_CMD scripts/local_pptx_ops.py delete --file my.pptx --slides 3,5,7-9 -o trimmed.pptx # Reorder slides (must list every slide, no omissions) $PYTHON_CMD scripts/local_pptx_ops.py reorder --file my.pptx --order 2,1,4,3,5 # Extract a subset of slides into a new file $PYTHON_CMD scripts/local_pptx_ops.py extract --file my.pptx --slides 1-3 -o subset.pptx # Merge multiple files $PYTHON_CMD scripts/local_pptx_ops.py merge --files a.pptx b.pptx -o merged.pptx
Read workflow_local.md immidiately before any action you do!!!
Error Handling
- Insufficient benefit: When calling scripts (generate, imitate, or edit), the script or log may show a message like
, meaning the user's benefit level does not meet the requirement for this skill.Insufficient benefit. Please upgrade your account at {url}
How to reply when benefit is insufficient
When you detect the above, reply in the user's current language — do not echo the English message. Use this pattern:
- Convey: "Sorry, PPT generation failed. This skill requires upgrading your Skywork membership to use." then a single call-to-action link.
- Format: One short sentence in the user's language + a link like
or the equivalent in their language .[Upgrade now →](url) - URL: Extract the upgrade URL from the log/script output (e.g. the
part).at https://...
Note: Only suggest upgrading when the error is Insufficient benefit. For auth errors like
/NO_TOKEN/INVALID_TOKEN/ “invalid API key”, keep the error code / raw message and guide users to update401. Do not suggest upgrading membership.SKYWORK_API_KEY
Dependencies
- Python 3.8+ (required) —
/python3
must be on PATHpython - Layer 3 local ops:
pip install python-pptx --break-system-packages
(The environment check step installs all required dependencies automatically.)
Which layer to trigger?
| Scenario | Use |
|---|---|
| Generate a PPT from a topic or existing reference files | Layer 1 |
| Imitate the layout/style of an existing .pptx | Layer 2 |
| Edit/modify an existing PPT via natural language | Layer 4 |
| Delete / reorder / extract / merge local .pptx files (no backend) | Layer 3 |