Discourse como un CMS para un sitio Jekyll

Soy un gran usuario tanto de Discourse como de Jekyll, y recientemente he estado experimentando con la idea de usar una instancia de Discourse como sistema de gestión de contenidos para un sitio estático de Jekyll. Acabo de empezar a probar esto y una de las razones por las que publico en esta etapa es simplemente para ver si alguien más ya ha hecho algo similar. O quizás tengas una mejor manera y me disuada de perder tiempo en esto :grin:

Cómo imagino que funcionaría

  • El contenido en Markdown se editaría en una instancia de Discourse (ofreciendo a los usuarios no técnicos una interfaz agradable para editar) y se podría volver a editar o actualizar fácilmente. La barra de herramientas de formato y otras comodidades hacen que el usuario no técnico esté mucho más satisfecho.

  • En el sitio de Jekyll habría un archivo YAML que contiene un array de URLs de publicaciones (o IDs de publicaciones si decidimos que la URL base de Discourse es siempre la misma…) que se deberían consultar para obtener contenido.

  • Un plugin sencillo de Jekyll ejecutaría un hook para consultar cada URL (¿en cada reinicio del servidor de Jekyll?) y obtener los datos. (Para muchas instancias “abiertas” de Discourse no sería necesaria ninguna autenticación. En algunas circunstancias sería necesario proporcionar una clave de API).

  • El contenido JSON se descargaría de la URL añadiendo .json, y la clave raw de este objeto JSON contendría el Markdown como una cadena entrecomillada con comillas dobles.

  • Se tendría que agregar el front matter YAML de Jekyll al Markdown, y realizar una limpieza como eliminar las comillas de envoltura y reemplazar los saltos de línea \n.

  • Jekyll compilaría estas páginas completas en HTML, o podrías {{include file | markdownify }} para incluirlas en otras páginas.

¿Por qué molestarse?

  • Facilita enormemente que un editor o mantenedor no técnico actualice un sitio estático.

  • Es ideal si ya tienes un Discourse y quieres crear un sitio web estático, por ejemplo, para una empresa.

  • Los sitios estáticos son económicos, fiables y seguros.

  • ¿Por qué no usar Page Publishing? Cuando lo he probado, parece que las páginas requieren mucho trabajo para que se vean bien. Jekyll permite más control y, por supuesto, permite una mezcla de fuentes de contenido gestionadas por Discourse y no gestionadas por Discourse.

¿Qué opina la comunidad? ¿Vale la pena seguir con esto?

Definitivamente vale la pena perseguir esta idea. Pero tengo un sesgo: hace unos años trabajé en algo similar como un proyecto de aficionado.

El objetivo no era solo poder crear un sitio Jekyll a partir de contenido curado en Discourse, sino también poder publicarlo como un libro electrónico (en formato epub o pdf) (que es mi respuesta a la pregunta de “¿por qué no usar la publicación de páginas?”).

Seguí prácticamente el mismo enfoque con un archivo yml y un array de URLs de publicaciones. Las imágenes fueron un desafío, pero todavía tengo por ahí el código en Python que obtiene todos los enlaces upload://, los decodifica, descarga y redimensiona las imágenes, y cambia los enlaces por URLs de imágenes locales.

Nunca terminé el proyecto, pero sin duda estaría interesado en retomarlo y contribuir con las (pocas) cosas que ya había desarrollado.

¡Gracias! Veré si puedo dedicarle algo de tiempo en los próximos meses.

¿No supongo que tengas parte del código en un repositorio de GitHub?

He echado un vistazo más profundo y parece que solo el código de imágenes valdría la pena conservar. Por favor, no te preocupes por el estilo del código (o la falta del mismo).
He creado un gist: retrieve images from a raw discourse post · GitHub

Suena divertido. Tengo un cliente que ha hecho algo similar usando etiquetas para permitir que los usuarios generen currículums (aunque todo se renderiza en Discourse).

Consulta también https://meta.discourse.org/posts/1001736/raw

Aún mejor, ¡gracias!