Skip to content
Agentmart
Submit a tool

generate-media

Generate or edit images, generate videos, turn text into speech, and transcribe audio, with any OpenRouter model through the `ormedia` CLI.

Skill by khang859

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/khang859-generate-media

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Generate or edit images, generate videos, turn text into speech, and transcribe audio, with any OpenRouter model through the `ormedia` CLI. Use when the user asks to create, draw, render, design, edit, or restyle an image, logo, icon, illustration, or mockup, to make, animate, or generate a video or clip, or to make a voice-over, a narration, text to speech, a transcript of an audio or video file, or a dub or a translation of a video.

Use cases: design, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/generate-media

What's inside

Skill name
generate-media
Description
Generate or edit images, generate videos, turn text into speech, and transcribe audio, with any OpenRouter model through the `ormedia` CLI. Use when the user asks to create, draw, render, design, edit, or restyle an image, logo, icon, illustration, or mockup, to make, animate, or generate a video or clip, or to make a voice-over, a narration, text to speech, a transcript of an audio or video file, or a dub or a translation of a video.
License
MIT
Instructions
134 lines in SKILL.md · view on GitHub

Files (19)

  • SKILL.md
  • image-flux.md · prompts/
  • image-google-nano-banana.md · prompts/
  • image-openai-gpt-image.md · prompts/
  • image-other-models.md · prompts/
  • image-qwen.md · prompts/
  • image-recraft.md · prompts/
  • image-seedream.md · prompts/
  • speech-dubbing.md · prompts/
  • speech-fish-audio.md · prompts/
  • video-directing.md · prompts/
  • video-flux.md · prompts/
  • video-google-veo.md · prompts/
  • video-hailuo.md · prompts/
  • video-kling.md · prompts/
  • video-other-models.md · prompts/
  • video-runway.md · prompts/
  • video-seedance.md · prompts/
  • video-wan.md · prompts/

SKILL.md (first lines)

# Generate media with OpenRouter

The `ormedia` command is on your PATH.
It saves each result to a file and prints the path.
Run `ormedia --help` for every option.

## Sign in

Run `ormedia status` when a command says there is no API key.
If the user is not signed in, run `ormedia login` with a Bash timeout of 300000 ms.
It opens the browser, the user approves, and the key is stored on disk.
Never ask the user to paste an API key into the chat.

## Images

```bash
ormedia image --prompt "A weathered lighthouse at dusk, oil painting, thick brushwork" --aspect-ratio 16:9 --out assets/
ormedia image --prompt "Change only the sky to a sunset. Keep the building the same." --image ./photo.png
```

- `--image` takes a local path or a URL, and repeats for several references.
- `--out` takes a file name or a folder. An existing file is never overwritten.
- After the command returns, read the saved file to check the result before you report it.
- Inside Fleet the image opens in a Fleet tab on its own. Pass `--no-open` to stop that, or `--open` to force it when the user turned it off.

## Videos

Video costs real money per second, so do these steps in order:

1. Run `ormedia models video --search <name>` to see the durations, resolutions, and prices the model takes.
2. Tell the user the model, the duration, and the estimated price, and get a yes before you start.
3. Run the command in the background, because a video takes from 30 seconds to several minutes.

```bash
ormedia video --prompt "Slow dolly shot through a neon-lit alley in the rain" --duration 4 --resolution 720p --out clips/
ormedia video --prompt "The boat sails away" --first-frame ./boat.png --duration 6
```

The command prints `Video job <id> started` first.
If the command stops before the video is saved, the job still runs on OpenRouter.
Get it with `ormedia job <id> --wait`.
Do not submit the same video again, because that pays twice.

## Speech

```bash
ormedia speech --text "[warm] Welcome back. Here is what is new this week." --voice <id> --out audio/
ormedia speech --text-file script.txt --voice-sample ./me.wav --voice-sample-text "The exact words in me.wav."
```

- The default model is Fish Audio S2.1 Pro. The result is an MP3 file.
- `--voice` takes a voice id of the model. `ormedia models speech --search <name>` lists the voices of a model that has a fixed list.
- `--voice-sample` copies the voice in a recording. Use it only when the user owns that voice or has the right to use it.
- `--instructions` and `--speed` work only on the models that take them. Fish Audio takes the style as cues in the text.
- Speech is priced per character and returns in seconds, so run it in the foreground.
- You cannot hear the result. Check its length with `ffprobe`, then ask the user to listen.

## Transcripts

```bash
ormedia transcribe ./interview.mp3
ormedia transcribe ./clip.mp4 --timestamps segment --language en
```

- The command takes an audio file, a video file, or a URL, and prints the words to stdout.
- `--timestamps segment` prints one line per segment, with its start and end time in seconds.
- `--json` prints the full reply, with the time of each word when you pass `--timestamps word`.
- The price is per second of audio. The command prints the cost to stderr.

To put a voice on a video, or to translate the voice of a video, read [prompts/speech-dubbing.md](prompts/speech-dubbing.md).

## Choosing a model

Use the default model unless the user names one or the task needs something the default lacks.
The default is the user's own choice when they saved one, so do not pass `--model` just to repeat it.
`ormedia models image`, `ormedia models video`, `ormedia models speech`, and `ormedia models transcribe` list every model with the options it accepts.
Send only options the chosen model lists.
The API rejects an unsupported value and names the valid ones, so read the error and retry once.

## Settings

```bash
ormedia config
ormedia config set image-model <id>
ormedia config unset image-model
```

- `ormedia config` shows each setting and where its value comes from.
- The settings are `image-model`, `video-model`, `speech-model`, `transcribe-model`, `out`, `open`, `timeout`, and `update-check`.
- A flag on the command line wins over a saved setting.
- Change a setting only when the user asks for a lasting change. For one result, use the flag.

## Updates

A command can end with a line that says a newer `ormedia` is out.
Tell the user about it one time, with the update command from that line.
Do not run the update yourself unless the user asks.

## Writing the prompt

- Write plain descriptive sentences in this order: scene, subject, key details, style, lighting, camera.
- Name the finished artifact, for example "an editorial product photograph" or "a flat vector app icon".
- Put literal text in quotes and state its font, weight, colour, and place.
- For an edit, say what changes and list what must stay the same.
- For a video, describe one continuous shot: the subject, its motion, and the camera move.
- Skip quality tags such as "4k, masterpiece". They do nothing on current models.

Those rules work on every model.
Each model family also has its own syntax, so read the guide for the model before you write the prompt.
`ormedia config` shows the model in use when you pass no `--model`.

| Model id starts with | Guide |
|---|---|
| `google/gemini-` | [prompts/image-google-nano-banana.md](prompts/image-google-nano-banana.md) |
| `openai/` | [prompts/image-openai-gpt-image.md](prompts/image-openai-gpt-image.md) |
| `black-forest-labs/flux` (image) | [prompts/image-flux.md](prompts/image-flux.md) |
| `bytedance-seed/seedream` | [prompts/image-seedream.md](prompts/image-seedream.md) |
| `recraft/` | [prompts/image-recraft.md](prompts/image-recraft.md) |
| `qwen/` | [prompts/image-qwen.md](prompts/image-qwen.md) |

From khang859/openrouter-media, MIT.

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Oct 10, 2026 (18 days ago)
Last release
Oct 10, 2026 (18 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from khang859

Cite this page

generate-media skill. Agent Mart. https://agentmart.dev/skills/khang859-generate-media (last updated 2026-10-24)