Manual de quien administra ut-content
Para quien opera ut-content (el operador, antes «superadmin»): dar de alta empresas, repartir accesos, llevar la cola de campañas gratis y saber qué se rompe cuando algo se rompe. Todo lo de aquí se puede hacer también por API.
Cómo está montado
- Una instancia, muchas empresas. Cada una bajo su ruta:
content.utio.io/<empresa>/, con sus temas, su voz, sus conexiones y sus personas. - El aislamiento lo impone PostgreSQL con seguridad a nivel de fila, no el panel: una consulta mal escrita no puede ver datos de otra empresa.
- El administrador tiene su ruta:
/admin. - Una persona pertenece a una empresa, y dentro es admin o usuario. Quien opera el hub no es de ninguna: es un operador y entra por su propia puerta.
- Un worker mueve las campañas de todas las empresas, una vuelta cada cinco minutos.
La consola de operación
Quien opera ut-content entra por content.utio.es/operador,
no por la entrada de las empresas. Pide correo, contraseña y el
código de 6 cifras de una app de códigos (Google Authenticator,
Authy, 1Password, Microsoft Authenticator…). La sesión dura dos horas y es
distinta de la de cualquier empresa: una no abre la otra. En un equipo tuyo
puedes marcar Recordar este equipo 15 días y no volver a teclear
contraseña ni código en ese tiempo; si pierdes el equipo, que otro operador
(o el soporte) reinicie tu contraseña: eso cierra todas tus sesiones recordadas.
- Alta
Otro operador te da de alta en Operadores y te pasa un enlace (48 horas, un solo uso). Con él añades ut-content a tu app de códigos y eliges tu contraseña (14 caracteres como mínimo).
- Entrar en una empresa
En Empresas, Entrar: abre su panel con todos los permisos durante dos horas. Arriba verás siempre una banda que lo recuerda, con el enlace para volver a la consola. Cada entrada queda en Registro y en el registro de la propia empresa.
- Ver como una persona
Dentro de la empresa, en Conexiones → Personas, Ver como esta persona: abre el panel tal como lo ve ella (su rol, sus redes, su Mi perfil; sin costes si no es operador), para ayudarla a corregir lo suyo. Una banda arriba lo recuerda y tiene Volver a operador. Lo que cambies queda anotado a tu nombre («tu correo (como su correo)»). No puedes conectar sus redes ni crear su avatar: eso lo hace ella, con su cuenta y su consentimiento. Dura dos horas, como cualquier entrada de operador.
- Si alguien pierde el móvil
Otro operador, en Operadores, Reiniciar contraseña y segundo factor: su contraseña y su código dejan de valer y recibe un enlace nuevo.
- Si no queda nadie que pueda entrar
El rescate:
/operador/rescatecon la credencialHUB_ADMIN_PASSWORDdel servidor. Solo deja gestionar operadores, no entrar en empresas. O, desde el servidor:docker exec -w /app/services/hub ut-content-hub-hub-1 node /app/scripts/operador.mjs enlace <correo>.
El rol «superadmin» ya no existe dentro de las empresas: una persona de una empresa es admin o usuario, y nadie puede darse más. Así, una contraseña filtrada de una empresa abre esa empresa, no el hub entero.
La entrada al sistema
Todo el mundo entra por la misma puerta escribiendo su correo: ut-content busca a qué empresa pertenece y le lleva allí. Nadie tiene que saberse su ruta.
Si alguien no puede entrar, el orden de lo más común a lo más raro: por qué dirección lo intenta, si tiene contraseña puesta, si su cuenta está activa, si ha agotado intentos, y si su empresa está suspendida. Entrando en esa empresa desde la consola de operación, en Conexiones → Personas generas el enlace de acceso de cualquier persona, que es la salida cuando nadie de dentro puede entrar.
Empresas
Ajustes → Empresas en ut-content (solo desde el panel de casa). Cada fila trae su ruta, su plan, su estado y el consumo de IA de los últimos 30 días.
- Dar de alta: nombre, ruta, prefijo de campañas, web, sitio del CMS y quién administrará. Devuelve la URL del panel y un enlace de acceso.
- Suspender: con motivo. Su panel no abre y ut-content no la mueve.
- Exportar y borrar: se lleva su contenido antes de borrarla; el borrado pide escribir la ruta para confirmar.
- Lo primero en una empresa nueva: perfil de la empresa, perfiles editoriales, conexiones, temas con fuentes y, al final, el calendario.
Planes y cuotas
El catálogo de planes se edita desde el panel de casa: precio, personas incluidas y cuotas (campañas al mes, publicaciones, plataformas, perfiles, almacén, reels, WhatsApp, perfil de industria). Una cuota vacía es «sin límite».
- prueba — una campaña, una persona, sin publicar solo. Es el de los prospectos de la campaña gratis.
- El resto se ajusta por empresa con cuotas extra sin tocar el plan.
Apps de plataforma
Las apps de ut-content (Meta, LinkedIn, TikTok, Google) permiten que cada empresa conecte sus cuentas sin crear apps propias. Se configuran una vez, con su URL de retorno registrada en cada plataforma. Una empresa que guarde su propia app seguirá usando la suya.
Vídeos con avatar
Se activan para todas las empresas al guardar la app HeyGen en
Apps de plataforma: la clave de API, el secreto del webhook
(URL /webhooks/heygen), cuántos renders a la vez y el precio por
minuto (solo para el coste que ve el operador). Sin clave, el panel dice que
no están activados.
- Minutos por plan: Prueba y Esencial, 0; Pro, 10 al mes con avatar estándar; Negocio, 30 al mes y Avatar IV. Vuelven el día 1.
- Packs: el operador los añade dentro de la empresa, en Ajustes → Tu plan y tus datos → Añadir pack de minutos. Se gastan después de los del plan y no caducan.
- Las empresas ven minutos, nunca dinero. El coste en dólares de cada vídeo solo lo ve el operador.
- Vídeo animado: el «En resumen» del artículo en escenas, con la voz de la empresa en español, inglés, francés o árabe. En inglés y francés usa la versión publicada en la .eu; si no la hay, ut-content adapta el resumen y avisa de que hay que revisarlo. Si el artículo solo vale para un país, el vídeo lo dice («Solo para España»). No gasta minutos. Lo pinta el servicio
render(otro contenedor, con Chromium): si no responde, la tarjeta lo dice. - Sin avatar: voz en off de la empresa sobre las imágenes del artículo, montado en casa; no gasta minutos y se puede en cualquier plan.
- La voz de los dos (español de España, Latinoamérica o EE. UU.; inglés británico o estadounidense; francés de Francia; árabe estándar) y el timbre se eligen en Ajustes → Imágenes y reels → Voz de los vídeos. Es Gemini 3.8 Flash TTS; Charon es la de por defecto.
- Plantilla de vídeo (Ajustes → Imágenes y reels → Plantilla de vídeo): el logo (sale centrado en una entrada de 1,2 s y pequeño en el cierre; sin logo, la entrada lleva el nombre), cuántas imágenes nuevas se hacen para cada vídeo (3 por defecto, en su formato, una por frase del guion; cada una cuenta como imagen del plan y se guardan para no pagarlas otra vez en otra toma), la música de Instagram (de su catálogo, con licencia, por debajo de la voz; las demás redes van sin música) y a los cuántos días se borran los ficheros de lo descartado o fallido. La base sin rotular de lo aprobado se borra sola.
- Lo que gasta cada vídeo sale en su tarjeta: imágenes nuevas, segundos de voz y minutos de avatar. El coste en dólares, solo el operador.
- Series (Temas → Series de vídeo): tema, capítulos, quién presenta, formato, redes y cada cuántos días. ut-content propone el índice; al aprobarlo crea una campaña por capítulo y, con cada artículo auditado, su guion. Los vídeos aprobados se programan en orden en los días de cada red; si uno no está aprobado, los siguientes esperan.
- Canales (Temas → Canales): ut-content especializado en una sola red. Qué enseña, la red (TikTok, YouTube Shorts, Instagram, Facebook, X o LinkedIn), en qué idioma habla y si enseña un idioma, para quién, el material de referencia (lo único de donde salen los datos) y cada cuántos días. ut-content propone el formato fijo y la parrilla de episodios a la medida de esa red; al aprobarla escribe los guiones de dos en dos por delante. Si el canal enseña un idioma, cada guion pasa además una revisión lingüística que bloquea si una palabra está mal. Cada episodio es un vídeo animado sin fotos, con la palabra o el paso en grande; cada guion y cada vídeo se aprueban, y lo aprobado sale solo, en orden.
- Quien administra hace vídeos con el avatar de cualquiera de su empresa, pero cada avatar lo crea su dueño con su consentimiento.
Campañas gratis
Quien pide una campaña de prueba desde la web entra aquí. ut-content decide solo si se atiende mirando el dominio, el correo, el teléfono y la conexión.
| Decisión | Cuándo |
|---|---|
| aceptada | Cumple: se genera y se entrega |
| a revisar | Teléfono repetido, mucha actividad desde la misma red, o cupo del día lleno |
| rechazada | Buzón temporal, dominio o correo que ya gastó su campaña, demasiados intentos |
- Generar ahora monta su empresa de prueba, lee su web y escribe la campaña con la auditoría de siempre.
- Aprobar y enviar manda el correo con la página privada, que caduca a los siete días.
- Límites: una por dominio y correo cada 90 días, 3 atendidas y 10 intentos por conexión al día, 25 al día en total.
Correo
El correo es de la plataforma, no de ninguna empresa: sale
siempre desde la misma cuenta de ut-content (noreply@utio.io) y
lo configura un operador en la consola, /operador → Correo, con la
cuenta de Mailrelay, el token y el remitente verificado. Desde ahí se manda
también un correo de prueba. Sin él, la recuperación de contraseña solo puede
ir por WhatsApp y la entrega de campañas gratis avisa de que no hay correo.
Costes
El coste real de la IA solo lo ves tú. Las empresas y sus personas ven unidades: artículos, imágenes, posts, traducciones, reels, revisiones y audios. El API tampoco les manda las cifras en dinero.
En Métricas tienes el coste por paso y por modelo, y en la lista de empresas, el de los últimos 30 días de cada cliente con sus unidades.
API de administración
Con el token de aprovisionamiento (HUB_PROVISION_TOKEN), bajo
/api/provision/empresas:
POST /— alta o activación de una empresa.GET /·GET /:slug— listado y estado.PATCH /:slug— plan, suspensión, nombre, cuotas extra.POST /:slug/acceso— enlace de acceso (opcionalmente enviado por WhatsApp).POST /:slug/exportar·DELETE /:slug— exportación y borrado.
Cuando algo va mal
Copias de seguridad. Cada noche a las 03:45 se copian la base
de datos y el volumen de contenido (campañas, imágenes, fotos y audios de las
vivencias): 3 días en el servidor y 14 en el NAS
(/mnt/utio-nas/DEV02/ut-content). El script, con cómo restaurar,
es deploy/backup-ut-content.sh; el resultado de cada noche, en
/var/log/backup-ut-content.log. Las credenciales van cifradas con
HUB_ENCRYPTION_KEY: guarda esa clave aparte, o una copia restaurada
vuelve sin conexiones.
| Síntoma | Dónde mirar |
|---|---|
| Una campaña se queda parada | Su tarjeta dice en qué paso y con qué error; el paso se reintenta desde ahí. |
| El artículo no llega a la web | Una MR en borrador bloquea el paso de dev a main: ut-content lo dice con el enlace a la MR. |
| Una pieza no sale | Publicaciones → Piezas sin publicar: cada una con su motivo. |
| Nadie puede entrar en una empresa | Genera su enlace de acceso desde la lista de empresas. |
| Una plataforma cerca de su tope | El worker avisa en el log y en la campanita. |
| Se disparó el gasto | Métricas → coste por paso y por modelo; y las cuotas del plan frenan lo demás. |