Discourse как CMS для сайта на Jekyll

Я активно использую и Discourse, и Jekyll, и недавно начал экспериментировать с попыткой использовать экземпляр Discourse в качестве системы управления контентом для статического сайта на Jekyll. Я только что начал с этим работать, и одна из причин, по которой я пишу сейчас, — просто узнать, делал ли кто-то уже что-то подобное. Или, возможно, у вас есть лучшее решение, и вы сможете отговорить меня от траты времени на это :grin:

Как я представляю себе работу этой системы

  • Контент в формате Markdown редактируется в экземпляре Discourse (что даёт нетехническим пользователям удобный интерфейс для редактирования) и может быть легко изменён, обновлён и т. д. Панель форматирования и другие удобные функции делают работу с нетехническими пользователями гораздо приятнее.

  • В сайте Jekyll есть YAML-файл, содержащий массив URL-адресов постов (или ID постов, если мы решим, что базовый URL Discourse всегда один и тот же…), которые должны опрашиваться для получения контента.

  • Простой плагин Jekyll будет запускать хук для опроса каждого URL (при каждом перезапуске сервера Jekyll?) и получать данные. (Для многих «открытых» экземпляров Discourse аутентификация не потребуется. В некоторых случаях может потребоваться предоставить API-ключ)

  • JSON-контент загружается с URL путём добавления .json, а ключ raw этого JSON-объекта содержит Markdown в виде строки, заключённой в двойные кавычки.

  • К Markdown необходимо добавить YAML-фронтматтер Jekyll, а также выполнить очистку, например, удалить обрамляющие кавычки и заменить \n на переносы строк.

  • Jekyll компилирует эти страницы целиком в HTML, либо вы можете встроить их в другие страницы через {{include file | markdownify }}.

Зачем это нужно?

  • Значительно упрощает работу нетехнического редактора или сопровождающего при обновлении статического сайта.

  • Идеально подходит, если у вас уже есть Discourse и вы хотите создать статический веб-сайт, например, для бизнеса.

  • Статические сайты недороги, надёжны и безопасны.

  • Почему не использовать Page Publishing? Когда я пробовал, страницы требовали значительной доработки, чтобы выглядеть хорошо. Jekyll даёт больше контроля и, конечно, позволяет сочетать контент, управляемый через Discourse, с контентом из других источников.

Что думает сообщество? Стоит ли это развивать?

Это определенно стоит того, чтобы этим заниматься. Но я предвзят: несколько лет назад я работал над чем-то подобным в качестве хобби-проекта.

Цель состояла не только в том, чтобы создавать сайт на Jekyll из отобранного контента в Discourse, но и в возможности публиковать его в виде электронной книги (в форматах epub или pdf) — это мой ответ на вопрос «почему не использовать публикацию страниц».

Я следовал практически тому же подходу, используя файл YAML и массив ссылок на посты.

Картинки тоже были проблемой, но у меня до сих пор лежит Python-код, который находит все ссылки вида upload://, декодирует их, загружает и изменяет размер изображений, а затем заменяет ссылки на локальные URL-адреса изображений.

Я так и не завершил проект, но мне определенно было бы интересно вернуться к нему и внести свой вклад (немного) в то, что я уже сделал.

Спасибо! Посмотрю, смогу ли я уделить этому время в ближайшие месяцы.

Не думаю, что у вас есть какой-то код в репозитории GitHub?

Я внимательно посмотрел, и, похоже, стоит сохранить только код для изображений. Пожалуйста, не обращайте внимания на стиль кода (или его отсутствие).
Я создал gist: retrieve images from a raw discourse post · GitHub

Звучит забавно. У меня есть клиент, который примерно так же поступил, используя теги для генерации резюме пользователями (хотя всё это просто отображается в Discourse).

См. также https://meta.discourse.org/posts/1001736/raw

Ещё лучше, спасибо!