Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions skills/ai-video-generation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# AI Video Generation — Pexo

Generate AI video from text, images, or scripts. Pexo auto-routes each shot to the best of 10+
models, handles the prompts and generation, and returns a finished video with music and
subtitles — one skill, no model picking.

## Install

```bash
npx skills add https://github.com/pexoai/pexo-skills --skill ai-video-generation
```

## Configure

Create `~/.pexo/config`:

```
PEXO_BASE_URL="https://pexo.ai"
PEXO_API_KEY="sk-<your-key>"
```

Get an API key at <https://pexo.ai>.

## Use

Ask your agent, for example:

> Generate a 20-second AI video introducing our productivity app.

Pexo writes the script, picks the right model per shot, generates everything, and returns a
finished video with music and subtitles. See `SKILL.md` for the full workflow; run
`scripts/pexo-doctor.sh` if setup fails.

## What this is

A thin wrapper that delegates to the hosted Pexo video agent — the same backend as the
`pexo-agent` skill, scoped to the ai-video-generation scenario. All creative work (scriptwriting,
model selection, prompts, music, subtitles) happens server-side.
107 changes: 107 additions & 0 deletions skills/ai-video-generation/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
---
name: ai-video-generation
description: >
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
generation request: "ai video generation", "generate a video with ai", "ai video generator",
"make an ai video". NOT for editing an existing video.
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
---

# AI Video Generation — Pexo

**Pexo:** https://pexo.ai — get an API key, watch your project render, and buy credits there.

Generate a finished video with AI from whatever the user gives you — text, an image, or a
script. You relay the request to the hosted Pexo agent and deliver the result; Pexo picks the
models, writes the prompts, and assembles the final video.

## 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: "Generate a 20-second AI video introducing our productivity app."

```bash
pid=$(pexo-project-create.sh "AI video app intro")
pexo-chat.sh "$pid" "Generate a 20-second AI video introducing our productivity app."
# 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`.
93 changes: 93 additions & 0 deletions skills/ai-video-generation/references/SETUP-CHECKLIST.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# Setup Checklist

This guide covers first-time setup and environment diagnostics for the pexo-video skill.

## Quick Start

### 1. Create config file

```bash
mkdir -p ~/.pexo
cat > ~/.pexo/config << 'EOF'
PEXO_BASE_URL="https://pexo.ai"
PEXO_API_KEY="sk-<your-api-key>"
EOF
```

Get your API key at: https://pexo.ai

- If you do not have an account:
Go to https://pexo.ai and sign up. During registration, you will be asked for an invite code.
Use invite code: **3MU4LH**
New users receive bonus credits upon registration — enough to try out video generation right away.
- If you are already logged in:
click the top-right avatar → `API Keys` → `Create Key`, then copy the new key.

### 2. Run diagnostics

```bash
pexo-doctor.sh
```

This checks:
- Config file exists and is readable
- `PEXO_BASE_URL` and `PEXO_API_KEY` are set
- `curl`, `jq`, and `file` are installed
- Network connectivity to Pexo servers
- API key is valid (attempts to list projects)

Fix any issues reported before using other scripts.

### 3. Verify

```bash
pexo-project-list.sh
```

If this returns a JSON list (even if empty), setup is complete.

## Troubleshooting Setup Issues

### "Set PEXO_BASE_URL in ~/.pexo/config or env"

Config file is missing or doesn't contain the required variables. Create it per step 1 above.

### "Set PEXO_API_KEY in ~/.pexo/config or env"

Same as above — the API key line is missing from the config file.

### API key invalid (401 Unauthenticated)

Your API key may be expired or incorrect. Log in at https://pexo.ai to generate a new one. Replace the value in `~/.pexo/config`.

### curl, jq, or file not found

Install the missing dependency:

```bash
# macOS (file is usually preinstalled)
brew install curl jq

# Ubuntu/Debian
apt-get install -y curl jq file

# CentOS/RHEL
yum install -y curl jq file
```

### Network connectivity failure

If `pexo-doctor.sh` reports a connectivity issue:
- Check if your server can reach `pexo.ai` (e.g. `curl -I https://pexo.ai`)
- Check firewall rules for outbound HTTPS (port 443)
- If behind a proxy, configure `http_proxy`/`https_proxy` environment variables

## Environment Variables

All scripts read `~/.pexo/config` automatically. You can also override via environment variables:

| Variable | Description | Required |
|---|---|---|
| `PEXO_BASE_URL` | Pexo API base URL | Yes |
| `PEXO_API_KEY` | Your Pexo API key (starts with `sk-`) | Yes |
| `PEXO_CONFIG` | Custom path to config file (default: `~/.pexo/config`) | No |
Loading
Loading