Este sitio está hecho con Chinaski

Existe una versión de este artículo que sería vergonzosa de escribir: aquella en que el software que se supone facilita la creación de sitios web resulta una pesadilla para usar en su propio sitio. Me alegra que no sea este el caso.

chinaski.net es un sitio hecho con Chinaski. El contenido se gestiona en el administrador de Chinaski, se compila en HTML estático por el builder de Chinaski y se sirve como archivos estáticos desde nginx. El tema que estás leyendo ahora es un tema en Template Toolkit almacenado en la base de datos de Chinaski. Todo lo que has navegado en este sitio pasó por el mismo pipeline descrito en la documentación.

Cómo se construyó

La mayor parte del trabajo ocurrió a través del servidor MCP. Apunté Claude al endpoint MCP de Chinaski y trabajé el sitio en conversación: crear esta página, agregar estos bloques, definir los metadatos, configurar la navegación. La IA redactó el contenido de todas las páginas: 29 páginas en inglés y portugués, distribuidas en 57 bloques de contenido.

No esperaba que ese flujo de trabajo funcionara tan bien. Las herramientas MCP son tipadas y explícitas: create_page, update_block, trigger_build. El agente no tiene que adivinar la estructura. Crea un bloque hero, establece el encabezado y el subencabezado, llama a trigger_build, y el resultado es una página publicada. Sin interfaz web, sin copiar y pegar, sin lidiar con un editor de texto enriquecido.

El contenido en sí tomó unas dos horas de ida y vuelta para quedar bien. El agente redactaba un bloque de columnas, yo lo leía, cuestionaba algo que sonaba demasiado a una landing page de startup, y él revisaba. Las páginas de filosofía pasaron por varias rondas. El FAQ Respuestas honestas en la página Por qué Chinaski ("¿Qué no puede hacer Chinaski?") es el tipo de texto difícil de conseguir de un modelo sin que evada la pregunta, pero llegó.

Qué falló

Dos cosas necesitaron corrección tras el build inicial, y ambas fueron instructivas.

El header móvil era un desastre. El menú no tenía botón hamburguesa. En pantallas pequeñas, toda la navegación se apilaba verticalmente y permanecía abierta todo el tiempo, incluyendo todos los submenús simultáneamente. Es un problema de CSS en el tema, no de Chinaski en sí, pero es el tipo de cosa fácil de pasar por alto cuando se desarrolla en un navegador de escritorio. Agregar un botón de toggle con un pequeño script JS lo resolvió. El tema es solo Template Toolkit y CSS, así que la corrección fue una edición sencilla en dos archivos.

Ocho elementos del menú apuntaban a errores 404. El motivo: las páginas con un padre en la jerarquía de páginas se construyen en rutas anidadas (/en/about/features/ en lugar de /en/features/), pero los elementos de navegación se habían creado con las rutas simples. Corregirlos fueron ocho llamadas a update_nav_item. La estructura de URLs del menú es algo que el administrador debería advertir; lo registré como una brecha conocida.

Qué demuestra

El objetivo de construir este sitio con Chinaski no fue solo ahorrar tiempo, aunque lo hizo. Fue cerrar el ciclo de la afirmación sobre MCP. La documentación dice que un agente puede gestionar todo tu sitio a través de una interfaz de herramientas tipada. Es una afirmación específica, y es fácil hacerla sobre un ejemplo de juguete. Este es un sitio de producción con contenido real, navegación real e idiomas reales, y fue construido en gran parte por un agente en una tarde.

El output estático también funcionó exactamente como se esperaba. El tiempo de build en un VPS de $5 es de menos de dos segundos para el sitio completo. Las páginas publicadas no tienen capa de aplicación ni JavaScript. Una búsqueda en la pestaña de red del navegador en cualquier página de este sitio muestra un único documento HTML, un archivo CSS y las fuentes. Eso es todo.

Los problemas son reales. El tema de las URLs del menú en particular es algo con lo que se encontrará un nuevo usuario. Pero ninguno requirió tocar el núcleo de Chinaski. Fueron ediciones en el tema y correcciones en los datos. La herramienta hizo lo que se supone que debe hacer.