HopHop

Cómo elegí mi stack de blog

grav mcp fediverse meta

Llevaba tiempo dándole vueltas a la idea: un blog personal para documentar mis experimentos con Home Assistant, mis experiencias self-hosted, y en general todo lo que me enorgullece en mi rincón geek. Algo simple, que no consuma mucho tiempo, y visualmente aceptable sin tener que ensuciarme demasiado las manos con frontend. Puaj.

En resumen

Para los que tienen prisa, aquí está el recorrido:

  • Definición de criterios (Markdown, multilingüe, PHP, integración IA)
  • Eliminación de los sospechosos habituales (WordPress, Ghost)
  • Descubrimiento de Grav y su enfoque flat-file
  • Desarrollo de un plugin MCP para pilotar el blog desde Claude
  • Conexión al Fediverse vía Bridgy Fed

Lo que quería

Mis criterios iniciales parecían razonables:

  • Markdown nativo — Escribo código, quiero escribir mis artículos como mis README
  • Syntax highlighting — Un blog tech sin resaltado de sintaxis es como una pizza sin queso
  • Multilingüe — Para los días en que me siento internacional
  • No feo — Sí, es un criterio técnico
  • Open source — No puedo evitarlo
  • PHP preferiblemente — Es mi terreno de juego diario, mejor quedarme en terreno conocido

Hasta ahí, nada loco. Luego añadí dos pequeñas líneas:

  • Integración MCP Claude — Porque pedirle a Claude que traduzca mis artículos o cree posts desde la terminal, me atraía mucho
  • Fediverse — Poder recibir comentarios desde Mastodon en lugar de gestionar un sistema de comentarios y su spam

"No es gran cosa", me dije. Ja.

El recorrido

¿WordPress? No, gracias.

El reflejo clásico. Pero para un blog personal, es como coger un camión para ir a buscar el pan. Plugin de seguridad, plugin de caché, plugin para que los plugins funcionen juntos... No tengo tiempo para eso...

¿Ghost? Casi.

Elegante, moderno, API impecable. Pero es Node.js. Y yo, Node en mi servidor, si puedo lo evito...

¿Grav? Bingo.

Flat-file (sin base de datos), PHP nativo, Markdown básico, multilingüe integrado... Sobre todo porque planeo usar bastante la IA para redactar, me pareció prometedor.

Arquitectura objetivo

Esto es lo que busco:

┌─────────────────────────────────────────────┐
│              Mi servidor                     │
│                                             │
│   Grav ──── Plugin MCP ◄──── Claude Code   │
│     │                                       │
│     └──── RSS ──── Bridgy Fed ──── Mastodon │
│                         │                   │
│                    Webmention               │
│                   (comentarios)             │
└─────────────────────────────────────────────┘

Grav para el contenido

Mis artículos son simples archivos Markdown en carpetas. ¿Backup? cp -r. ¿Migración? scp. ¿Git? Nativo. Pan comido.

Un plugin MCP casero

Aquí es donde se pone divertido. Desarrollé un plugin que expone una API MCP en mi blog. Lo cuento en detalle en el artículo sobre el desarrollo del plugin MCP. Resultado: puedo pedirle a Claude "Crea un artículo sobre mi nuevo setup Zigbee" o "Traduce el artículo sobre Home Assistant al inglés", y lo hace. Directamente. Sin abrir el admin.

El plugin está en PHP gracias al SDK MCP oficial, y planeo compartirlo con la comunidad Grav una vez que esté bien probado.

Bridgy Fed para el Fediverse

La idea: conectar mi feed RSS a Bridgy Fed. Acabé desarrollando un plugin Grav completo para esto, que detallo en este artículo. La gente podrá seguirme desde Mastodon, y cuando comentan, vuelve a mi blog vía Webmention. Sin cuenta que crear, sin spam que moderar, sin RGPD que gestionar. Solo conversaciones.

Admito que hago esto por la belleza del gesto. Como no soy muy de redes sociales, creo que tengo 4 seguidores ;) Pero bueno, me gusta el concepto detrás de Mastodon y el Fediverse en general y quería integrarme...

Lo siguiente

El blog está online, el MCP funciona, y por fin puedo empezar a escribir. Bueno, veremos si realmente lo hago ;)

¡Nos vemos!


Este artículo fue escrito originalmente en francés. Esta traducción fue generada automáticamente con ayuda de IA.

Interactions du Fediverse

1

Entrada Anterior Siguiente Entrada