Tools / Video Production
Video Production icon

Video Production

Brief to finished video, end-to-end

Produce a complete video from a creative brief: treatment planning, screenplay, AI storyboard with keyframes, video clip generation, and final assembly with music and transitions. Each step is individually accessible. For brands, agencies, and filmmakers.

6 skillsv0.02
Create Treatment

Step 1: Generate a treatment plan from a creative brief. Queries knowledge bases (cinematography, lighting, colour, wardrobe, scriptwriting) and returns visual style, camera, sound, typography, pacing, emotional arc, and persona directions. Takes ~10s.

Returns: Comprehensive treatment plan with visual, camera, sound, typography, pacing, emotional arc, persona directions, and cost estimate
Parameters
brief *stringCreative brief describing the video -- concept, goals, tone, audience, duration, style preferences
creative_overridesobjectOptional per-role creative overrides that take priority over brief analysis
brandobjectBrand information for integration
personasarrayCharacter personas with optional turnaround sheet images
reference_imagesarrayURLs for visual reference/moodboards
target_platformstringTarget distribution platform (default youtube)
llm_modelstringOpenRouter model ID override
Example
Treatment for a luxury watch reveal
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{
  "tool": "video-production",
  "skill": "create_treatment",
  "input": {
    "brief": "A 60-second cinematic product reveal for a luxury watch brand. Dark, moody aesthetic with precise movements.",
    "target_platform": "youtube"
  }
}' \
  https://api.toolrouter.com/v1/tools/call
Create Script

Step 2: Generate a full screenplay from the treatment. Uses scriptwriting frameworks for hooks, retention, and emotional architecture. Returns scenes with dialogue, voiceover, pacing markers, and audio cues. Takes ~10s. Requires full treatment from step 1.

Returns: Full screenplay with scenes, dialogue, voiceover, pacing markers, emotional beats, and audio cues
Parameters
treatment *objectFull treatment plan output from create_treatment
duration_secondsnumberTarget video duration in seconds (overrides treatment estimate)
brandobjectBrand info (optional, same as create_treatment)
personasarrayPersona list (optional)
target_platformstringTarget distribution platform
llm_modelstringOpenRouter model ID override
Example
Script from treatment
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{
  "tool": "video-production",
  "skill": "create_script",
  "input": {
    "treatment": {
      "concept": "Luxury watch reveal",
      "target_duration_seconds": 60,
      "visual": {},
      "camera": {},
      "sound": {
        "music_genre": "ambient electronic"
      },
      "pacing": {},
      "emotional_arc": [],
      "persona_directions": []
    },
    "duration_seconds": 60
  }
}' \
  https://api.toolrouter.com/v1/tools/call
Create Storyboard

Step 3: Generate a shot list with AI keyframe images from script and treatment. Two-pass generation for consistency: establishing shots first, then remaining shots with persona references. Takes 1-5 min. Async -- poll with get_job_result. Requires steps 1-2.

Returns: Storyboard with shots (keyframe images, video prompts, overlays), audio plan, and cost estimate
Parameters
script *objectFull script output from create_script
treatment *objectFull treatment output from create_treatment (includes treatment_id and persona_directions)
personasarrayPersona list (optional)
keyframe_modelstringfal.ai image model for keyframe generation
aspect_ratiostringKeyframe aspect ratio (16:9, 9:16, 1:1)
llm_modelstringOpenRouter model ID override
Example
Storyboard from script and treatment
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{
  "tool": "video-production",
  "skill": "create_storyboard",
  "input": {
    "script": {
      "title": "Watch Reveal",
      "total_duration_seconds": 60,
      "scenes": [
        {
          "scene_number": 1,
          "title": "Opening",
          "duration_seconds": 10,
          "location": "Dark studio",
          "action": "Watch on velvet",
          "dialogue": [],
          "voiceover": "",
          "pacing": "slow",
          "emotional_beat": "anticipation"
        }
      ]
    },
    "treatment": {
      "treatment_id": "abc123",
      "concept": "Luxury watch reveal",
      "visual": {
        "style": "cinematic",
        "color_palette": [
          "#1a1a2e",
          "#c9a55a"
        ],
        "color_grading": "desaturated with gold highlights",
        "lighting": "dramatic chiaroscuro"
      },
      "camera": {
        "default_framing": "medium close-up"
      },
      "pacing": {
        "default_shot_duration": 5,
        "transition_style": "fade",
        "transition_duration": 0.5
      },
      "persona_directions": []
    }
  }
}' \
  https://api.toolrouter.com/v1/tools/call
Revise Storyboard

Step 4 (optional, repeatable): Edit individual shots and regenerate keyframes. Supports field-level changes, shot addition/removal, and reordering. Same seeds by default; set new_seed for fresh generation. Takes 30-60s. Async -- poll with get_job_result.

Returns: Updated storyboard with revised shots, renumbered, and regenerated keyframes
Parameters
storyboard *objectFull storyboard output from create_storyboard or previous revise_storyboard
treatment *objectFull treatment output (for persona directions and visual settings)
personasarrayPersona list (optional)
revisionsarrayArray of shot revisions
add_shotsarrayNew shots to insert
remove_shotsarrayShot numbers to remove
reorderarrayNew shot order (by shot_number)
Example
Change framing and regenerate keyframe for shot 3
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{
  "tool": "video-production",
  "skill": "revise_storyboard",
  "input": {
    "storyboard": {
      "shots": [
        {
          "shot_number": 1,
          "scene_number": 1,
          "description": "Wide establishing shot",
          "keyframe_url": "https://example.com/kf1.png",
          "keyframe_seed": 12345
        }
      ],
      "audio_plan": {
        "segments": []
      },
      "cost_estimate": {}
    },
    "treatment": {
      "treatment_id": "abc123",
      "visual": {
        "color_palette": [
          "#1a1a2e"
        ],
        "style": "cinematic"
      },
      "persona_directions": []
    },
    "revisions": [
      {
        "shot_number": 1,
        "changes": {
          "framing": "extreme close-up"
        },
        "regenerate_keyframe": true
      }
    ]
  }
}' \
  https://api.toolrouter.com/v1/tools/call
Generate Videos

Step 5: Generate video clips from storyboard keyframes via Kling 3.0 or other models. Each clip uses the keyframe + video_prompt to produce video with synced dialogue and audio. Takes 5-30 min. Async -- poll with get_job_result. Pending clips retrievable later.

Returns: Video clips array with URLs and filenames, plus any pending clips still generating
Parameters
storyboard *objectFull storyboard output from create_storyboard / revise_storyboard
video_modelstringVideo model key (kling-3.0, kling-2.6, veo-3.1, etc.)
shot_durationnumberTarget duration per clip in seconds (snapped to model-valid durations)
max_parallelnumberMax parallel video generation requests
Example
Generate videos from storyboard
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{
  "tool": "video-production",
  "skill": "generate_videos",
  "input": {
    "storyboard": {
      "shots": [
        {
          "shot_number": 1,
          "scene_number": 1,
          "keyframe_url": "https://example.com/kf1.png",
          "video_prompt": "[Visual]: Dark studio, watch on velvet\n[Camera]: Slow dolly-in\n[Lighting]: Dramatic chiaroscuro\n[Mood]: Anticipation",
          "duration_seconds": 5
        }
      ],
      "audio_plan": {
        "segments": []
      }
    }
  }
}' \
  https://api.toolrouter.com/v1/tools/call
Assemble Video

Step 6 (final): Stitch clips into a complete video with transitions, overlays, titles, end card, and audio mixing. Auto-generates music or uses provided URL, with volume ducking during speech. Takes 2-5 min. Async -- poll with get_job_result.

Returns: Final assembled video file (auto-uploaded via asset system) with duration and cost breakdown
Parameters
video_clips *objectFull output from generate_videos (contains clips array)
storyboard *objectFull storyboard output
treatment *objectFull treatment output (for sound, typography, pacing)
audioobjectAudio configuration
brandobjectBrand info for end card (logo_url, name, colors)
formatstringVideo aspect ratio format
fpsnumberFrames per second (default 30)
Example
Assemble final video
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{
  "tool": "video-production",
  "skill": "assemble_video",
  "input": {
    "video_clips": {
      "clips": [
        {
          "shot_number": 1,
          "video_url": "https://example.com/shot1.mp4",
          "video_path": "/tmp/shot1.mp4",
          "duration_seconds": 5,
          "filename": "shot_001_scene_01.mp4"
        }
      ]
    },
    "storyboard": {
      "shots": [
        {
          "shot_number": 1,
          "scene_number": 1,
          "overlays": [],
          "dialogue": "",
          "voiceover": ""
        }
      ],
      "audio_plan": {
        "segments": []
      }
    },
    "treatment": {
      "concept": "Luxury Watch",
      "logline": "A cinematic reveal",
      "sound": {
        "music_genre": "ambient electronic",
        "music_arc": "building tension to release",
        "sfx_style": "minimal"
      },
      "typography": {
        "heading_font": "Inter"
      },
      "visual": {
        "color_palette": [
          "#1a1a2e"
        ]
      },
      "pacing": {
        "transition_style": "fade",
        "transition_duration": 0.5
      }
    }
  }
}' \
  https://api.toolrouter.com/v1/tools/call
Loading reviews...
Loading activity...
v0.022026-03-22
  • Added subtitle, expanded description, and agent instructions
v0.012026-03-20
  • Initial release -- 6-skill video production pipeline

Quick Start

MCP (Claude Code)
claude mcp add --transport stdio \
  --env TOOLROUTER_API_KEY=YOUR_API_KEY \
  toolrouter -- npx -y toolrouter-mcp
REST API
curl -H "Authorization: Bearer $TOOLROUTER_API_KEY" \
  -d '{"tool":"video-production","skill":"create_treatment","input":{}}' \
  https://api.toolrouter.com/v1/tools/call

Use Cases

Open Produce Short-Form Marketing Videos

Produce Short-Form Marketing Videos

Create short-form marketing videos from concept to final render using AI-powered video production.

Video Production icon
Video Production
4 agent guides
Open Create Educational Video Content

Create Educational Video Content

Produce educational and explainer videos with AI-generated scripts, storyboards, and polished final renders.

Video Production icon
Video Production
4 agent guides
Open Dub Marketing Videos

Dub Marketing Videos

Translate and dub your marketing videos into multiple languages to reach international audiences.

Audio Dubber icon
Audio Dubber
4 agent guides
View all use cases for Video Production

Frequently Asked Questions

Can I start from a brief and end with a finished video?

Yes. The tool is designed as a full pipeline: treatment, script, storyboard, video generation, and final assembly. Each step builds on the previous one.

Do I have to pass each step into the next one?

Yes. The manifest expects the full output from each step to be passed forward, which keeps the treatment, script, storyboard, and final edit aligned.

Can I control aspect ratio and recurring characters?

Yes. Set `aspect_ratio` to `16:9` or `9:16`, and use personas with a turnaround sheet URL when you need the same character to stay consistent across scenes.

Are the render steps asynchronous?

Yes. Storyboard generation, revisions, video generation, and final assembly are async steps, so you poll `get_job_result` until the job finishes.