OpenShorts
Self-hosted AI clip generator with an eight-tool MCP server for clipping, captioning, and publishing shorts.
Turns long videos into 9:16 clips with Gemini moment detection, face-tracked reframing, faster-whisper subtitles, ElevenLabs dubbing, and Upload-Post publishing. Runs from docker compose on your own machine or as a hosted plan; both expose the same /mcp endpoint.
- I publish a weekly podcast and want clips cut, captioned, and posted without a $20/mo clipper subscription
- I want an agent to turn every new livestream VOD into shorts overnight on my own GPU box
- The cloud/ directory is under a commercial license, not MIT; GitHub shows the license as 'other' for that reason
- CPU-only by default: 5 to 8 minutes per 8-minute video; NVIDIA Container Toolkit needed for NVENC
- Self-hosted /mcp only answers while your machine is on; the hosted endpoint at mcp.openshorts.app needs an osk_ API key
- Provider keys go into the dashboard Settings, not .env
Last activity Sep 2, 2026. Fit: adaptable 3, operable 2.
Editions
Self-hosted · Free open source
- Clone
git clone https://github.com/mutonby/openshorts - ImageContainer
Cloud Free · Free closed source
- HostedOpen the hosted app
Cloud paid · $12 per month closed source
- HostedOpen the hosted app
Adaptable: what is yours to change
Make it yours
Config only25 things to edit
Copy .env.example to .env. Point LLM_BASE_URL and LLM_MODEL at Ollama or any OpenAI-compatible server to drop the Gemini dependency; tune WHISPER_MODEL, TRANSCRIBE_BACKEND, FFMPEG_ENCODER, and QUALITY_GATE_MIN_HEIGHT; add AWS_S3_BUCKET for backup. Provider keys for Gemini, fal.ai, ElevenLabs, and Upload-Post are entered in the dashboard Settings page.
- Env vars
LLM_BASE_URLLLM_MODELLLM_API_KEYLLM_SCORE_BATCHLLM_TIMEOUTWHISPER_MODELWHISPER_DEVICEWHISPER_COMPUTETRANSCRIBE_BACKENDASR_GPU_CONCURRENCYFFMPEG_ENCODERQUALITY_GATE_MIN_HEIGHTGEMINI_MODEL_THUMBNAILGEMINI_IMAGE_MODELAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_REGIONAWS_S3_BUCKETAWS_S3_PUBLIC_BUCKETYOUTUBE_COOKIESDEBUG_LOGSPAID_PROXY_DAILY_MB- Config files
.envdocker-compose.ymldocker-compose.override.yml- Prompt files
- none
- Accounts you need
- Google AI Studio (Gemini)fal.ai (AI Shorts only)ElevenLabs (dubbing only)Upload-Post (publishing only)AWS (optional S3)
Source
- github.com/mutonby/openshorts
- MIT (cloud/ directory under a commercial license) license
- Last commit Sep 2, 2026
- 3,833 stars
Operable: what an agent can drive
Interface
OfficialMCP serverpublished by the builderremote or local
How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.
- Docs
- www.openshorts.app/mcp
- Tools
process_videocreate_uploadget_job_statuslist_clipsget_quotaadd_subtitlesrecut_clippublish_clip
Reach
Partial coverage. 5 of 9 jobs reachable through the stated interface.
| Job | Through the interface | Evidence |
|---|---|---|
| Generate clips from a long video | Reachable | MCP tools process_video, create_upload, get_job_status, list_clips |
| Restyle subtitles | Reachable | MCP tool add_subtitles (classic or karaoke) |
| Recut a clip | Reachable | MCP tool recut_clip |
| Publish or schedule to TikTok, Instagram, YouTube | Reachable | MCP tool publish_clip through Upload-Post |
| Check plan quota | Reachable | MCP tool get_quota |
| Generate AI Shorts with UGC actors | Not reachable | No MCP tool covers the AI Shorts pipeline; dashboard only |
| YouTube Studio: titles, thumbnails, descriptions | Not reachable | No MCP tool; dashboard only |
| Dub clips into other languages | Not reachable | Dubbing is a dashboard feature; not among the eight MCP tools |
| Force a reframing layout per video | Not reachable | README: layout forced from the dashboard; no MCP parameter documented |
Code stack
- Languages
- PythonTypeScript
- Frameworks
- FastAPIViteffmpegMediaPipeYOLOv8faster-whisper
- Package manager
- pip
- Database
- none
- Hosting target
- Dockeropenshorts.app
- Built
- Unknown (recorded, never ranked)
Model stack
- Providers
- Google Geminiany OpenAI-compatible LLM through LLM_BASE_URLElevenLabsfal.ai
- Models
- Gemini 3.1 Flash-Litefaster-whisperFlux 2 ProHailuo 2.3 Fast
- Keys you need
GEMINI_API_KEY (entered in dashboard Settings)LLM_API_KEYAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY- Prompts live in
- none
Skills
A Claude Code plugin that teaches an agent to generate and publish short videos through OpenShorts.
- Kind
- bundled
- Paths
skills/openshorts/SKILL.md- Install
/plugin marketplace add mutonby/openshorts
Evidence and confidence
| Field | Where it was seen | Confidence |
|---|---|---|
| formFactor | README: dashboard at localhost:5175 served by FastAPI backend | 95% |
| executionModel | README: fixed pipeline; Gemini or a local LLM picks moments and layouts | 90% |
| operability | openshorts.app/mcp: eight tools, Streamable HTTP, published by OpenShorts; self-host serves the same endpoint | 90% |
| effort | .env.example documents every variable with comments; docker compose is the only install | 90% |
| editions | README table: self-hosted free forever MIT; hosted free 20 min/mo with watermark; paid from $12/mo to $59/mo | 90% |
| active | GitHub pushedAt 2026-09-02 | – |
| reach | 85% |
Open questions
- Does the self-hosted MCP accept a bearer token or run open on localhost only?
- Is the AI Shorts pipeline reachable through the REST API even though it is not an MCP tool?
Sources
- www.openshorts.app/ sourcing:video-streaming:community
- github.com/mutonby/openshorts sourcing:video-streaming:community
- www.openshorts.app/mcp analysis