Construí colophon, el generador con el que funciona este blog, así que toma todo lo que sigue como la opinión de alguien que corrige sus propios deberes. He intentado ceñirme a hechos y características, no al cariño. Donde colophon sea la elección equivocada lo diré, porque fingir lo contrario no ayuda a nadie, y a mí menos que a nadie.
La verdad aburrida primero: casi todos los generadores de sitios estáticos hacen el mismo trabajo de fondo. Entra Markdown, sale un montón rápido de HTML estático, y lo alojas en algún sitio barato. Se diferencian en tres cosas que de verdad importan: lo maduro y bien respaldado que está el proyecto, qué viene incluido frente a lo que tienes que añadir tú, y para quién se escribió.
Los consagrados
Estas son las herramientas a las que deberías recurrir por defecto.
| Herramienta | Entorno | Forma | Mejor para |
|---|---|---|---|
| Hugo | Go, binario único | Enorme, rápido, maduro | Casi cualquier blog o sitio: velocidad, un catálogo enorme de temas y extensiones, una década de respuestas en internet |
| Jekyll | Ruby | El original, el motor nativo de GitHub Pages | Publicar sin configuración directamente desde un repositorio de GitHub |
| Zola | Rust, binario único | Con pilas incluidas, sin extensiones por diseño | Un binario único y rápido con Sass, búsqueda y resaltado incluidos, si no necesitas extensiones |
| Eleventy | Node | Mínimo, infinitamente flexible | Gente de JavaScript que quiere control total y diez lenguajes de plantillas para elegir |
| Astro | Node | Framework de contenido con islas interactivas | Sitios de contenido que además necesitan componentes interactivos de verdad |
Hugo es la respuesta sensata para la mayoría, y es con lo que funcionaba este blog al principio. Renderiza un sitio grande en segundos, tiene con diferencia el mayor catálogo de temas, y si te topas con un muro, alguien lo resolvió hace años y lo dejó escrito. Jekyll es más antiguo y más lento en sitios grandes, pero si solo quieres empujar Markdown a GitHub Pages y olvidarte, nada es más simple. Zola es el más parecido a colophon en espíritu: un binario de Rust, cosas sensatas incluidas, y una negativa deliberada a hacer crecer un sistema de extensiones. Eleventy y Astro son el extremo JavaScript de la sala, Eleventy todo flexibilidad y ninguna opinión, Astro un framework de verdad para cuando un blog es en realidad una aplicación disfrazada de blog.
Ninguno de ellos incluye de fábrica generación de imágenes con IA, lecturas de audio habladas, webmentions de la IndieWeb ni sindicación POSSE. No es una crítica: es una decisión de alcance, y puedes añadir casi todo con extensiones y un par de servicios externos.
En qué se diferencia colophon de verdad
colophon también es un único binario de Go que convierte Markdown en un sitio estático, así que en el trabajo de fondo es de lo más corriente. La diferencia está en lo que integra como funciones de primera clase, las piezas que de otro modo armarías con una extensión por aquí y un servicio por allá:
- Imágenes de portada generadas con IA a partir de una referencia
gen:, y lecturas de audio (TTS) habladas de cada entrada, direccionadas por contenido y cacheadas - Fontanería de la IndieWeb: microformatos, webmentions y sindicación POSSE a Bluesky y Mastodon, incluidos
- Un glosario con enlaces de referencia, presentaciones derivadas de la entrada, y un almacén Obsidian como fuente de primera clase
La búsqueda en el propio sitio merece una mención concreta, y una honestidad concreta. La arquitectura no es original: es el modelo que popularizó Pagefind, un índice fragmentado construido a partir de la salida renderizada, donde el navegador solo descarga los fragmentos que una consulta toca de verdad, y las notas de diseño de colophon lo dicen tal cual. Lo distinto es que es nativa de Go y sin dependencias, con su propio formato abierto en lugar de uno de ingeniería inversa, un lector en JavaScript puro y sin WASM, cuando la forma habitual de conseguir esto es invocar la cadena de herramientas en Rust de Pagefind. Vive como un módulo independiente con una especificación neutral respecto al lenguaje y vectores de prueba dorados, así que indexa cualquier documento {id, url, title, body} y cualquiera puede escribir un lector conforme en otro lenguaje. Estoy contento con cómo quedó, pero la idea no es mía.
Ese paquete es toda la propuesta.
Accesibilidad e idiomas
Dos cosas en las que colophon se esfuerza de verdad, con resultados muy distintos hasta ahora.
La accesibilidad se trata como trabajo del motor, no como algo que heredas del tema que te haya tocado elegir. Ha habido un barrido deliberado hacia WCAG AAA: los bloques de código, los diagramas y las matemáticas en bloque son regiones desplazables enfocables con el teclado, todos los controles tienen un indicador de foco visible, el texto atenuado y los enlaces se llevan al ratio de contraste 7:1 que pide AAA, los marcadores de audio y adjuntos llevan etiquetas reales, las ventanas emergentes del glosario son tooltips accesibles de verdad, y todo el sitio sigue funcionando con JavaScript desactivado. Cualquiera de las herramientas consagradas puede hacerse igual de accesible con un tema cuidadoso; la diferencia es quién carga con ese peso. Aquí va integrado en el motor, no se te deja a ti.
La internacionalización es la parte que todavía se mueve. Los cimientos llevan tiempo ahí: una etiqueta de idioma por entrada que fluye a <html lang>, a los feeds y a Open Graph, además de la interfaz del reproductor y tablas de pronunciación localizadas en seis idiomas. Más reciente, y ahora mismo en pruebas, están las entradas multiidioma de verdad: pones un mi-entrada.es.md junto a la inglesa y obtienes una versión en español en /es/posts/mi-entrada/, enlazada por un slug compartido, con alternativas hreflang, un selector de idioma en la cabecera, y un aviso discreto según la preferencia del navegador que nunca te redirige a la fuerza. Cada traducción es una entrada completa, así que tiene su propia lectura, sus feeds y sus diapositivas. Esta misma página es la prueba: existe una versión en inglés, y el selector de arriba te llevará a ella. Es un experimento con la función, no un cambio de idioma: no voy a empezar a publicar en español, y esta versión es una traducción de la entrada en inglés y no algo escrito por separado, así que léela como una demostración de la fontanería más que como prosa en español. Es pronto, y el soporte multiidioma de Hugo sigue siendo más completo y más probado, pero la base es buena, y es justo el tipo de cosa donde la ayuda sería muy bienvenida.
La parte honesta
No hay ninguna herramienta popular que iguale a colophon función por función. El nicho de binario único con pilas incluidas lo ocupan Zola y Hugo; el espíritu de posee-tu-contenido y federa-por-defecto lo encarna mejor Micro.blog, que es algo encantador pero una plataforma alojada y de pago, no un generador que ejecutas tú. La combinación concreta de colophon no existe en ningún otro sitio en una sola caja, y eso corta por los dos lados: es la razón para mirarlo, y la razón para no hacerlo.
colophon es un trabajo en curso y ahora mismo soy solo yo, así que las contribuciones son muy bienvenidas. La suposición es que la mayoría interactuará con él a través de un LLM y las habilidades que incluye, porque eso es lo que hace que plasmar tus ideas sea rápido, y espero lo mismo de quien quiera trabajar en él. ¿Has encontrado un fallo? Saca tu LLM preferido y manda un PR. Uso mis propias herramientas de agentes (aide), y si tú también las usas heredarás las mismas decisiones capturadas y los mismos estándares de implementación.
Para ser justos en el otro sentido: tus palabras no quedan atrapadas si decides probarlo. La entrada es Markdown plano y la salida es HTML estático corriente, así que mudarte a otra herramienta significa reescribir plantillas y configuración, no rescatar tu contenido. El bloqueo está en las comodidades, no en lo que escribes. Esa es la parte que más me importa, y es cierta para todas las herramientas de aquí.
Entonces, ¿cuándo es colophon lo correcto, si es que alguna vez lo es?
Elige a uno de los consagrados si quieres un blog que simplemente funcione durante la próxima década. Para la mayoría, casi siempre, eso significa Hugo. Elige Jekyll si vives en GitHub Pages, Astro si necesitas componentes, Eleventy si quieres construirlo a tu manera, y Micro.blog si quieres la mitad de IndieWeb y la publicación cruzada sin ejecutar nada en absoluto. O simplemente, cualquiera de los cientos de herramientas que hacen algo parecido, ¡o constrúyete la tuya!
colophon se gana su sitio en un caso concreto: quieres precisamente ese paquete con opinión, imágenes generadas, lecturas habladas, IndieWeb y POSSE, glosario y diapositivas, en un único binario en lugar de cosido a mano.
Es especialmente útil si escribes en Obsidian, y puedes vivir tan tranquilo al borde de un proyecto joven y de un solo mantenedor. Es una razón real. Solo que no es universal, y hoy la persona a la que mejor le encaja soy yo. Lo uso porque quería exactamente estas funciones en un mismo sitio y me conformo con ser mi propio servicio de soporte.
Relacionado
- Un blog colophon en Cloudflare Pages y R2: cómo está construido y alojado este blog en realidad.
- Conectando el blog a la IndieWeb: la mitad de federación y POSSE, en la práctica.
- La entrada es la presentación: una de las funciones incluidas, presentaciones derivadas de una entrada.
- Reconstruí el blog. Otra vez.: por qué me fui de Hugo en primer lugar.
