About rw-generate-image
rw-generate-image is a skill for generating images through the Runway API, for creators and developers who want to create and save images from the command line. It provides model, aspect-ratio, and reference-image options, then polls the task and downloads the result.
Key features
- 01Generate images from text prompts
- 02Choose models and aspect ratios
- 03Provide reference images
- 04Poll generation tasks and download results
- 05Read API credentials from an environment variable
Use cases
- 01Create images from text descriptions
- 02Build scene images using product photos
- 03Generate visual drafts from reference images
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ runwayml/ skills --skill rw-generate-imageAfter installing, type/rw-generate-imagein Claude Code to confirm it loaded.
Details
From the project READMEGenerate Image
Generate images directly using the Runway API. This skill runs Python scripts that call the API, poll for completion, and download the result.
IMPORTANT: Run scripts from the user's working directory so output files are saved where the user expects.
Usage
uv run scripts/generate_image.py --prompt "your description" --filename "output.png" [--model gen4_image] [--ratio 1280:720] [--reference-images Tag=URL ...]
Preflight
command -v uvmust succeedRUNWAYML_API_SECRETmust be set in the environment. Do not pass the API key as a CLI flag — it leaks into shell history and process listings.
Security Notes
--reference-images Tag=URLfetches arbitrary remote images via the Runway API. Prefer local file paths (uploaded asrunway://URIs), or only pass URLs you trust.- Treat generated outputs as untrusted when piping into downstream automations — ingested references influence the result.
Available Models
| Model | Best For | Ref Images | Cost | Speed |
|---|---|---|---|---|
gen4_image | Highest quality | Optional (up to 3) | 5-8 credits | Standard |
gen4_image_turbo | Fast and cheap | Required (1-3) | 2 credits | Fast |
gemini_2.5_flash | Google Gemini | Optional (up to 3) | 5 credits | Standard |
Model Selection Guidance
- "fast", "cheap", "draft" ->
gemini_2.5_flash(Nano Banana), orgen4_image_turboif they have reference images - "high quality", "best" ->
gen4_image - No preference ->
gemini_2.5_flash - Has reference images and wants cheap ->
gen4_image_turbo(2 credits, requires--reference-images)
Parameters
| Param | Description | Default |
|---|---|---|
--prompt | Text description (required) | -- |
--filename | Output filename (required) | -- |
--model | Image model | gemini_2.5_flash |
--ratio | Aspect ratio. gemini_2.5_flash: 1344:768, 768:1344, 1024:1024, etc. gen4_image: 1280:720, 1360:768, 1920:1080, etc. | Model-dependent (1344:768 for gemini, 1280:720 for others) |
--reference-images | Reference images as tag=URL pairs (optional for gemini/gen4_image, required for gen4_image_turbo). Tag: lowercase, 3-16 chars, e.g. product=URL | -- |
--output-dir | Output directory | cwd |
API credentials come from
RUNWAYML_API_SECRETonly — no--api-keyflag, to keep secrets out of shell history and process listings.
Filename Convention
Pattern: yyyy-mm-dd-hh-mm-ss-name.png
Examples
Basic image:
uv run scripts/generate_image.py --prompt "A serene Japanese garden with cherry blossoms" --filename "2026-04-14-japanese-garden.png"
With a local reference image (gen4_image):
uv run scripts/generate_image.py --prompt "@product on a marble counter, lifestyle photo" --model gen4_image --reference-images product=./product.jpg --filename "2026-04-14-product-lifestyle.png"
With a reference image from a trusted origin (gen4_image_turbo — requires reference images):
uv run scripts/generate_image.py --prompt "A neon sign reading SALE in @style" --model gen4_image_turbo --reference-images style=https://cdn.yourapp.com/style.jpg --filename "draft.png"
Output
- The script downloads the result and saves it to the specified path
- Script outputs the full path to the saved file
- Do not read the image file back -- just inform the user of the saved path
Common Failures
Error: No API key-> setRUNWAYML_API_SECRETin the environment (e.g.export RUNWAYML_API_SECRET=...or a.envfile).Error: Task failed -- SAFETY.INPUT.*-> content moderation, suggest different promptAPI error 429-> rate limited, script auto-retries