Русь Новгородская
Туризм и отдых
Россия
Порталы и сервисы
Июль 2026
Старый портал жил на Битриксе. Переехать с него на новый движок, October CMS, офис пытался три года.
Начинал разработчик-одиночка. Он поднял новую версию на отдельном адресе, сделал вёрстку и отстал. Исходники сборщика вёрстки так и не отдал. Шрифты правил две недели и не поправил. Логику собирал на конструкторе для новичков, поля в базе по ходу меняли тип: числа превращались в текст. Экскурсии не сделал вообще, карты сайта для поисковиков не было. Потом тянул время и пропал, затянув всё ещё сильнее.
Следующая команда, когда открыла этот код, насчитала в нём больше двухсот миграций базы при паре десятков нужных. «Все остальное мусор», — написал их руководитель.
Это как купить квартиру у застройщика, который залил фундамент, поставил стены без проводки и уехал. Следующая бригада сначала разбирается, где тут несущая стена, и только потом берётся за ремонт.
Первая команда: фиксированная цена и шесть дедлайнов
В марте 2025 года проект взяла студия с фиксированной ценой: 450 тысяч рублей, срок 6 мая. Тестирование в смете стояло «минимальное, силами разработчика». Отдельного тестировщика не было.
Дедлайн переносили шесть раз. Шестого мая «не успеваем совсем», потом 19 мая, потом 30-е, потом «к концу недели», потом «к середине следующей». В июле руководитель студии написал, что они «утонули в неконтролируемом объеме доработок». Мы тоже утонули. Коллега из офиса: «Сами понимаем, что это может длиться бесконечно».
Второго сентября 2025 года я написал в чат: «Сегодня нужно запустить сайт, пусть с ошибками но уже нужно». Запустили в тот же вечер.
Через три дня выяснилось главное. «Нам не приходят письма ни о заказе КГ, ни об экскурсиях». Четыре дня портал принимал заказы Карты гостя и складывал их в никуда. Поиск по сайту работал так: «ввожу слово, нажимаю enter, страница обновляется и все». Из старых адресов разделы получили новые имена, а на напечатанных буклетах уже стояли QR-коды со ссылками на старые.
Документ с ошибками дорос до 191-й строки. В октябре студия оценила исправление всего списка в 8 120 евро. Это больше, чем стоила разработка. Мой ответ от 28 октября: «Мы получили чек за ошибки больше чем за разработку сайта и эту цену мы потянуть не можем». Всего этой команде заплатили 537 500 рублей.
Ощущение примерно такое: покупаешь машину, а через полгода сервис присылает смету дороже самой машины. И честно признаётся, что на заводе её никто не проверял.
Вторая команда: почасовая поддержка
С ноября 2025 года сайт вела вторая команда, по часам: 3 000 рублей за час разработчика, бюджет 100 тысяч в месяц. Ребята работали быстрее, чем обещали, и после первой приёмки коллега из офиса написала: «господи, наконец-то, приличный вид».
Только фундамент остался прежним. В декабре оказалось, что сайт крутится в контейнерах Docker, которые настраивала первая команда, и положить файл в корень сайта нельзя без разработчика. Заказы Карты гостя до марта 2026 года приходили на почту без имени, телефона и суммы. Дубли в афише чинили четыре раза с февраля по апрель, и каждый раз со словами «это же правили в прошлом паке».
В марте сайт переносили с Docker на новый сервер, и переезд затянулся на два дня. 18 марта в 06:13 я писал: «У нас руководитель к десяти часам идёт на поклон к губернатору с этим уставшим сайтом». Сайт был без картинок и половины блоков. Восстановили к полудню, когда встреча уже прошла.
Накануне я сформулировал то, что копилось два года: «нам обещали гибкий в управлении движок благодаря которому я смогу делать лендинги одной рукой закрыв глаза. по факту у меня нет ничего и даже вёрстку я правлю через разработчиков». Второй команде за полгода выставили 397 400 рублей.
Если сложить, 934 900 рублей ушло подрядчикам, и это без одиночки. Справедливости ради, злодеев в этой истории нет. Каждая команда получила чужой недострой и строила свой этаж поверх. Дом от этого ровнее не становится.
В апреле 2026 года я сел с нейросетью Claude и разобрал сайт по типам страниц. Получилось двенадцать шаблонов: город, объект, каталог, маршрут, экскурсия, афиша, аудиогид, Карта гостя и ещё несколько. Всё остальное — это данные.
Отсюда и устройство. Никакой системы управления и никакой базы данных: чистый PHP и обычные файлы с данными в формате JSON. Добавил отель в файл, и страница появилась. Поправил шаблон отеля, и поменялись сразу все полторы сотни отелей. Тысячи страниц физически не существуют, их собирают двенадцать шаблонов.
Это как вместо небоскрёба с лифтами из трёх разных стран построить нормальный типовой дом. Зато все подъезды одинаковые и сантехник один.
Код писала нейросеть, я принимал решения и проверял результат. Работали сессиями, по одной задаче за раз. Правило, которое я записал в журнал проекта 17 апреля: «ни строчки кода до окончания аудит-документа. Сначала карта — потом решения».
Решение: собрать сайт самому
В апреле 2026 года я сел с нейросетью Claude и разобрал сайт по типам страниц. Получилось двенадцать шаблонов: город, объект, каталог, маршрут, экскурсия, афиша, аудиогид, Карта гостя и ещё несколько. Всё остальное — это данные.
Отсюда и устройство. Никакой системы управления и никакой базы данных: чистый PHP и обычные файлы с данными в формате JSON. Добавил отель в файл, и страница появилась. Поправил шаблон отеля, и поменялись сразу все полторы сотни отелей. Тысячи страниц физически не существуют, их собирают двенадцать шаблонов.
Это как вместо небоскрёба с лифтами из трёх разных стран построить нормальный типовой дом. Зато все подъезды одинаковые и сантехник один.
Код писала нейросеть, я принимал решения и проверял результат. Работали сессиями, по одной задаче за раз. Правило, которое я записал в журнал проекта 17 апреля: «ни строчки кода до окончания аудит-документа. Сначала карта — потом решения».
Данные я вытащил из дампа старого Битрикса: 75 мегабайт, 1 112 достопримечательностей с городами, категориями и скидками по Карте гостя. И начались раскопки.
В файлах жили две разные нумерации городов. В одной Великий Новгород шёл под номером 2, в другой под номером 3. Поэтому на странице собора в Валдае в блоке «что посмотреть рядом» показывались объекты из Чудово. У 48 церквей координаты были перепутаны, и карта ставила их не туда, где они стоят. Цена входа была пустой у 1 258 записей. При переносе на October объекты и экскурсии свалили в один файл, так что в каталоге достопримечательностей лежали туры, а в турах музеи.
Хорошая новость: в шаблонном устройстве такое чинится один раз. Нумерацию городов свели к одной, и правильные соседи появились на всех страницах сразу. Когда у меня самого в шаблоне потерялся заголовок страницы, его тоже поправили в одном месте, и он вернулся на все 2 266 страниц.
12 июня 2026 года новый движок встал на боевой домен. Старый сайт целиком, 18 гигабайт, ушёл в архив, чтобы откатиться за десять секунд, если что.
В день переключения мы прогнали по живому сайту все 2 135 старых адресов из выгрузки. 1 447 открылись сразу, 688 отдавали ошибку 404. На каждый из этих 688 поставили постоянный редирект (301) на новую страницу, чтобы поисковик перенёс туда накопленный вес, а QR-коды на буклетах продолжили работать. В тот же день заработало оформление Карты гостя: заявка, подтверждение, письмо в пункт выдачи.
Скорость я измерял в Google PageSpeed. Главная страница на телефоне: было 10 баллов, стало 92. Каталог достопримечательностей: было 60, стало 98. Старая главная грузила почти 20 мегабайт картинок. Одно фото весило 8 мегабайт и было шириной 6 048 пикселей, а показывалось в окошке на 384. Человек, который выбирает, куда поехать на выходные, стоит в метро с телефоном. Ждать 20 мегабайт он не будет.
Сверху я поставил сторожа. Каждые пять минут скрипт проверяет главную, ключевые разделы и всю цепочку оформления карты, без настоящих заявок. Если что-то упало, в Телеграм приходит сообщение. Нейросеть там подключается только при поломке и объясняет человеческим языком, что сломалось. Про поломку вроде сентябрьской, когда почта молчала четыре дня, я теперь узнаю через пять минут.
После заявки турист получает свою страницу карты с личным кодом в адресе. На ней список мест, куда карта пускает без оплаты, и прогресс: сколько уже посещено, сколько осталось. Карту можно держать в телефоне в электронном виде и отмечать места прямо в этом кабинете.
Дело в том, что в старых стенах музеев связь пропадает через раз. Поэтому кабинет устроен так, чтобы отметка не терялась никогда. Нажали «Отметить», и отметка сначала записывается в память самого телефона (localStorage, хранилище браузера), а уже потом уходит на сервер. Нет сети, и на экране появляется: «Нет сети. Сохранено на телефоне. Отправим автоматически». Отправить сайт пробует тремя способами: как только вернулась сеть, раз в 30 секунд и в момент, когда человек закрывает страницу. Сама страница карты тоже остаётся в памяти браузера, так что её можно открыть заново и без интернета.
На сервере карты и отметки лежат в одном файле базы SQLite, в двух таблицах. Повторная отметка того же места в тот же день не пройдёт: от двойного нажатия защищает правило в самой базе. Отметки принимаются даже после окончания срока карты, чтобы человек не терял историю поездки.
Технически всё готово. Сотрудники музеев к таким новинкам пока не готовы, так что на входе до сих пор отрывают квиточек из буклета. Это как прийти к врачу с электронной записью и услышать: «А карточка где?»
Дальше хотим сделать из списка мест игру. Задача про бейджи по районам области стоит в журнале проекта с апреля. Уровни придумали такие: «знаток города 65-го уровня», «старожил», «искатель приключений», «лорд всех достопримечательностей». А на самом верху звание «Достопримечательность»: это когда вы объехали столько, что уже сами часть маршрута.
Чтобы офис сам видел, сколько карт оформили и где ими пользуются, я сделал для него отдельную админку. Адрес у неё нестандартный, чтобы боты не ломились по типовому /admin, и два замка: пароль на уровне сервера и второй внутри. После пяти неверных попыток вход блокируется на 15 минут.
В админке видно, сколько карт оформлено и сколько заявок не дошли до конца, разбивку по тарифам, по дням и месяцам, использованные промокоды и заходы в музеи по отметкам туристов. Почта и телефон в таблице скрыты маской, полностью открываются по клику. Любой список выгружается в таблицу: оформления, посещения и отдельный отчёт для музея.
Админка только читает базу карт. Изменить что-то в оформлениях из неё нельзя, это заложено специально. Рядом счётчики действий: переходы к партнёрам по экскурсиям, нажатия на бронь туров, построенные маршруты. IP-адреса счётчик не хранит, только суточный шифр, по которому человека не вычислить.
Каждый объект на сайте стал узлом, от которого расходятся ссылки. На странице Витославлиц видно, в каких маршрутах есть это место и какие экскурсии и туры через него проходят. Ниже ближайшие события, отель и кафе поблизости, с расстоянием в метрах и скидкой по карте. На страницах экскурсий есть блок «Что посетите», на страницах аудиогидов остановки ведут на объекты.
Это как в хорошем книжном: взял одну книгу, а на полке рядом ещё три по той же теме, и уходишь с четырьмя.
Чтобы «рядом» значило рядом, пришлось добить координаты. Было 70% точек с координатами, стало 98%. Расстояние считается по формуле для расстояния на шаре (формула гаверсинуса). Если у обоих объектов есть координаты и между ними меньше 500 метров, сайт пишет «в 300 м». Если нет, пишет «в том же городе».
Данные при этом не тормозят страницу. Скрипт сборки после каждого обновления режет общие файлы на 31 файл по городам, и страница объекта читает только файл своего города, а не всю базу на 2 мегабайта. Для поиска «что рядом со мной» в браузер уходит лёгкий файл на 2 095 точек, и браузер хранит его у себя до следующей пересборки. Только по экскурсиям на сайте 1 007 связей от 160 объектов, а у сотни объектов стоит плашка «Входит в готовые туры». Тур сняли с продажи, и он сам пропадает из всех подсказок, вычищать руками ничего не надо.
На сайте есть конструктор отдыха. Человек выбирает, откуда едет, на сколько дней, с кем, какой бюджет и что ему интересно: история, природа, храмы. Сайт собирает программу на каждый день по частям: утро, день, обед, вечер, с ночёвкой и едой.
Отель сайт ищет от первой точки дня: сначала в радиусе 500 метров, потом 2 километров, потом 5. Кафе для обеда ставит после второй остановки и выбирает партнёра карты с самой большой скидкой поблизости. Между соседними точками подписано расстояние. Маршрут рисуется на Яндекс Карте отдельными линиями по дням, его можно распечатать или отправить ссылкой: все настройки лежат прямо в адресе страницы.
Дело в том, что на старом сайте поисковику не за что было зацепиться. Аудит 10 июня показал: на прежней версии не было разметки, хлебных крошек, блоков вопросов и ответов, заголовки и описания пустые, перелинковки нет. На тестовой копии нового движка всё это уже было сделано. Только стояла она на тестовом адресе, а на боевом домене продолжал работать старый сайт.
Что сделали на новом:
карта сайта для поисковиков собирается сама при каждом изменении данных;
каждая комбинация фильтров в каталоге стала отдельной страницей со своим заголовком, например «Музеи Новгородской области — 187 объектов»;
факты на страницах разметили так, чтобы их читала машина (разметка Schema.org): организация, хлебные крошки, вопросы и ответы, маршруты, экскурсии, Карта гостя как товар;
блок вопросов про карту вырос с 9 до 20, и первым стоит «нужно ли регистрировать карту»: так спрашивают 733 раза в месяц;
на страницах городов и объектов рядом с ценой входа появился расчёт выгоды по карте.
Последний пункт оказался главным. По Метрике, кто ищет «карта гостя», оформляет её с вероятностью от 66 до 94%. Знают о ней при этом около 7% посетителей. Значит, расти надо было за счёт остальных 93%, которые пришли читать про Валдай или Кремль. Им карту и показали, в тот момент, когда они смотрят на цену билета.
Семантику я брал из 65 000 реальных запросов Метрики, по которым люди уже приходили на портал. Выгрузил все и разложил по смыслу: что человек хотел найти, когда это набирал. Так всплыли запросы, под которые на сайте не было ни одной страницы: «новгород за 2 дня», «поклонный туризм» и десятки похожих.
Под каждый такой сценарий сделали отдельный лендинг. Шаблон у всех один, отличается только файл с данными, так что новый лендинг появляется без нового кода. Сейчас их 16: из Петербурга, из Москвы, с детьми с разбивкой по возрастам 5–7, 8–12 и подростки, за 1, 2 и 3 дня, Новгород, Валдай и Старая Русса за одну поездку, паломничество. На странице «за 2 дня» есть отдельная вкладка «если дождь». В каждый лендинг встроен тот же конструктор маршрута, уже настроенный под сценарий: человек пришёл по запросу «новгород за 2 дня» и сразу получает готовую программу на два дня.
Снимок позиций в Яндексе на 10 августа 2026 года по списку из 1 726 фраз: 442 в первой десятке, 119 в первой тройке. На первом месте стоят «карта гостя» (12 933 показа в месяц), «экскурсии в великом новгороде», «маршруты новгородская область», «великий новгород на 2 дня».
Летом я проверил, что про портал говорят нейросети. С 13 по 20 июля 2026 года им задали 77 вопросов, четырём движкам: Алисе, Perplexity, Grok и ChatGPT. Новгородская область прозвучала в 306 ответах из 308. Портал процитировали в 67. Карту гостя назвали в 7 ответах из 80 по профильным вопросам.
То есть нейросеть регион знает прекрасно, просто берёт сведения у других. Источники под ответами: Яндекс Путешествия, Tripster, Дзен, сайт музея-заповедника. Это как знаменитый ресторан, про который все пишут, а адрес и телефон дают от соседнего кафе.
Перед текстами я сел за отзывы туристов: 239 штук с Tripster, Яндекс Карт, TripAdvisor, iRecommend и форумов. Ждал жалоб на цены. Жаловались на скучных гидов: около трети всех претензий про подачу и содержание экскурсий. «Мы заказали индивидуальную экскурсию, а не сдачу ЕГЭ». «Аудиогид на скорости 1.25». Значит, и статьи должны отвечать на этот страх: будет ли интересно. Цена в отзывах идёт следом.
С 24 июля вышло 27 материалов на VC, DTF, Пикабу, Sostav, TenChat, Туристере и Отзовике. Например, «Новгород или Псков на выходные», поездка с детьми из Петербурга, Новгород из Петербурга без машины, сколько стоит поездка на двоих. В рейтингах стоит одно проверяемое утверждение. Я сверил его по официальным сайтам соседних регионов: из направлений выходного дня рядом с Петербургом только у Новгородской области есть сразу бесплатные аудиогиды по области и единая карта с бесплатным входом в музеи.
Через сутки после выхода материала Алиса на вопрос «Новгород или Псков на выходные» трижды сослалась на vc.ru и почти дословно пересказала довод из рейтинга. И назвала карту полным именем: «Карта гостя Руси Новгородской». Так и работает: нейросеть повторяет то имя, которое ей последовательно показали.
За 21 месяц, с июля 2023 по апрель 2025 года, портал получил 236 заявок. За три месяца лета 2026 года — 312. Было 11 заявок в месяц, стало 104, рост примерно в девять раз.
Сайт живёт без подрядчиков. Лендинг под новый сценарий собирается из одного файла с данными, без нового кода. То самое «одной рукой закрыв глаза», которое обещали два года назад, только собранное своими руками.
Как бывает ещё
Выходов из такой ситуации несколько, у каждого своя цена.
Можно и дальше латать старый сайт по часам. Каждая правка понятна и недорога, но фундамент остаётся тем же, и баги возвращаются «как в прошлом паке».
Можно заказать новый сайт у студии за фиксированную цену. Это работает, если в смете есть тестирование, и приёмка идёт по списку проверок. Без этого фиксированная цена превращается в первый счёт из нескольких.
Можно собрать сайт самому вместе с нейросетью. Код она пишет быстро. Решать, что сайт должен делать и как проверить, что он это делает, всё равно придётся человеку. У меня за плечами больше 25 лет сайтов и SEO, без этого опыта нейросеть с той же скоростью напишет и ошибки.
Можно ничего не трогать и вкладываться только в рекламу. Тогда реклама приводит людей на страницу, которая грузится 20 мегабайт и теряет письма с заказами.
Лето для туризма — сезон, и это первое, что приходит в голову. Но в старый период, июль 2023 — апрель 2025, тоже вошли два лета, и по 11 заявок в месяц там выходило в среднем со всеми сезонами вместе.
Сайт, SEO и статьи шли почти одновременно, поэтому разделить, какая часть роста от скорости, какая от поиска, а какая от нейросетей, я не могу. Заявки я считаю по базе самого портала. Метрике на старом сайте верить было нельзя: цель покупки там срабатывала по 8–10 раз на одну оплату. Ответы нейросетей плавают от часа к часу, так что ссылка Алисы на vc.ru — это снимок от 4 августа. На закон природы он не тянет.
![]()
Илья Козулин
Проверьте свой сайт за десять минут
Сделайте сегодня тестовый заказ на своём сайте и проверьте почту. Пришло ли письмо, есть ли в нём имя, телефон и сумма. В сентябре 2025 года заказы Карты гостя четыре дня уходили в пустоту, и узнали мы об этом от посетителей.
Потом откройте Яндекс Вебмастер, раздел страниц, исключённых из поиска, и посмотрите, сколько адресов там с ошибкой 404. Каждый такой адрес — это ссылка, по которой к вам когда-то приходили и больше не придут.
Если хотите разобрать свой случай, пишите: t.me/ilyakozulin.
Команда Козулина с удовольствием обсудит вашу задачу