Converts PPT/PPTX/PDF files into a ready-to-present package: per-slide images + narration scripts.
Two jobs only:
Output is a folder that Claw Body can load for presentation playback with digital avatar narration.
This skill is designed to pair with the claw-body skill (digital avatar). The workflow:
Typical usage:
> ⚠️ Make sure the claw-body skill is also installed if you want avatar-powered presentation playback.
When user says anything like:
Do NOT use this skill when user just says "讲PPT" without preparation — that implies they want to present, and they should use Claw Body's presentation mode with an already-prepared folder.
If user didn't provide a file path, ask:
> "请告诉我PPT/PDF文件的路径,例如 ~/Desktop/我的演讲.pptx"
Wait for user to provide the path before proceeding.
Run the parse script to extract slides and text:
python3 <skill-dir>/scripts/parse-presentation.py "<file-path>"
This creates:
<workspace>/presentations/<filename>/
presentation.json — metadata, per-slide text, notes
slides/
001.png, 002.png, ...
After parsing, read presentation.json. For each slide:
slide.script is already filled (from speaker notes) → keep it, but optionally polishslide.script is empty → generate natural narration based on slide.title and slide.contentAsk the user (if not specified):
After generating all scripts, update presentation.json — fill in the script field for each slide, then write back:
# Read, update scripts, write back
import json
with open('<output-dir>/presentation.json', 'r') as f:
data = json.load(f)
for slide in data['slides']:
if not slide['script']:
slide['script'] = '<your generated narration>'
with open('<output-dir>/presentation.json', 'w') as f:
json.dump(data, f, ensure_ascii=False, indent=2)
Show a summary:
> 📊 演讲稿准备完成!
> - 文件: xxx.pptx
> - 共 12 页,其中 3 页使用了原始备注,9 页已生成演讲词
> - 风格: 轻松分享
> - 输出目录: presentations/xxx/
>
> 你可以:
> - 预览/修改某页的演讲词
> - 在 Claw Body 中说"讲解 presentations/xxx" 开始演讲
> - 或直接在这里文字预览
presentation.json structure:
{
"source": "filename.pptx",
"total_pages": 12,
"output_dir": "/path/to/presentations/filename",
"slides": [
{
"page": 1,
"title": "封面",
"content": ["标题文字", "副标题"],
"notes": "原始备注",
"has_notes": true,
"image": "slides/001.png",
"script": "各位好,今天我来跟大家分享..."
}
]
}
Run the setup script to install all dependencies:
bash <skill-dir>/setup.sh
Or install manually:
pip3 install python-pptx Pillow pdf2image pdfplumber
poppler (required — converts PDF to images):
| Platform | Command |
|---|---|
| ---------- | --------- |
| macOS (Homebrew) | brew install poppler |
| Debian / Ubuntu | sudo apt-get install -y poppler-utils |
| Fedora / RHEL | sudo dnf install -y poppler-utils |
| Arch | sudo pacman -S poppler |
LibreOffice (optional — high-fidelity PPTX→image conversion):
| Platform | Command |
|---|---|
| ---------- | --------- |
| macOS (Homebrew) | brew install --cask libreoffice |
| Debian / Ubuntu | sudo apt-get install -y libreoffice |
| Other | libreoffice.org/download |
> Without LibreOffice, PPTX slides will fall back to simple text rendering (lower quality images).
python3 -c "import pptx; print('python-pptx ✅')"
python3 -c "from PIL import Image; print('Pillow ✅')"
python3 -c "from pdf2image import convert_from_path; print('pdf2image ✅')"
which pdftoppm && echo "poppler ✅"
which soffice && echo "LibreOffice ✅" || echo "LibreOffice ❌ (optional)"
共 1 个版本