openrouter-text2video
Text → video via OpenRouter. Default model: bytedance/seedance-2.0.
Uses the async video-generation endpoint: submit job → poll → download.
Usage
Resolve TOOL_DIR = the directory containing this SKILL.md. Commands below use TOOL_DIR as a symbolic placeholder; replace it with the resolved, quoted path before running Bash.
export OPENROUTER_API_KEY=sk-or-v1-...
python3 TOOL_DIR/scripts/generate_video.py \
--prompt "A slow dolly push through a retro-futuristic arcade, neon signs reflecting in a puddle" \
--duration 5 \
--aspect-ratio 16:9 \
--resolution 720p \
--download PROJECT_DIR/assets/hero.mp4
Flags
| Flag | Default | Description |
|---|---|---|
--prompt |
required | Text prompt |
--download |
required | Output MP4 path |
--model |
bytedance/seedance-2.0 |
Any OpenRouter video model |
--duration |
5 |
Seconds |
--aspect-ratio |
16:9 |
16:9, 9:16, 1:1, 4:3, 3:4, 21:9, 9:21 |
--resolution |
720p |
Model-dependent (e.g. 480p, 720p, 1080p) |
--generate-audio |
off | Generate audio with video (if model supports) |
--poll-interval |
5 |
Seconds between polls |
--max-wait |
600 |
Max total wait time |
Flow
POST /api/v1/videos→ returns{id, polling_url, status: "pending"}GET /api/v1/videos/{id}every 5s untilstatus == "completed"GET /api/v1/videos/{id}/content→ raw MP4 bytes
Pricing
Seedance 2.0: ~$7/M tokens with (height × width × duration × 24) / 1024 token formula. A 5-second 720p 16:9 clip ≈ 145k tokens ≈ $1.
Notes
- Supports text-to-video, image-to-video (first/last frame control via
frame_images), and reference-to-video. - This script only wires text-to-video. Extend the body to add
frame_imagesorinput_referencesfor advanced modes.