ut-content

Ir al panel

Manual

Cómo va un tema desde que se te ocurre hasta que está publicado en la web y en las redes. Y qué sabe hacer ut-content por su cuenta y qué no.

El ciclo completo

Un tema recorre nueve pasos. Los siete primeros los hace ut-content solo; el octavo lo hace una persona, siempre; el noveno vuelve a ser automático salvo en las redes que todavía no tienen credencial.

El ciclo de una campaña, de tema a publicado TÚ Escribes el tema y sus fuentes UT-CONTENT, SOLO — UN PASO CADA CINCO MINUTOS brief artículo SEO portada social auditoría validar UNA PERSONA — SIEMPRE Aprobar y publicar ut-content nunca pulsa este botón. La campaña espera en «lista para revisar» todo el tiempo que haga falta. UT-CONTENT, SOLO — CADA PLATAFORMA A SU RITMO El artículo, primero commit al blog y despliegue Y luego las piezas, una por plataforma y por día Las piezas enlazan al artículo: si salieran antes, mandarían a la gente a un 404. Por eso van después.
Siete pasos automáticos, una aprobación humana, y luego el reparto por plataformas. El único botón obligatorio es el del medio.
  1. Escribes el tema

    Temas → escribe el titular y, si tienes fuentes, pega el enlace de cada una y di qué clase de página es. Es lo único que hay que rellenar a mano. Sin fuentes el artículo se escribe sin ninguna cifra: es a propósito, porque inventar un dato es peor que no darlo.

  2. El calendario lo saca de la cola

    Cuando toca según la cadencia, ut-content coge el primer tema pendiente y crea la campaña con su content_id (UT-AAAA-NNN). Si un tema tiene fecha fija, esa fecha manda sobre la cadencia.

  3. Brief y artículo

    Un brief y luego el artículo por partes: entradilla, seis secciones y las preguntas frecuentes. Cada parte es una llamada aparte y cada una ve lo ya escrito, para no repetir aperturas.

  4. SEO

    Título, descripción, keyword y datos estructurados.

  5. Portada

    La imagen de cabecera del artículo, generada.

  6. Piezas sociales

    Una por cada perfil editorial activo, ángulo y red marcada. El texto se escribe una vez por perfil y ángulo, y se copia a cada red recortando los hashtags a su tope.

  7. Auditoría

    Se comprueba que toda afirmación con datos tiene fuente registrada. Si falta una, la campaña queda bloqueada y no se publica nada hasta resolverlo.

  8. Alguien la aprueba

    La campaña se queda en lista para revisar. Se lee, se corrigen las piezas que haga falta, se rechazan las que no convenzan —una pieza rechazada no se publica— y se pulsa Aprobar y publicar. Ese es el gesto humano: hasta que ocurre, el artículo no sale del repositorio ni por error.

  9. Sale

    Primero el artículo en el blog —las piezas enlazan a su URL y publicarlas antes sería mandar gente a un 404— y luego cada pieza el día que le toca según el ritmo de su red.

Cada paso es un trabajo en cola y el worker hace uno cada cinco minutos, así que una campaña tarda algo menos de dos horas en llegar de la cola a «lista para revisar».

Configurar el ritmo

Ajustes tiene un índice a un lado y enseña una sección cada vez: La empresa (perfil, idiomas, industria), Cómo escribe (estilo, perfiles editoriales, estándares, qué funciona), Calendario y publicación, Imágenes y reels, Motor de IA y Tu plan y tus datos. Cada tarjeta se guarda con su propio botón. Las personas están en Conexiones → Personas.

Ajustes: calendario activo, cadencia de campaña, hora, máximo a medias, modo de aprobación, y debajo la tabla de ritmo por plataforma con una fila por red.
Ajustes → Calendario editorial. Cada red tiene su interruptor, su ritmo y su hora, y dice si sale sola o a mano.

Todo esto está en Ajustes → Calendario editorial.

AjusteQué decide
Calendario activo Apagado, la cola espera y no se crea nada solo. Es el interruptor general.
Una campaña… Cada cuánto se saca un tema de la cola: a diario, cada 3 días, cada semana… o el número que quieras en «otro…».
A las La hora a la que arranca una campaña.
Máximo a medias El freno de mano. Con ese número de campañas sin terminar, deja de empezar otras.
Aprobación Humana: se para a esperar a que alguien pulse publicar. Automática: lo que la auditoría deje pasar sale sin que nadie lo lea.
Ritmo por plataforma Una fila por red: si publica, cada cuánto y a qué hora.

Cada plataforma lleva su propia cola y corren en paralelo: el post de empresa puede salir a diario y los del CEO cada tres días sin que uno espere al otro. Un ritmo de todas el mismo día las manda todas a la vez; sin hora, cada pieza sale a la hora en que se aprobó la campaña.

Cuidado con la multiplicación. Cada campaña genera una pieza por perfil, ángulo y red. Con tres perfiles activos, nueve ángulos y dos redes son dieciocho piezas. Si además pones campañas a diario y piezas a diario, en régimen acabas publicando dieciocho veces al día. Eso es spam y las redes lo frenan. La cuenta que importa es: ángulos × redes ÷ días entre piezas.

Redes y perfiles

Un perfil editorial es en nombre de quién y con qué voz se escribe: Empresa, CEO, Comercial, Marketing, Soporte. Cada perfil tiene sus ángulos —historia, opinión, caso, error, checklist— y ahora también en qué redes publica: una, dos o todas.

Se marca en Ajustes → Perfiles editoriales → Publica en. Cada red marcada genera su propia pieza con el mismo texto y los hashtags recortados a su tope. ut-content no reescribe el texto para cada red: si no cabe, la pieza queda marcada para que la recortes tú.

Añadir un perfil, en la misma tarjeta: nombre y cargo, quién firma (una persona del panel, o sin persona si habla la empresa o aún no tiene acceso), qué escribe (plantilla Dirección, Comercial, Experto o Empresa), redes, voz y público. Una empresa nueva empieza sin perfiles y sin ellos no salen posts. En los perfiles que ya existen se cambian también el nombre y la persona.

RedCómo saleQué falta
El artículo en el blog automática Nada. Commit al CMS y despliegue.
LinkedIn · personal automática Que cada persona conecte su cuenta.
LinkedIn · empresa a mano El publicador está escrito, pero LinkedIn no concede w_organization_social sin aprobar la Community Management API.
Facebook · página automática Conectar la página una vez. No necesita revisión de Meta: la app va en modo desarrollo.
Instagram a mano Una app de Meta con instagram_content_publish. Y una imagen por pieza: Instagram no admite texto solo.
YouTube a mano Credencial de YouTube Data API. Y el vídeo: ut-content escribe la descripción, no lo graba.

«A mano» no es un error, es un modo. ut-content escribe la pieza, la programa y el día que toca te la deja en el panel con su texto y un botón de copiar. La publicas, pegas el enlace de vuelta y queda registrada igual que una automática. Cuando la credencial exista, esa red pasa a automática sola.

El prompt del artículo se edita en el panel. En Ajustes → La empresa → Perfil de la empresa, el campo Instrucciones de redacción de los artículos es lo que ve el modelo en cada artículo: estructura, datos, enlaces, metadatos y reglas de marca. Cambia ahí y aplica a la siguiente campaña; no hay que redesplegar. Lo único que no se relaja desde ahí es la regla de fuentes.

Cada red recibe su propio texto. Un perfil que publica en LinkedIn y en Facebook no manda el mismo post a las dos: se escribe para la primera red del perfil y las demás reciben una adaptación —misma idea, otra entrada, la longitud y el tono de esa red—. El tono por red se escribe en Ajustes → estilo por canal; sin él, cada red tiene uno por defecto.

Conectar las plataformas

La guía al día, plataforma por plataforma y con capturas y vídeos, está en Configurar las plataformas. Lo de abajo es el detalle y la historia de cada decisión.

Esta es la parte que más veces se atasca, así que va paso a paso y con las pantallas. Hay dos cosas distintas y confundirlas cuesta días: la app —que se crea una vez, en la plataforma, y la aprueba ella— y la cuenta —que autoriza cada persona desde su sesión—.

En el panel, Conexiones va por secciones, como Ajustes: Redes sociales, Personas, Servicios (la IA, GitLab, la analítica y el correo), WhatsApp y ficheros y El artículo en otros sitios. Cada botón del índice dice cuántas conexiones faltan ahí, y el buscador mira en todas a la vez.

Quién hace cada cosa para conectar una red UNA VEZ, POR UN ADMINISTRADOR 1 · Crear la app En LinkedIn, Meta o Google. Sale un Client ID y un secreto. 2 · Pedir los permisos Solo algunas redes lo piden. Cuando toca: semanas, y no es cosa nuestra. 3 · Pegarlo en ut-content Conexiones → la tarjeta de esa red → Guardar app. UNA VEZ, CADA PERSONA, DESDE SU PROPIA SESIÓN 4 · Autorizar su cuenta El admin genera un enlace en Conexiones → Personas. Lo abre esa persona, en su navegador, con su sesión de la red. Nadie puede autorizar la cuenta de otro: no es una limitación de ut-content, es cómo funciona OAuth.
Los pasos 1 a 3 los hace un administrador una sola vez. El 4 lo hace cada persona con su propia cuenta. El paso 2 se salta en LinkedIn personal y en Facebook: ahí basta con tener rol en la app.

La pantalla de Conexiones

Panel de Conexiones: la tarjeta de LinkedIn con Client ID, Client secret, URL de retorno y URN de la página, y debajo la lista de Personas con su botón de generar enlace.
Conexiones. Arriba la app —una sola vez—; abajo las personas, cada una con su enlace.

LinkedIn, campo por campo

Los cuatro campos de ut-content salen de dos sitios del Developer Portal. Esta es la correspondencia, que es lo que nunca está claro:

De dónde sale cada campo de LinkedIn developer.linkedin.com My apps → tu app Pestaña «Auth» Client ID Pestaña «Auth» Primary Client Secret Pestaña «Auth» → OAuth 2.0 settings Authorized redirect URLs URL de la página de empresa .../company/12345678/admin/ content.utio.es → Conexiones → LinkedIn Client ID 86xxxxxxxxxxxx Client secret se guarda cifrado; no se vuelve a enseñar URL de retorno — tiene que ser idéntica https://content.utio.es/oauth/linkedin/callback URN de la página de empresa urn:li:organization:12345678
El URN no se busca en ningún sitio: es el número que ya está en la URL de la página, con urn:li:organization: delante.

La URL de retorno tiene que coincidir carácter por carácter con la que hay en LinkedIn, barra final incluida. Es el fallo más común y el error que devuelve LinkedIn no lo dice: se limita a un redirect_uri does not match.

Pedir el acceso a LinkedIn

Publicar en la página de empresa necesita el permiso w_organization_social, y ese permiso vive dentro de la Community Management API, que LinkedIn no da sola: hay que pedirla y la revisan. Es lo que hoy nos tiene la página de empresa en «a mano».

Requisitos, tal y como los pide LinkedIn:

Con eso se consigue el Development tier: sirve para integrar y probar, con llamadas limitadas, y caduca a los doce meses. Para producción de verdad hace falta el Standard tier, y ahí LinkedIn pide además un vídeo de pantalla enseñando el producto funcionando: el OAuth completo, un post publicado desde la app y cómo se muestran los comentarios de ese post.

Conviene saberlo antes de empezar: ut-content publica, pero no lee comentarios ni estadísticas de seguidores, y varias de las capacidades que LinkedIn quiere ver en el Standard tier todavía no existen. El Development tier está a nuestro alcance ya; el Standard exige construir primero la parte de métricas.

Los perfiles personales son otra historia y mucho más simples: se publican con w_member_social, que sale del OAuth normal de la persona y no necesita esa revisión. Por eso los posts del CEO sí pueden salir solos y el de empresa no.

Facebook, campo por campo

Facebook publica solo. Y a diferencia de la página de empresa de LinkedIn, no hay que pedirle permiso a nadie ni esperar semanas: una app de Meta en modo desarrollo concede pages_manage_posts a cualquiera que tenga un rol en ella, y quien va a conectar es el dueño de la página. La App Review de Meta hace falta para que la app la use gente de fuera; aquí no la usa nadie de fuera.

De dónde sale cada campo de Facebook developers.facebook.com Mis apps → tu app Configuración → Básica Identificador de la app Configuración → Básica Clave secreta de la app Inicio de sesión con Facebook → Configuración URI de redireccionamiento válidos Roles de la app → Administradores quien va a autorizar, también admin de la página content.utio.es → Conexiones → Facebook Identificador de la app 1234567890123456 Clave secreta de la app se guarda cifrada; no se vuelve a enseñar URL de retorno — tiene que ser idéntica https://content.utio.es/oauth/facebook/callback Página en la que se publica sale sola al autorizar: no se escribe
El identificador de la página no se busca: Facebook devuelve la lista de las que administra quien autoriza, y ut-content la ofrece en un desplegable. Con una sola página ni se pregunta.
  1. Crear la app

    En developers.facebook.com/apps, «Crear app» → caso de uso «Otro» → tipo «Empresa». De Configuración → Básica salen el identificador y la clave secreta.

  2. Añadir «Inicio de sesión con Facebook»

    En sus Ajustes, pegar en URI de redireccionamiento de OAuth válidos exactamente https://content.utio.es/oauth/facebook/callback. Sin esto la autorización se corta antes de empezar.

  3. Comprobar quién va a autorizar

    Esa persona necesita dos cosas a la vez: un rol en la app (Roles de la app → administrador, desarrollador o tester) y ser administrador de la página con permiso para crear contenido. Si le falta una de las dos, Facebook devuelve una lista de páginas vacía o una página sin permiso, y ut-content lo dice tal cual.

  4. Dejar la app en modo desarrollo

    Es lo que evita la App Review. No pases la app a «Activa» ni pidas acceso avanzado: no hace falta y abre un trámite de verificación de empresa que aquí no lleva a nada.

  5. Rellenar Conexiones → Facebook y conectar

    Identificador, clave secreta y URL de retorno → «Guardar app» → «Conectar página». Facebook pide permiso, vuelve al panel y la insignia se pone en conectada. «Comprobar» pregunta a Facebook si el token sigue vivo.

Modo desarrollo no significa publicaciones de mentira. Lo que el modo desarrollo limita es quién puede autorizar la app; los posts que salen de ella son posts normales de la página, públicos y visibles para cualquiera. Y el token con el que se publica es el de la página, que no caduca — al revés que el de LinkedIn, que hay que renovar cada 60 días. Se cae solo en tres casos: si quien autorizó cambia su contraseña, si retira la app desde su configuración de Facebook, o si deja de ser administrador de la página. Los tres se arreglan volviendo a pulsar «Conectar página».

Instagram

Comparte app con Facebook, pero no comparte el atajo: publicar en Instagram sí exige App Review y verificación del negocio, así que sigue siendo manual. Lo que hay que tener preparado para cuando toque:

  1. Verificar el negocio

    Configuración → Básica → Verificación. Se conecta la app a un negocio de Business Manager y se verifica con documentación de la empresa. Sin esto no hay acceso avanzado a ningún permiso.

  2. Preparar la cuenta de Instagram

    Tiene que ser una cuenta profesional —empresa o creador— y estar vinculada a una página de Facebook. Una cuenta personal no publica por API, y no hay forma de rodearlo.

  3. Pedir los permisos en App Review

    instagram_basic, instagram_content_publish y pages_show_list. Cada uno se justifica con un caso de uso y un vídeo.

Dos cosas de Instagram que condicionan el diseño. Una: la imagen tiene que estar en una URL pública cuando se publica, porque el servidor de Meta va a buscarla — las nuestras están detrás de la sesión del panel, así que hay que subirlas al blog primero. Dos: solo admite JPEG. El límite es de 100 publicaciones por API en 24 horas, que no nos roza ni de lejos.

YouTube

  1. Proyecto en Google Cloud

    Y activar YouTube Data API v3 en la biblioteca de APIs.

  2. Credencial OAuth de tipo «Aplicación web»

    Con la misma URL de retorno de ut-content.

  3. Verificación de Google

    Subir un vídeo usa youtube.upload, que Google clasifica como ámbito sensible: hasta que no verifica la app, solo funciona con cuentas de prueba añadidas a mano. La verificación es el trámite largo.

Y aparte del permiso: ut-content todavía no genera el vídeo. Escribe el guion, y en Plataformas y generadores está el plan para montarlo con voz e imágenes.

Cada persona autoriza la suya

Para entrar al panel cada persona tiene su contraseña. La elige con un Enlace de acceso que se genera en Conexiones → Personas: de un solo uso, 48 horas; lo abre, escribe la contraseña dos veces y entra. Si la olvida, otro enlace.

En Conexiones → Personas, Generar enlace. Ese enlace se le pasa a esa persona y lo abre ella. ut-content no guarda su contraseña en ningún momento: recibe un permiso que esa persona puede retirar cuando quiera desde la propia red.

Una pieza sale por la cuenta de su dueño. Si esa persona no ha conectado, su pieza no se publica y ut-content lo dice con su nombre — «CEO» todavía no ha conectado su LinkedIn — en vez de un fallo genérico.

Publicar ahora

Todo sale a su hora según el calendario. Cuando hace falta que salga ya, sin esperar: en la campaña, Publicar el artículo ahora (commit al CMS y, si el botón llega a producción, el despliegue detrás); y en cada pieza de una red automática, Publicar ahora. Los dos preguntan antes. Se saltan a propósito la fecha programada y la regla de una publicación por persona y día: quien lo pulsa lo sabe. Solo funcionan en campañas ya aprobadas —aprobar es lo que crea la programación— y nunca en algo ya publicado.

Publicar a mano

En la campaña, pestaña Piezas, botón Publicar a mano. Sale en toda pieza de una red que ut-content no publique solo.

  1. Copiar texto

    El texto completo con sus hashtags, tal cual se generó.

  2. Copiar imagen

    La imagen de la pieza está justo debajo del texto. Copiar imagen la deja en el portapapeles para pegarla en el editor de la red; si el navegador no lo permite, Descargar imagen y adjuntarla. Si la pieza no tiene, ahí mismo está Generar imagen.

  3. Publicarlo en la red

    Desde la página o el perfil que corresponda: texto e imagen.

  4. Pegar el enlace

    La URL del post publicado, y Registrar publicación.

El enlace se comprueba contra la red de la pieza: un enlace de LinkedIn en una pieza de Instagram no se acepta. La pieza pasa a publicada con su enlace y aparece en el informe igual que las automáticas, marcada como manual para que dentro de un año se sepa que esa no salió sola.

Las imágenes: dónde están y cómo volver a una anterior

Hay dos imágenes distintas y viven en sitios distintos del panel:

La imagen se genera sola. En Ajustes → Ritmo por plataforma, la columna Imagen dice en qué redes ut-content genera la imagen de cada pieza al escribirla (de serie: LinkedIn, Facebook e Instagram). Si una pieza llega a su hora sin imagen —una campaña anterior al ajuste, o una generación que falló—, se genera justo antes de salir; y si tampoco sale entonces, el post se publica con la tarjeta del enlace en vez de quedarse sin publicar.

El rótulo. Con rótulo… abre un campo para escribir la frase que irá sobre la imagen. Proponer rótulos pide tres a la IA, sacadas del texto de la pieza —una pregunta, una afirmación, una situación—; se pulsa una, queda en el campo y se retoca si hace falta. Luego Generar con rótulo. Vacío deja la imagen sin letras, que es lo que suele convenir en LinkedIn.

Rehacer no borra. Cada generación —y cada subida— se guarda, y bajo la imagen puesta aparece una tira con las anteriores: la técnica, la fecha, y un clic para volver a cualquiera. Se conservan las ocho últimas. Lo mismo para la portada: Portadas anteriores bajo la actual.

Para quien administre el servidor: los ficheros están en la carpeta de la campaña, content/articles/UT-AAAA-NNN/assets/, dentro del volumen de ut-content. La portada acaba además commiteada en el CMS al publicar.

Mis publicaciones: las tuyas, sin campaña detrás

En Publicaciones, arriba, Escribir una publicación. Para lo que no sale de un artículo: un aviso, una foto de la oficina, una felicitación.

  1. Quién la firma — tus perfiles (un admin ve todos).
  2. Dónde — una o varias redes. Se crea una publicación por red con el mismo texto, y luego cada una se retoca por su lado.
  3. Texto, hashtags (sin #) y enlace opcional. El contador avisa con el límite de la red más corta.
  4. Imagen propia: JPEG, PNG o WebP. Con imagen, el enlace va al final del texto.
  5. Guardar borrador, Programar (día y hora en tu zona) o Publicar ahora.

Cada tarjeta dice su estado y deja editar, cambiar la imagen, publicar ya o borrar. Donde la red no publica sola, el botón es Publicar a mano: copia el texto, descarga la imagen y pega luego el enlace para registrarla. Lo publicado aparece en la solapa Publicadas, con sus métricas.

Programar o publicar cuenta en la cuota mensual de publicaciones; los borradores no. Nunca van al blog ni aparecen en Campañas ni en el calendario.

Piezas sin publicar

Debajo, Piezas sin publicar junta lo que las campañas han escrito y aún no ha salido. Se filtra por situación (falló, por publicar a mano, lista sin fecha, programada, campaña sin aprobar, rechazada), red, perfil, campaña y texto.

El registro de publicaciones

Publicaciones tiene tres solapas: Publicadas (el registro, con el buscador arriba), Sin publicar y Mis publicaciones. Una línea por publicación: cuándo salió, de qué campaña, por qué canal, con qué perfil y quién la hizo — ut-content, una persona a mano, o un simulacro. Es el sitio al que ir cuando la pregunta es «¿esto llegó a publicarse?».

Publicaciones: barra de filtros por fecha, nombre, identificador, tipo y origen, y debajo la tabla del registro con una fila por publicación.
Se busca por texto, se filtra por fecha, identificador, tipo y origen, se ordena por fecha o por clics, impresiones e interacciones, y se descarga en CSV para llevárselo a una hoja de cálculo.

Al pulsar el nombre se despliega la publicación con su texto. Si es de LinkedIn y salió por tu cuenta, ahí se corrige el texto: es lo único que su API deja cambiar de un post ya publicado. La imagen no.

Comparado con Metricool

Acción por acción, para saber qué está listo. Metricool es una herramienta de gestión de redes; esto es una redacción que además publica. Hay cosas que aquí no tienen sentido y cosas que faltan de verdad.

AcciónEn ut-content
Conectar cuenta por redConexiones, por persona y por empresasolo LinkedIn
Escribir el postLo escribe la IA a partir del artículolisto
Elegir en qué redes salePerfiles → Publica enlisto
Adaptar el mensaje a cada redMismo texto, hashtags al tope de cada redno reescribe
Programar fecha y horaRitmo y hora por plataformalisto
CalendarioVista de mes con temas, campañas y publicacioneslisto
Filtrar el calendario por red o estadoLeyenda por tipo, sin filtrofalta
Vista de lista—falta
Enviar a aprobación y aprobarAprobación por campaña y por pieza, con dueñolisto
Publicar lo aprobado automáticamenteBlog y LinkedIn personalparcial
HashtagsLos genera la IA con la piezalisto
Adjuntar imagen o vídeo a la piezaPortada del artículo; nada por piezafalta
Vista previa por red—falta
Mejor hora según la audienciaHora fija por plataformasin datos
Primer comentario automático—falta
UTM y enlaces medibles—falta
Autolistas / reciclar contenido—falta
Carga masivaCola de temas, uno a unoparcial
Plantillas y bibliotecasPerfiles editoriales con voz y ángulosequivalente
Bandeja de comentarios y mensajes—falta
Analítica de lo publicado—falta
InformesInforme semanalparcial
Corregir un post ya publicadoSí en LinkedIn; la imagen no, su API no dejalisto
Escribir el artículo del que sale todoTodo el pipeline editorialno lo hace Metricool
Auditar fuentes antes de publicarBloquea la campaña si falta una fuenteno lo hace Metricool

Lo que de verdad separa a los dos no es la lista: Metricool gestiona lo que ya has escrito y mide lo que pasó; esto escribe, verifica y publica. Lo que falta aquí es casi todo del lado de medir y de conversar.

Varias empresas en el mismo hub

Campañas gratis (solo la empresa de casa): en Ajustes → Empresas en ut-content está la cola de quien pide una campaña de prueba desde la web. ut-content decide solo si se atiende mirando el dominio, el correo, el teléfono y la conexión; cada tarjeta dice por qué, y desde ahí se atiende lo rechazado, se rechaza lo aceptado o se marca como convertida. El correo de entrega sale por Conexiones → Correo (Mailrelay), con un remitente verificado en esa cuenta.

La empresa de casa vive en la raíz y cada una de las demás bajo su ruta: content.utio.es/xenogene/. Cada empresa tiene sus temas, sus campañas, su perfil (nombre, voz, público), sus conexiones, su calendario y sus personas. Nada de una se ve desde otra.

Se dan de alta desde el panel de la empresa de casa, con rol de administración: Ajustes → Empresas en ut-content. Hace falta el nombre, la ruta, un prefijo de dos a cinco letras para numerar sus campañas (XG-2026-001), el sitio del CMS si publica en una app del monorepo, y el correo de quien la administrará. Al crearla salen la URL del nuevo panel y un enlace de acceso de 48 horas para que esa persona elija su contraseña.

En la empresa nueva, lo primero: Ajustes → Perfil de la empresa (sin eso ut-content escribe con un perfil vacío), después Conexiones (la IA y GitLab no se heredan) y por último comprobar el Sitio del CMS en Ajustes → Hasta dónde publica el botón. En xenogene.es la URL del artículo es /blog/slug/, sin fecha; en universaltelecom.es lleva la fecha delante. Las dos se fijan al exportar y no cambian.

Traducciones

ut-content traduce el artículo a los idiomas en que publica el sitio de la empresa, y solo a esos: universaltelecom.es es solo español y no traduce nada; xenogene.es publica inglés bajo /en/. El paso traducción va después de la auditoría (si bloquea, no se traduce) y antes de validar. Se traduce por secciones, con los mismos datos, los mismos enlaces (bajo el prefijo del idioma) y la misma estructura; ut-content comprueba las tres cosas y deja avisos si algo no cuadra.

Cada traducción recuerda de qué versión del español salió. Si editas el artículo después, en el detalle sale desactualizada y no se publica hasta pulsar Traducir de nuevo (en Artículo y portada). Al aprobar, el inglés va en el mismo commit que el español, en su carpeta y con su URL (/en/blog/slug/), y el sitio enlaza las dos versiones entre sí.

Métricas y campanita

La pestaña Métricas va por secciones (Resumen, Qué ha salido, Lo que viene, Qué falla y La IA) y dice cómo vamos para 7, 30 o 90 días: cuánto sale y dónde, artículos por semana frente al ritmo pactado, días sin artículo, para cuántas semanas dan los temas en cola, lo que ha hecho la IA (artículos, imágenes, posts…), cuánto bloquea la auditoría y por qué, qué falla y de qué tipo, y cuánto tarda una idea en llegar a la web. Las cifras se ponen en ámbar cuando piden algo: menos de dos semanas de cola, más de tres días sin artículo, más del 40 % de bloqueos.

El coste de la IA en dinero solo lo ve un superadmin (en Métricas y, por cliente, en la lista de Empresas). Los demás ven unidades.

En la campanita, Marcar todo como leído baja el número a cero y atenúa las filas; el aspa de cada fila la quita. Es por persona. Un aviso vuelve a ser nuevo solo si cambia lo que dice.

Instagram y los reels

Instagram va con la misma app de Meta y la misma página que Facebook: la cuenta profesional enlazada a esa página. En Conexiones → Instagram, Conectar Instagram vuelve a autorizar pidiendo también los permisos de Instagram. Con eso ut-content publica las imágenes de las piezas y un reel por campaña: la IA escribe el guion (gancho, cuatro o cinco tarjetas, cierre y pie de foto) y ut-content monta el vídeo vertical de 15 a 20 segundos con las imágenes de la campaña. El reel se ve en la solapa Piezas y se programa como una pieza más.

En Ajustes → Reels se elige de dónde salen los fondos (los de la campaña, solo la portada o imágenes generadas en 9:16 con el estilo que digas), cómo va el texto (fuente, tamaño, color, posición, banda, mayúsculas, marca, barra, segundos por tarjeta) y el audio: del catálogo de Instagram por la Audio API, en tendencia, por búsqueda o un audio concreto. El audio se decide al publicar, y Ver qué sonaría enseña lo que devolvería ahora.

Vivencias: tus fotos y anécdotas en tus posts

La IA no inventa clientes, anécdotas ni cifras. Una vivencia es material real tuyo —una feria, una reunión, un error, una foto del equipo— para que tus piezas personales lo cuenten tal cual pasó. Se meten en la pestaña Vivencias (Contar algo: qué pasó, cuándo, etiquetas, fotos o un audio) o por WhatsApp.

Debajo, tres solapas: Pendientes (lo que aún no ha salido, con cuándo sale si ya está programado), Historial (lo que ya salió, lo último primero, con el enlace al post) y Archivadas, con un buscador. Quien administra ve por defecto las de todo el equipo.

EstadoQué significa
falta el textoHay una foto pero nadie ha contado qué pasó. La IA no puede contar una foto que nadie explica: Editar y escribirlo.
lista para usarTiene texto. Se ofrece a la IA en tus próximas piezas.
ya usadaSalió en una pieza; la tarjeta dice en qué campaña. Volver a ofrecerla la reactiva.
archivadaFuera, sin borrar.

Al escribir las piezas de una campaña, la IA ve las vivencias listas de la persona de cada perfil y, si alguna encaja con el ángulo, la cuenta con los mismos hechos: resume y ordena, nunca añade. Si tiene foto y la red lleva imagen, la foto es la imagen de la pieza. La pieza queda marcada con vivencia.

A mano: en cualquier pieza sin publicar, Contarlo con una vivencia. Se elige una (o se deja elegir a la IA) y se reescribe; el texto nuevo vuelve a borrador y cancela la publicación programada, como Editar texto.

Dónde va a salir / ha salido: cada tarjeta lista las piezas que usan la vivencia, con campaña, red y estado (publicada con enlace, programada con fecha, a mano, pendiente). Desde ahí se abre la campaña o se publica ya. Historial despliega cuándo se contó, en qué campañas entró y cuándo salió cada pieza; el filtro de arriba separa publicadas y programadas.

Hacer un artículo ya (admin): escribe el tema y ut-content crea la campaña y la trabaja en el acto (gasta una campaña del plan). El primer post de la persona cuenta la vivencia sí o sí; lo demás, si encaja. Pasa por auditoría y aprobación como cualquier campaña.

Los audios se transcriben solos si hay OpenRouter con un modelo de audio (Ajustes → Proveedor de IA); sin eso se guardan y el panel lo dice. Los ficheros van al almacén de Conexiones → Almacén de fotos y audios (directorio de ut-content, MinIO/S3, Nextcloud o Google Drive). El panel se puede instalar en el móvil («Añadir a pantalla de inicio») y abre en Vivencias.

WhatsApp

ut-content tiene un número de WhatsApp para hablar con el equipo. Cada mañana te dice qué sale hoy en tu nombre (hora, red, ángulo, cómo empieza cada pieza) y cuántas tienes por aprobar; quien administra recibe todo. Se enciende en Ajustes → El resumen de cada mañana por WhatsApp.

Y le mandas lo que te pasa: una foto, un audio o un texto desde el teléfono de tu ficha. Lo guarda como vivencia tuya, le pone título y fecha, y te contesta con lo guardado. Una foto y luego su explicación son una vivencia, no dos (quince minutos). También entiende hoy, mañana, semana, lista y ayuda.

WhatsApp solo deja a ut-content escribirte libremente si tú le escribiste en las últimas 24 horas. Fuera de eso hace falta una plantilla aprobada por Meta (su nombre va en Ajustes); sin plantilla, el resumen solo llega a quien escribió el día anterior. Configurarlo: Conexiones → WhatsApp (identificador del número, token de usuario del sistema, clave secreta de la app) y, en Meta, la URL del webhook y el verify token que enseña la tarjeta.

Roles y plataformas

Dar acceso a un compañero: Conexiones → Personas, se añade con su nombre, correo y rol, y se pulsa Enlace de acceso (48 horas, un solo uso). Debajo aparecen Copiar, Enviar por WhatsApp —lo manda ut-content al teléfono de esa fila— y Enviar por correo, que abre el correo con el mensaje escrito.

RolQué puede
superadminTodo ut-content: dar de alta empresas, nombrar superadmins, y lo de admin en su empresa. El acceso de rescate es superadmin.
adminSu empresa: conexiones, ajustes, personas, campañas, publicar. No nombra superadmins.
usuarioLo suyo: sus piezas, sus vivencias, su teléfono.

Nadie se cambia el rol a sí mismo. Aparte del rol, las plataformas de la ficha (Conexiones → Personas → Rol y acceso) acotan a qué redes llega cada persona: quien lleva Instagram no aprueba piezas de LinkedIn aunque sean suyas. Todas marcadas = sin límite.

Editar el reel

El editor del reel: una fila por tarjeta con su miniatura de fondo, el texto y el desplegable de fondos; debajo el pie, los hashtags y el estilo propio.
Cada tarjeta con su texto y su fondo. «Guardar y montar el vídeo» vuelve a montar sin pedir otro guion.

En la pieza del reel, Editar el reel. Cada tarjeta es una frase de menos de 90 caracteres sobre un fondo: se cambia el texto, se reordena con las flechas, se quita con la equis y Añadir tarjeta mete otra antes del cierre. Los fondos salen de la portada, de las imágenes de las piezas, de las generadas para reels y de las subidas con Subir un fondo (mejor 9:16). El pie, los hashtags y, si se marca, un estilo propio para este reel (fuente, tamaño, posición, banda, color, mayúsculas, segundos).

Guardar vuelve a montar con ffmpeg (medio minuto) y deja la pieza en borrador: hay que aprobarla otra vez. Montar el reel en la campaña pide un guion nuevo a la IA y descarta lo editado. Un reel publicado no se edita. Si sale también por TikTok, las dos piezas reciben el vídeo nuevo.

TikTok

Conexiones → TikTok: client key y secret, URL de retorno, privacidad, el interruptor de app auditada y los botones de guardar, conectar y comprobar.
La app de TikTok for Developers y la cuenta de la empresa. Hasta la auditoría, todo sale en privado.

Publica el mismo reel de la campaña con su pie: TikTok no lleva posts de texto. Un perfil marca TikTok entre sus redes, se enciende la fila de TikTok en Ritmo por plataforma, y en Conexiones → TikTok se guarda la app de TikTok for Developers y se conecta la cuenta de la empresa. Sin cuenta, la pieza es manual: se descarga el vídeo y se sube desde la app.

Hasta que TikTok audite la app, todo lo publicado por la API sale en privado («solo yo») y como mucho cinco cuentas pueden publicar en 24 h. Pasada la auditoría, se marca en la tarjeta y se elige «público». Estudio completo: docs/TIKTOK.md.

En qué plataformas estar, y empresas sin web

La tabla de ritmo por plataforma: el artículo, LinkedIn empresa y personal, Facebook, Instagram, TikTok y YouTube, con su interruptor, su cadencia, su hora y si lleva imagen.
Cada plataforma va a su ritmo. Las que ut-content publica solo se ven como «automática».

La presencia se decide en tres sitios, en este orden: los perfiles editoriales marcan en qué redes publica cada uno (una red sin perfil no genera piezas); el ritmo por plataforma dice si está activa, cada cuánto, a qué hora y con imagen; y Conexiones da la credencial (sin ella, las piezas se publican a mano).

Una empresa sin web elige «Sin web: solo plataformas» como sitio del CMS en Ajustes → Hasta dónde publica el botón. El artículo se escribe igual —es el documento base de las piezas— pero no se publica ni se enlaza; la fila del blog queda apagada con el motivo. Con un WordPress conectado, el artículo sale ahí como original.

Cuando algo falla

Campañas va en solapas con su número: Para revisar, Bloqueadas, Sin publicar (aprobadas, pero algo falló al publicar), En curso y Publicadas. Se abre en la primera que pide algo, y el buscador filtra por tema o por UT-2026-….

Campañas: una lista para revisar, una parada en la salida a la web con el botón de reintentar ese paso, y una que no pudo publicar con el botón de revisar conexiones.
Las bloqueadas y las que no pudieron publicar tienen su propia solapa. Cada campaña dice en qué paso se paró y ofrece el botón de ese paso. «Avanzar» ejecuta ya el siguiente sin esperar los cinco minutos de ut-content.
Lo que vesQué pasa
bloqueada La auditoría encontró algo sin fuente; la tarjeta lista cada motivo con la frase del artículo. Buscar evidencias con IA busca en la web fuentes primarias para cada hallazgo, comprueba que respondan y las deja con casilla: marcas las que valen y Añadir las marcadas y volver a auditar. También puedes añadirlas a mano en Fuentes y pulsar Volver a auditar. Si es un falso positivo, Publicar de todos modos enseña lo que se salta, pide confirmar, publica el artículo en el acto y deja anotado quién lo forzó.
no se pudo publicar El contenido está bien; falló al sacarlo. Casi siempre es una credencial. Ve a Conexiones y luego Reintentar publicación.
se paró Un paso del pipeline agotó sus intentos. Suele ser la IA sin saldo o limitando el ritmo.
Una pieza esperando Es de una red que se publica a mano y le ha llegado su día. Está en la campaña, botón Publicar a mano.

Nada se publica dos veces: cada pieza tiene una clave de campaña, red, perfil y ángulo, y si ya consta publicada el trabajo se salta aunque se repita.