CMS con IA nativa
Web Base
Núcleo común con actualizaciones firmadas y una web pública por cliente: un solo producto para instalar y mantener muchas webs.
Contexto
Cualquier web que quiera posicionar necesita contenido constante: artículos optimizados, imágenes bien descritas, traducciones, revisiones. Es trabajo lento, repetitivo y caro. Los CMS clásicos resuelven la publicación, pero dejan la producción de contenido en manos humanas al cien por cien, y cada web de cliente acababa siendo una instalación artesanal: su gestor, sus parches, su mantenimiento aparte.
Web Base ataca los dos problemas a la vez. Es un CMS con inteligencia artificial nativa —la IA no es un plugin que se le añade, está en el corazón del producto— construido sobre un backend FastAPI con base de datos vectorial (pgvector: la base de datos guarda también el significado de los textos, no solo las palabras), un panel de administración completo y un frontend público Astro por cliente. Todo se instala limpio, desde cero, con un comando.
Objetivos
- Que la IA redacte, ilustre, traduzca y posicione contenido con revisión humana, no al revés.
- Publicar de forma autónoma con garantías: anti-duplicado textual y semántico antes de publicar nada.
- Instalar la web de un cliente nuevo limpia y aislada en minutos: repo propio, imagen propia, base de datos propia.
- Administrar las webs desde agentes de IA con permisos acotados, y ofrecer bots conversacionales dentro de la propia web.
- Actualizar el núcleo de todos los clientes con un botón, con paquetes firmados criptográficamente y vuelta atrás automática.
- Cubrir el ciclo SEO completo: metadatos asistidos, sitemap, multiidioma con
hreflang, datos estructurados.
Mi responsabilidad
Diseño del producto y arquitectura completa. Desarrollo de las cuatro piezas: la API de contenidos con IA y búsqueda semántica (FastAPI + PostgreSQL/pgvector), el panel de administración (React), la plantilla de webs públicas (Astro SSR) y el sistema de actualizaciones firmadas. Además de la operación real: instalación, actualización y mantenimiento de las instalaciones en producción.
Complejidad
Los problemas interesantes no fueron las pantallas, fueron los circuitos:
- Que la IA no invente ni repita: las publicaciones autónomas pasan un doble filtro antiplagio y una comparación semántica contra lo ya publicado (aquí es donde la base vectorial hace el trabajo: compara significados, no palabras). El conocimiento sectorial se ingesta de fuentes externas respetando su robots.txt, con esquemas de datos versionados.
- Conocimiento con memoria: el blog alimenta un índice vectorial que sirve para el chat público de la web, las sugerencias al redactor y el análisis de la competencia. Reingeniería de embeddings abstraída para cambiar de proveedor sin reescribir.
- Confianza en las actualizaciones: cada versión del núcleo se firma con Ed25519 (el mismo tipo de firma que usan las distribuciones Linux) y el destino verifica la firma antes de instalar nada. Una versión que no arrancó revirtió sola en producción: el rollback se probó a sí mismo.
- Servidores compartidos: el DNS interno de Docker llegó a resolver mi base de datos hacia la de otra instalación vecina. Ahora cada proyecto vive en su red privada; solo el gateway toca la red pública.
Decisiones principales
IA nativa en todo el ciclo de contenido
Generación de artículos desde una idea, desde contenido base o analizando la web de la competencia. Imágenes generadas con descripciones alternativas hechas por visión artificial. SEO asistido que puntúa el artículo antes de publicar. Planificación editorial con generación por lotes, traducciones por job y calendario con arrastrar y soltar. El principio del panel lo resume: la IA te ayuda; tú mantienes el control.
Agentes y bots de primera clase
La API expone tokens específicos para agentes externos con permisos acotados y su catálogo OpenAPI: un agente puede administrar contenidos sin ser un humano con sesión. Y dentro de la web pública, chat conversacional sobre el contenido del sitio (RAG) con síntesis de voz. La web no solo se gestiona con IA: se consulta con IA.
Instalaciones limpias y aisladas
Un comando crea el repositorio del cliente desde la plantilla; GitHub construye su imagen; el instalador levanta la instalación completa en una carpeta propia con su base de datos, sus secretos generados al momento y pruebas automáticas de que todo responde. Ninguna instalación comparte nada con la siguiente.
Un núcleo, muchas webs
La web pública de cada cliente es suya (repo e imagen propios); el núcleo —API y panel— es compartido y se actualiza una vez para todos, por digest firmado y con confirmación desde el propio panel del cliente.
Resultado
- Núcleo en producción (17 routers de API) con releases periódicas firmadas y CI que prueba la API en cada cambio.
- Primera web de cliente real operando el circuito completo: instalación limpia desde imagen firmada, actualización por botón, datos reales.
- Publicaciones autónomas funcionando con anti-duplicado semántico; SEO asistido que alcanzó puntuación máxima en pruebas internas.
- Wiki pública de 14 guías, diario de desarrollo público y documentación viva: el producto se explica solo.
- Instalar un cliente: un comando y un dominio. Actualizar el núcleo: un botón. Volver atrás: automático.
Aprendizajes
- La IA bien integrada no sustituye al humano: cambia su trabajo de escribir todo a revisar y dirigir. Para eso hacen falta validaciones reales (semánticas, de esquema, de firma), no promesas.
- La confianza entre sistemas no se declara, se firma: el manifiesto firmado eliminó de raíz la duda sobre qué corre en cada servidor.
- Ningún test local sustituye a un cliente real: el DNS cruzado, los permisos de sockets y la caché del proxy solo aparecieron en producción.
- Fallar rápido y ruidoso es una virtud en un instalador: dos fallos silenciosos se cazaron añadiendo verificaciones antes de instalar.
- La base vectorial es lo que convierte un CMS con IA en un CMS IA-nativo: sin memoria semántica, todo lo demás son decoraciones.