qinghonglin/openrouter-text2video
Generate videos via OpenRouter using ByteDance Seedance 2.0.
npx skills add https://github.com/QinghongLin/data2story-skill --skill openrouter-text2video
Text → video via OpenRouter. Default model: bytedance/seedance-2.0.
Uses the async video-generation endpoint: submit job → poll → download.
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
| 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 |
POST /api/v1/videos → returns {id, polling_url, status: "pending"}GET /api/v1/videos/{id} every 5s until status == "completed"GET /api/v1/videos/{id}/content → raw MP4 bytesSeedance 2.0: ~$7/M tokens with (height × width × duration × 24) / 1024 token formula. A 5-second 720p 16:9 clip ≈ 145k tokens ≈ $1.
frame_images), and reference-to-video.frame_images or input_references for advanced modes.Take qinghonglin/openrouter-text2video from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.