Discourse come CMS per un sito Jekyll

Sono un grande utilizzatore sia di Discourse che di Jekyll e, recentemente, ho iniziato a sperimentare l’idea di usare un’istanza di Discourse come sistema di gestione dei contenuti per un sito statico Jekyll. Ho appena iniziato a giocare con questa idea e una delle ragioni per cui pubblico a questo stadio è semplicemente per capire se qualcun altro abbia già fatto qualcosa di simile. In alternativa, potreste avere un approccio migliore e convincermi a non sprecare tempo su questa strada :grin:

Come immagino che funzionerebbe

  • Il contenuto in Markdown verrebbe modificato direttamente nell’istanza di Discourse (offrendo agli utenti non tecnici un’interfaccia piacevole per la modifica) e potrebbe essere facilmente rielaborato, aggiornato, ecc. La barra degli strumenti di formattazione e altre funzionalità rendono l’esperienza molto più soddisfacente per l’utente non tecnico.

  • Nel sito Jekyll ci sarebbe un file YAML contenente un array di URL dei post (o ID dei post, se decidiamo che la base URL di Discourse è sempre la stessa…) da interrogare per ottenere il contenuto.

  • Un semplice plugin Jekyll eseguirebbe un hook per interrogare ogni URL (ad ogni riavvio del server Jekyll?) e recuperare i dati tramite GET. (Per molte istanze ‘aperte’ di Discourse non sarebbe necessaria alcuna autenticazione. In alcuni casi, invece, potrebbe essere necessario fornire una chiave API)

  • Il contenuto JSON verrebbe scaricato dall’URL aggiungendo .json, e la chiave raw di questo oggetto JSON conterrebbe il Markdown come stringa racchiusa tra virgolette doppie.

  • Dovrebbe essere aggiunto il front matter YAML di Jekyll al Markdown, e sarebbe necessario eseguire una pulizia, come la rimozione delle virgolette di avvolgimento e la sostituzione delle nuove righe \n.

  • Jekyll genererebbe queste pagine complete in HTML, oppure potreste includerle in altre pagine usando {{include file | markdownify }}.

Perché farlo?

  • Rende molto più facile per un editor o un responsabile non tecnico aggiornare un sito statico.

  • È ideale se avete già un Discourse e volete creare un sito web statico, ad esempio per un’azienda.

  • I siti statici sono economici, affidabili e sicuri.

  • Perché non usare Page Publishing? Quando l’ho provato, le pagine sembrano richiedere molto lavoro per apparire ben presentate. Jekyll offre un maggiore controllo e, naturalmente, permette di combinare fonti di contenuto gestite da Discourse e non gestite da Discourse.

Cosa ne pensa la comunità? Vale la pena perseguire questa idea?

Ne vale assolutamente la pena. Ma sono di parte: ho lavorato a qualcosa di simile alcuni anni fa come progetto per hobby.

L’obiettivo non era solo creare un sito Jekyll partendo da contenuti curati su Discourse, ma anche pubblicarlo come e-book (in formato epub o pdf) (che è la mia risposta alla domanda ‘perché non usare la pubblicazione delle pagine’).

Ho seguito praticamente lo stesso approccio con un file yml e un array di URL dei post.
Le immagini erano un problema, ma ho ancora il codice Python che recupera tutti i link upload://, li decodifica, scarica e ridimensiona le immagini e modifica i link in URL locali per le immagini.

Non ho mai completato il progetto, ma sarei certamente interessato a riprenderlo e a contribuire con le (poche) cose che ho già realizzato.

Grazie! Vedrò se potrò dedicarci del tempo nei prossimi mesi.

Immagino tu non abbia alcun codice in un repository GitHub?

Ho dato un’occhiata più approfondita e sembra che valga la pena salvare solo il codice relativo alle immagini; per favore, non badare allo stile del codice (o alla sua assenza).
Ho creato un gist: retrieve images from a raw discourse post · GitHub

Sembra divertente. Ho un cliente che ha fatto più o meno la stessa cosa usando i tag per permettere agli utenti di generare curriculum (anche se tutto viene semplicemente renderizzato in Discourse).

Vedi anche https://meta.discourse.org/posts/1001736/raw

Ancora meglio, grazie!