popai-powerpoint-pptx
Create presentations (PPT) using PopAI API. Use when asked to create slides, presentations, decks, or PPT content. Has built-in research capabilities — just pass a topic. Supports uploading reference files (pptx/pdf/docx/images). Supports user's own pptx template with 100% layout fidelity. Also supports multi-round modifications to an existing PPT.
How do I install this agent skill?
npx skills add https://github.com/popaiofficial/popai-presentation-slides --skill popai-powerpoint-pptxIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill allows users to generate PowerPoint presentations via the PopAI API. It is functionally legitimate and utilizes the vendor's own infrastructure (popai.pro and associated S3 buckets) for storage and processing. A low-risk finding is noted regarding indirect prompt injection, as the skill processes external URLs and user-supplied documents which could potentially contain adversarial instructions.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · 1 issue
What does this agent skill do?
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)
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/popaiofficial/popai-presentation-slides/popai-powerpoint-pptx">View popai-powerpoint-pptx on skillZs</a>