SEO-рефакторинг: приводим структуру KIB4D в порядок
Перестроил структуру URL, разделил публичные калькуляторы и рабочую часть проекта, вынес SEO-данные в отдельные модули и настроил 301 редиректы.
SEO-рефакторинг: приводим структуру KIB4D в порядок
На старте главной задачей было просто выкатить работающие инструменты в сеть.
Поэтому структура URL выглядела просто: все калькуляторы лежали в одной папке:
/calculators/dew-point/calculators/floor-heating
Для первой версии этого было достаточно.
Но проект постепенно растет. Появляются новые направления, общая модель данных, рабочая часть проекта и планы на климатическую симуляцию.
Поэтому решил немного привести структуру в порядок.
Почему решил изменить URL
Сначала все калькуляторы лежали в одном разделе /calculators/.
Но сейчас уже понятно, что KIB4D будет состоять не просто из набора калькуляторов. Есть разные инженерные направления, а в будущем появится отдельная рабочая среда проекта.
Поэтому решил разделить инструменты по смыслу.
Получилась примерно такая структура:
- Теплотехника:
/thermal/dew-point-> Точка росы и пирог,/thermal/heat-loss-> Калькулятор теплопотерь - HVAC:
/hvac/floor-heating-> Калькулятор водяного теплого пола,/hvac/ventilation
При этом слово «калькулятор» никуда не исчезает.
Оно остается там, где действительно важно для пользователя: в Title, H1, описании страницы и самом содержании.
Например:
/hvac/floor-heating
А заголовок страницы:
Калькулятор водяного теплого пола онлайн — расчет теплоотдачи и шага трубы.
Получается, URL описывает место инструмента в общей структуре KIB4D, а сама страница уже отвечает на конкретный поисковый запрос.
Публичные инструменты и проекты
Постепенно начинает складываться разделение на две части.
Первая — публичные инструменты.
Это калькуляторы, которые человек может открыть из поиска, разобраться в задаче и получить расчет. Скажем так, самостоятельные единицы.
Вторая — рабочая часть проекта.
Например:
/project/estimate -> Ведомость материалов
Здесь уже другая логика.
Мне хочется, чтобы пользователь не вводил одни и те же данные в каждом калькуляторе заново, а мог один раз создать конструкцию и дальше использовать ее в других расчетах.
Поэтому /project/ со временем должен стать местом, где собирается уже сам проект здания.
Пока это только начало, но структура уже готовится под такую логику.
Еще одна уборка в коде
Заодно решил разобраться с SEO-данными внутри самого проекта.
Раньше заголовки, описания и другие SEO-настройки постепенно начали появляться прямо внутри .vue файлов.
Работает, но со временем это превращается в кашу.
Поэтому вынес тексты, заголовки и FAQ в отдельные TypeScript-модули в data/seo/.
Теперь страница получает SEO-данные по ID инструмента, а общий компонент <SeoContent /> занимается остальным.
Он отвечает за:
TitleиDescription.canonical.- JSON-LD для FAQ.
- Навигационное оглавление страницы с якорями.
В итоге в самой странице остается меньше лишнего кода.
Если появится новый калькулятор, не нужно собирать SEO-настройки по разным файлам. Добавляю данные в одном месте и подключаю их к инструменту.
Что с уже существующими страницами
Здесь была еще одна важная задача.
Старые адреса уже успели попасть в индекс поисковиков. Просто поменять URL и забыть про старые страницы нельзя.
Поэтому настроил 301 редиректы.
Например, если раньше калькулятор открывался по:
/calculators/floor-heating
а теперь находится по:
/hvac/floor-heating
то старый адрес автоматически отправляет пользователя на новый.
Так можно менять структуру сайта без того, чтобы просто выбросить старые ссылки.
Что получилось
Вроде бы обычная работа с URL и SEO, но на самом деле пришлось немного пересобрать представление о самом проекте.
Раньше были просто калькуляторы.
Теперь появляются направления, общие данные и отдельная рабочая часть проекта.
И это как раз то, к чему я постепенно шел.
Хочется, чтобы человек один раз ввел данные о своем доме, а дальше эти данные использовались в разных расчетах.
Создал конструкцию стены — используешь ее в расчете точки росы, теплопотерь и сметы.
Создал пол — используешь его в калькуляторе теплого пола.
А дальше все это можно связать с климатическими данными и почасовой симуляцией.
И удивительное рядом
Сбор семантики я откладывал в долгий ящик. Рутинная работа, которая как-то не вызывает драйва, но без нее, конечно, никуда.
Сегодня день икс настал.
Сел за код, набросал анализатор поисковых фраз и «обогатитель семантики», который подтягивает частотность запросов из Wordstat Яндекса.
И тут я немного удивился.
Первая пачка запросов, которые я считал частотными, оказалась почти нулевой по частотности.
Дальше зацепился за другую тему запросов — и вуаля. Популярными оказались совсем не те формулировки, которые я предполагал.
Вот так, шаг за шагом, собрал семантические ядра для трех инструментов.
Теперь хотя бы понятно, что именно люди действительно ищут, а не что мне кажется логичным.
Что дальше
SEO-часть пока привожу в порядок.
Следующая большая задача уже не про URL.
Нужно закончить связку калькуляторов через общую модель данных и постепенно двигаться к главной цели — климатической симуляции за весь год.
Потихоньку собираем систему из того, что изначально было просто несколькими калькуляторами.