Openrouter Video Generate logo

Openrouter Video Generate

Community
Yuki001
openrouter-video-generate

Generate and download videos through OpenRouter's dedicated asynchronous Video API. Use this skill whenever the user wants to create, render, generate, poll, resume, or save an OpenRouter video, including text-to-video, first/last-frame image-to-video, reference-to-video, choosing or listing video models, setting duration/resolution/aspect ratio/audio/seed, checking job status, downloading completed outputs, configuring callbacks, or passing provider-specific video options. Prefer the bundled Python script so asynchronous jobs and API options are handled consistently.

Overview

PublisherYuki001
Repositorygame-dev-skills
Skill nameopenrouter-video-generate
Stars
104
Forks
13
Bundled files
1
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by Yuki001 on GitHub. Read the source before you install it.

Installation

Install the Openrouter Video Generate AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/Yuki001/game-dev-skills/tree/main/skills/openrouter-video-generate
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/Yuki001/game-dev-skills.git /tmp/game-dev-skills
mkdir -p .claude/skills
cp -r /tmp/game-dev-skills/skills/openrouter-video-generate .claude/skills/openrouter-video-generate
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Openrouter Video Generate in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Openrouter Video Generate on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Openrouter Video Generate is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

OpenRouter Video Generation

Use this skill to submit asynchronous OpenRouter video jobs, poll them to a terminal state, and save completed video files.

Default workflow

  1. Use the OpenRouter API key from the current environment first. If it is missing, rely on the bundled script's automatic lookup of the nearest project .env file containing OPENROUTER_API_KEY, unless the user explicitly provides another environment variable name or env file path.
  2. Pick a model from the user's request. If no model is specified, use bytedance/seedance-2.0 and mention that the user can override it. Use model discovery before assuming support for unusual resolutions, aspect ratios, audio, images, or provider options.
  3. Use scripts/openrouter_video_generate.py rather than constructing requests and polling loops manually.
  4. Save generated videos to a user-visible output directory, defaulting to the current working directory if the user did not specify one.
  5. Do not print API keys or put them directly on the command line because shell history may capture them.

Bundled script

Submit, wait, and download in one command:

bash
python scripts/openrouter_video_generate.py generate \
  --prompt "a slow cinematic push-in on a neon cafe sign in the rain" \
  --model "bytedance/seedance-2.0" \
  --duration 5 \
  --resolution 1080p \
  --aspect-ratio 16:9 \
  --output-dir ./outputs

The script reads OPENROUTER_API_KEY from the current environment first. If it is not set, it searches from the current working directory upward for the nearest .env. Use --api-key-env MY_OPENROUTER_KEY for another variable name or --env-file ./path/to/.env to force a particular file.

Generation is asynchronous. The command prints the job ID immediately, polls every 30 seconds by default, and downloads all returned outputs after completion. Use --submit-only to return after submission, then resume later with status or download.

Common generation options

Pass only options the user requests or that the selected model supports:

  • --prompt TEXT is required.
  • --model MODEL_ID defaults to bytedance/seedance-2.0.
  • --duration SECONDS sets the clip duration.
  • --resolution 480p|720p|768p|1080p|1K|2K|4K sets a normalized resolution.
  • --aspect-ratio 16:9|9:16|1:1|4:3|3:4|3:2|2:3|21:9|9:21 sets the output ratio.
  • --size WIDTHxHEIGHT is interchangeable with resolution plus aspect ratio; do not combine them.
  • --first-frame PATH_OR_URL and --last-frame PATH_OR_URL provide exact boundary frames for image-to-video.
  • --reference PATH_OR_URL can be repeated for style or content guidance. Local images are converted to data URLs.
  • --generate-audio or --no-generate-audio explicitly controls audio when the model supports it. Omit both to use the API/model default.
  • --seed INTEGER requests deterministic generation where supported.
  • --callback-url HTTPS_URL sets a per-request webhook. Pair it with --submit-only when another service will handle completion.
  • --provider-options-json '{"google-vertex":{"parameters":{"negativePrompt":"blurry"}}}' passes provider-specific options under provider.options.
  • --provider-options-file options.json is safer for larger provider options.
  • --raw-json payload.json merges additional OpenRouter-compatible request fields into the payload.
  • --poll-interval 30 controls polling frequency and --timeout 1800 limits total waiting time. A timeout does not cancel the remote job.
  • --dry-run prints the request payload without making a network call.

frame_images take precedence over input_references in OpenRouter. Prefer one mode per request so the user's references are not silently ignored.

Model discovery and job recovery

List video models and their supported resolutions, aspect ratios, sizes, passthrough fields, and pricing:

bash
python scripts/openrouter_video_generate.py models

Inspect or resume a submitted job:

bash
python scripts/openrouter_video_generate.py status --job-id JOB_ID --json
python scripts/openrouter_video_generate.py download --job-id JOB_ID --output-dir ./outputs

Use download --index 0 to fetch one output from a multi-output job. download first checks that the job completed, then uses the returned content URLs and authenticates same-origin OpenRouter endpoints when required. Authentication is removed before any cross-origin redirect.

Output and metadata

One output is saved as <output-prefix>.<ext>; multiple outputs are saved as <output-prefix>_001.<ext>, <output-prefix>_002.<ext>, and so on. The extension is inferred from the response content type and defaults to .mp4.

The script writes <output-prefix>_metadata.json by default. It records the request with base64 image bodies omitted, the latest job response, and downloaded file paths. Use --metadata-file PATH to choose another path or --no-metadata to skip it.

If local waiting is interrupted or times out, keep the printed job ID and use status or download; the OpenRouter job continues independently.

Safety, cost, and retention

Video generation can bill the user's OpenRouter account, and higher duration or resolution usually costs more. Before submitting a real job, make sure the model, duration, resolution, audio choice, and output mode match the user's intent. Use models or --dry-run when uncertain.

OpenRouter video generation is not eligible for Zero Data Retention because asynchronous results must be retained temporarily for retrieval. If ZDR enforcement is enabled at the account level or through a request field, the request will not be routed. Tell the user when this conflicts with their privacy requirements.

For webhook receivers, verify X-OpenRouter-Signature against the exact raw request body using HMAC-SHA256, reject stale timestamps, and deduplicate deliveries with X-OpenRouter-Idempotency-Key.

Troubleshooting

  • A long pending or in_progress state can be normal; video generation may take several minutes. Continue polling at a reasonable interval.
  • On failed, cancelled, or expired, report the returned error and preserve the job metadata rather than repeatedly resubmitting.
  • For model or parameter errors, run models --json and verify the model ID and advertised capabilities.
  • If image-guided generation fails, verify that URLs are reachable or local files exist and use supported image formats.
  • A local polling timeout does not mean generation failed. Resume by job ID instead of creating a duplicate billable job.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Openrouter Video Generate AI skill do?

Generate and download videos through OpenRouter's dedicated asynchronous Video API. Use this skill whenever the user wants to create, render, generate, poll, resume, or save an OpenRouter video, including text-to-video, first/last-frame image-to-video, reference-to-video, choosing or listing video models, setting duration/resolution/aspect ratio/audio/seed, checking job status, downloading completed outputs, configuring callbacks, or passing provider-specific video options. Prefer the bundled Python script so asynchronous jobs and API options are handled consistently.

Why use Openrouter Video Generate on TypingMind?

Because you install it once and use it with any model. Openrouter Video Generate is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Openrouter Video Generate in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/Yuki001/game-dev-skills/tree/main/skills/openrouter-video-generate. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Openrouter Video Generate?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Openrouter Video Generate?

As many as you like. As long as a model supports skills, you can use Openrouter Video Generate with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Openrouter Video Generate AI skill free?

It is published on GitHub by Yuki001. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇