WEBCRAFT
Собственный инструмент · генератор многостраничного сайта из ниши и семантики · 2026

«Помощь Афипский»: 618 HTML-файлов из одной ниши и таблицы семантики, 95 страниц услуг и QA без ошибок

Из ниши бытовых услуг для посёлка Афипский и Excel-таблицы семантики автоматически собран многостраничный сайт услуг: 95 страниц, 894 смысловых кластера, 3 886 поисковых формулировок, 10 категорий. Пакет вышел в шести сборках — 618 HTML-файлов. Автопроверка: 0 битых ссылок, 0 дублей Title / H1 / Description, 0 совпадений семи шаблонных фраз из предыдущих версий.

Генератор статики Семантика из Excel 95 ниш 894 кластера Контент-слой Schema.org / JSON-LD QA-автоматизация Честный noindex
Сайт: демонстрационный сайт-пакет (не в проде) Задача: превратить нишу и таблицу семантики в готовый многостраничный сайт услуг Ниша: бытовые услуги — Афипский, Северский район, Краснодарский край Стек: Python → статический HTML, 103 файла в сборке Период: 2026 · сборка 24.09.2026
618 файлов
HTML-файлов в 6 сборках пакета
103, 102 и 104 на сборку
95 страниц
страниц услуг в сборке
из 894 смысловых кластеров
0
битых ссылок и ассетов
ошибок и предупреждений QA нет
0
дублей Title, H1 и Description
и 0 совпадений 7 шаблонных фраз
624 слова
средний объём страницы услуги
минимум 557, максимум 756

Задача

Ниша «Помощь Афипский» — бытовые услуги для посёлка Афипский в Краснодарском крае: ремонт домов, сантехника, электрика, бурение, кровля, демонтаж, вывоз мусора и десятки соседних направлений. Клиентской задачи на проде не было: это демонстрационный проект собственного генератора.

Нужно было доказать, что многостраничный сайт услуг можно собрать автоматически из двух входов — ниши и таблицы семантики — и при этом не превратить его в шаблонную SEO-воду.

Клиент не указан: проект внутренний, демонстрационный. Домен в конфиге сборки — плейсхолдер, публикации не было, поэтому в шапке кейса нет ссылки на сайт.

Было — что было на входе

То, с чего стартовал генератор, и почему автоматическая сборка без ручных вмешательств дала бы плохой результат.

Входные данные

894 кластера, 3 886 запросов, 0 частотностей

Таблица семантики на 492 КБ содержит 95 ниш и 894 смысловых кластера. Собранных строгих локальных частотностей — 0: все 3 886 формулировок помечены как «ещё не собрано».

Решение по запуску

Все 95 ниш в статусе «Не решено»

Индексируемых ниш — 0, подтверждённых дочерних страниц — 0. Наивная сборка отдала бы в индекс 95 страниц без подтверждённого спроса.

Риск объёма

799 кластеров превращаются в секции, а не в URL

Каждый кластер мог стать отдельной страницей — это 894 почти одинаковых абзаца. Решение: кластеры становятся блоками задач внутри своей основной страницы.

Предыдущие версии

Семь шаблонных фраз, на которые жаловались

В QA-отчётах зафиксированы 7 проблемных шаблонов: конструкции вида «Для «покос…», служебные слова в тексте («семантика страницы», «подзадачи из семантики», «svgПлощадь») и вопросы не по теме («Вопросы по покос травы»).

Бизнес-данные

Контактов, цен, кейсов и отзывов нет вообще

В конфиге бизнеса пусто: телефон, мессенджеры, email, endpoint формы, счётчик Метрики, юр. данные, кейсы и отзывы. Любое из этих значений пришлось бы выдумать.

Инфраструктура

Домен в конфиге — плейсхолдер

Сборка подставляет домен из конфигурации в canonical, Open Graph и sitemap. Это заготовка, а не работающий сайт клиента: публикации по нему не было.

Что сделано

Пайплайн из пяти шагов: от Excel-семантики до статической сборки с автопроверкой. Один прогон — и на выходе пакет файлов плюс отчёты.

Работа 1 · Пайплайн
Выполнено

Ниша и семантика → структура услуг → контент-данные → статика → QA

Как это работает
Результат

Один запуск даёт готовую статику на 103 файла и два отчёта. По этому же пайплайну пакет собран в шесть редакций — 618 HTML-файлов суммарно.

Работа 2 · Контент
Выполнено

95 ручных контент-профилей вместо одного шаблона

Что было не так

Конструкция «Для «покос травы» важны…» на 95 страницах подряд, одинаковый список факторов цены на каждой подуслуге и служебные слова в видимом тексте. По предыдущим версиям это и было причиной жалоб.

Результат

У каждой страницы свой оффер, своя специфика, свои факторы цены, свой порядок работы и свой FAQ. Средний объём — 624 слова (минимум 557, максимум 756). Ни один из 7 проблемных шаблонов не встречается ни разу, уникальных процессов работы — 95 из 95.

Работа 3 · Индексация
Выполнено

Пока запуск не решён — страница закрыта от индексации

Что было не так

Собранные 95 страниц формально индексируемы, но решение по запуску каждой ниши в таблице — «Не решено», а строгая локальная частотность не собрана ни по одному запросу. Публиковать такой набор в индекс — значит отдать краулерам 95 страниц без подтверждённого спроса.

Результат

Все сервисные страницы собираются с noindex,follow и исключаются из sitemap: в карте остаётся 3 URL — главная, каталог и «О проекте». На странице услуги это видно прямо в интерфейсе: плашка «Пока не одобрено для индексации». QA отдельно проверяет, что noindex-страница не попала в sitemap.

Работа 4 · Честность данных
Выполнено

Вместо выдуманных фактов — список пробелов

Что сделано

Чего в исходных данных нет, то и не публикуется: кнопка звонка скрыта, форма честно сообщает, что данные не отправлены, в таблицах цен стоит «По расчёту», раздел отзывов и кейсов скрыт, категории подписаны как тематические иллюстрации, а не как работы мастера. Все пропуски вынесены в отдельный файл CONTENT_GAPS.md — 27 позиций с указанием, где данные нужны и что происходит сейчас.

Результат

Ни одного выдуманного телефона, рейтинга, отзыва или кейса. На странице услуги видно, что берётся «цена по расчёту», а ориентировочные чеки из внутренней SEO-таблицы на сайт не выводятся.

Работа 5 · QA
Выполнено

Проверки в коде, а не «на глаз»

Что проверяет автоматика

Ровно один H1 и один canonical на странице, непустой Title, отсутствие битых внутренних ссылок, alt и размеры у всех изображений, валидность JSON-LD, label у видимых полей форм, отсутствие lorem ipsum, совпадение набора URL в sitemap с indexable-манифестом, отсутствие каннибализации по основному запросу и по cluster_id, а также предупреждение о шаблонных цифрах вроде «500+» или «10 лет».

Результат

Проверено 103 HTML-страницы: 0 ошибок, 0 предупреждений, статус PASS. Плюс отдельный отчёт по 7 шаблонным фразам предыдущих версий — 0 совпадений.

Стало — результат

Собранный сайт-пакет: главная, каталог на 95 услуг, страница услуги с блоками задач, калькулятором параметров, таблицей цен и FAQ. Ниже — десктопная и мобильная версии тех же страниц.

Главная · десктоп 1280
Главная собранного сайта на десктопе: шапка, первый экран, счётчики 95 направлений, 894 кластера и 3 886 запросов, карточки популярных направлений
Главная · мобильный 390
Главная собранного сайта на мобильном экране: плашка о предпросмотре, оффер, поиск по услуге и счётчики 95 направлений, 894 кластеров, 3 886 формулировок
Страница услуги · десктоп 1280
Страница услуги «Покос травы в Афипском»: плашка о неподтверждённой индексации, восемь блоков задач по подуслугам и форма сбора параметров
Страница услуги · мобильный 390
Первый экран страницы услуги «Покос травы» на мобильном: плашка «Пока не одобрено для индексации», оффер, кнопки расчёта и два чек-листа без выдуманных цен и отзывов

Результаты QA

Итог одной автоматической проверки собранной статики. Цифры — из отчёта сборки, без округлений и добавлений.

ПроверкаРезультат
HTML-страниц проверено103, плюс отдельный 404.html
Ошибок и предупреждений QA0 и 0 — статус PASS
Индексируемых страниц в сборке3 из 103, остальные под noindex,follow
URL в sitemap.xml3 — набор совпадает с indexable-манифестом
Битые внутренние ссылки и ассеты0
Дубли Title / H1 / Description0 / 0 / 0
H1 на страницеровно 1 на всех проверенных страницах
Canonical на страницеровно 1 на всех проверенных страницах
alt и размеры у изображенийзаданы у всех картинок
JSON-LDвалиден на всех страницах
Label у видимых полей форместь у всех полей
Lorem ipsumне найден
Каннибализация по основному запросу и cluster_idне найдена
Объём страницы услуги557 / 624 / 756 слов — минимум, среднее, максимум
Уникальных процессов работы95 из 95
Семь шаблонных фраз предыдущих версий0 совпадений по каждой
noindex-страницы в sitemapне попали

Проверка автоматическая и не заменяет ручной контроль перед публикацией: реальные контакты, цены, кейсы, юридические тексты и решение по индексации подтверждает владелец.

Результат «до / после»

ПараметрДоПосле
Страниц услуг0 — на входе только таблица семантики95 в сборке
HTML-файлов в пакетенет618 в 6 сборках, 103–104 на сборку
Структура10 категорий и 894 кластера в Excel95 страниц услуг + 799 секций-кластеров внутри них
Дубли Title / H1 / Descriptionжалобы на предыдущие версии0 / 0 / 0
Шаблонные «жалобные» фраз7 проблемных шаблонов0 совпадений
Средний объём страницы услугине измерялся624 слова, диапазон 557–756
Уникальность текстаодин шаблон на все подуслуги95 разных процессов работы
Битые внутренние ссылкине проверялось0 из 103 страниц
Индексациярешение по запуску не принято3 индексируемые страницы, 95 под noindex,follow
Локальная частотностьне собранапомечена как «ещё не собрано», а не как нулевой спрос
Контакты, цены, кейсы, отзывыданных нетне выдуманы, 27 пробелов зафиксированы в CONTENT_GAPS
Проверка качестваручной контроль14 автоматических проверок в сборке

Сравнение — «до» означает состояние на входе у генератора (таблица семантики и предыдущие редакции пакета), а не состояние сайта в проде: публикации не было.

Пруфы

Скриншоты сделаны с живой собранной статики, а не из старых превью. Кликните, чтобы открыть в полном размере.

Приложенные отчёты

Артефакты пакета

Файлы не выложены в портфолио: в них остаются внутренние пути проекта. Показаны только названия и содержание отчётов.