Как всё начиналось
ООО «Стоун» — карельская компания, добывает габбро-диабаз и гранит. Клиент на IT-аутсорсинге у нас много лет, сайт у них был ещё со времён «просто чтоб был». Вёрстка 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.
Что это дало для других проектов
Главное — воркфлоу. После Stonekarelia я перенёс тот же подход в PDNGuard, потом в RunStart, потом в собственный сайт «Консоли», который вы сейчас читаете. Он тоже собран за 27 промптов по тому же сценарию. Когда есть стабильный процесс, сборка нового проекта перестаёт быть творческим страданием и становится инженерной задачей.
Это не значит, что творчество кончилось. Наоборот — творчество перешло из «ковыряюсь в CSS-классах до трёх ночи» в «придумываю, как эта фича должна вообще работать». Первое кончается в три ночи усталостью. Второе — работает.
Что дальше
Сейчас на Stonekarelia мы добавляем калькулятор стоимости заказа (брусчатка, бордюр, щебень разных фракций) и интеграцию с 1С для прайсов. По той же схеме — промпт за промптом, коммит за коммитом.
Если вам нужен такой же сайт — напишите, оценим и соберём.
Павел Гладышев — директор «Консоли». Инженер по образованию, предприниматель по необходимости, автор про AI-инструменты — по любви. Ещё ведёт школу бега RunStart и бегает ультрамарафоны по карельским лесам.