OpenShorts

Convierte videos largos en shorts verticales virales y publícalos en TikTok, Instagram y YouTube: detección de momentos con IA, reencuadre 9:16, subtítulos y doblaje.

Documentación

OpenShorts.app

License: MIT Open Source PRs Welcome Docker GitHub stars Last Commit

Plataforma de video AI de código abierto con 3 herramientas en una: Generador de Clips, AI Shorts (videos UGC con actores AI) y YouTube Studio.

Your podcast, and the vertical clip OpenShorts makes of it: both speakers stacked, captions on the seam

¿Dos personas en cámara? OpenShorts las apila en lugar de reducir el plano general, coloca los subtítulos en la unión donde no tapan a nadie, y vuelve a un recorte con seguimiento facial cuando el corte pasa a una sola persona. La IA elige el diseño por video; no hay nada que configurar.

Dos formas de ejecutarlo, el mismo software en ambos casos:

Auto-alojado (este repositorio)Alojado en openshorts.app
PrecioGratis para siempre, MITPlan gratuito, de pago desde $12/mes
Velocidad5 a 8 min por video de 8 min en CPUAlrededor de 50s en nuestra GPU NVIDIA
Claves APITrae tus propias Gemini, ElevenLabs, fal.aiGemini incluida, nada que configurar
Marca de agua / límitesNinguna, nuncaMarca de agua y 20 min/mes en el plan gratuito, ninguna en el de pago
ConfiguraciónDocker, 8GB+ RAM, descargas de modelosInicia sesión y pega un enlace
MCP / API para agentesMismo endpoint /mcp, pero solo mientras tu máquina esté encendidaEndpoint siempre activo en mcp.openshorts.app, claves API con un clic
Tus datosTu servidorLos nuestros

El auto-alojamiento es genuinamente gratis y siempre lo será. Te cuesta una máquina, tus propias claves API y el tiempo de mantenerlo funcionando. Los planes alojados existen para cubrir ese hardware y esas claves, no para desbloquear funciones.

https://github.com/user-attachments/assets/b45fa983-16b4-48b5-ac5b-a267836b9ad9

Tutorial en video: Cómo funciona

OpenShorts Tutorial

Haz clic en la imagen de arriba para ver el recorrido completo.


3 Herramientas en 1 Plataforma

1. Generador de Clips

Convierte tus videos de formato largo — podcasts, seminarios web, transmisiones en vivo, vlogs, entrevistas — en shorts 9:16 listos para viralizar en TikTok, Instagram Reels y YouTube Shorts.

Clip Results

2. AI Shorts (Creador de Videos UGC)

Genera videos de marketing con actores AI para cualquier producto o negocio. Sin cámara, sin estudio, sin presupuesto de influencers. Solo describe tu producto o pega una URL.

AI Shorts Setup

  • Dos modos de costo: Bajo costo ($0.65/video) y Premium ($2/video)
  • Funciona para cualquier negocio: SaaS, restaurantes, comercio electrónico, coaching, negocios locales
  • Actores generados por IA con sincronización de labios, locución, material de apoyo y subtítulos estilo TikTok
  • Elige de una galería de avatares compartida o sube tu propia foto
  • Publica directamente en TikTok, Instagram y YouTube

3. YouTube Studio

Kit completo gratuito de herramientas AI para YouTube: miniaturas, títulos, descripciones y publicación directa.

YouTube Studio

  • Generador de miniaturas AI con superposición de rostro
  • 10 sugerencias de títulos virales con chat de refinamiento
  • Descripciones generadas automáticamente con marcas de tiempo por capítulos
  • Publicación con un clic en YouTube

Galería de Videos UGC

Todos los videos y avatares generados se guardan en una galería pública con páginas SEO para cada video.

UGC Gallery

  • Página de galería pública con reproducción al pasar el cursor (/gallery)
  • Páginas de video SEO individuales con etiquetas meta og:video (/video/{id})
  • Datos estructurados JSON-LD para motores de búsqueda
  • Galería de avatares con historial de prompts

Características Clave

Generador de Clips

  • Detección de Momentos Virales: Google Gemini 3.1 Flash-Lite analiza transcripciones y límites de escenas para detectar 3-15 momentos de alto potencial
  • Funciona completamente local si quieres: apunta LLM_BASE_URL a Ollama, LM Studio, vLLM o cualquier servidor compatible con OpenAI y el selector de momentos funciona con tu propio modelo, sin necesidad de clave de Google (ver Ejecutar sin clave de Google)
  • Recorte Inteligente 9:16: Reencuadre AI por escena — modo TRACK (seguimiento facial con MediaPipe + YOLOv8), modo GENERAL (fondo desenfocado), modo SPLIT (dos oradores apilados, subtítulos en la unión) y modo SCREENCAST (pantalla sobre el presentador); el diseño se elige por video con Gemini o se fuerza desde el panel
  • Subtítulos Automáticos: faster-whisper con marcas de tiempo a nivel de palabra, estilizados e incrustados en los clips
  • Doblaje de Voz AI: Integración con ElevenLabs para 30+ idiomas con clonación de voz
  • Superposiciones de Texto Gancho: Superposiciones de texto generadas por IA para captar la atención
  • Efectos de Video AI: Filtros FFmpeg generados por Gemini para efectos profesionales

Pipeline de AI Shorts

  1. Analizar: Extrae URL del sitio web + investigación web, o genera desde descripción manual
  2. Guion: La IA escribe guiones virales (formato gancho - problema - solución - CTA)
  3. Actor: Genera actores AI con Flux 2 Pro o selecciona de la galería compartida
  4. Voz: Locución TTS de ElevenLabs (inglés/español, masculino/femenino)
  5. Video: Generación de cabeza parlante (Hailuo 2.3 Fast img2video + VEED Lipsync)
  6. Material de apoyo: Visuales generados por IA con efecto Ken Burns
  7. Composición: Ensamblaje final con FFmpeg con subtítulos y superposiciones gancho
  8. Publicar: Publicación directa en TikTok, Instagram Reels, YouTube Shorts vía Upload-Post

YouTube Studio

  • Generación de títulos con IA con 10 opciones virales
  • Chat interactivo de refinamiento para títulos
  • Generación de miniaturas AI con rostro y fondo personalizados
  • Descripciones automáticas con marcas de tiempo por capítulos desde transcripción Whisper
  • Publicación directa en YouTube vía Upload-Post

Publicación Automática en Redes Sociales

  • Publicación con un clic en TikTok, Instagram Reels y YouTube Shorts simultáneamente
  • Programa subidas para cualquier fecha y hora — planifica tu calendario de contenido y deja que OpenShorts publique automáticamente
  • Distribución multiplataforma — publica en todas tus redes sociales a la vez desde una sola interfaz
  • Integración con Upload-Post con subidas asíncronas

Infraestructura

  • Respaldo en la nube S3 (bucket privado para clips, bucket público para galería/avatares)
  • Páginas de galería SEO servidas por FastAPI con datos estructurados JSON-LD
  • Galería de avatares compartida entre todos los usuarios
  • Cola de trabajos asíncrona con concurrencia configurable

¿Para Quién Es Esto?

  • Creadores de contenido — Convierte videos largos en shorts automáticamente, publica en todas las plataformas a la vez
  • Agencias de marketing — Genera videos UGC para clientes a escala, sin actores ni estudios
  • Fundadores de SaaS — Crea demos de producto y shorts de marketing desde solo una URL
  • Marcas de comercio electrónico — Videos de producto con actores AI para TikTok Shop, Instagram, YouTube
  • Negocios locales — Restaurantes, gimnasios, bienes raíces, coaching — marketing de video asequible
  • Desarrolladores — Auto-aloja, personaliza el pipeline, integra vía API

Exhibición de AI Shorts

Videos generados con OpenShorts AI Shorts — sin cámara, sin estudio, sin actores:

Biohacking for InvestorsSecret Weapon for DevsEl Secreto de los Agentes de IA
Biohacking para Inversores · BAJO COSTOArma Secreta para Desarrolladores · BAJO COSTOEl Secreto de los Agentes de IA · PREMIUM

Explora todos los videos en openshorts.app/gallery


OpenShorts vs Competidores

CaracterísticaOpenShortsOpus ClipCapCutVizardKlapDescript
PrecioAuto-alojado gratis
desde $12/mes alojado
$15-29/mes$8/mes$15-20/mes$23-63/mes$24-65/mes
Auto-alojadoSíNoNoNoNoNo
Código abiertoSíNoNoNoNoNo
Marca de aguaNunca auto-alojado
solo plan gratuito alojado
Nivel gratuitoAlgunasNivel gratuitoNivel gratuitoNivel gratuito
Límites de subidaNinguno auto-alojado
por plan alojado
10-30GBBasado en créditos60min-10hr10-100 vids/mes60min-40hr
Detección de clips AISíSíSíSíSíSí
Reencuadre inteligente 9:16SíSíSíSíSíNo
Subtítulos automáticosSíSíSíSíSíSí
Doblaje de voz (30+ idiomas)SíNoSolo ProNoSolo ProSolo Business
Actores UGC AISíNoNoNoNoNo
Efectos de video AISíNoSíNoNoNo
Superposiciones de texto ganchoSíNoNoNoNoNo
YouTube Studio (títulos, miniaturas)SíNoNoNoNoNo
Publicación automática en redesSíSolo ProSolo TikTokSolo de pagoSolo de pagoNo
Programar subidasSíSolo ProNoSolo de pagoSolo de pagoNo
Privacidad de datosTu servidorSu nubeSu nubeSu nubeSu nubeSu nube
Funciona con LLM local (Ollama)SíNoNoNoNoNo

¿Cuánto Cuesta?

Auto-alojar OpenShorts es gratis. Tú proporcionas la máquina y solo pagas por las APIs AI que uses, y la mayoría tienen niveles gratuitos generosos:

ServicioNivel GratuitoCosto de PagoSe Usa Para
Google GeminiPrueba gratuita con límites generosos< $0.01 por video de 10 minDetección de momentos virales, generación de guiones, investigación web
LLM local (Ollama, LM Studio, vLLM...)Gratis, tu hardware$0Detección de momentos virales en lugar de Gemini (LLM_BASE_URL)
fal.aiPago por uso~$0.50-1.50 por AI ShortGeneración de actores, video de cabeza parlante, sincronización de labios
ElevenLabsNivel gratuito disponiblePago por usoLocución, doblaje de voz
Upload-Post10 subidas gratuitas/mes a todas las redes (sin tarjeta de crédito)Pago por usoPublicación automática en TikTok, Instagram, YouTube
AWS S3Opcional~$0.023/GBRespaldo en la nube para clips y galería

En resumen: Puedes recortar videos prácticamente gratis con Gemini y publicar 10 videos/mes en todas las redes sociales a costo cero con Upload-Post.

¿No quieres ejecutar nada de eso? openshorts.app es el mismo software en nuestro hardware: nuestra GPU NVIDIA recorta un video de 8 minutos en unos 50 segundos en lugar de los 5 a 8 minutos que toma en una CPU típica, la clave de Gemini está incluida y la publicación automática ya está configurada. El plan gratuito es de 20 minutos al mes con marca de agua y sin tarjeta de crédito; los planes de pago comienzan en $12/mes por 100 minutos sin marca de agua.


Requisitos

  • Docker y Docker Compose
  • Clave API de Google Gemini (Gratis — consíguela aquí) — requerida para todas las funciones AI
  • Clave API de fal.ai (Pago por uso) — requerida para AI Shorts (generación de actores, video, sincronización de labios)
  • Clave API de ElevenLabs (Nivel gratuito) — requerida para locución/doblaje
  • Clave API de Upload-Post (nivel gratuito) — requerida para publicación directa en redes sociales

Primeros Pasos

1. Clonar

git clone https://github.com/mutonby/openshorts.git
cd OpenShorts

2. Configurar (opcional)

cp .env.example .env
# Edit .env with your AWS keys for S3 backup

3. Iniciar

docker compose up --build

4. Abrir el Panel

Navega a http://localhost:5175

  1. Ve a Configuración e ingresa tus claves API (Gemini, fal.ai, ElevenLabs, Upload-Post)
  2. Generador de Clips: Sube un video de formato largo para generar shorts virales
  3. AI Shorts: Describe tu producto o pega una URL para generar videos de marketing UGC
  4. YouTube Studio: Genera miniaturas, títulos y descripciones para YouTube
  5. Galería UGC: Explora todos los videos y avatares generados

5. Aceleración GPU (opcional, NVIDIA)

La imagen predeterminada es solo CPU. Con una tarjeta NVIDIA (cualquier tarjeta con NVENC, por ejemplo RTX 4060) un video de 8 minutos se recorta en aproximadamente un minuto en lugar de 5 a 8. No se pasa nada en el sentido de VM — el contenedor solo obtiene acceso a la GPU del host.

Host: instala el controlador NVIDIA (nvidia-smi debe funcionar) y el NVIDIA Container Toolkit:

sudo nvidia-ctk runtime configure --runtime=docker && sudo systemctl restart docker
docker run --rm --gpus all nvidia/cuda:12.4.0-base-ubuntu22.04 nvidia-smi   # sanity check

En Windows usa Docker Desktop con el backend WSL2 y el controlador NVIDIA de Windows; sin controlador dentro de WSL.

Compose: crea docker-compose.override.yml junto a docker-compose.yml (se detecta automáticamente). GPU: "1" agrega cuBLAS/cuDNN y onnxruntime-gpu a la imagen (~2 GB); video es requerido para NVENC.

services:
  backend:
    build:
      context: .
      args:
        GPU: "1"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu, video]

.env:

WHISPER_MODEL=large-v3-turbo
WHISPER_DEVICE=cuda
WHISPER_COMPUTE=float16
FFMPEG_ENCODER=auto           # probes h264_nvenc at startup, falls back to x264
TRANSCRIBE_BACKEND=parakeet   # optional: ~2x faster than whisper, 25 European languages, auto-falls back to whisper
ASR_GPU_CONCURRENCY=1

Verificación:

docker compose up --build -d
docker exec openshorts-backend nvidia-smi -L
docker exec openshorts-backend ffmpeg -hide_banner -f lavfi -i testsrc=size=256x256:rate=1 -frames:v 1 -c:v h264_nvenc -f null -

El registro del backend en el primer trabajo informa el codificador elegido y el dispositivo de transcripción. Un error de CUDA en whisper (por ejemplo, memoria VRAM agotada) se reintenta una vez en CPU automáticamente. 8 GB de VRAM son suficientes para large-v3-turbo fp16 más los modelos de detección.


6. Ejecutar sin una clave de Google (LLM local, opcional)

La única llamada en la nube en el pipeline de clips es el selector de momentos: envía la transcripción (nunca el video) a Gemini. Apúntalo a cualquier servidor compatible con OpenAI y todo el pipeline permanece en tu máquina:

# .env
LLM_BASE_URL=http://host.docker.internal:11434/v1   # Ollama on the host
LLM_MODEL=qwen2.5:14b                                # any chat model that follows instructions
# LLM_API_KEY=...                                    # only if your server checks one (vLLM --api-key, OpenRouter)

Funciona con Ollama, LM Studio, vLLM, servidor llama.cpp, LocalAI y OpenRouter. El panel deja de pedir una clave de Gemini cuando esto está configurado. Dos cosas a tener en cuenta:

  • Longitud de contexto. Una llamada de puntuación lleva tres ventanas de transcripción (~2-3k tokens) y la llamada de detalle hasta diez (~5k en un podcast largo). Ollama usa por defecto un contexto de 4096 tokens y trunca silenciosamente, así que ejecútalo con OLLAMA_CONTEXT_LENGTH=16384 (o establece num_ctx en un Modelfile); sube LLM_SCORE_BATCH por encima de 3 solo si tu contexto lo permite. Los modelos de 7-8B devuelven JSON válido de manera confiable; los de 3B no.
  • Lo que aún necesita Gemini. Cualquier cosa que tenga que mirar fotogramas: el selector de diseño automático (AUTO_LAYOUT), el detector de contenido en pantalla y los videos silenciosos (sin habla para recortar). Sin una clave de Gemini, esos caen al recorte simple de seguimiento facial, y un video silencioso falla con un mensaje que lo indica. Añade una clave junto a LLM_BASE_URL y obtienes ambos.

Pipeline Técnico

Generador de Clips

  1. Ingesta — Subida de video local (o ingesta de URL autoalojada vía yt-dlp)
  2. Transcribir — faster-whisper con marcas de tiempo a nivel de palabra
  3. Detectar — PySceneDetect para límites de escena
  4. Analizar — Gemini identifica 3-15 momentos virales (15-60s cada uno)
  5. Extraer — Corte preciso de clips con FFmpeg
  6. Reencuadrar — Recorte vertical con IA y seguimiento de sujeto
  7. Efectos — Subtítulos, ganchos, efectos de video con IA
  8. Publicar — Respaldo S3 + distribución social Upload-Post

AI Shorts

  1. Analizar — Raspado de sitios web + investigación web de Gemini (o descripción manual)
  2. Guion — Gemini genera guiones virales con segmentos
  3. Actor — Generación de retratos Flux 2 Pro (o galería/subida)
  4. Voz — Locución TTS de ElevenLabs
  5. Video — Hailuo 2.3 Fast img2video + Lipsync VEED (Bajo Costo) o Kling Avatar v2 (Premium)
  6. B-roll — Generación de imágenes Flux 2 Pro + efecto Ken Burns
  7. Composición — Ensamblaje FFmpeg con subtítulos ASS y superposiciones de gancho
  8. Galería — Subida a S3 público con metadatos para páginas SEO
  9. Publicar — Upload-Post a TikTok, Instagram, YouTube

Automatízalo: Servidor MCP, API REST y Webhooks

No necesitas el panel. Todo el pipeline es invocable por agentes de IA y scripts.

Servidor MCP (/mcp)

OpenShorts incluye un servidor MCP integrado, para que Claude, ChatGPT, Cursor o cualquier cliente MCP pueda recortar y publicar videos por ti:

claude.ai y ChatGPT: pega https://mcp.openshorts.app/mcp como conector personalizado (Configuración → Conectores) y aprueba el acceso en openshorts.app. El servidor hace OAuth 2.1 con registro dinámico de clientes, así que no hay clave que copiar; la conexión aparece en Cuenta → Claves API, donde revocarla desconecta la aplicación.

# Claude Code / Cursor / n8n (hosted): create an API key in your account page
claude mcp add --transport http openshorts https://mcp.openshorts.app/mcp \
  --header "Authorization: Bearer osk_..."

# Self-hosted (no key needed, BYOK rules apply):
claude mcp add --transport http openshorts http://localhost:8000/mcp

# Self-hosted without running the web server: same tools over stdio
claude mcp add openshorts -- python mcp_stdio.py

Herramientas: process_video (URL o upload_id; captions: false cuando la fuente ya tiene subtítulos, auto_hook: false para omitir la línea de gancho, quemada por defecto como el panel), create_upload (dale al agente un archivo local: sube los bytes, luego procesa), get_job_status, list_clips, get_quota, add_subtitles, recut_clip, publish_clip. Un prompt como "recorta este podcast y programa los mejores 3 a TikTok" ahora es una línea en el agente de tu elección.

API REST + claves API

Las cuentas alojadas pueden emitir claves API osk_... (página de cuenta). Una clave te autentica en todas partes — mismo plan, mismos minutos, misma propiedad de trabajos:

curl -X POST https://api.openshorts.app/api/process \
  -H "Authorization: Bearer osk_..." -H "Content-Type: application/json" \
  -d '{"url": "https://youtube.com/watch?v=...", "acknowledged": true,
       "webhook_url": "https://your-server.com/hooks/openshorts"}'

Documentación interactiva en /docs (OpenAPI) en cualquier instancia.

Webhooks de finalización

Pasa webhook_url (y opcionalmente webhook_secret) a POST /api/process y recibes exactamente un POST cuando el trabajo alcanza un estado terminal — sin bucles de sondeo en tus pipelines de n8n / Zapier / cron:

{"event": "job.completed", "job_id": "…",
 "clips": [{"index": 0, "title": "…", "video_url": "…", "download_url": "…"}]}

Con un secreto, el cuerpo está firmado: X-OpenShorts-Signature: sha256=<hmac-sha256(body)>.

CLI

La misma API desde la terminal, cero dependencias (cli/):

pip install openshorts   # or: uvx openshorts

export OPENSHORTS_API_KEY=osk_...              # hosted
# export OPENSHORTS_API_URL=http://localhost:8000   # self-hosted, no key

openshorts process "https://youtube.com/watch?v=..." --wait
openshorts clips <job_id>
openshorts publish <job_id> 0 --platforms tiktok,youtube

Habilidad de agente

skills/openshorts/SKILL.md sigue el estándar abierto Agent Skills, por lo que funciona en cualquier agente con capacidad de habilidades:

# Claude Code (and most agents): copy the folder into the skills directory
cp -r skills/openshorts ~/.claude/skills/

# Hermes Agent: install straight from this repo
hermes skills install mutonby/openshorts/skills/openshorts

# OpenClaw: from ClawHub
openclaw skills install @mutonby/openshorts

n8n

Un flujo de trabajo importable (URL de video de entrada, clips listos para publicar de salida, sin sondeo) vive en examples/n8n/.


Pila Tecnológica

CapaTecnología
BackendPython 3.11, FastAPI, google-genai, faster-whisper, ultralytics (YOLOv8), mediapipe, opencv-python, yt-dlp, FFmpeg, httpx
FrontendReact 18, Vite 4, Tailwind CSS 3.4
APIs de IAGoogle Gemini, fal.ai (Flux, Hailuo, VEED, Kling), ElevenLabs
InfraestructuraDocker + Docker Compose, AWS S3
PublicaciónAPI Upload-Post (TikTok, Instagram, YouTube)

Variables de Entorno

Lado del servidor (.env):

VariableDescripción
AWS_ACCESS_KEY_IDClave de acceso AWS para S3
AWS_SECRET_ACCESS_KEYClave secreta AWS
AWS_REGIONRegión AWS (predeterminada: us-east-1)
AWS_S3_BUCKETBucket privado para respaldo de clips
AWS_S3_PUBLIC_BUCKETBucket público para galería/avatares
MAX_CONCURRENT_JOBSLímite de procesamiento concurrente (predeterminado: 5)
LLM_BASE_URLServidor compatible con OpenAI para el selector de momentos (Ollama, vLLM, LM Studio...). Configúralo y la clave de Gemini se vuelve opcional
LLM_MODELNombre del modelo en ese servidor (predeterminado llama3.1:8b)
LLM_API_KEYToken Bearer para ese servidor, si verifica uno
LLM_SCORE_BATCHVentanas de transcripción por llamada de puntuación (predeterminado 3 local, 8 Gemini)

Lado del cliente (cifrado en localStorage):

ClaveDescripción
GEMINI_API_KEYGoogle Gemini — requerida a menos que LLM_BASE_URL esté configurado (entonces solo para selección de diseño y videos silenciosos)
FAL_KEYfal.ai — requerida para AI Shorts
ELEVENLABS_API_KEYElevenLabs — requerida para locución/doblaje
UPLOAD_POST_API_KEYUpload-Post — requerida, para publicación social

Seguridad y Rendimiento

  • Ejecución sin root: Los contenedores se ejecutan como appuser dedicado
  • Control de concurrencia: Cola de trabajos basada en semáforos (MAX_CONCURRENT_JOBS)
  • Limpieza automática: Purga automática de trabajos antiguos (retención de 1 hora)
  • Claves cifradas: Claves API cifradas en el lado del cliente, nunca almacenadas en el servidor
  • Validación de subidas: Las subidas de imágenes se validan por formato y tamaño mínimo
  • Límites de archivos: Protección de límite de subida de 2GB

Configuración de Redes Sociales (Upload-Post)

  1. Regístrate: app.upload-post.com/login
  2. Crea un perfil: Ve a Manage Users
  3. Conecta cuentas: Vincula TikTok, Instagram y/o YouTube
  4. Obtén la clave API: Navega a API Keys
  5. Úsala en OpenShorts: Pega la clave en Configuración

Historial de Estrellas

Star History Chart

Contribuciones

¡Las contribuciones son bienvenidas! Ya sea agregar nuevos modelos de IA, mejorar el pipeline de sincronización de labios o construir nuevas funciones — siéntete libre de abrir un PR.

Licencia

Licencia MIT para la aplicación principal — OpenShorts es tuyo para usar, modificar y escalar.

Excepción: el directorio cloud/ (facturación, claves administradas e infraestructura del servicio alojado detrás del flag opcional BILLING_ENABLED) está disponible en código fuente bajo la Licencia Comercial de OpenShorts. Puedes leerlo, modificarlo y autoalojarlo para uso personal o interno, pero no puedes ofrecerlo a terceros como servicio de pago/alojado. Autoalojar la aplicación principal nunca requiere este directorio.