Этот сайт и есть демонстрация

301.sh — блог о том, что на самом деле умеет бесплатный тариф Cloudflare. И сам он работает целиком на этом тарифе: статические страницы, поиск прямо в браузере, карточки для соцсетей, нарисованные на сборке, поверхность для ИИ-читателей и воркеры, которые публикуют каждую новую статью в четыре соцсети. Ни сервера, ни базы данных, ни ежемесячного счёта. Вот весь стек.

У текстов одна задача: решить настоящую проблему на Cloudflare — редиректы, DNS, заголовки HTTP, лимиты бесплатного тарифа — и сверить каждую цифру с живой документацией, указав дату проверки. Там, где родной путь Cloudflare заканчивается, начинается 301.st, платформа, к которой относится этот блог.

Стек

Несколько частей, каждая выбрана так, чтобы всё вместе оставалось бесплатным.

Статический HTML на краю сети

Astro рендерит каждую страницу в чистый HTML на сборке, Cloudflare отдаёт его через Workers Static Assets. Читатель получает HTML и пару килобайт CSS — JavaScript почти не выполняется.

Workers Static Assets · хостинг за 0 ₽

Контент — это Markdown в git

Ни CMS, ни базы данных, ни формы входа. Статья — это файл, правка — pull request, слияние — деплой. И каждая цифра Cloudflare несёт дату последней проверки.

git · без базы данных

Поиск работает в браузере

Pagefind собирает статический индекс при деплое и ищет по нему на стороне клиента через WebAssembly. Нет ни поискового сервера, ни платы за запрос — индекс это просто ещё несколько статических файлов.

Pagefind · на стороне клиента

Карточки рисуются на сборке

Каждая картинка статьи и каждая карточка для соцсети собирается из заголовка и тега: SVG, текст переведён в контуры, рендер в PNG, своя раскладка под каждую площадку. Детерминированно и воспроизводимо, без графического редактора и без ИИ.

SVG → PNG · воспроизводимо

Поверхность для ИИ-читателей

Индекс llms.txt, Markdown-двойник каждой страницы и переговоры по заголовку Accept: тонкий воркер отдаёт агенту чистый исходник вместо обвязки страницы.

llms.txt · content negotiation

И он публикует себя сам

Написать статью — последнее, что делается руками. Как только она вышла, она попадает в маленький JSON-фид, а для каждой соцсети свой воркер Cloudflare просыпается по расписанию, берёт самую старую ещё не отправленную статью и отправляет ровно одну: заголовок и ссылку, нужную карточку, теги в виде хештегов этой площадки. Что уже ушло, запоминается в хранилище KV. Каждая сеть — отдельный воркер со своим токеном и расписанием, поэтому поломка одного не останавливает остальные.

Четыре сети, четыре крон-воркера, одно хранилище KV — всё внутри лимитов бесплатного тарифа. Ещё несколько ждут проверки со стороны площадок.

О чём здесь пишут

Каждая статья лежит под той функцией Cloudflare, о которой она на самом деле. Потяните за нить: