[{"data":1,"prerenderedAt":363},["ShallowReactive",2],{"init-db":3,"content-\u002Fblog\u002Fseo-refactoring":4},true,{"id":5,"title":6,"body":7,"date":354,"description":355,"extension":356,"meta":357,"navigation":3,"path":358,"seo":359,"sitemap":360,"stem":361,"__hash__":362},"blog\u002Fblog\u002Fseo-refactoring.md","SEO-рефакторинг: приводим структуру KIB4D в порядок",{"type":8,"value":9,"toc":343},"minimark",[10,14,18,21,36,39,42,45,50,57,60,63,66,104,107,117,120,124,127,132,135,139,142,145,148,151,153,161,164,167,174,177,181,184,191,194,200,207,210,232,235,238,242,245,248,251,254,258,261,265,268,271,275,278,281,284,287,290,293,296,299,303,306,309,312,315,318,321,324,327,331,334,337,340],[11,12,6],"h1",{"id":13},"seo-рефакторинг-приводим-структуру-kib4d-в-порядок",[15,16,17],"p",{},"На старте главной задачей было просто выкатить работающие инструменты в сеть.",[15,19,20],{},"Поэтому структура URL выглядела просто: все калькуляторы лежали в одной папке:",[22,23,24,31],"ul",{},[25,26,27],"li",{},[28,29,30],"code",{},"\u002Fcalculators\u002Fdew-point",[25,32,33],{},[28,34,35],{},"\u002Fcalculators\u002Ffloor-heating",[15,37,38],{},"Для первой версии этого было достаточно.",[15,40,41],{},"Но проект постепенно растет. Появляются новые направления, общая модель данных, рабочая часть проекта и планы на климатическую симуляцию.",[15,43,44],{},"Поэтому решил немного привести структуру в порядок.",[46,47,49],"h2",{"id":48},"почему-решил-изменить-url","Почему решил изменить URL",[15,51,52,53,56],{},"Сначала все калькуляторы лежали в одном разделе ",[28,54,55],{},"\u002Fcalculators\u002F",".",[15,58,59],{},"Но сейчас уже понятно, что KIB4D будет состоять не просто из набора калькуляторов. Есть разные инженерные направления, а в будущем появится отдельная рабочая среда проекта.",[15,61,62],{},"Поэтому решил разделить инструменты по смыслу.",[15,64,65],{},"Получилась примерно такая структура:",[22,67,68,90],{},[25,69,70,74,75,78,79,83,84,78,87],{},[71,72,73],"strong",{},"Теплотехника:"," ",[28,76,77],{},"\u002Fthermal\u002Fdew-point"," -> ",[80,81,82],"a",{"href":77},"Точка росы и пирог",", ",[28,85,86],{},"\u002Fthermal\u002Fheat-loss",[80,88,89],{"href":86},"Калькулятор теплопотерь",[25,91,92,74,95,78,98,83,101],{},[71,93,94],{},"HVAC:",[28,96,97],{},"\u002Fhvac\u002Ffloor-heating",[80,99,100],{"href":97},"Калькулятор водяного теплого пола",[28,102,103],{},"\u002Fhvac\u002Fventilation",[15,105,106],{},"При этом слово «калькулятор» никуда не исчезает.",[15,108,109,110,83,113,116],{},"Оно остается там, где действительно важно для пользователя: в ",[28,111,112],{},"Title",[28,114,115],{},"H1",", описании страницы и самом содержании.",[15,118,119],{},"Например:",[15,121,122],{},[28,123,97],{},[15,125,126],{},"А заголовок страницы:",[15,128,129],{},[71,130,131],{},"Калькулятор водяного теплого пола онлайн — расчет теплоотдачи и шага трубы.",[15,133,134],{},"Получается, URL описывает место инструмента в общей структуре KIB4D, а сама страница уже отвечает на конкретный поисковый запрос.",[46,136,138],{"id":137},"публичные-инструменты-и-проекты","Публичные инструменты и проекты",[15,140,141],{},"Постепенно начинает складываться разделение на две части.",[15,143,144],{},"Первая — публичные инструменты.",[15,146,147],{},"Это калькуляторы, которые человек может открыть из поиска, разобраться в задаче и получить расчет. Скажем так, самостоятельные единицы.",[15,149,150],{},"Вторая — рабочая часть проекта.",[15,152,119],{},[15,154,155,78,158],{},[28,156,157],{},"\u002Fproject\u002Festimate",[80,159,160],{"href":157},"Ведомость материалов",[15,162,163],{},"Здесь уже другая логика.",[15,165,166],{},"Мне хочется, чтобы пользователь не вводил одни и те же данные в каждом калькуляторе заново, а мог один раз создать конструкцию и дальше использовать ее в других расчетах.",[15,168,169,170,173],{},"Поэтому ",[28,171,172],{},"\u002Fproject\u002F"," со временем должен стать местом, где собирается уже сам проект здания.",[15,175,176],{},"Пока это только начало, но структура уже готовится под такую логику.",[46,178,180],{"id":179},"еще-одна-уборка-в-коде","Еще одна уборка в коде",[15,182,183],{},"Заодно решил разобраться с SEO-данными внутри самого проекта.",[15,185,186,187,190],{},"Раньше заголовки, описания и другие SEO-настройки постепенно начали появляться прямо внутри ",[28,188,189],{},".vue"," файлов.",[15,192,193],{},"Работает, но со временем это превращается в кашу.",[15,195,196,197,56],{},"Поэтому вынес тексты, заголовки и FAQ в отдельные TypeScript-модули в ",[28,198,199],{},"data\u002Fseo\u002F",[15,201,202,203,206],{},"Теперь страница получает SEO-данные по ID инструмента, а общий компонент ",[28,204,205],{},"\u003CSeoContent \u002F>"," занимается остальным.",[15,208,209],{},"Он отвечает за:",[211,212,213,221,226,229],"ol",{},[25,214,215,217,218,56],{},[28,216,112],{}," и ",[28,219,220],{},"Description",[25,222,223,56],{},[28,224,225],{},"canonical",[25,227,228],{},"JSON-LD для FAQ.",[25,230,231],{},"Навигационное оглавление страницы с якорями.",[15,233,234],{},"В итоге в самой странице остается меньше лишнего кода.",[15,236,237],{},"Если появится новый калькулятор, не нужно собирать SEO-настройки по разным файлам. Добавляю данные в одном месте и подключаю их к инструменту.",[46,239,241],{"id":240},"что-с-уже-существующими-страницами","Что с уже существующими страницами",[15,243,244],{},"Здесь была еще одна важная задача.",[15,246,247],{},"Старые адреса уже успели попасть в индекс поисковиков. Просто поменять URL и забыть про старые страницы нельзя.",[15,249,250],{},"Поэтому настроил 301 редиректы.",[15,252,253],{},"Например, если раньше калькулятор открывался по:",[15,255,256],{},[28,257,35],{},[15,259,260],{},"а теперь находится по:",[15,262,263],{},[28,264,97],{},[15,266,267],{},"то старый адрес автоматически отправляет пользователя на новый.",[15,269,270],{},"Так можно менять структуру сайта без того, чтобы просто выбросить старые ссылки.",[46,272,274],{"id":273},"что-получилось","Что получилось",[15,276,277],{},"Вроде бы обычная работа с URL и SEO, но на самом деле пришлось немного пересобрать представление о самом проекте.",[15,279,280],{},"Раньше были просто калькуляторы.",[15,282,283],{},"Теперь появляются направления, общие данные и отдельная рабочая часть проекта.",[15,285,286],{},"И это как раз то, к чему я постепенно шел.",[15,288,289],{},"Хочется, чтобы человек один раз ввел данные о своем доме, а дальше эти данные использовались в разных расчетах.",[15,291,292],{},"Создал конструкцию стены — используешь ее в расчете точки росы, теплопотерь и сметы.",[15,294,295],{},"Создал пол — используешь его в калькуляторе теплого пола.",[15,297,298],{},"А дальше все это можно связать с климатическими данными и почасовой симуляцией.",[46,300,302],{"id":301},"и-удивительное-рядом","И удивительное рядом",[15,304,305],{},"Сбор семантики я откладывал в долгий ящик. Рутинная работа, которая как-то не вызывает драйва, но без нее, конечно, никуда.",[15,307,308],{},"Сегодня день икс настал.",[15,310,311],{},"Сел за код, набросал анализатор поисковых фраз и «обогатитель семантики», который подтягивает частотность запросов из Wordstat Яндекса.",[15,313,314],{},"И тут я немного удивился.",[15,316,317],{},"Первая пачка запросов, которые я считал частотными, оказалась почти нулевой по частотности.",[15,319,320],{},"Дальше зацепился за другую тему запросов — и вуаля. Популярными оказались совсем не те формулировки, которые я предполагал.",[15,322,323],{},"Вот так, шаг за шагом, собрал семантические ядра для трех инструментов.",[15,325,326],{},"Теперь хотя бы понятно, что именно люди действительно ищут, а не что мне кажется логичным.",[46,328,330],{"id":329},"что-дальше","Что дальше",[15,332,333],{},"SEO-часть пока привожу в порядок.",[15,335,336],{},"Следующая большая задача уже не про URL.",[15,338,339],{},"Нужно закончить связку калькуляторов через общую модель данных и постепенно двигаться к главной цели — климатической симуляции за весь год.",[15,341,342],{},"Потихоньку собираем систему из того, что изначально было просто несколькими калькуляторами.",{"title":344,"searchDepth":345,"depth":345,"links":346},"",2,[347,348,349,350,351,352,353],{"id":48,"depth":345,"text":49},{"id":137,"depth":345,"text":138},{"id":179,"depth":345,"text":180},{"id":240,"depth":345,"text":241},{"id":273,"depth":345,"text":274},{"id":301,"depth":345,"text":302},{"id":329,"depth":345,"text":330},"2026-08-11","Перестроил структуру URL, разделил публичные калькуляторы и рабочую часть проекта, вынес SEO-данные в отдельные модули и настроил 301 редиректы.","md",{},"\u002Fblog\u002Fseo-refactoring",{"title":6,"description":355},{"loc":358},"blog\u002Fseo-refactoring","VNJDVL5oWJ1Appjf4Hc55kc_6uSFkznzTNxalEZADJc",1787293109725]