Skip to main content
Glama

extract_clips

Cuts the best moments from a long video file or YouTube link into captioned vertical 9:16 shorts, returning a job ID to poll until rendering finishes.

Instructions

Cut the best moments out of a long video (a local file path or a YouTube link) into captioned vertical shorts: it transcribes the speech with Whisper, scores the moments, crops to 9:16 with face tracking and burns in animated captions. It runs in the background: the call returns a job_id immediately and the work can take several minutes (longer on a computer without an NVIDIA GPU), so poll get_render_status until the job is 'completed' or 'failed'. Clipping works without any API key; an AI key only improves scoring and titles. Files are written under the ShortsFlow folder (sessions/...) and nothing is uploaded. Use generate_short instead to create a video from a topic.

Input Schema

NameRequiredDescriptionDefault
layoutNoFraming: single = face-tracked crop; split = two speakers stacked; active = cut to whoever is talking (stacked when unsure), best for podcasts and interviews.single
tightenNoCut out silences and dead air inside each short.
clip_countNoHow many shorts to cut out.
smart_cropNoFollow the speaker's face when cropping the wide video to vertical.
source_videoYesLocal video file path or a YouTube/other video URL to clip. Required.
use_remotionNoAnimated captions (needs Node.js). False renders without animated captions.
caption_styleNoAnimated caption look (needs use_remotion): HORMOZI = bold yellow single words, GLOW_BOX = words in boxes with a pink highlight, BOUNCE = bouncy gold single words, MINIMAL = clean dark boxes, AUTO/RANDOM = pick for me.HORMOZI

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv0.1.1
    • addedInput schema / properties / caption_style / description
      Added value: +"Animated caption look (needs use_remotion): HORMOZI = bold yellow single words, GLOW_BOX = words in boxes with a pink highlight, BOUNCE = bouncy gold single words, MINIMAL = clean dark boxes, AUTO/RANDOM = pick for me."
    • addedInput schema / properties / caption_style / enum
      Added value: +[
      +  "HORMOZI",
      +  "GLOW_BOX",
      +  "BOUNCE",
      +  "MINIMAL",
      +  "AUTO",
      +  "RANDOM"
      +]
    • changedInput schema / properties / clip_count / description
      Previous value: -"Number of viral shorts to extract"New value: +"How many shorts to cut out."
    • addedInput schema / properties / clip_count / maximum
      Added value: +15
    • addedInput schema / properties / clip_count / minimum
      Added value: +1
    • changedInput schema / properties / layout / description
      Previous value: -"single: face-tracked crop; split: two speakers stacked; active: cut to whoever is talking (stacked when unsure) for podcasts/interviews"New value: +"Framing: single = face-tracked crop; split = two speakers stacked; active = cut to whoever is talking (stacked when unsure), best for podcasts and interviews."
    • changedInput schema / properties / smart_crop / description
      Previous value: -"Enable AI face and subject tracking crop for 9:16 vertical video"New value: +"Follow the speaker's face when cropping the wide video to vertical."
    • changedInput schema / properties / source_video / description
      Previous value: -"YouTube video URL or local video file path"New value: +"Local video file path or a YouTube/other video URL to clip. Required."
    • changedInput schema / properties / tighten / description
      Previous value: -"Automatically trim silence gaps for punchy high retention"New value: +"Cut out silences and dead air inside each short."
    • addedInput schema / properties / use_remotion / description
      Added value: +"Animated captions (needs Node.js). False renders without animated captions."
  2. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden and does so: it discloses the asynchronous contract (returns job_id immediately, work takes minutes, slower without an NVIDIA GPU), the required polling loop, that files land under the ShortsFlow folder and nothing is uploaded, and the optional-API-key behavior. These are exactly the operational facts an agent needs and none of them are inferable from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense but well ordered: what it does, how it runs, what it costs/requires, where output goes, and the alternative sibling, in that sequence. Every sentence carries information, though the single unbroken paragraph makes it slightly harder to scan than a short bulleted split would be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, long-running, no-output-schema tool, the description covers the async return value, the polling path, runtime expectations, and side effects (local files, no uploads). The only thin spot is what the completed job actually yields beyond 'shorts' — number of files, naming, or format — which the agent must discover from get_render_status.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the per-parameter enum and default meanings are already documented and the baseline is 3. The description still adds framing value by tying the parameters together — 'crops to 9:16 with face tracking' contextualizes smart_crop/layout, and 'burns in animated captions' plus the Whisper/scoring mention explains why clip_count and caption styling exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb and resource ('Cut the best moments out of a long video ... into captioned vertical shorts') and then enumerates the pipeline steps: Whisper transcription, moment scoring, 9:16 face-tracked crop, burned-in animated captions. It explicitly names the sibling generate_short as the tool for a different task, so the agent can distinguish the two without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit routing: use this for clipping an existing video, use generate_short to create a video from a topic. It also tells the agent the follow-up workflow (poll get_render_status until 'completed' or 'failed') and states the prerequisite context that clipping works without an API key while an AI key only improves scoring and titles.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.