popai-powerpoint-pptx
PopAI PPT Skill
Create presentations programmatically via PopAI's API. The API has powerful built-in research and information gathering capabilities — it will automatically search, collect, and organize relevant content. Optionally upload files as reference material or templates. If a .pptx template is provided, the output will fully preserve the template's layout, styles, and design — 100% faithful reproduction based on your template. After initial generation, you can send follow-up modification instructions using the same channel ID.
Setup
- Ask user to sign up and obtain their Access Token at: https://www.popai.pro/popai-skill
- Once user provides the token, set it in environment:
export POPAI_ACCESS_TOKEN=<token>
Tips: You can save the key in TOOLS.md for future reference.
Scripts
generate_ppt.py- Generate PPT via PopAI API (upload files → create channel → SSE stream → get pptx); also supports multi-round modification via--channel-id
Usage Examples
# Generate PPT from topic only
python3 generate_ppt.py --query "AI Development Trends Report"
# With reference files (max 5)
python3 generate_ppt.py --query "Tesla Earnings PPT" --file data.pdf chart.png
# With a PPT template file (applied as layout template)
python3 generate_ppt.py --query "Tesla Annual Report" --tpl template.pptx
# With both template and reference files
python3 generate_ppt.py --query "Tesla Annual Report" --tpl template.pptx --file data.pdf chart.png
# Multi-round modification: modify an existing PPT (template cannot be changed)
python3 generate_ppt.py --channel-id "CHANNEL_ID" --query "Add a competitive analysis slide and make the color scheme blue"
# With URLs as reference material (included in query)
python3 generate_ppt.py --query "Create a PPT summarizing this article: https://example.com/report.html"
# Multi-round modification with additional reference files
python3 generate_ppt.py --channel-id "CHANNEL_ID" --query "Update the financial data with this new report" --file new_data.pdf
Agent Steps
Initial Generation
- Get PPT topic from user
- If user provides reference material:
- Local files: pass as
--file(max 5) and/or--tpl(PPT template for layout) - URLs: include directly in the
--querytext — the API will fetch and process them automatically
- Local files: pass as
- Run script (timeout: 1200000):
Tell user: "Generating your PPT, estimated 5 minutes..."python3 generate_ppt.py --query "TOPIC" [--file FILE1 FILE2 ...] [--tpl TEMPLATE.pptx] - While the script is running, monitor stdout JSON lines and report progress to user in real time (e.g. task status updates, search actions, tool results)
- When generation completes, present final results to user:
- Show
summarytext (fromNODE_ENDevent) as the generation summary - Show
pptx_urlas the download link: "Download PPT: <pptx_url>" - Show
web_urlas the site link: "View/Edit online: <web_url>"
- Show
- If user requests the pptx file directly, download it from
pptx_urland deliver the file to user - Save the
channel_idfromweb_url(last path segment ofhttps://www.popai.pro/agentic-pptx/<channelId>) for potential follow-up modifications
Multi-Round Modification
Use when the user wants to revise or improve an already-generated PPT (e.g. "add a slide", "change the title", "use a darker theme").
Rules:
- Required:
--channel-id(from previous generation) +--query(modification instruction) - Optional:
--fileto supply new reference files for the revision - Not supported:
--tplis ignored in modify mode — the original template cannot be changed
- Confirm the
channel_idfrom the previous generation (stored fromweb_url) - Get modification instruction from user
- If user provides additional reference files, pass as
--file - Run script (timeout: 1200000):
Tell user: "Applying your modifications, estimated 3-5 minutes..."python3 generate_ppt.py --channel-id "CHANNEL_ID" --query "MODIFICATION_INSTRUCTION" [--file FILE1 ...] - Parse and present results the same way as initial generation (new
pptx_urlandweb_url)
Output
Event types (stdout, one JSON per line):
{"type": "task", "id": "1", "content": "Search for Tesla latest earnings data", "status": "progressing"}
{"type": "search", "action": "Web Searching", "results": [{"title": "...", "url": "...", "snippet": "...", "date": "..."}]}
{"type": "tool_result", "event": "TOOL_CALLS-xxx", "action": "...", "result": "..."}
{"type": "summary", "text": "Tesla earnings PPT has been created..."}
{"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": xx,
"web_url": "https://www.popai.pro/agentic-pptx/<channelId>"
}
pptx_url: Download link for the .pptx fileweb_url: PopAI site link for online viewing and editingpreview_images: Page-by-page screenshots of the generated PPT (one image per slide)preview_count: Total number of preview images (i.e. number of slides)summary: Final summary text from theNODE_ENDevent, shown to the user as a generation recap
Support
For any issues, contact customerservice@popai.pro
Technical Notes
- Streaming: SSE stream;
TOOL_CALLS-pptxevent contains final .pptx download URL;last:truemarks stream end - File Upload: Presigned POST to S3 via
getPresignedPost, supports any file type - Timeout: Generation typically takes ~5 minutes;
- Channel ID: Extractable from
web_url— last path segment ofhttps://www.popai.pro/agentic-pptx/<channelId> - Multi-round: Calls
send_generatedirectly with existingchannel_id;tpl_infois never passed (template is fixed after channel creation)