OpenShorts logoopenshorts Get free clips
Home Open source video clipper Self-hosting guide

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.

LicenceMITCommercial use allowed
Software cost$0No watermark, no cap
8-min video5-8 minOn CPU; about 1 min with an NVIDIA GPU
Your videoLocalTranscribed and rendered on your machine
Self-host or try it hosted Clone it, or test the output first

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.

Source on GitHub

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:

  1. Transcription with word-level timestamps. faster-whisper transcribes the source audio and returns a timestamp for every individual word, not just every sentence.
  2. Scene boundary detection. PySceneDetect scans the video for cuts and hard visual transitions.
  3. 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.
  4. Vertical reframing. Each clip is cropped from 16:9 to 9:16 in one of two modes.
  5. Subtitles, hooks and effects. Subtitles are generated from the word-level transcript and burned in with FFmpeg.
  6. 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?

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

KeyNeeded forCost
Google GeminiPicking the moments, titles, the layout pickerFree 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-overBilled by ElevenLabs; free tier available
fal.ai (optional)AI Shorts: AI actors, lip-sync, B-rollPay per video, billed by fal.ai
Upload-Post (optional)Posting to TikTok, Instagram and YouTubeFree 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:

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.

  • OpenShorts self-hostedyour machine, MIT$0/mo · Docker, no watermark, no cap
  • OpenShorts Cloudper source minute, trims and hooks free$59/mo · Pro
  • Opus Clip1 credit per source minute$58/mo · Pro, 2 packs
  • Vizard1 credit per uploaded minute$29/mo · Creator
  • Quso (Vidyo.ai)~1 credit per minute$49/mo · Growth

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:

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

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

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

Related pages