Четвёртый проект: site.aizavod.top. Описываешь свой бизнес в чате — через минуту получаешь готовый одностраничный сайт-визитку с обложкой. Можно сразу опубликовать на поддомене.

Идея

У каждого мелкого бизнеса должен быть сайт. Но не у каждого есть время или деньги на разработку. Конструкторы типа Tilda или Wix — это хорошо, но там всё равно надо ковыряться с блоками, шрифтами, картинками. Я хотел сделать проще: ты пишешь «барбершоп “Бородач” в Казани, стрижки и бритьё, тел. 8-999-123-45-67» — и получаешь готовый сайт. Полностью. С обложкой, секциями, контактами, мобильной адаптацией.

Архитектура

Схема похожа на предыдущие проекты, но с двумя шагами генерации:

Пользователь описывает бизнес
    → FastAPI backend (очередь + лимиты)
    → Worker шаг 1: Claude Opus генерирует HTML
    → Worker шаг 2: ChatGPT Image API генерирует обложку
    → Обложка встраивается в HTML как base64
    → Готовый сайт отдаётся пользователю

Ключевое решение: сайт — это один HTML-файл. Никаких внешних зависимостей, CDN, фреймворков. Inline CSS, inline картинка. Файл можно скачать, открыть в браузере, залить на любой хостинг. Или опубликовать одной кнопкой прямо у меня.

Как работает генерация

Worker получает описание бизнеса и вызывает Claude Opus с подробным промптом: какие секции нужны (hero, about, services, contacts, footer), какой стиль (modern, clean, responsive), обязательно mobile-first. Claude возвращает полный HTML-файл от <!DOCTYPE html> до </html>.

Бюджет: $1 на один сайт, 5 turns, таймаут 5 минут. Opus стоит дороже Sonnet, но качество HTML заметно лучше — правильные отступы, грамотные media queries, даже CSS-анимации для hero-секции.

Потом запускается второй этап: из описания бизнеса формируется промпт для ChatGPT Image API, который генерирует обложку. Картинка конвертируется в base64 и встраивается прямо в HTML через data URI. Никаких внешних ссылок на картинки — всё в одном файле.

Если генерация картинки провалилась (бывает), placeholder убирается, и сайт работает без обложки.

Публикация

После генерации пользователь видит предпросмотр в iframe. Если нравится — жмёт «Опубликовать». Backend транслитерирует описание в slug (например, «barbershop-borodach-kazan»), сохраняет HTML-файл в /data/sites/{slug}/index.html, и сайт становится доступен по адресу site.aizavod.top/s/{slug}.

В Caddy настроен wildcard для *.site.aizavod.top, так что в будущем каждый сайт сможет жить на своём поддомене: borodach.site.aizavod.top. SubdomainMiddleware в FastAPI уже это поддерживает.

Фронт

Чат-интерфейс, как у всех моих проектов. Тёмная тема, textarea для описания, предпросмотр в iframe, кнопка публикации. Три примера в приветственном сообщении: фотограф, барбершоп, доставка еды.

Цифры

Генерация одного сайта: 30-60 секунд на HTML (Claude Opus) + 30-60 секунд на обложку (ChatGPT Image). Итого около полутора минут. Стоимость: $0.10-0.30 за Claude + ~$0.04 за картинку.

Для маленького AI-завода, который только учится делать полезные вещи — неплохое начало 🏭