Как всё начиналось
ООО «Стоун» — карельская компания, добывает габбро-диабаз и гранит. Работаем с ними давно, а сайт у них был ещё со времён «просто чтоб был». Вёрстка 2013-го года, слайдер с фотками на главной, «подробнее» на всё остальное, в мобильной версии текст уезжает в край экрана. SEO — нулевое: Яндекс про них знал, Google почти нет, по высокочастотным запросам типа «карельский камень» или «габбро-диабаз цена» — страница где-то на четвёртой.
Пришли с простой задачей: «Надо обновить». Обычно на этом этапе сайтоделы начинают рисовать макеты в Figma, согласовывать цвет заголовков и верстать три недели. Мы пошли другим путём.
Challenge: что на самом деле было нужно
Мы честно сели и выписали, чего хочет бизнес, а не дизайнер:
- Органический трафик из поиска. Чтобы когда архитектор в Москве ищет «брусчатка из габбро-диабаза оптом» — находил именно их.
- Мобильная адаптивность. Потому что 70% визитов на старый сайт были с телефонов и там всё ломалось.
- База знаний о карельском камне. Их главное конкурентное преимущество — они реально знают про камень. У инженеров 30+ лет опыта. Это надо было вытащить на сайт как контент.
- Быстрая сборка. Без «давайте соберёмся на созвон и обсудим блок about». Клиент занят, мы тоже.
- Простое сопровождение после сдачи. Чтобы правки делались правками в markdown, а не через админку, в которой все забыли пароль.
Под это Next.js 14 + App Router + MDX для контента подходили идеально. Tailwind для стилей, TypeScript чтобы ничего не разваливалось при правках.
Solution: как устроена сборка
Ключевое решение, ради которого мы и пишем эту статью — подход «промпты как код». Его придумал наш основатель Павел, и со временем это стало рабочим стандартом всей команды.
Идея такая. Вместо того чтобы сидеть и руками писать React-компоненты, мы заводим в репозитории файл PROMPTS.md. Там пронумерованные блоки — промпт 1, промпт 2, промпт 3. В каждом промпте детально описано, что должно появиться в коде: какие файлы создать, какие компоненты, какой дизайн, какие данные. Плюс run-prompts.sh — баш-скрипт, который последовательно скармливает промпты в Claude Code CLI и автоматически делает git commit после каждого.
Результат: весь билд сайта превращается в 27 коммитов с предсказуемой историей. Если что-то пошло не так — можно перезапустить с любого промпта. Если клиент через полгода спросит «а почему мы сделали так» — открываем промпт и показываем. Если нужно сделать похожий проект — копируем PROMPTS.md, правим под новую задачу, запускаем.
Для Stonekarelia структура промптов получилась такая (это сокращённо, полностью они лежат в нашем репозитории):
- Промпты 1–5: инициализация Next.js, дизайн-система, базовые компоненты, Header/Footer, Hero.
- Промпты 6–10: каталог камней, страницы типов камня, база знаний, галерея, производство.
- Промпты 11–15: SEO, JSON-LD, sitemap, robots.txt, метаданные, Open Graph.
- Промпты 16–18: Яндекс.Метрика, цели конверсии, A/B по CTA.
- Промпты 19–27: полировка — шрифты, логотип, фикс Hero, фото камней, политика конфиденциальности, cookie-консент, copyright, финальный verify.
Каждый промпт — один коммит. Каждый коммит — одна чёткая зона ответственности. Если упадёт — падает что-то одно, не весь сайт.
Немного про скиллы и то, как Cowork делает работу удобнее
В середине проекта Павел собрал отдельный скилл — prompt-architect. Это специальная инструкция для Claude, в которой описано, как именно должны быть устроены наши промпты: какая шапка, какие секции, как описывать дизайн, как перечислять файлы. Теперь в любом новом проекте, когда мы говорим «напиши промпты» или «добавь задачи в PROMPTS.md» — Claude автоматически подтягивает этот скилл и пишет в правильном формате. Экономит пару часов на каждом проекте.
Это, кстати, отдельное открытие 2025–2026 года. Долгое время мы относились к промптам как к одноразовым бумажкам — написал, получил ответ, выбросил. А оказалось, что промпты можно (и нужно) версионировать, шаблонизировать и переиспользовать. В «Консоли» сейчас на каждый проект свой PROMPTS.md в репозитории, и когда в команду приходит новый человек — ему не надо объяснять контекст, всё в коде.
Про SEO — что реально сработало
SEO на старом сайте было в состоянии «ноль». Что мы сделали:
- Метаданные для каждой страницы — title/description пишутся не один раз в шапке, а через
generateMetadataв каждом роуте, с учётом контента. - JSON-LD разметка. Для главной —
OrganizationиLocalBusiness. Для каталога —Product. Для базы знаний —Article. - Sitemap и robots.ts — генерируются автоматически из данных, а не пишутся руками.
- База знаний как контент. 15 статей про типы камня, применение, свойства, геологию. Это главный источник органики — длинные информационные статьи, которые закрывают широкий пул запросов.
- Скорость. LCP меньше 1.5 секунды, Core Web Vitals все зелёные. Это важно не только для пользователей, но и для ранжирования.
- Внутренняя перелинковка. С каждой статьи базы знаний — ссылки на каталог. С каталога — на статьи. Это простая штука, но её 90% сайтов не делают.
Результат за первые месяцы после запуска — органика выросла в три раза, по целевым запросам сайт попал на первую страницу Яндекса.
Result: что получилось
Цифры, которые можно показать:
- 27 промптов, 27 коммитов. Вся история сборки прозрачна и воспроизводима.
- Время сборки: три вечера активной работы плюс неделя на контент. Против двух недель классической вёрстки «с нуля».
- SEO: органический трафик ×3, топ-10 по основным запросам.
- Core Web Vitals: все зелёные, LCP < 1.5s.
- Сопровождение: правки текста через коммит в markdown, правки логики — через добавление промпта в
PROMPTS.md.
Сайт мы не сдали и забыли — держим его в проде сами. Каталог камней (около 1200 позиций) синхронизируется через Google Sheets API: клиент правит цены и позиции в привычной таблице, а сайт подтягивает их автоматически. Хостинг, деплой и мониторинг тоже на нас — клиенту не нужно думать про инфраструктуру.
Что это дало для других проектов
Главное — воркфлоу. После Stonekarelia мы перенесли тот же подход в PDNGuard, потом в RunStart, потом в собственный сайт «Консоли», который вы сейчас читаете. Он тоже собран за 27 промптов по тому же сценарию. Когда есть стабильный процесс, сборка нового проекта перестаёт быть творческим страданием и становится инженерной задачей.
Это не значит, что творчество кончилось. Наоборот — творчество перешло из «ковыряюсь в CSS-классах до трёх ночи» в «придумываю, как эта фича должна вообще работать». Первое кончается в три ночи усталостью. Второе — работает.
Что дальше
Сейчас на Stonekarelia мы добавляем калькулятор стоимости заказа (брусчатка, бордюр, щебень разных фракций) и интеграцию с 1С для прайсов. По той же схеме — промпт за промптом, коммит за коммитом.
Если вам нужен такой же сайт — напишите, оценим и соберём.
Павел Гладышев — директор «Консоли». Инженер по образованию, предприниматель по необходимости, автор про AI-инструменты — по любви. Ещё ведёт школу бега RunStart и бегает ультрамарафоны по карельским лесам.