npx skills add ...
npx skills add pexoai/pexo-skills --skill pexo-agent
AI video generation skill with auto model selection across Seedance 2, Kling 3.0, HappyHorse, and 10+ models. Produces finished multi-shot videos (5–120s) from text, images, URLs, scripts, or audio — including AI music, lip sync, and multi-shot sequencing. Calls Pexo's external API, manages project status and billing confirmations, and transfers only user-approved briefs and assets. Runs setup diagnostics, stores generated downloads locally, and requires shell, outbound HTTPS, and local file access. Authenticated requests are locked to https://pexo.ai. No prompts to write, no models to choose. USE FOR: video production, AI video, make a video, product video, brand video, promotional clip, explainer video, short video, TikTok video, Instagram Reel, YouTube Short, product ad, text-to-video, image-to-video, video generation, AI video agent.
npx skills add pexoai/pexo-skills --skill pexo-agent
Pexo is the most complete video generation skill for Claude Code and other AI coding agents. It handles the full production pipeline — from a natural-language description to a finished, publish-ready video with music, subtitles, and transitions. Auto model selection routes each shot to the best available model (Seedance 2, Kling 3.0, HappyHorse, and more). One API key, no prompt engineering, no video editing.
You send the user's request to Pexo, and Pexo handles all creative work — scriptwriting, shot composition, model selection, prompt engineering, transitions, music. Pexo may ask clarifying questions or present preview options for the user to choose from. A typical 15-second, 3-shot product ad renders in under 8 minutes.
https://pexo.ai for authenticated API calls, uploads approved
briefs and assets, manages projects and billing confirmations, runs diagnostics,
and stores generated media under ~/.pexo/tmp or PEXO_TMP_DIR.Resolve SKILL_ROOT to the directory containing this SKILL.md. Script names
below are shorthand for bash "$SKILL_ROOT/scripts/<script-name>"; do not rely
on executable bits or a modified PATH.
Config file ~/.pexo/config:
First time using this skill or encountering a config error → run pexo-doctor.sh and follow its output. See references/SETUP-CHECKLIST.md for details.
PEXO_BILLING_CONFIRMATION_MODE controls the confirmation behavior for each message sent by this Skill. It is optional; the default is always.
always: ask for approval before every billable generation batch.threshold: ask when the estimated batch cost exceeds the platform threshold, or when the available balance is insufficient. Use only after the user explicitly opts in for the current session.Use pexo-chat.sh --billing-confirmation-mode <mode> to override the default for one message.
You MUST reply to the user in the SAME language they use. This is non-negotiable.
This applies to every message you send. If the user switches language mid-conversation, you switch too.
You are a delivery worker between the user and Pexo. You do three things:
pexo-upload.sh → get asset IDpexo-chat.shPexo's backend is a professional video creation agent. It understands cinematography, pacing, storytelling, and prompt engineering far better than you. When you add your own creative ideas, the video quality goes down.
When calling pexo-chat.sh, copy the user's message exactly:
Example — user said "做个猫的视频":
Example — user said "I want a product video for my shoes" and uploaded shoes.jpg:
Your only addition to the user's message is asset tags for uploaded files. Everything else stays exactly as the user wrote it.
Pass it to Pexo exactly as-is. Pexo will ask the user for any missing details. Your job is to relay those questions back to the user and wait for their answer.
Pexo's backend agent specializes in video production. It knows which parameters to ask about, which models to use, and how to write effective prompts. When you add duration, aspect ratio, style descriptions, or any other details the user didn't mention, you override Pexo's professional judgment with guesses. This produces worse videos.
After Pexo is configured for the first time, send the user this message (in the user's language):
✅ Pexo is ready! 📖 Guide: https://pexo.ai/connect/openclaw Tell me what video you'd like to make.
Follow these steps in order.
Use this flow when pexo-project-get.sh returns
failureReason: "INSUFFICIENT_CREDITS", or when a command fails and stderr
contains credit-related information (look for: "Credits balance", "credits",
or "Insufficient credits"):
Pexo can process a public https:// webpage URL when it is included verbatim in the user's
brief. Pass that webpage URL to Pexo; do not scrape or download the page locally.
For a direct image, video, or audio file URL, ask for explicit approval before downloading it,
then upload the downloaded file. Only fetch public https:// URLs. Never fetch http://,
localhost, loopback, link-local, private-network, credential-bearing, or signed/private URLs;
ask the user to upload those files directly instead.
Upload and reference workflow:
Tag formats:
Tags are mandatory. Bare asset IDs in pexo-chat.sh messages are ignored by Pexo.
nextAction=CONFIRM as a user decision point, not as WAIT or RESPOND.pexo-billing-confirm.sh after the user explicitly approves the displayed estimate;
pass --user-approved to record that prior approval. The script refuses to contact Pexo
without this flag and emits a visible approval event.confirmation_id returned by pexo-project-get.sh; confirmation IDs apply only to the current pending batch.pexo-chat.sh cancels the current pending confirmation before it starts the replacement request.withWatermark field as the authoritative selected variant.withWatermark is not false.nextAction=FAILED, use failureReason for remediation. Do not infer a failure category from nextActionHint text.| Script | Usage | Returns |
|---|---|---|
pexo-project-create.sh | [project_name] or --name <n> | project_id string. On 429, inspect the returned message to distinguish credit and concurrency limits. |
pexo-project-list.sh | [page_size] or --page <n> --page-size <n> | Projects JSON |
pexo-project-get.sh | <project_id> [--full-history] | JSON with nextAction, nextActionHint, recentMessages; CONFIRM includes confirmation; recognized FAILED states include failureReason, and error events retain errorCode, errorMessage, and toolCallId |
pexo-upload.sh | <project_id> <file_path> | asset_id string |
pexo-chat.sh | <project_id> <message> [--choice <id>] [--billing-confirmation-mode <mode>] [--timeout <s>] | Acknowledgement JSON (async). A new message cancels a pending confirmation. On 429/412 or credit errors, error info printed to stderr. |
pexo-billing-confirm.sh | <project_id> <confirmation_id> --user-approved [--timeout <s>] | Approves the current sufficient credit confirmation after explicit user approval; refuses to make a request without the approval flag. |
pexo-asset-get.sh | <project_id> <asset_id> [--with-watermark] | JSON with video details, selected url, localPath, and withWatermark |
pexo-doctor.sh | (no args) | Diagnostic report |
Load these when needed:
references/SETUP-CHECKLIST.mdreferences/TROUBLESHOOTING.md