ShortsFlow
This server runs ShortsFlow locally to generate and clip short videos and produce platform-ready social copy, with background jobs for renders.
Generate original shorts from an idea/topic with AI script, voice-over, stock footage, music, and animated captions via
generate_short.Extract best clips from a long local video or YouTube link using Whisper transcription, moment scoring, face-tracked 9:16 cropping, and captions via
extract_clips.Write social packages with title, description, hashtags, and short caption for YouTube Shorts, TikTok, and Instagram Reels via
generate_social_package.Poll render jobs started by generation/clipping tools using
get_render_status.List supported options such as content modes, caption styles, TTS engines, aspect ratios, and SFX presets via
list_supported_modes.Keep processing local: files are written inside the ShortsFlow folder, and nothing is uploaded or published automatically.
Uses a Gemini API key to generate AI titles, descriptions, hook scoring, and idea-to-video modes.
Enables publishing or scheduling generated Shorts to Instagram via Upload-Post.
Provides a free local LLM option for AI titles, descriptions, hook scoring, and idea-to-video generation without a paid API key.
Enables publishing or scheduling generated Shorts to TikTok via Upload-Post.
Allows clipping long YouTube videos or links into vertical Shorts and publishing generated Shorts to YouTube.
⚡ ShortsFlow
Drop in a podcast or interview, get captioned vertical clips. No account, no API key, no upload. Free and open source (MIT): no watermark, no credits, no subscription. Runs on your own PC.
Try it in two minutes
🪟 Windows, no setup | ⬇ ShortsFlow-Setup.exe, open ShortsFlow, press Try a 2-minute sample, then Start. |
🍎🐧 Mac or Linux |
|
💻 Any OS |
|
☁️ Nothing to install | Open in Colab (free GPU) |
No account or API key is needed to clip a video. A key (or a free local Ollama) adds AI-written titles and descriptions and lets the AI pick and score the moments (a cloud provider then receives the transcript text).
Related MCP server: vidcut
What you get from one long video
The moments. Local Whisper reads the speech; clips start and end on sentences, skip a mic check or a mumbled opening, and never overlap. Every clip says why it was picked.
The framing. Face-tracked 9:16 crops, a cut to whoever is speaking in a two-person talk, and the whole picture over a blurred copy for slides and screen recordings.
The captions. Animated word-by-word captions (Hormozi, glow box, bounce), your logo and handle, and an editor to re-cut or restyle any clip.
Tighter pacing.
--tightenremoves silences and pauses between words, never a spoken word, and keeps laughter and applause.
# the one command most people need
shortsflow clip interview.mp4 --captions
# a podcast: cut to whoever is talking, remove silences, animated captions
python main.py --source_video "https://www.youtube.com/watch?v=VIDEO_ID" --extract_mode shorts \
--clip_count 3 --layout auto --smart_crop --tighten --use_remotion --caption_style HORMOZIHow good is it? We measure it
Clip quality is checked on public-domain and Creative Commons videos with no AI key at all, with a benchmark that runs on GitHub's runners
(python scripts/clip_benchmark.py <session> --picture): clips that start and end on a sentence, no overlap, length near the asked one,
a standalone opening line, titles that say only what the clip says, a face found and centred. The workflow is .github/workflows/clip_benchmark.yml. The results table, including the weak spots, is in docs/BENCHMARKS.md. We do not claim to beat Opus Clip on every video; a side-by-side on public footage is the next thing to publish.
ShortsFlow vs Opus Clip, Klap and Vizard
ShortsFlow | Opus Clip, Klap, Vizard | |
Price | Free, MIT | Subscription or credits |
Watermark | None | On the free tier |
Where your video goes | Stays on your machine; Whisper runs locally (text goes to an AI provider only if you add a key) | Uploaded to their cloud |
Account | Not needed | Required |
Best at | Podcasts and interviews, privacy, full control | Polish, hosted convenience |
Privacy: what leaves your PC
Everything runs locally by default. Only these leave it, and each is optional: AI text providers (Gemini, Groq, Hugging Face, Ollama is local) receive the
transcript text when you set a key; Gemini receives small frames for --visual_context when a key is set; OpenStreetMap place names for trip recaps
(--recap_no_geocode turns it off); Microsoft's Edge voice service or ElevenLabs receive the text to speak in the dub and idea-to-video modes;
Google Drive upload only when you ask. A pasted YouTube link is downloaded to your PC; use your own files where the video's terms require it.
More than clips
Browser app, desktop studio, CLI, Docker, REST API, an MCP server for AI agents, dubbing, trip and event recaps, photo reels, step-by-step videos, game moments, and 30+ idea-to-video formats. They are documented in docs/FEATURES.md (the full feature reference).
Help and contributing
Something wrong? Open an issue with
shortsflow doctoroutput.Roadmap and open tasks: ROADMAP.md. Tests:
python -m pytest(offline).Sample footage in the demos is public domain or Creative Commons and credited where used.
License
MIT. Remotion (animated captions) has its own licence for companies above its size threshold; see remotion.dev/license.
Available Tools
5 toolsextract_clipsA
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.
Inputs: source_video (required), layout, tighten, language, +6 more.
generate_shortA
Create an original vertical short video from an idea: an AI-written script, voice-over, stock footage, background music and animated captions, rendered locally by the ShortsFlow pipeline. It runs in the background: the call returns a job_id immediately and the render takes a few minutes, so poll get_render_status until the job is 'completed' or 'failed'. It uses the user's own LLM, voice and stock-footage keys from the ShortsFlow .env, writes files only inside the ShortsFlow folder, and never uploads or posts anything. Use this to make a new short from a topic; use extract_clips instead to cut shorts out of an existing video.
Inputs: mode, vibe, prompt, script, +7 more.
generate_social_packageA
Write platform-ready text for a short: a title, description, hashtags and a short caption for YouTube Shorts, TikTok and Instagram Reels. It answers immediately (no job). It uses the configured AI model; if none is reachable it returns a generic template filled with the topic instead, so check the wording. It does not publish anything.
Inputs: topic (required), mode, category.
get_render_statusA
Check a background job started by generate_short or extract_clips. Returns a JSON object with status ('processing', 'completed', 'failed' or 'not_found'), progress (0-100), the last log lines, and an error message (the last lines of the log) when the job failed. Jobs are remembered only while this server is running. Call it every 20-30 seconds until the status is no longer 'processing'. It changes nothing.
Inputs: job_id (required).
list_supported_modesA
List the options the other tools accept: content modes for generate_short, caption styles, voice-over engines, aspect ratios and sound-effect presets. Instant, read-only, takes no input. Call it first if you are unsure which value to pass.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool occupies a distinct slot: two creation paths (extract_clips vs generate_short), one text-only tool (generate_social_package), one job poller (get_render_status), and one read-only options lister. The descriptions explicitly cross-reference each other ("use generate_short instead to create a video from a topic"), so the two video-producing tools cannot be confused.
All five names follow a strict verb_noun snake_case pattern: extract_clips, generate_short, generate_social_package, get_render_status, list_supported_modes. There is no mixing of conventions or vague verbs.
Five tools is a tight, well-scoped surface for a short-video pipeline: two render entry points, one status poller (required because renders are asynchronous), one text helper, and one options reference. Every tool earns its place and nothing is redundant.
The core lifecycle is covered: start a render (from topic or existing video), poll it, get platform text, and discover valid option values. Minor gaps remain — there is no cancel/abort for a running job, no list of past or active jobs, and no way to retrieve output file paths or clean up sessions, so an agent must infer results from status logs.
Maintenance
Related MCP Connectors
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
AI video clipping MCP: long videos and podcasts into scored, captioned 9:16 shorts.
Turn long videos into captioned vertical clips, then render and schedule social posts.
Make, render and auto-post AI faceless videos to YouTube, TikTok and Instagram from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAutomated short-form video creation from text prompts, combining text-to-speech, captions, background videos, and music, exposed as an MCP server for AI agents.84 npmMIT
- AlicenseNot gradedqualityBmaintenanceAI-native timeline editor for short-form video. Your agent cuts, captions, adds motion graphics and renders against a real, editable timeline over MCP — not a render queue. Human-in-the-loop by design: it calls request_review and waits while you supervise in a browser. Local-first and AGPL; your footage never leaves your machine.2AGPL 3.0
- FlicenseNot gradedqualityAmaintenanceA local MCP server that lets chat-based coding agents turn a folder of raw clips into finished, beat-synced montage videos by handling shot selection, music matching, subtitles, transitions, and rendering through natural language. It returns a timeline digest and contact sheet for approval before any frame is rendered.-
- AlicenseNot gradedqualityCmaintenanceAn MCP server that gives agents a video engine for cutting beat-synced 9:16 shorts from existing footage, generating original short films from a prompt, and swapping characters in a clip while preserving motion and sound. It handles the deterministic work — scene detection, tracked crops, captions and rendering — while generation runs on private Hugging Face ZeroGPU Spaces in the user's own account.3Apache 2.0