Сайт, собранный ИИ
Этот сайт собран с нейросетью. Так можно на любой платформе — на конструкторе, на движке или на своих страницах: человек говорит, что нужно, нейросеть собирает страницы. Правка занимает минуты, а не день.
Опубликовано 25.08.2026 · цифры сверены 01.09.2026
Как сделать сайт с помощью ИИ: девять шагов
- Тема и цель. Решите, о чём сайт и что человек должен на нём сделать: написать вам, купить, оставить заявку.
- Модель. Возьмите Claude, ChatGPT или Gemini. Держать сайт у себя удобнее с Claude Code или Codex, быстрый результат в браузере дают Lovable, v0 и Bolt.
- Вопросы к вам. Попросите: «Задай мне 10 вопросов, чтобы понять, какой сайт мне нужен, и предложи два варианта структуры».
- Исследование. Попросите: «Найди пять сайтов в моей теме, разбери их структуру и скажи, чего у них нет».
- Инструмент. Выберите, из чего собирать: под разные задачи разные инструменты, список под шагами.
- Первый вариант. Просите готовые страницы, а не описание, и правьте словами: «шрифт крупнее», «цены выше первого экрана».
- Проверка фактов. Сверьте цены, сроки, названия и телефон: модель пишет гладко, но факты путает.
- Домен и хостинг. Домен около 200 ₽ в год, хостинг от 200 ₽ в месяц: обычным страницам хватит самого дешёвого тарифа.
- Поиск. Добавьте сайт в Яндекс.Вебмастер и Google Search Console, отдайте им карту сайта и через неделю проверьте, сколько страниц попало в индекс.
Что под какую задачу
- Визитка, портфолио, лендинг — обычные страницы HTML и CSS или конструктор с ИИ: Тильда, Craftum.
- Блог, витрина работ, документация — сборщик страниц из ваших данных: правка в одном месте расходится по всем.
- Интернет-магазин — готовая платформа InSales или Shopify либо Lovable: корзина, оплата и склад уже написаны.
- Сервис со входом — Next.js с базой данных, собирать в v0, Lovable или Claude Code.
Ниже — как это сделано на самом сайте: что собрано, сколько стоило и чем пришлось заплатить.
Где проект сейчас
Код написан и работает. Сборка и проверка вместе проходят на этой машине за шестнадцать сотых секунды.
За последние сутки прибавился генератор статей: раньше страница проекта собиралась из markdown по одному шаблону, теперь готовая статья приходит отдельным файлом со своей схемой и своими числами.
Что было нужно
Требование одно: витрина лаборатории, чья позиция построена на проверяемости, обязана быть проверяемой сама. Числа на страницах должны сходиться между собой без ручного присмотра, а любое утверждение — иметь адрес, по которому его можно открыть и сверить.
Ограничение, из которого выросла вся конструкция: одна правка в исходнике обязана разойтись по девяти местам — реестр на главной, счётчик в чипе направления, строка «Итого», страница направления, разметка ItemList, карта сайта, llms.txt, блок «читайте также» на соседней странице и сама страница проекта. Девять мест руками не удерживаются.
| Метод | Что из него взято | Каноническое имя · источник |
|---|---|---|
| Один хозяин у данных · single source of truth | цифра, которая повторяется, лежит в src/data и попадает в текст сборкой. Число проектов считается один раз как длина списка | Single source of truth; принцип DRYHunt & Thomas, «The Pragmatic Programmer», 1999 |
| Разделение по проверяемости · ошибка против замечания | то, что проверяется механически, останавливает выкладку; то, что требует глаз, печатается замечанием и её не держит | Уровни серьёзности: ошибка останавливает, замечание нетсобственное правило лаборатории, внешнего источника нет |
| Громкий отказ вместо тихого · fail loudly | лишний закрывающий тег ловится разбором разметки и возвращает код 1, а не уезжает на сервер незамеченным | Fail fast; ворота перед выкладкойShore, «Fail Fast», IEEE Software, 2004 |
| Приёмка порогами · линейка задана до запуска | пороги записаны в check.py, а не в списке для памяти: ровно один h1 на странице, description на месте, canonical на месте | Пререгистрация порогов; WCAG 2.1 AA для контрастаNosek et al., PNAS, 2018 · W3C, WCAG 2.1, 2018 |
| Точное совпадение вместо доверия | карта сайта сверяется с реально существующими файлами как множество с множеством: и лишний адрес, и недостающий — обе ошибки | Сверка множеств (reconciliation)собственное правило лаборатории, внешнего источника нет |
| Тесты на швах · шов между сборкой и сервером | хэши инлайновых скриптов пересчитываются на каждой сборке и сверяются с тем, что записано в политике для nginx | Контрактные тесты на границе сборка → серверFowler, «IntegrationContractTest», 2011 |
| Осознанные исключения с причиной | прощённая проверка живёт отдельным файлом с объяснением, а не правкой порога: пять строк про контраст фирменной магенты | Документированные исключения (waivers)собственное правило лаборатории, внешнего источника нет |
Как собрано
Сайт собран в паре с ИИ (Клод): в истории правок 180 записей, 139 из них помечены его соавторством. Человек формулирует, что должно появиться на странице, ИИ пишет разметку, стили и код сборки, человек принимает работу и решает, что выкладывать. Порядок работы от площадки не зависит — так же можно вести сайт на конструкторе или на готовом движке, меняется только место, куда ложится результат.
Конвейер линейный и односторонний: src/ читается, site/ пишется, обратной дороги нет. Сборка берёт шесть проектов, пять исследований, шестнадцать файлов данных и две страницы, создаёт 38 файлов, из них 22 HTML, пересчитывает хэши инлайновых скриптов и кладёт готовую строку политики безопасности в site/csp.txt.
Дальше check.py читает уже собранные файлы, а не исходники: сверяются те самые байты, которые уедут на сервер. Ошибка возвращает код 1, и выкладка останавливается до первого скопированного файла.
Генератор статей стоит сбоку от этого конвейера. Он не участвует в сборке сайта: статья пишется один раз, кладётся в src/projects/ готовой страницей и дальше только копируется. Пределы длины ячеек он знает те же, что и проверка, — таблица на девять чисел живёт в одном файле на всех.
Правило, которое нельзя нарушить случайно, стоит дороже правила, о котором нужно помнить.
На чём держится конструкция
Шесть правил, и ни одно не держится на договорённости: под каждым стоит проверка, которая возвращает код 1 и останавливает выкладку.
menu.csv вместо пятнадцати страниц. Всё, что вписано в site/ руками, исчезает на следующем прогонеset -euo pipefail, а проверка идёт вторым шагом, до rsync. Обойти её, не переписав скрипт, нельзяРешения и основания
Решений немного, потому что почти всё, что можно было добавить, решено не добавлять. Каждое ниже отвечает на вопрос «почему тут нет» — фреймворка, базы, зависимостей, панели администратора.
| Решение | Основание |
|---|---|
| Генератор на стандартной библиотеке | ни pip, ни файла блокировки версий: Python на маке уже есть, ставить нечего. Единственная внешняя зависимость — playwright, и та стоит сбоку: её просят только браузерные замеры, сборка и обычная проверка идут без неё |
| Статика вместо CMS | ни базы, ни PHP, ни админки, ни форм. Ломать в самих страницах нечего: поверхность атаки — это сервер и nginx, а не сайт |
| Свой микро-markdown вместо библиотеки | нужны заголовок второго уровня, абзац, цитата и три подстановочных блока. Полная реализация спецификации тянет зависимость ради того, что не используется |
| Статья приходит готовой страницей | у проекта своя схема, свои числа и своя длина текста. Общий шаблон это не удержит, а разные шаблоны в одной сборке — это две сборки |
| Сборка ничего не удаляет | лишние файлы печатаются списком, удаление живёт за отдельным флагом. Иначе первая же ошибка в путях сносит папку результата целиком |
| Страница 404 вне карты сайта | 22 HTML-файла, 21 адрес. Проверка отдельно требует у неё noindex и отдельно — чтобы её не было среди адресов карты |
| Прощённые проверки — отдельным файлом с причиной | пять строк про контраст фирменной магенты: 4,32 при норме 4,5. Решение по бренду записано текстом, а не понижением порога |
| Своя проверка вместо готового линтера | линтер знает про HTML, но не знает, что число проектов на главной обязано совпадать с числом файлов в исходниках |
Чем платит конструкция
Конструкция дешёвая и жёсткая, и второе — цена первого. Всё, что делает сборку быстрой и проверяемой, одновременно закрывает дверь тому, кто хочет поправить одну страницу здесь и сейчас.
| Решение | Чем ограничивает |
|---|---|
| Статика без форм | написать с сайта нельзя: единственный обратный канал — ссылка на Telegram в подвале |
| Свой микро-markdown | таблица, список и вложенная цитата в теле страницы не соберутся — этих правил в разборе нет |
| HTML только из сборки | разовую правку одной страницы внести некуда: любое изменение проходит через исходник и полную пересборку |
| Статья не пересобирается | текст живёт в готовой странице. Общая правка стиля расходится сама, а правка формулировки — только руками в файле |
| Политика по хэшам скриптов | любая правка инлайнового скрипта требует пересборки и новой строки в конфиге сервера, иначе браузер его не выполнит |
| Разбор разметки своим парсером | ловится баланс тегов и битые ссылки, но не валидность по спецификации: ошибка вложенности внутри правильно закрытых тегов пройдёт |
| Выкладка одним rsync | атомарного переключения нет: пока идёт загрузка, на сервере лежит смесь старой и новой версии |
| Один редактор | совместная правка через браузер невозможна в принципе — нужен доступ к репозиторию и Python на машине |
Что получилось
Время снято 09.09.2026 на рабочей машине командой /usr/bin/time -p, лучшее из пяти прогонов; строки кода пересчитаны 01.09.2026. Всё, что относится к сборке и проверке, замерено.
Сборка 38 файлов занимает 0,10 секунды, проверка собранного — 0,18. Вместе меньше трети секунды: цикл «поправил исходник — увидел весь сайт заново» короче, чем открытие панели администратора. Это и есть плата за отказ от CMS, полученная обратно.
Проверка возвращает ноль ошибок и шесть замечаний. Все шесть одинаковые — про блок «Повторить самому» без ссылок на промпт и данные. Ни одно из них не про вёрстку и ни одно не держит выкладку.
- Выборка
- Один сайт, 18 страниц, одна машина. Время сборки и проверки снято на рабочем ноутбуке; на другой машине цифры будут другими, порядок — тот же.
- Разброс
- Лучшее из пяти прогонов, а не среднее: замер показывает, что цикл укладывается в доли секунды, а не сколько он длится обычно.
- Проверки
- Строки кода считает сам check.py при каждой сборке и сравнивает с тем, что написано в этой статье: расхождение останавливает выкладку. Так 01.09.2026 поймано, что диаграмма называла 1148 строк сборки при 1293 в репозитории.
- Не обобщается
- Сравнение «по рынку» — ставка веб-разработчика по вакансиям; конструктор сайтов за 12 000 ₽ в год решает часть той же задачи и сравнивается в вопросах ниже. Обе рамки честны, но это разные рамки.
- Не измерено
- Скорость отдачи страниц с сервера и поведение читателя: замерены только сборка и проверка на машине автора.
Сайт опубликован 27.08.2026, сейчас 18 страниц на своём сервере, TLS, ноль внешних зависимостей у сборки. Сборка и проверка проходят за 0,28 секунды и возвращают ноль ошибок.
Кауфман Lab — лаборатория архитектуры искусственного интеллекта. Мы проектируем процессы и методологии. Код устаревает с каждым новым поколением моделей — методология нет, поэтому в проектах разбирается именно она. Собрать систему по этой схеме сможет любая современная нейросеть.
Что пошло не так
Ревизия 24.08.2026 прошла по всем страницам в светлой и тёмной теме и дала 20 находок, 17 из них закрыты в тот же день. Ниже — те, из которых выросли строки проверки: пока ошибка ловится глазами, она возвращается.
Проектов на странице 404повторяющееся число живёт в одном месте
href="#" — ошибка, а не мелочьЧто сознательно не вошло
Половина списка — не отказ, а очередь.
default-src 'none', а проверка считает ошибкой ссылку на любой чужой доменЧто обычно спрашивают
Ниже — то, что спрашивают про саму конструкцию: чем платит отказ от конструктора, сколько это стоит держать и почему сборка устроена именно так.
Что такое сайт с ИИ?
Сайт с ИИ — это сайт, страницы которого пишет и собирает нейросеть, а человек ставит задачу и принимает работу. Подходит студии или лаборатории, которой важно, чтобы числа на страницах сходились между собой. Сборка Кауфман Lab делает 38 файлов из markdown и таблиц и сверяет их проверкой перед выкладкой. Не даёт ни панели администратора, ни форм, ни правки текста через браузер.
Сколько стоит держать такой сайт?
Денежных расходов у сборки нет: ни платных сервисов, ни подписок — только Python, который на машине уже стоит. Платить придётся за домен и сервер, и это единственная строка расходов. По рынку тот же набор возможностей закрывается подпиской: Tilda Business стоит 12 000 ₽ в год по опубликованному прайсу, и в эту цену входит редактор, которого здесь нет и не будет.
Почему сборка не удаляет лишние файлы сама?
Потому что первая же ошибка в путях снесла бы папку результата целиком. Лишние файлы печатаются списком в конце прогона, а удаление живёт за отдельным флагом --chistka, который нужно набрать руками. Такой порядок стоил одной лишней строки в выводе и снял целый класс отказов, где генератор стирает то, что не собирал.
Что мешает поправить одну страницу руками?
Ничего не мешает — правка просто исчезнет на следующей сборке: папка site/ перезаписывается целиком. Это не побочный эффект, а условие, на котором держится сходимость чисел. Как только одну страницу разрешено править отдельно, число проектов на главной перестаёт быть тем же числом, что в карте сайта, и проверять становится нечего.
Что останавливает выкладку, если в разметке ошибка?
Проверка стоит вторым шагом скрипта выкладки, до rsync, и возвращает код 1. В скрипте объявлен set -euo pipefail, поэтому на ненулевом коде он останавливается сам, не доходя до первого скопированного файла. Обойти этот порядок, не переписав сам скрипт, нельзя: список правил и порог выкладки лежат в одном файле.
Какие внешние запросы делает сайт?
Ровно один — счётчик Яндекс.Метрики. Восемь файлов шрифтов лежат на своём домене вместо Google Fonts, картинок с чужих серверов нет. Политика безопасности начинается с default-src 'none', а инлайновые скрипты разрешены поимённо по хэшу sha256. Из чужих адресов в неё вписан один mc.yandex.ru; любой другой проверка считает ошибкой и останавливает выкладку — это правило, а не рекомендация.
Сколько времени занимает пересборка всего сайта?
Сборка 38 файлов — 0,10 секунды, проверка собранного — 0,18; вместе 0,28 по лучшему из пяти прогонов /usr/bin/time -p на 09.09.2026. Практический смысл цифры не в скорости, а в длине цикла: правка исходника и полный просмотр результата укладываются в одно нажатие, поэтому проверять сайт целиком дешевле, чем смотреть одну страницу.
Какие платформы подходят, если делать сайт с ИИ?
Порядок работы от площадки не зависит: ИИ пишет разметку и текст, а лечь результат может и в конструктор, и в готовый движок, и в свои страницы. Здесь выбран третий путь — страницы собираются заранее и лежат готовыми.
Что ИИ делает сам, а что всё равно руками?
ИИ пишет разметку, стили и код сборки. Человек формулирует задачу, принимает работу и запускает выкладку: она идёт с машины человека, автоматического переключения версий на сервере нет.
Сколько времени занимает одна правка?
Сборка 18 страниц занимает 0,10 секунды, вместе с проверкой — 0,28 секунды на рабочем ноутбуке. Скорость отдачи страниц читателю не измерялась.
- Hunt A., Thomas D. The Pragmatic Programmer. Addison-Wesley, 1999 — принцип DRY: у каждого знания одно авторитетное представление.
- Shore J. Fail Fast. IEEE Software, 21(5), 2004. doi:10.1109/MS.2004.1331296
- Nosek B. A., Ebersole C. R., DeHaven A. C., Mellor D. T. The preregistration revolution. PNAS, 115(11), 2018. doi:10.1073/pnas.1708274114
- Fowler M. IntegrationContractTest, 2011. martinfowler.com
- W3C. Content Security Policy Level 2, 2016 — hash-source. w3.org
- W3C. Web Content Accessibility Guidelines (WCAG) 2.1, критерий 1.4.3 Contrast (Minimum), 2018. w3.org
- OWASP. Cross Site Scripting Prevention Cheat Sheet — output encoding. cheatsheetseries.owasp.org