Requisitos y configuración
Autoreel no necesita ninguna cuenta de pago para producir. Necesita cinco piezas instaladas y un puñado de variables de entorno, y hay una que si falta no da error: simplemente hace que tu trabajo no lo vea nadie.
Qué hay que instalar
| Pieza | Para qué | Nota |
|---|---|---|
| Node 24 | Todo | - |
| Python con edge-tts | La voz | pip install edge-tts |
| Edge o Chromium | El render con WebCodecs | En Windows, el Edge que ya viene |
| ffmpeg | Mezcla de audio y miniaturas | Ya incluido como dependencia; no se instala aparte |
| PostgreSQL | La cola y los proyectos | Uno gestionado, o uno local con contenedores |
Variables obligatorias
Van en .env.local. Las leen la web, el worker, el servidor MCP y los scripts.
| Variable | Qué pasa si falta |
|---|---|
POSTGRES_URL | Todo apunta al PostgreSQL por defecto en localhost y nada conecta |
NEXT_PUBLIC_SUPABASE_URL | La web queda abierta y sin sesión. Aceptable en una instalación personal; en un despliegue público, no |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Lo mismo que la anterior: van en pareja |
SUPABASE_SERVICE_ROLE_KEY | No se pueden crear ni borrar cuentas, y el worker no puede subir el archivo terminado |
AUTOREEL_OWNER_ID | Lo que cree el servidor MCP se guarda sin dueño y la web no lo enseña |
La que arruina el día en silencio
AUTOREEL_OWNER_ID es el identificador de tu usuario. El MCP no tiene sesión de la que deducirlo, así que sin esa línea produce videos que técnicamente existen y que nadie puede ver. No hay error, no hay aviso en la web: solo una biblioteca vacía.
El diagnóstico lista las cuentas de la base con su identificador, listas para copiar.
Variables opcionales
Todas tienen un valor por defecto que sirve.
| Variable | Por defecto | Para qué |
|---|---|---|
AUTOREEL_BASE_URL | http://localhost:3000 | Dónde vive la web que rinde el video |
AUTOREEL_BROWSER_CHANNEL | msedge | Poner chromium en Linux y en contenedores |
AUTOREEL_TTS_VOICE | es-DO-EmilioNeural | La voz de la narración |
AUTOREEL_TTS_RATE | +27% | Velocidad. El valor por defecto depende de la voz |
AUTOREEL_TTS_PITCH | +25Hz | Tono. Más agudo retiene mejor en formato corto |
AUTOREEL_NARRATION_VOLUME | 1.25 | La síntesis no llega a 0 dBFS; el limitador atrapa los picos |
AUTOREEL_MUSIC_PATH | instrumental del repositorio | La música de fondo por defecto |
WORKER_POLL_MS | 5000 | Cada cuánto el worker mira la cola |
PYTHON_BIN | python | Si el intérprete se llama de otra forma |
Puesta en marcha
En una máquina, sin contenedores
Es el modo de trabajo normal en Windows, porque el render usa el Edge que ya está instalado.
npm install
npm run db:push # aplica las migraciones (idempotente)
npm run doctor # ¿está todo? Contesta pieza por pieza
npm run dev # la web, en el puerto 3000
npm run worker # en otra terminal: el que produceEl orden importa en una cosa
Todo en contenedores
docker compose up -d # base de datos + web + workerLas imágenes se construyen, no hay recarga en caliente: después de cambiar código hay que reconstruir web y worker.
En producción
La web se despliega sola con cada cambio en la rama de producción. El worker no se despliega: corre donde se lo ponga, y con que alcance la base de datos y el almacenamiento ya está dentro del sistema.
Comprobar que quedó bien
npm run doctor # runtime, medios, base, cuentas y web
npm test # plantillas, validador y pipeline
npm run verify-templates # genera el pack de referencia y lo validaEl diagnóstico revisa las cinco piezas y contesta una por una. Cuando dice que todo está en orden, lo está de verdad: conecta a la base, mira las tablas, cuenta las filas sin dueño y pide la web.