
Seven different AI video models accessible through a single interface with zero API setup required. Handles both text-to-video and image-to-video generation, automatically enhances prompts for better results, and supports specific model selection when you need Google Veo's quality or Kling's character consistency. The proxy approach means you can generate clips immediately without hunting down API keys for minimax, seedance, grok, and the rest. Output is typically 4-10 seconds at common aspect ratios. Honestly quite convenient when you need to quickly test video generation ideas or animate static images without the usual API credential maze.
$ npx -y skills add pexoai/pexo-skills --skill videoagent-video-studio --agent claude-codeInstalls into .claude/skills of the current project.
Use when: User asks to generate a video, create a video from text, animate an image, make a short clip, or produce AI video.
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.
| User Intent | Mode | Typical Duration |
|---|---|---|
| "Make a video of..." (no image) | text-to-video | 4β10 s |
| "Animate this image" / "Make this move" | image-to-video | 4β6 s |
| "Turn this into a video with..." | image-to-video | 4β6 s |
| Cinematic, story, ad | Prefer text-to-video with detailed prompt | 5β10 s |
| Mode | Description | Models |
|---|---|---|
| text-to-video | Text prompt only β video | minimax, kling, veo, hunyuan, grok, seedance |
| image-to-video | Single image + prompt β animated clip | minimax, kling, veo, pixverse, grok, seedance |
| reference-based | Reference images/video β consistent output | minimax, kling, veo, hunyuan, grok, seedance |
--model <id>)| Model ID | T2V | I2V | Reference | Notes |
|---|---|---|---|---|
minimax | β | β | β | Subject reference image, character consistency |
kling | β | β | β | Multi-element / character / keyframe (O3) |
veo | β | β | β | Google Veo 3.1, multiple reference images |
hunyuan | β | β | β | Video-to-video style transfer |
pixverse | β | β | β | Stylized image-to-video |
grok | β | β | β | Video editing via reference video |
seedance | β | β | β | Seedance 1.5 Pro, synchronized audio, 4β12 s |
Full model details and endpoint reference: references/models.md.
Text-to-video:
node {baseDir}/tools/generate.js \
--mode text-to-video \
--prompt "<enhanced prompt>" \
--duration <seconds> \
--aspect-ratio <ratio>
Image-to-video:
node {baseDir}/tools/generate.js \
--mode image-to-video \
--prompt "<motion description>" \
--image-url "<public image URL>" \
--duration <seconds> \
--aspect-ratio <ratio>
Parameters:
| Parameter | Default | Description |
|---|---|---|
--mode | text-to-video | text-to-video or image-to-video |
--prompt | (required) | Scene or motion description |
--image-url | β | Required for image-to-video; public image URL |
--duration | 5 | Length in seconds (typically 4β10) |
--aspect-ratio | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4 |
--model | auto | Model ID (e.g. kling, veo, grok, seedance); auto = proxy picks |
Other commands:
| Command | Description |
|---|---|
node tools/generate.js --list-models | List available models from the proxy |
node tools/generate.js --status --job-id <id> | Check async job status |
The script returns JSON:
{
"success": true,
"mode": "text-to-video",
"videoUrl": "https://...",
"duration": 5,
"aspectRatio": "16:9"
}
Send videoUrl to the user.
User: "Generate a short video of a cat walking in the rain, cinematic."
node {baseDir}/tools/generate.js \
--mode text-to-video \
--prompt "A cat walking through rain, wet streets, neon reflections, cinematic lighting, slow motion, 4K" \
--duration 5 \
--aspect-ratio 16:9
User: "Animate this photo" (user uploads a landscape)
node {baseDir}/tools/generate.js \
--mode image-to-video \
--prompt "Gentle clouds moving across the sky, subtle grass movement, cinematic atmosphere" \
--image-url "https://..." \
--duration 5 \
--aspect-ratio 16:9
User: "Make a 10-second vertical video of a coffee pour, slow motion."
node {baseDir}/tools/generate.js \
--mode text-to-video \
--prompt "Close-up of coffee pouring into a white cup, slow motion, steam rising, soft lighting, product shot" \
--duration 10 \
--aspect-ratio 9:16
User: "Use Google Veo for a cinematic shot."
node {baseDir}/tools/generate.js \
--mode text-to-video \
--model veo \
--prompt "A dragon flying through cloudy skies, cinematic lighting, 8s" \
--duration 8 \
--aspect-ratio 16:9
User: "Animate this portrait."
node {baseDir}/tools/generate.js \
--mode image-to-video \
--model grok \
--prompt "Gentle smile, subtle head turn" \
--image-url "https://..." \
--duration 5
Zero API keys by default. Requests go through a hosted proxy. Set these for a custom proxy or token:
| Variable | Required | Description |
|---|---|---|
VIDEO_STUDIO_PROXY_URL | No | Proxy base URL |
VIDEO_STUDIO_TOKEN | No | Auth token if the proxy requires it |
Sponsors