Jekyll на GitHub Pages: комментарии

Как добавить комментарии к сайту на GitHub Pages

Прошло много времени с тех пор как я начал делать этот блог и собирался подключить к нему комментарии. Наконец, я сделал это. В своей прошлой заметке я упоминал utteranc.es в качестве движка для комментариев на Github. Но за прошедшее время появилось новое решение (и успело стать более популярным) - giscus. Его-то подключением я и занялся.

Как подключить комментарии

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

Существует немало сервисов, реализующих бекенд для комментариев, и предоставляющих блок для их встраивания на своем сайте. Я поверхностно рассмотрел их в предыдущей статье. В этой заметке я не буду к ним возвращаться, т.к. уже решил что хранить комментарии я бы хотел прямо на GitHub.

В чем, на мой взгляд, преимущества такого подхода:

  • Исходники и веб-сервер уже расположены на GitHub, если и комментарии будут храниться здесь же, то все будет существовать в рамках одной платформы
  • GitHub является провайдером SSO, и у большинства читателей блогов на GitHub Pages скорее всего есть учетная запись GitHub. Для того чтобы оставить комментарий требуется учетная запись, но при этом не требуется регистрация в сторонних сервисах.
  • У автора блога на GitHub Pages учетная запись совершенно точно имеется
  • Пользователи используют свои учетные записи GitHub в комментариях. Я считаю, что это актуально для технического блога
  • Если потребуется миграция в self-hosted сервис, достать комментарии из GitHub API будет проще, чем из какого-нибудь другого сервиса, который такого API может и не предоставлять

В связи с этим я рассматриваю только utterances, и giscus как продолжение идей первого. Они оба предоставляют возможность хранения комментариев на GitHub, в репозитории с блогом:

  • В utterances для этого используются Issues.
  • За прошедшие пару лет на GitHub появились Discussions, которые гораздо больше напоминают по смыслу комментарии к записям в блоге. giscus во всем повторяет utterances, за исключением того, что в качестве бекенда для комментариев используются discussions а не issues.

Минусом, на мой взгляд, является то что это вендор-лок на GitHub (которого в принципе сложно избежать используя сторонние сервисы комментариев, можно разве что написать свой бекенд или использовать что-нибудь развернутое у себя)

utterances vs giscus

utterances (сайт, исходники) и giscus (сайт, исходники) похожи настолько, что второе выглядит как форк первого. Они одинаково устанавливаются, предоставляют почти одинаковый интерфейс, и работают по одному и тому же принципу:

  • При попытке оставить комментарий запрос отправляется на адрес сервиса, который в свою очередь перенаправляет его на SSO GitHub, где и происходит аутентификация
  • Аутентификация происходит через приложение GitHub
  • Затем созданный комментарий с помощью приложения публикуется в discussions или issues
  • При загрузке комментариев приложение загружает список discussions или issues, соответствие страница на сайте - топик с комментариями происходит по выбранному признаку (например, в названии темы должен быть путь страницы)

utterances приятнее тем что обладает более простым и лаконичным интерфейсом от issues. Это стабильный и безопасный проект, проверенный годами, но само использованием issues в качестве комментариев к записям сложно назвать использованием по назначению.

giscus подкупает наличием веток комментариев из discussions, и возможностью ставить реакции на статьи (реакция ставится на первый пост в обсуждении). Так же он активно развивается вслед за Discussions API, и на данный момент уже предлагает большее количество фич, чем его предшественник.

utterances vs giscus comparison 1

Но оба обладают одним и тем же минусом: отправка происходит через обращение к стороннему серверу и GitHub-приложение, а не через прямой вызов GitHub API. Но мне сложно представить себе, как это могло бы работать иначе. Стоит отметить, что существует опция разворачивания giscus на своем сервере и создания своего собственного GitHub приложения.

utterances vs giscus comparison 2

Я решил установить giscus т.к. discussions в качестве бекенда мне все же кажется более подходящим решением.

Подключение

Просто следуйте инструкции и не забудьте включить Discussions в вашем репозитории. Я рекомендую вынести блок с комментариями в отдельный файл. giscus так же позволяет настроить язык интерфейса, и я настроил его таким образом, чтобы он совпадал с языком статьи.

Если вы используете JS-фреймворки на вашем сайте, то у giscus есть набор готовых компонентов для них.

Выводы

Комментарии выполняют очень важную задачу - устанавливают связь между автором и читателями. giscus, на мой взгляд, хорошо выполняет эту задачу. Мне нравится, то что помимо самих комментариев он позволяет так же ставить реакции, т.к. это хороший способ оставить обратную связь даже в том случае, если написать нечего. Так же мне нравится, то что все комментарии связываются с учетными записями GitHub.

На мой взгляд, это один из тех проектов, которые делают ровно то что нужно.

Ссылки по теме