/product-video
Turn product photos or a store URL into a polished product video with Pexo. Upload your product images (or download from a link, then upload) and Pexo composes the shots, adds motion, music, and transitions, and returns a publish-ready clip for your listing, ads, or socials. Use
$ npx -y skills add pexoai/pexo-skills --skill product-video --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/product-video
Context preview
The summary Claude sees to decide when to auto-load this skill.
Turn product photos or a store URL into a polished product video with Pexo. Upload your product images (or download from a link, then upload) and Pexo composes the shots, adds motion, music, and transitions, and returns a publish-ready clip for your listing, ads, or socials. Use
SKILL.md
product-video.SKILL.mdname: product-video
description: >
Turn product photos or a store URL into a polished product video with Pexo. Upload your product
images (or download from a link, then upload) and Pexo composes the shots, adds motion, music,
and transitions, and returns a publish-ready clip for your listing, ads, or socials. Use for
e-commerce/product clips: "product video", "video for my product", "ecommerce video", "video
from product photos". NOT for explainer or non-product content.
homepage: https://pexo.ai
repository: https://github.com/pexoai/pexo-skills
version: "0.1.0"
requires:
env: [PEXO_API_KEY, PEXO_BASE_URL]
runtime: [curl, jq, file]
metadata:
author: pexoai
Product Video — Pexo
**Pexo:** https://pexo.ai — get an API key, watch your project render, and buy credits there.
Turn a product's photos into a polished, publish-ready video. You upload the user's product images and relay the request to the hosted Pexo agent, then deliver the result — Pexo composes the shots, motion, and music.
Your role: relay, don't create
Create a project, send the user's request **verbatim**, poll, deliver. Pexo's backend handles all creative work — scriptwriting, model choice, prompts, music. Adding your own direction (duration, style, models the user didn't ask for) overrides its judgment and produces worse videos.
Config
`~/.pexo/config`:
PEXO_BASE_URL="https://pexo.ai"
PEXO_API_KEY="sk-<your-api-key>"
**No account / first run →** read `references/SETUP-CHECKLIST.md` and walk the user through it — it carries the signup flow with the **invite code that grants new users bonus credits**, plus how to create the config above. **Config error →** run `scripts/pexo-doctor.sh` and follow its output.
Workflow
Scripts live in this skill's `scripts/`. Reply to the user in their language.
1. **Create a project:** `pexo-project-create.sh "<short brief>"` → save the `project_id`. 2. **Upload any files** the user gave: `pexo-upload.sh <project_id> <path>` → save `asset_id`, reference it inline as `<original-image>asset_id</original-image>` (or `<original-video>` / `<original-audio>`). Tags are required — a bare `asset_id` is ignored. Pexo can't crawl URLs — download, then upload. 3. **Send the request:** `pexo-chat.sh <project_id> "<user's exact words> <asset tags>"`. Copy the user's words exactly; only add asset tags. 4. **Tell the user** (their language): submitted ✓ · ~15–20 min · `https://pexo.ai/project/<project_id>`. 5. **Poll:** every ≥60s run `pexo-project-get.sh <project_id>` and act on `nextAction`:
- **WAIT** → keep polling; every ~5 polls send a one-line update with the project link.
- **RESPOND** → handle each event in `recentMessages`: relay Pexo's text (wait for the
user's answer if it asked, then `pexo-chat.sh` their reply); for `preview_video`, run `pexo-asset-get.sh <project_id> <assetId>` per option, show the URLs (A/B/C), let the user pick, then `pexo-chat.sh <project_id> "<choice>" --choice <assetId>`; for a `document` event, mention it to the user.
- **DELIVER** → `pexo-asset-get.sh <project_id> <final assetId>`, then send the user the
**full** asset URL as plain text — all `?…` query params, never truncated or wrapped in markdown — plus the project link.
- **FAILED** → explain `nextActionHint` in plain terms and offer to retry.
- **RECONNECT** → `pexo-chat.sh <project_id> "continue"`, tell the user the connection
dropped and you're resuming, then keep polling.
- Never call `pexo-chat.sh` during WAIT — it triggers duplicate production.
- **Taking too long** → if it's been >30 min and still WAIT, tell the user (with the project
link + `https://pexo.ai/connect/openclaw`) it's running long; ask whether to keep waiting or stop. Don't poll forever.
Revisions
After delivery, the user's tweaks ("make it shorter", "new music", "different shot") reuse the **same** project: `pexo-chat.sh <project_id> "<their feedback>"`, then poll again (step 5). Never create a new project for a revision — it throws away Pexo's server-side context.
Credits
If a script fails with "Credits balance" / "Insufficient credits": if the error carries a purchase link, pass it to the user; otherwise tell them to add credits at `https://pexo.ai/home` → Credits → Buy Credits. Retry after they confirm.
Example
User: "Make a 20-second product video from these three sneaker photos."
pid=$(pexo-project-create.sh "sneaker product video")
pexo-chat.sh "$pid" "Make a 20-second product video from these three sneaker photos."
# Tell the user: submitted, ~15–20 min, https://pexo.ai/project/$pid
# Poll pexo-project-get.sh "$pid" until nextAction is DELIVER, then deliver the asset URL.
Scripts
| Script | Usage | Returns | |---|---|---| | `pexo-project-create.sh` | `"<brief>"` | `project_id` | | `pexo-upload.sh` | `<project_id> <file>` | `asset_id` | | `pexo-chat.sh` | `<project_id> "<message>" [--choice <id>]` | ack (async) | | `pexo-project-get.sh` | `<project_id>` | JSON: `nextAction`, `recentMessages` | | `pexo-asset-get.sh` | `<project_id> <asset_id>` | JSON with `url` | | `pexo-doctor.sh` | — | setup diagnostic |
Error codes and edge cases → `references/TROUBLESHOOTING.md`.
Read more
name: product-video description: > Turn product photos or a store URL into a polished product video with Pexo. Upload your product images (or download from a link, then upload) and Pexo composes the shots, adds motion, music, and transitions, and returns a publish-ready clip for your listing, ads, or socials. Use for e-commerce/product clips: "product video", "video for my product", "ecommerce video", "video from product photos". NOT for explainer or non-product content. homepage: https://pexo.ai repository: https://github.com/pexoai/pexo-skills version: "0.1.0" requires: env: [PEXO_API_KEY, PEXO_BASE_URL] runtime: [curl, jq, file] metadata: author: pexoai
Product Video — Pexo
**Pexo:** https://pexo.ai — get an API key, watch your project render, and buy credits there.
Turn a product's photos into a polished, publish-ready video. You upload the user's product images and relay the request to the hosted Pexo agent, then deliver the result — Pexo composes the shots, motion, and music.
Your role: relay, don't create
Create a project, send the user's request **verbatim**, poll, deliver. Pexo's backend handles all creative work — scriptwriting, model choice, prompts, music. Adding your own direction (duration, style, models the user didn't ask for) overrides its judgment and produces worse videos.
Config
`~/.pexo/config`:
PEXO_BASE_URL="https://pexo.ai" PEXO_API_KEY="sk-<your-api-key>"
**No account / first run →** read `references/SETUP-CHECKLIST.md` and walk the user through it — it carries the signup flow with the **invite code that grants new users bonus credits**, plus how to create the config above. **Config error →** run `scripts/pexo-doctor.sh` and follow its output.
Workflow
Scripts live in this skill's `scripts/`. Reply to the user in their language.
1. **Create a project:** `pexo-project-create.sh "<short brief>"` → save the `project_id`. 2. **Upload any files** the user gave: `pexo-upload.sh <project_id> <path>` → save `asset_id`, reference it inline as `<original-image>asset_id</original-image>` (or `<original-video>` / `<original-audio>`). Tags are required — a bare `asset_id` is ignored. Pexo can't crawl URLs — download, then upload. 3. **Send the request:** `pexo-chat.sh <project_id> "<user's exact words> <asset tags>"`. Copy the user's words exactly; only add asset tags. 4. **Tell the user** (their language): submitted ✓ · ~15–20 min · `https://pexo.ai/project/<project_id>`. 5. **Poll:** every ≥60s run `pexo-project-get.sh <project_id>` and act on `nextAction`:
- **WAIT** → keep polling; every ~5 polls send a one-line update with the project link.
- **RESPOND** → handle each event in `recentMessages`: relay Pexo's text (wait for the
user's answer if it asked, then `pexo-chat.sh` their reply); for `preview_video`, run `pexo-asset-get.sh <project_id> <assetId>` per option, show the URLs (A/B/C), let the user pick, then `pexo-chat.sh <project_id> "<choice>" --choice <assetId>`; for a `document` event, mention it to the user.
- **DELIVER** → `pexo-asset-get.sh <project_id> <final assetId>`, then send the user the
**full** asset URL as plain text — all `?…` query params, never truncated or wrapped in markdown — plus the project link.
- **FAILED** → explain `nextActionHint` in plain terms and offer to retry.
- **RECONNECT** → `pexo-chat.sh <project_id> "continue"`, tell the user the connection
dropped and you're resuming, then keep polling.
- Never call `pexo-chat.sh` during WAIT — it triggers duplicate production.
- **Taking too long** → if it's been >30 min and still WAIT, tell the user (with the project
link + `https://pexo.ai/connect/openclaw`) it's running long; ask whether to keep waiting or stop. Don't poll forever.
Revisions
After delivery, the user's tweaks ("make it shorter", "new music", "different shot") reuse the **same** project: `pexo-chat.sh <project_id> "<their feedback>"`, then poll again (step 5). Never create a new project for a revision — it throws away Pexo's server-side context.
Credits
If a script fails with "Credits balance" / "Insufficient credits": if the error carries a purchase link, pass it to the user; otherwise tell them to add credits at `https://pexo.ai/home` → Credits → Buy Credits. Retry after they confirm.
Example
User: "Make a 20-second product video from these three sneaker photos."
pid=$(pexo-project-create.sh "sneaker product video") pexo-chat.sh "$pid" "Make a 20-second product video from these three sneaker photos." # Tell the user: submitted, ~15–20 min, https://pexo.ai/project/$pid # Poll pexo-project-get.sh "$pid" until nextAction is DELIVER, then deliver the asset URL.
Scripts
| Script | Usage | Returns | |---|---|---| | `pexo-project-create.sh` | `"<brief>"` | `project_id` | | `pexo-upload.sh` | `<project_id> <file>` | `asset_id` | | `pexo-chat.sh` | `<project_id> "<message>" [--choice <id>]` | ack (async) | | `pexo-project-get.sh` | `<project_id>` | JSON: `nextAction`, `recentMessages` | | `pexo-asset-get.sh` | `<project_id> <asset_id>` | JSON with `url` | | `pexo-doctor.sh` | — | setup diagnostic |
Error codes and edge cases → `references/TROUBLESHOOTING.md`.
A collection of open-source Agent Skills for content creation — images, audio, and video.
Other skills on pexo-skills.
- /ai-video-generation
Generate AI video from any input — text, image, or script — with Pexo. Auto-routes each shot to the best of 10+ models (Seedance, Kling, Veo, Sora, and more), writes the prompts, generates every shot, and returns a finished video with music and subtitles. Use for any AI video
Open skill - /explainer-video
Create an explainer video with narration using Pexo. Describe your product, concept, or process and Pexo writes the script, generates visuals shot by shot, adds TTS voiceover and captions, and assembles a clear, finished explainer. Use for explainer/tutorial content: "explainer
Open skill - /founder-video
Make a founder video with Pexo — built for solo founders and small teams. Describe your story, product, or pitch (or paste your site) and Pexo writes the script, generates the shots, picks the models, and returns a finished, publish-ready founder video with music — for
Open skill - /image-to-video
Animate a still image into a finished, moving video with Pexo. Upload a photo and Pexo adds natural motion, camera moves, and transitions, auto-picks the best image-to-video model (Seedance, Kling, Wan, and more), and returns a publish-ready clip with music. Use when the user
Open skill - /launch-video
Make a launch video for your startup or product with Pexo. Describe your product (or paste your landing-page URL or a screenshot) and Pexo writes the script, generates every shot, picks the models, and returns a finished, publish-ready launch video with music — built for Product
Open skill - /make-a-video
Make a complete video from a simple idea with Pexo. Describe what you want in plain words and Pexo handles everything — script, shots, model selection, music, subtitles, and final editing — and returns a publish-ready video. Use when the user just wants to make a video: "make a
Open skill

