A self-hosted AI clip maker: requirements, setup and what it really costs
OpenShorts is an open source AI clip maker you can self-host: MIT-licensed, started with one docker compose up, and running the same pipeline as the hosted service. It finds the strongest moments in a long video, reframes them to 9:16 with face tracking and burns in word-level subtitles.
You need Docker, 8 GB+ of RAM and a Google Gemini key (free tier, or a local LLM instead). An optional NVIDIA GPU cuts an 8-minute video from 5 to 8 minutes of processing to about one.
Self-hosted has no watermark, no cap and no per-minute meter. The hosted edition, OpenShorts Cloud, exists for people who would rather not run it: free plan with a watermark, paid from $12/month.
The repo is MIT and free to run. If you want to see the clips before installing anything, the hosted free plan clips your first video up to 60 minutes; paid plans from $12/month.
This page is the practical half of self-hosting: what you need, the commands, what it costs to run and what you give up. For the licence and the case for open source clipping in general, see the open source video clipper; if you are not sure a clipper is what you want rather than a text-to-video model, start with the open source AI video generator page.
What do you get when you self-host?
The same software as the hosted service, not a cut-down community edition. The pipeline is identical, stage by stage:
- Transcription with word-level timestamps. faster-whisper transcribes the source audio and returns a timestamp for every individual word, not just every sentence.
- Scene boundary detection. PySceneDetect scans the video for cuts and hard visual transitions.
- Viral moment scoring. Google Gemini 3.1 Flash-Lite receives the timestamped transcript and the scene boundaries together, and returns the 3 to 15 strongest segments of 15 to 60 seconds.
- Vertical reframing. Each clip is cropped from 16:9 to 9:16 in one of two modes.
- Subtitles, hooks and effects. Subtitles are generated from the word-level transcript and burned in with FFmpeg.
- Dubbing and publishing. With your own ElevenLabs key, dubbing translates the audio into 30+ languages while preserving the speaker's voice, and the dubbed track is re-transcribed so the subtitles match the new language.
On top of the clip generator you get the layouts that make podcasts and screen recordings work in 9:16 (two speakers stacked, a screen above the presenter, a webcam inset enlarged), the hook overlay, the clip editor, the YouTube Studio for titles, thumbnails and descriptions, AI Shorts with your fal.ai key, dubbing with your ElevenLabs key, and the REST API and MCP server for agents. The stage-by-stage detail is in how OpenShorts works.
What are the requirements?
- Docker and Docker Compose. Linux, macOS, or Windows with Docker Desktop on the WSL2 backend.
- 8 GB of RAM or more and a modern multi-core CPU. The first start downloads the transcription and detection models.
- A Google Gemini API key for the AI features. The free tier is enough for individual use, or you can point the moment picker at a local LLM instead.
- Optional: an NVIDIA GPU with NVENC (an RTX 4060 class card is plenty). 8 GB of VRAM fits the large-v3-turbo transcription model in fp16 plus the detection models. The GPU build adds about 2 GB to the image.
The default image is CPU-only, and that is a perfectly good way to start. On a typical CPU an 8-minute video takes 5 to 8 minutes; with the GPU build it takes about a minute. If you clip a weekly podcast overnight, CPU is fine. If you clip every day and want results while you wait, the GPU is worth it.
Quick start
git clone https://github.com/mutonby/openshorts.git
cd openshorts
cp .env.example .env # optional: S3 backup and other settings
docker compose up --build
Open http://localhost:5175, go to Settings and
paste your Gemini key (plus fal.ai, ElevenLabs and Upload-Post keys if you want
those features). Then paste a YouTube link or upload a file in the Clip Generator.
The backend API listens on port 8000.
Turning on the GPU
Install the NVIDIA driver and the NVIDIA Container Toolkit on the host
(nvidia-smi must work), then create a
docker-compose.override.yml next to the compose file:
services:
backend:
build:
context: .
args:
GPU: "1"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu, video]
and set these in .env:
WHISPER_MODEL=large-v3-turbo
WHISPER_DEVICE=cuda
WHISPER_COMPUTE=float16
FFMPEG_ENCODER=auto
FFMPEG_ENCODER=auto probes the NVENC encoder at startup and falls
back to x264 if it is missing, and a CUDA error during transcription retries once
on CPU, so a misconfigured GPU degrades to slow rather than broken. The README
has the verification commands.
Bring your own keys: what each one is for
| Key | Needed for | Cost |
|---|---|---|
| Google Gemini | Picking the moments, titles, the layout picker | Free tier for individual use; under a cent per 10-minute video on paid tiers |
| Local LLM (optional) | Replaces Gemini for moment picking: Ollama, LM Studio, vLLM, llama.cpp | $0, your hardware |
| ElevenLabs (optional) | Dubbing into 30+ languages, voice-over | Billed by ElevenLabs; free tier available |
| fal.ai (optional) | AI Shorts: AI actors, lip-sync, B-roll | Pay per video, billed by fal.ai |
| Upload-Post (optional) | Posting to TikTok, Instagram and YouTube | Free tier available |
To run without any Google key, set LLM_BASE_URL and
LLM_MODEL in .env to any OpenAI-compatible server. Give
it a context of 16k tokens (Ollama defaults to 4k and truncates silently) and a
7-8B model or larger; 3B models do not return valid JSON reliably. Without
Gemini, the features that need to look at frames fall back: the automatic layout
picker uses the plain face-tracking crop, and a video with no speech cannot be
clipped.
Privacy: what leaves your machine
The video file stays where it is. Downloading, transcription, scene detection, face tracking, reframing and encoding all run locally, and the clips are written to your disk. What goes out depends on the keys you configure:
- With Gemini: the moment picker sends the transcript text, never the video. The automatic layout picker sends a handful of still frames. A video with no speech (gameplay, B-roll) is sent to Gemini so it can be clipped by what is on screen.
- With a local LLM and no Gemini key: nothing leaves the machine.
- Optional features call their providers only when you use them: dubbing sends audio to ElevenLabs, AI Shorts sends prompts to fal.ai, posting sends the finished clip to Upload-Post.
That is the real reason teams self-host a clipper: unreleased episodes, client work and internal recordings never touch a third-party upload form, and there is no retention policy to read because there is no retention.
What does it cost compared to per-minute credits?
Opus Clip and Vizard bill one credit per minute of video you import; Quso bills roughly one credit per minute. That meter is what makes long-form clipping expensive. A weekly 60-minute podcast is about 260 minutes a month. On monthly billing that is $29/month on Opus Clip (Pro), $29/month on Vizard (Creator) and $29/month on OpenShorts Cloud (Creator). Self-hosted, it is $0 in software. At 1200 minutes a month (a daily 40-minute stream), Opus Clip has no published plan and moves you to custom Business pricing, and Quso costs $33/month on its yearly plan.
Cheapest published plan that covers that many minutes, per month. Prices checked 2026-10-05. Self-hosted needs Docker and your own Gemini key, whose free tier covers 1,500 requests a day.
The self-hosted bar is not literally free. What you actually pay:
- The machine. If you already own a desktop with 8 GB+ of RAM, nothing extra. A GPU is a one-off purchase that pays for itself only at high volume.
- Electricity for the minutes it spends processing.
- API usage. Gemini is free within its free tier and under a cent per 10-minute video beyond it. Dubbing and AI Shorts are billed by ElevenLabs and fal.ai if you use them.
- Your time to install it, update it (
git pulland rebuild) and keep the machine on.
Rule of thumb: below a couple of hours of source a month, a hosted plan is cheaper than your time. Above that, and especially for long recordings, the per-minute meter is the whole bill, and self-hosting removes it.
Using it from agents: API and MCP
A self-hosted instance serves the same REST API and MCP server as the hosted one, unmetered. An agent in Claude, ChatGPT or n8n can submit a video, wait for the signed webhook and publish the clips, with no per-call price. There is also a stdio MCP transport for local clients. The catch is availability: the endpoint is up only while your machine is. Setup and the tool list are on the MCP page; the one-POST, one-webhook flow is on automate shorts with the API.
What you give up compared to Cloud
- Speed without a GPU. Cloud renders on an NVIDIA GPU, about 50 seconds per 8-minute video. A CPU-only box takes 5 to 8 minutes.
- Zero setup. Cloud has the Gemini key included and auto-posting already connected. Self-hosted, you create and manage the keys.
- An always-on endpoint. Cloud's MCP server and webhooks work while your laptop sleeps.
- Storage and backup. Cloud keeps your clips and serves them from any browser. Self-hosted, they live on your disk unless you configure S3 backup.
- Maintenance. Updates, YouTube download changes and model downloads are yours to handle.
Nothing is feature-locked: the hosted plans pay for hardware and keys, not for features. If those trade-offs are not worth it to you, the Cloud plans start with a free tier and go from $12 to $59 a month.
Self-hosted or Cloud: a quick decision
- Self-host if the footage is private, your volume is high or your sources are long, you are comfortable with Docker, or you want to change how the pipeline cuts and reframes.
- Use Cloud if you want results in under a minute on any laptop, you do not want to manage keys, or you need an endpoint that is always on for an agent.
- Do both: test the output on the hosted free plan, then self-host once you know it fits your footage. It is the same pipeline, so the clips match.
Common questions
- Is there an open source version of Opus Clip?
- Opus Clip itself is closed source and cloud only. OpenShorts is the open source alternative: MIT-licensed, self-hosted with Docker, and covering the same job of finding the best moments in a long video, reframing them to 9:16 with face tracking and burning in word-level subtitles.
- What hardware do I need to self-host OpenShorts?
- Docker and Docker Compose, 8 GB of RAM or more and a modern multi-core CPU. On CPU an 8-minute video takes 5 to 8 minutes. An NVIDIA GPU with NVENC is optional and brings that to about a minute; 8 GB of VRAM is enough for the large-v3-turbo transcription model in fp16 plus the detection models.
- Does self-hosted OpenShorts have a watermark or a usage limit?
- No. The self-hosted edition has no watermark code and no metering code. The only limits are your hardware and the quotas of the API keys you bring.
- Which API keys do I need?
- Only a Google Gemini key for the AI features, and its free tier covers individual use. You can replace it with a local LLM through LLM_BASE_URL. ElevenLabs (dubbing), fal.ai (AI Shorts) and Upload-Post (auto-posting) are optional and only needed for those features.
- Does my video leave my machine?
- The video file stays local: transcription, scene detection, reframing and encoding run on your machine. With Gemini, the moment picker receives the transcript text, the automatic layout picker receives a few still frames, and videos with no speech are sent to Gemini to be clipped by what is on screen. With a local LLM and no Gemini key, nothing leaves the machine at all.
- Is there an open source AI clipping API?
- Yes. A self-hosted OpenShorts serves the same REST API and MCP endpoint as the hosted service, with no metering: POST a video, get a signed webhook with the clips. It runs only while your machine is on; the hosted endpoint is always on and draws from your plan minutes.
- Can I use self-hosted OpenShorts commercially?
- Yes. The core application is MIT-licensed, which allows commercial use, modification and redistribution. The cloud/ directory (billing and hosted-service code) is under a separate licence and is not needed to self-host.
- How much does self-hosting really cost compared to Opus Clip or Vizard?
- The software is $0. What you pay is the machine, its electricity and your time, plus Gemini usage, which is typically under a cent per 10-minute video on paid tiers and free within the free tier. Opus Clip and Vizard bill one credit per source minute: at 300 minutes a month that is $29/month on Opus Clip and $29/month on Vizard, billed monthly.
Sources
- Requirements, commands and environment variables from the project README at github.com/mutonby/openshorts.
- Competitor plans in the calculator checked 2026-10-05 on each vendor's public pricing page; the full plan breakdowns are in the alternatives hub.