video-generation — Claude Code skill: what it does, how to install
Generates videos via Gemini Veo or MiniMax using structured JSON prompts, optional reference images, and an automated Python script.
npx skills add bytedance/deer-flow --skill video-generation -a claude-codeWhat video-generation does
The skill generates videos by converting user prompts into structured JSON files inside /mnt/user-data/workspace/. These prompt files specify scene backgrounds, characters, camera angles, dialogue, and audio cues in English. Once the prompt is ready, the agent executes /mnt/skills/public/video-generation/scripts/generate.py without modifying the script.
Execution relies on environment variables: GEMINI_API_KEY routes requests to Gemini Veo, while MINIMAX_API_KEY triggers MiniMax video generation. You can force a specific provider with VIDEO_GENERATION_PROVIDER=gemini|minimax. When MiniMax runs, it uses the first reference image as first_frame_image and ignores the --aspect-ratio flag.
Reference images must use .png, .jpg, .jpeg, .webp, or .gif extensions. The runner script does not convert image bytes or validate contents before dispatching API calls, so file headers must match the extension.
What it helps with
- generate AI video clips from natural language scene descriptions
- animate a static reference image as the opening video frame
- structure camera movements and audio cues into a validated JSON prompt
- switch between Gemini Veo and MiniMax generation backends
Example prompts for the agent
- Generate a short video clip showing a 1940s train station farewell in 16:9 aspect ratio
- Create a video using /mnt/user-data/outputs/narnia-farewell-scene-01.jpg as the starting frame
- Generate a cyberpunk street scene video using the MiniMax provider
How to install video-generation
1Skills CLI (Vercel)
npx skills add bytedance/deer-flow --skill video-generation -a claude-code2Manually: put the files in place
~/.claude/skills/video-generation/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/video-generation/
1Skills CLI (Vercel)
npx skills add bytedance/deer-flow --skill video-generation -a codex2Manually: put the files in place
.agents/skills/video-generation/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add bytedance/deer-flow --skill video-generation -a cursor2Manually: put the files in place
.cursor/skills/video-generation/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install bytedance/deer-flow video-generation2Manually: put the files in place
.github/skills/video-generation/SKILL.md1Skills CLI (Vercel)
npx skills add bytedance/deer-flow --skill video-generation -a gemini-cli2Platform CLI
gemini skills install https://github.com/bytedance/deer-flow --path skills/public/video-generationManually: put the files in place
.devin/skills/video-generation/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add bytedance/deer-flow --skill video-generation -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set11
The whole set →Similar
Questions about video-generation
How to install video-generation in Claude Code?
Run npx skills add bytedance/deer-flow --skill video-generation -a claude-code in your terminal.
Which video generation providers are supported?
The skill supports Gemini Veo via GEMINI_API_KEY and MiniMax via MINIMAX_API_KEY. You can override the selection by setting VIDEO_GENERATION_PROVIDER=gemini|minimax.
What are the requirements for reference images?
Images must use recognized extensions (.png, .jpg, .jpeg, .webp, .gif). Because the script does not convert bytes or check image headers, mismatched files fail at submission.
Source text
SKILL.md · MIT
---
name: video-generation
description: Use this skill when the user requests to generate, create, or imagine videos. Supports structured prompts and reference image for guided generation.
---
# Video Generation Skill
## Overview
This skill generates high-quality videos using structured prompts and a Python script. The workflow includes creating JSON-formatted prompts and executing video generation with optional reference image.
## Core Capabilities
- Create structured JSON prompts for AIGC video generation
- Support reference image as guidance or the first/last frame of the video
- Generate videos through automated Python script execution
## Workflow
### Step 1: Understand Requirements
When a user requests video generation, identify:
- Subject/content: What should be in the image
- Style preferences: Art style, mood, color palette
- Technical specs: Aspect ratio, composition, lighting
- Reference image: Any image to guide generation
- You don't need to check the folder under `/mnt/user-data`
### Step 2: Create Structured Prompt
Generate a structured JSON file in `/mnt/user-data/workspace/` with naming pattern: `{descriptive-name}.json`
### Step 3: Create Reference Image (Optional when image-generation skill is available)
Generate reference image for the video generation.
- If only 1 image is provided, use it as the guided frame of the video
### Step 3: Execute Generation
Call the Python script:
```bash
python /mnt/skills/public/video-generation/scripts/generate.py \
--prompt-file /mnt/user-data/workspace/prompt-file.json \
--reference-images /path/to/ref1.jpg \
--output-file /mnt/user-data/outputs/generated-video.mp4 \
--aspect-ratio 16:9
```
Parameters:
- `--prompt-file`: Absolute path to JSON prompt file (required)
- `--reference-images`: Absolute paths to reference images (optional). Images used by the provider must have a recognized filename extension: `.png`, `.jpg`, `.jpeg`, `.webp`, or `.gif` (case-insensitive). Missing or other extensions are rejected before submission. Filenames must match their contents: the script neither validates image contents nor converts bytes. Recognizing an extension does not guarantee that the selected provider accepts that format.
- `--output-file`: Absolute path to output image file (required)
- `--aspect-ratio`: Aspect ratio of the generated image (optional, default: 16:9)
[!NOTE]
Do NOT read the python file, instead just call it with the parameters.
## Video Generation Example
User request: "Generate a short video clip depicting the opening scene from "The Chronicles of Narnia: The Lion, the Witch and the Wardrobe"
Step 1: Search for the opening scene of "The Chronicles of Narnia: The Lion, the Witch and the Wardrobe" online
Step 2: Create a JSON prompt file with the following content:
```json
{
"title": "The Chronicles of Narnia - Train Station Farewell",
"background": {
"description": "World War II evacuation scene at a crowded London train station. Steam and smoke fill the air as children are being sent to the countryside to escape the Blitz.",
"era": "1940s wartime Britain",
"location": "London railway station platform"
},
"characters": ["Mrs. Pevensie", "Lucy Pevensie"],
"camera": {
"type": "Close-up two-shot",
"movement": "Static with subtle handheld movement",
"angle": "Profile view, intimate framing",
"focus": "Both faces in focus, background soft bokeh"
},
"dialogue": [
{
"character": "Mrs. Pevensie",
"text": "You must be brave for me, darling. I'll come for you... I promise."
},
{
"character": "Lucy Pevensie",
"text": "I will be, mother. I promise."
}
],
"audio": [
{
"type": "Train whistle blows (signaling departure)",
"volume": 1
},
{
"type": "Strings swell emotionally, then fade",
"volume": 0.5
},
{
"type": "Ambient sound of the train station",
"volume": 0.5
}
]
}
```
Step 3: Use the image-generation skill to generate the reference image
Load the image-generation skill and generate a single reference image `narnia-farewell-scene-01.jpg` according to the skill.
Step 4: Use the generate.py script to generate the video
```bash
python /mnt/skills/public/video-generation/scripts/generate.py \
--prompt-file /mnt/user-data/workspace/narnia-farewell-scene.json \
--reference-images /mnt/user-data/outputs/narnia-farewell-scene-01.jpg \
--output-file /mnt/user-data/outputs/narnia-farewell-scene-01.mp4 \
--aspect-ratio 16:9
```
> Do NOT read the python file, just call it with the parameters.
## Output Handling
The generation command exits with status 1 and writes errors to stderr when
generation fails, including missing provider credentials. Only present the video
after the command succeeds; a file left by an earlier run is not a new result.
After generation:
- Videos are typically saved in `/mnt/user-data/outputs/`
- Share generated videos (come first) with user as well as generated image if applicable, using `present_files` tool
- Provide brief description of the generation result
- Offer to iterate if adjustments needed
## Notes
- Always use English for prompts regardless of user's language
- JSON format ensures structured, parsable prompts
- Reference image enhance generation quality significantly
- Iterative refinement is normal for optimal results
## Providers (Gemini / MiniMax)
Provider credentials are read from the runtime environment, not embedded in the
script. Do not put their values in prompt files or command-line arguments.
Auto-selected by environment variables (CLI unchanged):
- `GEMINI_API_KEY` set → Gemini Veo (default, unchanged).
- Only `MINIMAX_API_KEY` set → MiniMax video (`/v1/video_generation`, async 3-step poll/download).
- Force with `VIDEO_GENERATION_PROVIDER=gemini|minimax`.
MiniMax overrides: `MINIMAX_API_HOST` (default `https://api.minimaxi.com`),
`MINIMAX_VIDEO_MODEL` (default `MiniMax-Hailuo-2.3`). The first reference image is used
as MiniMax `first_frame_image`. MiniMax ignores `--aspect-ratio` (it uses resolution/duration).
© bytedance · MIT · bytedance/deer-flow