Привет! Расскажу, как устроен этот блог.
Прежде всего, почему я пришёл к этой идее. Дело в том, что в начале сентября Telegram убрал возможность прикреплять изображения к постам на их платформе telegra.ph. К слову, у кого-то до сих пор получается это сделать, возможно, есть хаки, но обычным смертным это стало недоступно. Телеграф был элементарным и в то же время невероятно удобным инструментом, чтобы быстро слепить заметку или статейку, где надо расположить несколько медиафайлов с текстом между ними.
Фичу убрали, а желание делать подобные заметки не пропало, значит, надо решать проблему. Вот какие у меня сложились основные требования к “новому Телеграфу”:
-
Он должен быть УДОБНЫМ, чёрт возьми. Под “удобством” я понимаю как процесс управления контентом, так и его отображением. А ещё удобным для читателя.
-
Он работать на как можно большем числе устройств, я не хочу каждый раз лезть к ноутбуку, чтобы исправить опечатку.
-
У меня должна быть возможность как-то делать резервные копии написанного, а сам формат должен быть таким, чтобы обеспечивал переносимость с одной платформы на другую.
-
Чем дешевле, тем лучше. Желательно бесплатно.
Сразу оговорюсь, что идеально не получилось, но достаточно приемлемо, чтобы не переживать и не начинать сразу искать альтернативы.
Где выкладываться?
В своё время я очень много возился со статическии сайтами и мне они очень нравятся.
Во-первых, потому что это всё-таки полноценные сайты, на которые приятно смотреть.
Во-вторых, потому что я веб-макака и мало что понимаю во фронтенде, т.е. не смогу нормально сопровождать и допиливать, а в готовых шаблонах уже прилично 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, выбрать нужный, запустить воркфлоу… но это автоматизируется.
А дальше посмотрим, как пойдёт.