Привет! Расскажу, как устроен этот блог.

Прежде всего, почему я пришёл к этой идее. Дело в том, что в начале сентября Telegram убрал возможность прикреплять изображения к постам на их платформе telegra.ph. К слову, у кого-то до сих пор получается это сделать, возможно, есть хаки, но обычным смертным это стало недоступно. Телеграф был элементарным и в то же время невероятно удобным инструментом, чтобы быстро слепить заметку или статейку, где надо расположить несколько медиафайлов с текстом между ними.

Фичу убрали, а желание делать подобные заметки не пропало, значит, надо решать проблему. Вот какие у меня сложились основные требования к “новому Телеграфу”:

  1. Он должен быть УДОБНЫМ, чёрт возьми. Под “удобством” я понимаю как процесс управления контентом, так и его отображением. А ещё удобным для читателя.

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

  3. У меня должна быть возможность как-то делать резервные копии написанного, а сам формат должен быть таким, чтобы обеспечивал переносимость с одной платформы на другую.

  4. Чем дешевле, тем лучше. Желательно бесплатно.

Сразу оговорюсь, что идеально не получилось, но достаточно приемлемо, чтобы не переживать и не начинать сразу искать альтернативы.

Где выкладываться?

В своё время я очень много возился со статическии сайтами и мне они очень нравятся.

Во-первых, потому что это всё-таки полноценные сайты, на которые приятно смотреть.

Во-вторых, потому что я веб-макака и мало что понимаю во фронтенде, т.е. не смогу нормально сопровождать и допиливать, а в готовых шаблонах уже прилично JS и так.

В-третьих, не нужен никакой собственный бэкенд → нет уязвимостей. Наверное.

В-четвёртых, есть готовый бесплатный хостинг, GitHub Pages.

Ну всё, решено. Берём Гитхаб.

В чём писать контент?

Тут я тоже не стал особо выбирать. Мне нравится Notion, он невероятно удобный, бесплатный и привычный.

Вы думали, что я буду хотя бы тут детально выбирать между различными вариантами? Хе-хе, нет 😁

Как теперь всё это подружить?

Разумеется, человечество не в первый раз задаётся таким глубоким и важным вопросом, “как синхрозировать ноушн и гитхаб???” И, поскольку, всё, что придумал один человек, может нагуглить другой, то я быстро нашёл инструкцию, как синхронизировать базу данных из Notion в статический сайт с моей любимой темой PaperMod (те, кто читают этот пост через Instant View, красоту не заметят, ну и ладно).

Итак, прежде всего, “база данных” в Notion выглядит вот так:

В исходном варианте от автора не было “Авторских заметок” и были “Категории”, но я их убрал, ибо лишние. Каждая страница на сайте равна одной записи в таблице Ноушна. При этом я сам управляю заголовком, тегами, URL, датой и даже можно отключить какие-то статьи (суть черновики).

Сам процесс написания текстов — потрясающий. Это ж Notion, я в нём два учебных курса пишу и редактирую, ещё и совместно. А ещё совместимо с гитхабом. Картинки, списки, блоки кода — всё это поддерживается и нормально отображается в итоговом варианте.

Чтобы таблицу превратить в полноценный сайт, я клонировал репозиторий и настроил его под себя на Гитхабе, включил поддержку Pages, подправил GitHub Actions и т.д.

Теперь, когда мне нужно обновить сам сайт, я просто запускаю Action. Причём это действие, если я правильно понимаю, можно ещё сильнее упростить до одной кнопки в Telegram-боте. Если будет не лень, конечно 😅

Спустя минуту-другую, новое состояние таблицы долетает до сайта.

Instant View

Скорее всего, вы читаете этот пост прямо из телеграма, перейдя по кнопке Instant View (или “Мгновенный просмотр” в русской локали). Исходно, разумеется, никакого Instant View у моего бложика нет, но ради удобства не грех и запачкать руки кодом.

У Telegram, как всегда, документация для их API сделана через жопу, но повозившись полчаса и вспомнив, что в Firefox есть неплохой отладчик, мне таки удалось сделать минимально рабочий шаблон.

Из минусов — надо кидать ссылки не напрямую, а в таком формате: https://t.me/iv?url=https%3A%2F%2Ftheduckparty.github.io%2F2024%2F11%2F16%2Fhow-blog-works%2F&rhash=4df0edf7177d1e

Это всё тоже можно оптимизировать и немного упростить, но по-прежнему лень 😅

Выводы

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

Плюсы:

  • Удобно редактировать (Notion кайфовый).

  • Нет ничего self-hosted, за всю инфраструктуру отвечают специальные люди.

  • Бесплатно.

Минусы:

  • По умолчанию нет ничего self-hosted, т.е. в любой момент меня может заблокировать либо Notion (но тогда у меня останется последняя версия на гитхабе), либо GitHub (но тогда у меня останутся исходные тексты в ноушне). Вероятность того, что оба сервиса сразу меня выкинут, минимальная, но бэкапы в Markdown никто не отменял.

  • Для работы с Notion надо быть онлайн, не получится редактировать тексты в дороге. В целом, решаемо через “Заметки” в телефоне с последующим переносом.

  • Для деплоя на GitHub Pages надо зайти в репозиторий, перейти в Actions, выбрать нужный, запустить воркфлоу… но это автоматизируется.

А дальше посмотрим, как пойдёт.