Четвёртый проект: 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-завода, который только учится делать полезные вещи — неплохое начало 🏭