Plantillas
Elige un formato y mándalo a la cola de render con un clic.
Sube tu avatar y edítalo
Arrastra el video donde sales hablando. Le quitamos los silencios para que quede dinámico y luego lo mandas a editar: en automático (la IA arma el video) o con tu propio plan de escenas.
Suelta tu video / avatar aquí
o haz clic para elegir un archivo · MP4, MOV, WEBM o MKV · hasta 25 GB
La IA hace todo: manda el video a n8n (WF-02), saca el transcript y arma el plan de escenas solo. Ideal si quieres el resultado sin tocar nada.
Abre el Motor JSON con tu avatar ya cargado como fondo. Tú defines las escenas, los b-rolls y renderizas cuando quieras.
Convierte un video largo (podcast, charla, 1–2 h) en varios clips verticales de ~60 s. La IA transcribe (Groq Whisper), elige los mejores momentos y los corta a 1080×1920 con subtítulos karaoke.
Buscador de B-rolls
Metraje de stock libre — uso comercial, sin atribución — para intercalar con tu avatar. Busca, elige uno y se fija como brollUrl del plan.
Motor JSON
Renderiza cualquier ScenePlan: pega el plan, valida en vivo y mándalo a la cola. Tu avatar y el b-roll elegido se inyectan solos.
Renders
Los MP4 terminados quedan publicados en el bucket de Supabase.
Ajustes
Credenciales del .env, API del worker y atajos. Aquí nunca se muestran valores reales.
WORKER_TOKEN
Token que protege POST /render y GET /jobs. Se manda en el header x-worker-token. Este panel lo guarda solo en tu navegador (localStorage).
VOZ · ElevenLabs (tu credencial)
Tu API key de ElevenLabs para ponerle voz a los videos premium. Se guarda solo en tu navegador y se envía como x-elevenlabs-key. Cada usuario pone la suya (es la que se agota rápido).
Música de fondo (CC0)
Cama musical opcional bajo la voz de los videos premium (con ducking automático: la música se agacha cuando habla la voz). Pistas de dominio público CC0 (uso comercial sin atribución). Se guarda solo en tu navegador y se envía como x-music. Requiere la voz activada.
SUPABASE_URL / SUPABASE_ANON
Proyecto y anon key (publishable, no secreta) para subir los MP4 a Storage. El worker publica en renders/ dentro del bucket.
SUPABASE_BUCKET
Bucket de destino de los renders. Por defecto: fabrica-videos.
PORT
Puerto HTTP del worker (este panel). Desde v2 se define solo en el .env; el instalador respeta el que ya tengas.
DRY_RUN
Con DRY_RUN=1 se renderizan solo los frames 0–89 y se sube renders/test-<formato>.mp4: valida el pipeline completo en ~1 minuto.
RENDER_TIMEOUT_MIN
Tiempo máximo por render antes de matar el proceso (por defecto 30 min).
¿Dónde se cambian?
Edita el archivo en el VPS y reinicia el proceso para aplicar:
nano /opt/fabrica-videos/worker/.env
pm2 restart fabrica-worker --update-env
Cómo producir un video
Conecta tu token
Pulsa el candado de la barra superior y pega tu WORKER_TOKEN. Queda guardado solo en este navegador.
Renderiza
Elige una plantilla y pulsa Renderizar (o selecciónala y pulsa R). Para planes propios usa el Motor JSON.
Publica
En Renders ves el progreso en vivo; al terminar tienes preview, link público y descarga del MP4.
API del worker
| Endpoint | Auth | Descripción |
|---|---|---|
| GET/health | Público | Estado, versión, formatos y cola. |
| GET/formats | Público | Formatos disponibles con descripción y payload de ejemplo. |
| POST/render | x-worker-token | Encola un render: {format, props?, plan?, jobId?}. En plan acepta un ScenePlan o un storyboard (se convierte solo). Responde 202 con el jobId. |
| GET/jobs | x-worker-token | Lista de jobs (más reciente primero). |
| GET/jobs/<id> | x-worker-token | Estado de un job concreto (polling de n8n). |
| POST/jobs/clear-failed | x-worker-token | Borra de la cola los jobs con estado error/interrupted. Responde {removed:N}. |
| POST/avatar | x-worker-token | Sube tu video por streaming (raw xhr.send(file) + X-Filename, o multipart) hasta 25 GB. ?cut=1&margin=0.2 corta silencios. Responde {avatarUrl}. |
| GET/uploads/<archivo> | Público | Sirve el avatar subido (con Range para seeking). Solo mp4/mov/webm/mkv validados. |
| POST/auto | x-worker-token | Reenvía {video_url} a n8n WF-02 para transcript + plan automático. |
Ejemplo con curl
Atajos de teclado
Notas
· El worker renderiza 1 job a la vez; el resto espera en la cola (panel derecho).
· Con DRY_RUN=1 cada render produce un clip corto de prueba (frames 0–89).
· Si el worker se reinicia a mitad de un render, ese job queda marcado como interrumpido.