Discourse como um CMS para um site Jekyll

Sou um grande usuário tanto do Discourse quanto do Jekyll e, recentemente, tenho experimentado tentar usar uma instância do Discourse como sistema de gerenciamento de conteúdo para um site estático Jekyll. Acabei de começar a explorar isso e parte da razão para postar neste estágio é apenas ver se alguém mais já fez algo semelhante. Alternativamente, você pode ter uma abordagem melhor e me convencer a não perder tempo com isso :grin:

Como imagino que funcionaria

  • O conteúdo em Markdown seria editado em uma instância do Discourse (oferecendo aos usuários não técnicos uma interface agradável para edição) e pode ser facilmente reeditado, atualizado etc. A barra de ferramentas de formatação e outras vantagens tornam o usuário não técnico muito mais feliz.

  • No site Jekyll, há um arquivo YAML contendo um array de URLs de posts (ou IDs de posts, se decidirmos que a baseUrl do Discourse é sempre a mesma…) que devem ser consultados para obter conteúdo.

  • Um plugin simples do Jekyll executaria um hook para consultar cada URL (a cada reinício do servidor Jekyll?) e buscar os dados. (Para muitas instâncias “abertas” do Discourse, nenhuma autenticação seria necessária. Em algumas circunstâncias, seria necessário fornecer uma chave de API.)

  • O conteúdo JSON é baixado da URL adicionando .json, e a chave raw desse objeto JSON contém o Markdown como uma string envolta em aspas duplas.

  • Seria necessário adicionar o front matter YAML do Jekyll ao Markdown, além de fazer limpezas como remover as aspas de envoltório e substituir os \n por quebras de linha.

  • O Jekyll compila essas páginas inteiras em HTML, ou você pode usá-las com {{include file | markdownify }} em outras páginas.

Por que se preocupar?

  • Facilita muito para um editor ou mantenedor não técnico atualizar um site estático.

  • Ideal se você já possui um Discourse e deseja criar um site estático, por exemplo, para uma empresa.

  • Sites estáticos são baratos, confiáveis e seguros.

  • Por que não usar o Page Publishing? Quando tentei, as páginas pareciam exigir muito trabalho para ficarem com boa aparência. O Jekyll oferece mais controle e, claro, permite uma mistura de fontes de conteúdo gerenciadas pelo Discourse e não gerenciadas por ele.

O que a comunidade acha? Vale a pena seguir com isso?

7 curtidas

Vale totalmente a pena seguir em frente. Mas eu tenho um viés: trabalhei em algo semelhante há alguns anos como um projeto de hobby.

O objetivo não era apenas criar um site Jekyll a partir de conteúdo curado no Discourse, mas também publicá-lo como um e-book (em formato epub ou pdf) — que é a minha resposta à pergunta “por que não usar publicação de páginas”.

Segui praticamente a mesma abordagem com um arquivo yml e um array de URLs de posts.
Imagens foram um desafio, mas ainda tenho o código Python por aí que pega todos os links upload://, decodifica-os, baixa e redimensiona as imagens e altera os links para URLs de imagens locais.

Nunca terminei o projeto, mas com certeza teria interesse em retomá-lo e contribuir com as (poucas) coisas que já desenvolvi.

5 curtidas

Obrigado! Vou ver se consigo dedicar um tempo a isso nos próximos meses.

Será que você tem algum código em um repositório do GitHub?

Dê uma olhada mais aprofundada e parece que apenas o código das imagens valeria a pena salvar, e por favor, não se preocupe com o estilo do código (ou a falta dele).
Criei um gist: retrieve images from a raw discourse post · GitHub

Parece divertido. Tenho um cliente que fez algo semelhante, usando tags para permitir que os usuários gerem currículos (embora tudo seja apenas renderizado no Discourse).

Veja também https://meta.discourse.org/posts/1001736/raw

2 curtidas

Ainda melhor, obrigado!

1 curtida