$npx -y skills add pexoai/pexo-skills --skill videoagent-video-studioGenerate short AI videos from text or images — text-to-video, image-to-video, and reference-based generation — with zero API key setup. Use when the user wants to create a video clip, animate an image, or generate video from a description.
| 1 | # 🎬 VideoAgent Video Studio |
| 2 | |
| 3 | **Use when:** User asks to generate a video, create a video from text, animate an image, make a short clip, or produce AI video. |
| 4 | |
| 5 | Generate short AI videos with 7 backends. This skill picks the right mode (text-to-video or image-to-video), enhances the prompt for best results, and returns the video URL. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Quick Reference |
| 10 | |
| 11 | | User Intent | Mode | Typical Duration | |
| 12 | |-------------|------|------------------| |
| 13 | | "Make a video of..." (no image) | `text-to-video` | 4–10 s | |
| 14 | | "Animate this image" / "Make this move" | `image-to-video` | 4–6 s | |
| 15 | | "Turn this into a video with..." | `image-to-video` | 4–6 s | |
| 16 | | Cinematic, story, ad | Prefer `text-to-video` with detailed prompt | 5–10 s | |
| 17 | |
| 18 | ### Generation Modes |
| 19 | |
| 20 | | Mode | Description | Models | |
| 21 | |------|-------------|--------| |
| 22 | | **text-to-video** | Text prompt only → video | minimax, kling, veo, hunyuan, grok, seedance | |
| 23 | | **image-to-video** | Single image + prompt → animated clip | minimax, kling, veo, pixverse, grok, seedance | |
| 24 | | **reference-based** | Reference images/video → consistent output | minimax, kling, veo, hunyuan, grok, seedance | |
| 25 | |
| 26 | ### Models (use `--model <id>`) |
| 27 | |
| 28 | | Model ID | T2V | I2V | Reference | Notes | |
| 29 | |----------|-----|-----|-----------|-------| |
| 30 | | `minimax` | ✅ | ✅ | ✅ | Subject reference image, character consistency | |
| 31 | | `kling` | ✅ | ✅ | ✅ | Multi-element / character / keyframe (O3) | |
| 32 | | `veo` | ✅ | ✅ | ✅ | Google Veo 3.1, multiple reference images | |
| 33 | | `hunyuan` | ✅ | — | ✅ | Video-to-video style transfer | |
| 34 | | `pixverse` | — | ✅ | — | Stylized image-to-video | |
| 35 | | `grok` | ✅ | ✅ | ✅ | Video editing via reference video | |
| 36 | | `seedance` | ✅ | ✅ | ✅ | Seedance 1.5 Pro, synchronized audio, 4–12 s | |
| 37 | |
| 38 | Full model details and endpoint reference: [references/models.md](references/models.md). |
| 39 | |
| 40 | --- |
| 41 | |
| 42 | ## How to Generate a Video |
| 43 | |
| 44 | ### Step 1 — Choose mode and enhance the prompt |
| 45 | |
| 46 | - **Text-to-video**: Expand with subject, action, camera movement, lighting, and style. Be specific about motion (e.g. "camera slowly zooms in", "character walks left to right"). |
| 47 | - **Image-to-video**: Describe the motion to apply to the image (e.g. "gentle breeze in the hair", "camera pans across the scene"). See [references/prompt_guide.md](references/prompt_guide.md) for patterns. |
| 48 | |
| 49 | ### Step 2 — Run the script |
| 50 | |
| 51 | **Text-to-video:** |
| 52 | ```bash |
| 53 | node {baseDir}/tools/generate.js \ |
| 54 | --mode text-to-video \ |
| 55 | --prompt "<enhanced prompt>" \ |
| 56 | --duration <seconds> \ |
| 57 | --aspect-ratio <ratio> |
| 58 | ``` |
| 59 | |
| 60 | **Image-to-video:** |
| 61 | ```bash |
| 62 | node {baseDir}/tools/generate.js \ |
| 63 | --mode image-to-video \ |
| 64 | --prompt "<motion description>" \ |
| 65 | --image-url "<public image URL>" \ |
| 66 | --duration <seconds> \ |
| 67 | --aspect-ratio <ratio> |
| 68 | ``` |
| 69 | |
| 70 | **Parameters:** |
| 71 | |
| 72 | | Parameter | Default | Description | |
| 73 | |-----------|---------|-------------| |
| 74 | | `--mode` | `text-to-video` | `text-to-video` or `image-to-video` | |
| 75 | | `--prompt` | *(required)* | Scene or motion description | |
| 76 | | `--image-url` | — | Required for `image-to-video`; public image URL | |
| 77 | | `--duration` | `5` | Length in seconds (typically 4–10) | |
| 78 | | `--aspect-ratio` | `16:9` | `16:9`, `9:16`, `1:1`, `4:3`, `3:4` | |
| 79 | | `--model` | `auto` | Model ID (e.g. `kling`, `veo`, `grok`, `seedance`); `auto` = proxy picks | |
| 80 | |
| 81 | **Other commands:** |
| 82 | |
| 83 | | Command | Description | |
| 84 | |---------|-------------| |
| 85 | | `node tools/generate.js --list-models` | List available models from the proxy | |
| 86 | | `node tools/generate.js --status --job-id <id>` | Check async job status | |
| 87 | |
| 88 | ### Step 3 — Return the result |
| 89 | |
| 90 | The script returns JSON: |
| 91 | |
| 92 | ```json |
| 93 | { |
| 94 | "success": true, |
| 95 | "mode": "text-to-video", |
| 96 | "videoUrl": "https://...", |
| 97 | "duration": 5, |
| 98 | "aspectRatio": "16:9" |
| 99 | } |
| 100 | ``` |
| 101 | |
| 102 | Send `videoUrl` to the user. |
| 103 | |
| 104 | --- |
| 105 | |
| 106 | ## Example Conversations |
| 107 | |
| 108 | **User:** "Generate a short video of a cat walking in the rain, cinematic." |
| 109 | |
| 110 | ```bash |
| 111 | node {baseDir}/tools/generate.js \ |
| 112 | --mode text-to-video \ |
| 113 | --prompt "A cat walking through rain, wet streets, neon reflections, cinematic lighting, slow motion, 4K" \ |
| 114 | --duration 5 \ |
| 115 | --aspect-ratio 16:9 |
| 116 | ``` |
| 117 | |
| 118 | --- |
| 119 | |
| 120 | **User:** "Animate this photo" *(user uploads a landscape)* |
| 121 | |
| 122 | ```bash |
| 123 | node {baseDir}/tools/generate.js \ |
| 124 | --mode image-to-video \ |
| 125 | --prompt "Gentle clouds moving across the sky, subtle grass movement, cinematic atmosphere" \ |
| 126 | --image-url "https://..." \ |
| 127 | --duration 5 \ |
| 128 | --aspect-ratio 16:9 |
| 129 | ``` |
| 130 | |
| 131 | --- |
| 132 | |
| 133 | **User:** "Make a 10-second vertical vi |