SkillHub

popai-powerpoint-slides

v1.0.1

Create presentations (PPT) using PopAI API. Use when asked to create slides, presentations, decks, or PPT content via PopAI. Supports uploading reference files (pptx/pdf/docx/images).

Sourced from ClawHub, Authored by zdawang000

Installation

Please help me install the skill `popai-powerpoint-slides` from SkillHub official store. npx skills add zdawang000/popai-powerpoint-slides

PopAI PPT Skill

Create presentations programmatically via PopAI's API. Supports optional file uploads as reference material or templates.

Setup

  1. Get API key from https://www.popai.pro
  2. Store in environment: export POPAI_API_KEY=...

Scripts

  • scripts/generate_ppt.py - Generate PPT via PopAI API (upload files → create channel → SSE stream → get pptx)

Usage Examples

# Generate PPT from topic only
python3 generate_ppt.py --query "人工智能发展趋势报告"

# With a template pptx file
python3 generate_ppt.py --query "特斯拉财报ppt" --file template.pptx

# With multiple reference files (max 5)
python3 generate_ppt.py --query "年度报告" --file template.pptx data.pdf chart.png

Agent Steps

  1. Get PPT topic from user
  2. If user provides local files, pass them via --file (max 5, supports pptx/pdf/docx/images etc.)
  3. Create a temp output file, then run script in background with --output: bash # Step 3a: Create temp file and launch in background OUTFILE="/tmp/popai_ppt_$(date +%s).jsonl" touch "$OUTFILE" bash # Step 3b: Run in background (run_in_background: true, timeout: 600000) cd /Users/Gunnar/popai-python/.claude/skills/popai-presentations && POPAI_API_KEY="$POPAI_API_KEY" python3 scripts/generate_ppt.py --query "TOPIC" [--file FILE1 FILE2 ...] --output "$OUTFILE" Tell user: "PPT正在生成中,预计3-5分钟..."

  4. Poll for progress — periodically read new lines from the output file using Read tool or cat "$OUTFILE", and show progress to user:

  5. task events → show task status updates
  6. search events → show "正在搜索..."
  7. summary event → show generation summary
  8. pptx_ready event → final result (stop polling)
  9. stream_end → generation complete (stop polling) Poll every ~30 seconds until pptx_ready or stream_end appears.

  10. Present final results to user:

  11. Show summary text (from NODE_END event) as the generation summary
  12. Show pptx_url as the download link: "下载PPT: "
  13. Show web_url as the site link: "在线查看/编辑: "

Output

Event types (stdout, one JSON per line):

{"type": "task", "id": "1", "content": "搜索特斯拉最新财报数据", "status": "progressing"}
{"type": "search", "action": "Web Searching", "results": [{"title": "...", "url": "...", "snippet": "...", "date": "..."}]}
{"type": "tool_result", "event": "TOOL_CALLS-xxx", "action": "...", "result": "..."}
{"type": "summary", "text": "已完成特斯拉财报PPT的创建..."}
{"type": "stream_end"}

Final result (is_end: true):

{
  "type": "pptx_ready",
  "is_end": true,
  "pptx_url": "https://popai-file-boe.s3-accelerate.amazonaws.com/.../xxx.pptx",
  "file_name": "xxx.pptx",
  "preview_images": ["https://...0.jpeg"],
  "preview_count": 10,
  "web_url": "https://www.popai.pro/agentic-pptx/<channelId>"
}
  • pptx_url: .pptx文件下载链接
  • web_url: PopAI源站链接,可在线查看和编辑
  • summary: NODE_END事件的最终总结文本,展示给用户作为生成摘要

Technical Notes

  • Streaming: SSE stream; TOOL_CALLS-pptx event contains final .pptx download URL; last:true marks stream end
  • File Upload: Presigned POST to S3 via getPresignedPost, supports any file type
  • Timeout: Generation takes 3-5 minutes