Как за выходные собрать сайт-визитку на чистом HTML и CSS с помощью нейросетей

Как за выходные собрать сайт-визитку на чистом HTML и CSS с помощью нейросетей

Меня зовут Богдан Непряхин, я CEO агентства bijobs.ru. Мы занимаемся performance-маркетингом и аналитикой данных. Я выступаю на конференциях, рассказываю про Яндекс Директ, VK Ads и работу с данными. В начале 2026 года я понял, что мне неловко давать ссылку на «страницу спикера» — её попросту не было. Была лишь строчка на сайте агентства, без фото, тем докладов или видео.

Обычный путь — заказать у специалистов: дизайнер (15–40 тысяч рублей, 1–2 недели) + верстальщик (15–30 тысяч, ещё неделя). Итого: месяц и 30–100 тысяч за одностраничник, который увидят десять человек. Я решил проверить, можно ли сделать это за выходные с помощью Claude Code — нейросетевого ассистента для работы с кодом.

Спойлер: получилось — speaker.bijobs.ru. Ниже — подробный разбор процесса: реальные промпты, ошибки и выводы.

Кстати, написание этой статьи заняло намного больше времени, чем создание самого сайта.

Почему не Tilda и не конструктор

Хотелось проверить, насколько сейчас эффективен вайбкодинг. Консоль с LLM-ассистентом ведёт себя как уверенный мидл-разработчик, которого нужно только направлять. Я понимаю основы HTML/CSS и чётко вижу конечный результат. Этого оказалось достаточно, чтобы контролировать процесс.

Шаг 1. Контент: нейросеть как помощник

У меня уже была долгая переписка с Claude: задачи агентства, материалы по выступлениям, учебные проекты. Я попросил собрать всё, что он знает обо мне, и сформировать черновик: биографию, темы докладов, достижения в цифрах.

Результат оказался вполне приличным. Достаточно было подправить акценты, уточнить формулировки и добавить свежие данные. Вместо нескольких часов на написание текстов — 20 минут на редактирование. Честно, самое приятное — не писать про себя в третьем лице.

Если у вас нет накопленного контекста, скиньте нейросети свои посты, тезисы выступлений, описания проектов. Попросите написать биографию в трёх вариантах: короткий, средний, развёрнутый. Редактировать чужой текст о себе — гораздо легче, чем писать с нуля.

Фотографии с конференций и ссылки на видео пришлось собирать вручную. Тут нейросеть помочь не может.

Шаг 2. Структура: сначала на бумаге

Перед первым промптом я нарисовал структуру страницы:

  • Sidebar (фиксированный, 300px)
  • Основной контент
  • Фото (круглое)
  • #hero: имя, должность, слоган
  • #about: биография
  • #topics: карточки тем докладов
  • CTA-кнопка («написать мне»)
  • #achievements: цифры достижений
  • #gallery: фото и видео
  • #contacts: форма или ссылки

Можно нарисовать на бумаге, в Figma или попросить нейросеть предложить типовую схему. Главное — не прыгать сразу в промпты. Пять минут с ручкой экономят час переделок.

Шаг 3. Первый промпт и главное правило

Самая частая ошибка — писать «сделай мне сайт» и ждать чуда. Не сработает. Получите что-то среднее между шаблоном Bootstrap и студенческой лабораторной.

Описывайте результат, а не процесс. Цель первого промпта — не красивый сайт, а правильный скелет: HTML с нужными секциями и базовый CSS для макета. Главное — убедиться, что всё стоит на своих местах. Цвета, анимации, шрифты — потом.

Открыл index.html в браузере: секции на месте, колонки не разъехались. Отлично — можно идти дальше.

Шаг 4. Итерации: показывай, а не описывай

Дальше начинается цикл: смотришь на результат, формулируешь замечание, отправляешь в Claude Code, проверяешь обновлённый код. И так по кругу.

Один из самых полезных приёмов — давать визуальные референсы. Я нашёл на ThemeForest тему с тёмным дизайном и sticky sidebar и скинул ссылку с комментарием: «хочу похожий макет и атмосферу».

Нейросеть сама разобрала визуальную логику: расположение колонок, типографику, отступы, поведение при скролле — и воспроизвела всё это в чистом HTML/CSS. Мне не пришлось описывать каждый padding словами. Ссылка на пример заменяет целый технический бриф.

Дальше пошли точечные правки:

  • Типографика: размеры заголовков, межстрочный интервал, жирность
  • Цветовая схема: оттенки синего для акцентов
  • Карточки тем: закруглённые углы, hover-эффект
  • Секция достижений: большие числа с анимацией счётчика
  • Галерея: сетка фото с масштабированием при наведении

Каждая итерация занимала 5–15 минут: сформулировать → получить код → проверить в браузере. Обратная связь моментальная — процесс затягивает.

Важно: после каждой правки просите ассистента зафиксировать изменения. Почему? Потому что нейросеть может потерять контекст и сломать то, что уже работало. Документация (даже в виде текстового файла) помогает откатиться. Идеально — использовать Git.

Шаг 5. Мобильная адаптация и первые проблемы

Проверил сайт на телефоне. После десятка десктопных итераций мобильная версия выглядела как после блендера: sidebar занимал половину экрана, текст мелкий, карточки вылезали за края.

Новый промпт — и Claude Code добавил @media-запросы, переделал макет. Но тут я столкнулся с первыми граблями:

  • backdrop-filter: blur() работал в Chrome, но в Safari требовал -webkit--префикс
  • Несколько CSS-свойств содержали синтаксические ошибки, которые Chrome игнорировал, а другие браузеры — нет

Вывод: проверяйте сайт не только в Chrome. И не забывайте про планшеты (768–1024px) — это зона, где всё ломается по-своему.

Шаг 6. Оптимизация: самые болезненные грабли

Сайт выглядел отлично, и я уже собирался скинуть ссылку… Но решил прогнать его через PageSpeed Insights.

Результат: 38 баллов на десктопе, 27 — на мобильных. Для файла в 32 КБ — мягко говоря, грустно.

Главный виновник — фото профиля: bogdan_nepryahin.png весил 12 мегабайт. Это PNG 3592×3592 — исходник с телефона, загруженный как есть. LCP (время до отображения главного контента) — 12,4 секунды на десктопе и 82 — на мобильном. Почти полторы минуты.

Плюс три iframe с VK-видео грузились сразу, хотя пользователь ещё не доскроллил до них.

Скинул скриншот PageSpeed в Claude Code: «Вижу такие показатели, что не так?». Получил диагноз и список действий. Следующий промпт: «Сделай всё, что перечислил». Результат:

  • Фото профиля: 12 МБ → 93 КБ (WebP, потеря качества незаметна)
  • Галерея: 13 МБ → ~600 КБ
  • VK iframe: loading="lazy", грузятся только при скролле
  • Google Fonts — асинхронная загрузка, не блокирует отрисовку
  • Preload для главной фотографии

Повторный тест: 90 баллов на десктопе, 63 — на мобильных.

Мораль: «красивый» и «быстрый» — разные задачи. Обязательно проверяйте PageSpeed перед тем, как показывать сайт.

Шаг 7. Деплой и новые приключения

Два варианта:

Простой: Netlify. Бесплатно, 5 минут. Регистрируетесь, перетаскиваете папку — и через 30 секунд сайт живёт по адресу random-name.netlify.app. Свой домен подключается через CNAME. Альтернатива — GitHub Pages.

Продвинутый: свой VPS + Nginx. Имеет смысл, если сервер уже есть. Я выбрал этот путь — и тут начались приключения.

Проблема с регистром файлов

На Windows и macOS Photo.jpg и photo.jpg — один файл. На Linux — два разных. Я потратил 20 минут, пытаясь понять, почему фото отображается локально, а на сервере — белый квадрат. В HTML было <img src="photo/Photo_1.jpg">, а файл назывался photo_1.jpg.

Правило: все файлы — строчными буквами, без пробелов. Только латиница, цифры, дефисы и подчёркивания.

Абсолютные пути в адресах

Нейросеть иногда генерирует <img src="/photo/photo1.jpg"> с ведущим слешом. На сервере работает, локально — нет (браузер ищет файл в корне диска). Мелочь, но раздражает.

Трабл с перезаписью проекта

Я хостю несколько проектов на одном VPS. Для SFTP был создан пользователь с chroot-изоляцией — он «видит» только папку спикерского сайта. Когда я загружал файлы другого проекта через этого пользователя, думая, что попадаю в другую директорию, файлы улетели в папку спикерского сайта и перезаписали его.

Заметил через несколько часов. Восстановил из Git за 5 минут. Вот где система контроля версий реально спасает.

Урок: когда работаете с несколькими проектами на одном сервере, документируйте инфраструктуру. В голове всё помнится ровно до того момента, когда перестаёт.

Принципы, которые я вынес

Итерируй, не жди идеала за один запрос. Первый промпт — скелет. Второй — типографика. Третий — мобильная версия. Четвёртый — анимации. Лучше десять простых запросов, чем один «монстр».

Явно указывай ограничения. «Без React, без Vue, без Bootstrap, только HTML/CSS/JS». Иначе нейросеть предложит «удобные» решения с кучей зависимостей, которые потом придётся поддерживать.

Проси объяснять код. Если не понимаете, что написала нейронка, спросите: «Объясни, что делает этот CSS-класс. Почему calc() и что такое 100vh?». Вопрос — 30 секунд, понимание — навсегда. Если нейросеть не может объяснить — скорее всего, код кривой.

Время: около 8 часов за два выходных, с учётом ошибок и экспериментов.

Деньги: $0 за хостинг (VPS уже был), подписка на Claude — единственная статья расходов.

Результат: speaker.bijobs.ru — одностраничник на чистом HTML/CSS/JS, 90 баллов PageSpeed на десктопе, адаптивный, без внешних зависимостей (кроме Google Fonts).

Нейронка не заменяет разработчика. Она убирает барьер: «я не начну, потому что это дорого и долго». Если вы понимаете, что хотите получить, и готовы итеративно уточнять — получите рабочий результат за выходные. Не идеальный. Но рабочий. А идеальный… давайте честно — его не бывает. Бывает «достаточно хороший, чтобы не стыдно было скинуть ссылку».

Читать оригинал