Labsco
runwayml logo

runway-studio-skills

by runwayml ยท part of runwayml/runway-studio-skills

Use this skill when the user wants to generate videos, images, or audio using the Runway API. Covers product ad videos, text-to-video, image-to-video, video-to-video, character performance, image generation, sound effects, TTS, speech-to-speech, voice dubbing, and voice isolation.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

This is the playbook your agent receives when the skill activates โ€” you don't need to read it to use the skill, but it's here to audit before installing.

Runway Studio Skills

Generate studio-quality videos, images, and audio using the Runway API. All commands are standalone Python scripts run via uv run from the skill root directory.

Commands

All invocations use uv run scripts/<script>.py from the repo root. Dependencies install automatically on first run.


generate_video.py โ€” Video generation

Automatically routes to the correct Runway endpoint based on inputs provided.

# Text to video
uv run scripts/generate_video.py \
  --prompt "A product bottle rotating slowly on a marble surface" \
  --model seedance2 --ratio 720:1280 --duration 10

# Image to video
uv run scripts/generate_video.py \
  --prompt "Smooth camera push-in, soft ambient light" \
  --image "https://example.com/product.jpg" \
  --model seedance2 --duration 10 --ratio 720:1280

# Image to video from local file
uv run scripts/generate_video.py \
  --prompt "Product reveal" \
  --image ./product-photo.jpg \
  --model gen4_turbo

# Video to video
uv run scripts/generate_video.py \
  --video "https://example.com/source.mp4" \
  --prompt "Add cinematic color grading" \
  --model gen4_aleph --ratio 1280:720

# Character performance
uv run scripts/generate_video.py \
  --character ./spokesperson.jpg \
  --reference-perf "https://example.com/performance.mp4" \
  --ratio 1280:720

Routing logic:

  • --character + --reference-perf โ†’ character_performance (act_two)
  • --video โ†’ video_to_video
  • --image โ†’ image_to_video
  • prompt only โ†’ text_to_video

Parameters:

FlagDescriptionDefault
--promptText prompt (up to 1000 chars; 3500 for seedance2)โ€”
--imageImage URL or local pathโ€”
--videoVideo URL or local pathโ€”
--modelModel name (see table below)seedance2
--durationDuration in secondsmodel default
--ratioResolution ratio (e.g. 1280:720)model default
--audiotrue/false โ€” generate audiomodel default
--output-countNumber of outputs, 1-4 (seedance2 only)1
--seedSeed integer for reproducibilityrandom
--image-positionfirst or last โ€” where the image appears in videofirst
--referencesReference image URLs (video-to-video, gen4_aleph)โ€”
--characterCharacter image/video for act_twoโ€”
--character-typeimage or videoimage
--reference-perfPerformance reference video for act_twoโ€”
--body-controlEnable body control (act_two)off
--expression-intensity1-5 expression intensity (act_two)3
--output-dirOutput directoryoutput
--filenameBase name for saved filesvideo
--no-pollPrint task ID without waitingoff

generate_image.py โ€” Image generation

uv run scripts/generate_image.py \
  --prompt "Minimal skincare bottle on white background, studio lighting" \
  --model gen4_image --ratio 1080:1080

# With reference images
uv run scripts/generate_image.py \
  --prompt "Product in the style of the reference" \
  --reference-images "https://example.com/brand-ref.jpg" ./local-ref.png \
  --model gen4_image --ratio 1920:1080

Parameters:

FlagDescriptionDefault
--promptText prompt (required)โ€”
--modelgen4_image, gen4_image_turbo, gemini_2.5_flashgen4_image
--ratioResolution ratio1080:1080
--reference-imagesUp to 3 reference image URLs or local pathsโ€”
--seedSeed integerrandom
--output-dirOutput directoryoutput
--filenameBase name for saved filesimage

generate_audio.py โ€” Audio generation

Five subcommands mapping to Runway audio endpoints.

# Sound effect
uv run scripts/generate_audio.py sound-effect \
  --prompt "Soft whoosh transition sound" --duration 3

# Text to speech
uv run scripts/generate_audio.py tts \
  --prompt "Welcome to our product showcase" --voice Leslie

# Speech to speech (voice conversion)
uv run scripts/generate_audio.py speech-to-speech \
  --media ./recording.mp3 --media-type audio --voice Noah

# Voice dubbing
uv run scripts/generate_audio.py voice-dub \
  --audio "https://example.com/narration.mp3" --target-lang es

# Voice isolation
uv run scripts/generate_audio.py voice-isolate \
  --audio ./noisy-recording.mp3

Subcommand parameters:

sound-effect: --prompt (required), --duration (0.5-30s), --loop tts: --prompt (required), --voice (required, see voice presets below) speech-to-speech: --media (required), --media-type (audio/video), --voice (required), --remove-noise voice-dub: --audio (required), --target-lang (required), --disable-cloning, --drop-background, --num-speakers voice-isolate: --audio (required)

All subcommands also accept: --output-dir, --filename, --no-poll, --api-key


get_task.py โ€” Task management

# Check task status
uv run scripts/get_task.py --task-id "uuid-here"

# Poll until completion
uv run scripts/get_task.py --task-id "uuid-here" --poll

# Poll and download outputs
uv run scripts/get_task.py --task-id "uuid-here" --poll --download

# Cancel/delete a task
uv run scripts/get_task.py --task-id "uuid-here" --delete

Model Selection Guide

Video models

ModelBest forDurationAudioKey feature
seedance2Product ads, reference-based video4-15syesReference image support, up to 4 outputs per call, 3500-char prompts
gen4.5High quality text/image-to-video2-10snoBest visual quality
gen4_turboFast image-to-video2-10snoFastest Runway model
veo3.1Cinematic with audio4/6/8syesBuilt-in contextual audio, up to 1080p
veo3.1_fastFast cinematic with audio4/6/8syesFaster veo3.1
veo3Cinematic with audio8snoImage-to-video with audio
gen4_alephVideo-to-video restylingโ€”โ€”Video input + reference images
act_twoCharacter performanceโ€”โ€”Transfer facial/body performance

For product ads, use seedance2. It supports reference images (product photos fed directly), generates up to 4 variants per call, and produces up to 15s videos.

For cinematic video with audio, use veo3.1. It generates contextual ambient sound automatically.

Image models

ModelBest forKey feature
gen4_imageGeneral image generationUp to 3 reference images, highest quality
gen4_image_turboFast draftsRequires at least 1 reference image
gemini_2.5_flashFast image generationGoogle Gemini-based

Audio models

ModelEndpointPurpose
eleven_text_to_sound_v2sound_effectSound effects from text description
eleven_multilingual_v2text_to_speechTTS with 50 voice presets
eleven_multilingual_sts_v2speech_to_speechVoice conversion in audio/video
eleven_voice_dubbingvoice_dubbingTranslate + dub to 28 languages
eleven_voice_isolationvoice_isolationSeparate voice from background

Voice presets (TTS and speech-to-speech)

Maya, Arjun, Serene, Bernard, Billy, Mark, Clint, Mabel, Chad, Leslie, Eleanor, Elias, Elliot, Grungle, Brodie, Sandra, Kirk, Kylie, Lara, Lisa, Malachi, Marlene, Martin, Miriam, Monster, Paula, Pip, Rusty, Ragnar, Xylar, Maggie, Jack, Katie, Noah, James, Rina, Ella, Mariah, Frank, Claudia, Niki, Vincent, Kendrick, Myrna, Tom, Wanda, Benjamin, Kiana, Rachel


Supported Ratios

Video ratios by model

gen4.5 / gen4_turbo: 1280:720, 720:1280, 1104:832, 960:960, 832:1104, 1584:672

seedance2: 992:432, 864:496, 752:560, 640:640, 560:752, 496:864, 1470:630, 1280:720, 1112:834, 960:960, 834:1112, 720:1280

veo3.1 / veo3.1_fast / veo3: 1280:720, 720:1280, 1080:1920, 1920:1080

Common ad format ratios

PlatformRatioseedance2gen4.5
TikTok / Reels (9:16)720:1280yesyes
YouTube (16:9)1280:720yesyes
Instagram Square (1:1)960:960yesyes
Instagram Feed (4:3)1112:834yes (approx)1104:832

Image ratios

gen4_image / gen4_image_turbo: 1024:1024, 1080:1080, 1168:880, 1360:768, 1440:1080, 1080:1440, 1808:768, 1920:1080, 1080:1920, 2112:912, 1280:720, 720:1280, 720:720, 960:720, 720:960, 1680:720

gemini_2.5_flash: 1344:768, 768:1344, 1024:1024, 1184:864, 864:1184, 1536:672, 832:1248, 1248:832, 896:1152, 1152:896


Output Conventions

  • Files are saved to --output-dir (default: output/).
  • Filenames use the pattern: YYYY-MM-DD-HH-MM-SS-<name>.ext
  • Scripts print the local file path to stdout on success.
  • Scripts print structured JSON lines ({"event": "runway_task", ...} and {"event": "runway_result", ...}) to stdout for machine consumption.
  • Status/progress messages go to stderr.
  • Do NOT read generated media files back into the conversation โ€” just report the file paths to the user.

Local File Handling

All scripts accept local file paths for image, video, and audio inputs. Local files are automatically uploaded via the Runway uploads API (ephemeral, valid for 24h) before being used in generation requests.


Error Handling

ErrorMeaningAction
429 / rate limitToo many requestsWait and retry
402 / insufficient creditsNot enough creditsUser must top up at runway.com
SAFETY.INPUT.IMAGEInput image flaggedRevise the input image
SAFETY.OUTPUTGenerated content flaggedRevise the prompt
Task FAILEDGeneration failedCheck the failure message, adjust inputs

Prompt Tips for Product Ad Videos

  • Describe camera movement explicitly: "slow dolly in", "smooth orbit around product", "camera pulls back to reveal"
  • Specify lighting: "soft studio lighting", "golden hour warm light", "dramatic side light"
  • Keep the product description concrete: material, color, size cues
  • For seedance2, the reference image carries the visual identity โ€” the prompt should describe motion and scene, not the product itself
  • Shorter prompts (1-2 sentences) often produce better results than long descriptions