software.travel · техническая готовность к ИИ-ассистентам

ИИ-готовность software.travel

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

Замер 03.09.2026, 18:57–19:05 CEST Метод curl под 17 user-agent, разбор ответа Страниц 7 · файлов 4 · сохранено 44 сырых ответа
9сделано, работает
2сделано наполовину
5не сделано
0изменилось с 26.08

Область проверки ограничена техникой: может ли ИИ-краулер получить страницу, дочитать её до содержимого, понять, что на ней, и процитировать. Содержание текстов, ссылочный профиль и позиции в этот отчёт не входят. Только software.travel; gpsolutions.com не проверялся.

Сделано и работает — 9 проверок

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

A1 · ДОСТУП17 краулеров получают HTTP 200GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Perplexity-User, Google-Extended, Googlebot, bingbot, Bytespider, Applebot, CCBot, meta-externalagent, DuckAssistBot, YouBot и браузер. Размер ответа у всех одинаковый: 350 360 байт. Ни одного отказа, ни одного challenge от Cloudflare
A2 · КЛОАКИНГПодмены контента под ботов нетВидимый текст главной для браузера и для GPTBot сравнён посимвольно: 20 193 = 20 193 знака, идентичны. Разные md5 у ответов — это WordPress-нонсы в скриптах, не контент
A3 · РЕНДЕРИНГКонтент отдаётся сервером, JS не нуженВосемь контрольных фраз из тела статьи и главной найдены в сыром HTML до исполнения скриптов. ИИ-краулеры JS не выполняют — для этого сайта это не проблема
A4 · ЗАПРЕТЫНичего не запрещеноX-Robots-Tag в заголовках отсутствует, noindex нет ни на одной из 7 страниц, meta robots разрешает полные сниппеты: max-snippet:-1, max-image-preview:large
A5 · АДРЕСАЦИЯcanonical, hreflang, lang проставленыСамоссылающийся canonical, hreflang de/en/x-default, lang="en-US" и "de-DE". Title и description есть на каждой проверенной странице
A6 · SITEMAP695 URL, актуальнаяСгенерирована сегодня в 17:00, 155 немецких URL, 612 языковых альтернатив как xhtml:link, lastmod у каждого URL
A7 · LLMS.TXTФайл валиден, все ссылки живые7 151 байт, корректный UTF-8, 51 ссылка проверена — все отвечают 200. Претензия только к содержанию, см. P2
A8 · РАЗМЕТКА, БАЗАJSON-LD есть на всех страницахOrganization, WebSite, WebPage, BreadcrumbList — на 7 из 7. Все блоки — валидный JSON. Чего в них не хватает — см. N4 и N5
A9 · СЖАТИЕBrotli включёнПо сети главная уходит как 37 195 байт вместо 350 360. Это не решает проблему N1, но снимает вопрос трафика

Сделано наполовину — 2 проверки

P1наполовину

Авторство: узел Person есть, привязать его не к чему

В стратегии по AI-оптимизации авторство названо ключевым сигналом, и узел Person на статьях действительно проставлен. Но на страницах нет сущности Article или BlogPosting, у которой этот человек был бы автором. Есть только WebPage с полем author.

/blog/tour-operators/gds-system/, JSON-LD: Person: {"name": "Nastya", "url": "https://www.software.travel/author/nastya/"} sameAs — нет, jobTitle — нет, worksFor — нет Article / BlogPosting — нет Та же страница, видимый текст под статьёй: "Anastasia Borodinets, Travel Technology Expert at GP Solutions"

Второе расхождение важнее первого: в тексте автор — «Anastasia Borodinets, Travel Technology Expert», в разметке — «Nastya» без фамилии и должности. Для машины это два разных человека. Сигнал E-E-A-T, ради которого всё делалось, в таком виде не собирается.

Что доделать: добавить Article с полем authorPerson; в Person полное имя, jobTitle, worksFor, sameAs на LinkedIn · Кто: SEO + разработка · Объём: шаблон статьи, один раз

P2наполовину

Имена поставщиков есть в одном файле и отсутствуют в другом

Проверено 11 имён: Amadeus, Sabre, Travelport, Galileo, Mystifly, Travel Fusion, pkfare, Flightslogic, Hotelbeds, Expedia и вариант написания Travelfusion.

llms.txt найдено 0 из 11 есть только формулировка «80+ travel suppliers» llms-full.txt найдено 9 из 11 но сам файл невалиден, см. N2

Получается, что конкретика лежит ровно в том файле, который сломан. На вопрос «кто интегрирован с Sabre и Amadeus» ассистенту нечего процитировать из работающего файла.

Что доделать: перенести строку с GDS и ключевыми поставщиками в llms.txt, отдельно указать статус Sabre Developer Partner · Кто: SEO · Объём: 15 минут

Не сделано — 5 проверок

N1критический

Собственный текст страницы начинается на 155-м килобайте, и 57% этого — отступы

Каждая из семи проверенных страниц несёт 155–160 КБ одинаковой преамбулы до своего <h1>. Всё, что краулер читает до этого, — навигационное меню, идентичное на всех страницах: одни и те же ~2 750 знаков в первых 100 КБ, с точностью до десятков.

страницаразмерh1 на байтедоляпробелыh1 после минификациитекст в первых 100 КБ
/350 360155 80744,5%43%67 3372 803 / 20 193
/platform/gp-travel-enterprise/391 136160 29441,0%38%71 7312 799 / 20 159
/solutions/travel-crm/364 770160 18543,9%41%71 7602 772 / 20 261
/glossary/travel-agency/250 949154 71461,7%43%66 7732 747 / 11 289
/blog/tour-operators/gds-system/373 821157 63042,2%40%69 1952 766 / 37 500
/platform/gp-travel-hub/suppliers/337 003160 25947,6%44%71 8012 761 / 15 072
/de/blog/integrationen/amadeus-api/288 980160 45655,5%41%70 3362 609 / 24 167
/h1 на 155 807 из 350 360
/platform/gp-travel-enterprise/h1 на 160 294 из 391 136
/glossary/travel-agency/h1 на 154 714 из 250 949
/blog/tour-operators/gds-system/h1 на 157 630 из 373 821
преамбула и меню текст страницы позиция h1 ориентир 100 КБ шкала 0–400 КБ

Причина — не мега-меню как таковое. Из 155 807 байт до h1 на главной 88 470 байт (57%) — пробелы, табуляция и переводы строк: HTML отдаётся с отступами, как в редакторе, медианный отступ строки 60 символов, максимальный 284. Остальное: 613 тегов и 48 КБ атрибутов. Отдельно: до h1 стоят 56 тегов <img>, и семь строк текста повторяются в меню по шесть и более раз (блок «450+ / 350+ / 300+ / Clients» вставлен в каждую панель).

Простое снятие отступов переносит h1 на 67–72 КБ на всех семи страницах и уменьшает документ на 40–44%. Это одна настройка, а не переделка шаблона.

# воспроизвести: байт, на котором начинается h1 (ожидаем < 102 400 после исправления) curl -sL -A "GPTBot/1.2" https://www.software.travel/ | grep -abo -m1 "<h1" | cut -d: -f1

Что делать, по порядку: (1) минификация HTML на выходе WordPress, с исключением <pre>, <textarea> и инлайн-JS; (2) убрать шестикратный повтор блока и лишние <img> из панелей меню; (3) архитектурно — вынести <main> в исходном HTML перед шапкой · Кто: веб-разработка, не SEO · Затрагивает: все страницы

N2высокий

llms-full.txt невалиден: заявлен UTF-8, внутри Windows-1252

Заголовок ответа объявляет charset=utf-8, а в теле — байты из диапазона C1, которых в UTF-8 не бывает. Строгий декодер падает на первом же, на 44-й позиции.

https://www.software.travel/llms-full.txt HTTP 200, 9 306 Б, text/plain; charset=utf-8 байтов из диапазона C1 (0x80–0x9F): 11 позиции: 44, 1288, 3818, 4677, 5426, 6338, 6339, 6589, 6590, 6966, … первая ошибка: 'utf-8' codec can't decode byte 0x97 in position 44

0x97 в Windows-1252 — длинное тире, пары 6338/6339 — кавычки. Файл собран копированием из текстового редактора и сохранён без перекодировки. Размер тот же, что 26.08: с тех пор файл не трогали.

# воспроизвести (ожидаем: пусто после исправления) curl -s https://www.software.travel/llms-full.txt | python3 -c "import sys; sys.stdin.buffer.read().decode('utf-8')"

Что делать: пересохранить в UTF-8, заменить одиннадцать байтов на нормальные тире и кавычки · Кто: тот, кто выкладывал файл · Объём: 15 минут

N3высокий

Разметка не описывает содержимое: нет ни Article, ни FAQPage, ни Product, ни DefinedTerm

Набор типов JSON-LD одинаков на всех семи страницах — это шаблон, а не описание. Ни одна страница не сообщает машине, что на ней: статья, определение термина, продукт или список вопросов.

/ Organization, WebSite, WebPage, BreadcrumbList /platform/gp-travel-enterprise/ то же Product / SoftwareApplication — нет /solutions/travel-crm/ то же /glossary/travel-agency/ то же + Person DefinedTerm — нет Article — нет /blog/tour-operators/gds-system/ то же + Person Article — нет /platform/gp-travel-hub/suppliers/ то же /de/blog/integrationen/amadeus-api/ то же + Person Article — нет Блок «Frequently Asked Questions» текстом есть на 7 из 7 страниц. FAQPage — 0 из 7. Тег <main>: есть на 1 из 7 (главная). <article>: 0 из 7.

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

Что делать: Article на блог и глоссарий, DefinedTerm на глоссарий, FAQPage там, где есть FAQ-блок, SoftwareApplication на страницы продукта; обернуть контент в <main> и <article> · Кто: SEO + разработка · Объём: четыре шаблона

N4средний

Сущность компании не связана с внешними профилями

Узел Organization есть, с именем, описанием, телефоном и логотипом. Но поля sameAs в нём нет вовсе, а логотип указан относительным путём.

Organization: name: "GP Solutions (Travel Technology Division)" url: "https://www.software.travel/" telephone: "+13052096244" logo.url: "/wp-content/uploads/2021/11/gp-logo-black.svg" ← относительный путь sameAs: отсутствует

В стратегии по AI-оптимизации «согласованные данные в каталогах» названы каркасом сущности. sameAs — это ровно тот механизм, которым сайт сообщает машине, что он и профили на LinkedIn, Crunchbase, Clutch, Capterra, G2 — одна компания. Без него каталоги и сайт живут раздельно.

Что делать: добавить sameAs со ссылками на LinkedIn, Crunchbase, Clutch, Capterra, G2, Wikidata (если появится); логотип абсолютным URL · Кто: SEO · Объём: один узел в шаблоне

N5средний

В robots.txt ни одного правила под ИИ-ботов

Весь файл — 446 байт и одна секция User-agent: *. Правил для GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Bytespider нет.

Сейчас это не мешает: доступ открыт всем, см. A1. Но решение нигде не зафиксировано. Любая правка общих Disallow развернёт его молча, и никто не узнает. Это не поломка, это отложенный риск: разрешить или запретить, но записать явно.

Что делать: явные секции для ИИ-ботов с осознанным решением по каждому (отдельно — обучающие краулеры вроде CCBot и Bytespider, отдельно — поисковые вроде OAI-SearchBot и PerplexityBot) · Кто: SEO · Объём: 30 минут плюс решение

Что изменилось с 26 августа

Ничего. Все четыре файла и все замеры шаблона совпадают с предыдущей проверкой с точностью до WordPress-нонсов.

объект26.08.202603.09.2026статус
robots.txt446 Б, 0 правил под ИИ446 Б, 0 правил под ИИбез изменений
llms.txt7 151 Б, 0 имён поставщиков7 151 Б, 0 имён поставщиковбез изменений
llms-full.txt9 306 Б, невалидный UTF-89 306 Б, невалидный UTF-8без изменений
главная, h1155 797 из 350 350155 807 из 350 360+10 байт, нонс
JSON-LD, типы4 базовых типа4 базовых типабез изменений

Порядок работ

Отсортировано по соотношению эффекта к затратам, а не по серьёзности. Первые четыре пункта делаются за неделю силами тех, кто уже есть.

чтоктообъёмкак проверить
1N1 Минификация HTML на выходевеб-разработканастройка + тест на страницах с кодомh1 < 102 400 на 7 страницах
2N2 Перекодировать llms-full.txt в UTF-8кто выкладывал15 миндекодер не падает
3P2 Имена GDS и статус Sabre-партнёра в llms.txtSEO15 минgrep находит Amadeus, Sabre, Travelport
4N5 Явные правила для ИИ-ботов в robots.txtSEO + решение руководства30 минсекции присутствуют
5N3 FAQPage на 7 страницах с FAQ-блокомразработкашаблонтип в JSON-LD
6P1 + N3 Article с полным автором, DefinedTerm на глоссарийSEO + разработкадва шаблонаPerson.name = имени в тексте
7N4 Organization.sameAs, абсолютный логотипSEOодин узелполе присутствует
8N1 Дедупликация меню, затем <main> перед шапкой в DOMвеб-разработкаархитектурноh1 не зависит от размера меню

Проверку из первой строки стоит сделать регулярной, а не разовой: тема обновится, плагин отключат, и всё вернётся молча. Логичное место — рядом с уже работающим GSC Collector, тем же ежедневным триггером.

Что измерено, а что предположено

Граница уверенности

Измерено и воспроизводится: коды ответов 17 краулеров, посимвольное совпадение текста, позиция h1 и доля пробелов на 7 страницах, битые байты с позициями, состав JSON-LD, содержимое robots.txt и обоих llms-файлов, sitemap. Сырые ответы сервера сохранены в папке проекта, 44 файла.

Предположено: что ИИ-краулеры обрезают документ около 100 КБ. Цифра общепринятая, снаружи её не измерить, у разных ботов она разная. На схеме это ориентир, не факт.

Вывод N1 от этого допущения не зависит: первые четыре тысячи знаков каждой страницы — навигация, а модели взвешивают текст тем сильнее, чем ближе он к началу документа. Минификация полезна при любом лимите.

Как воспроизвести

# доступ и клоакинг curl -s -A "Mozilla/5.0 (compatible; GPTBot/1.2)" -o /dev/null -w "%{http_code} %{size_download}\n" https://www.software.travel/ # robots.txt: сколько секций и есть ли ИИ-боты curl -s https://www.software.travel/robots.txt | grep -ciE "gptbot|claudebot|perplexity|google-extended" # llms-full.txt: валидность UTF-8 (пусто = валиден) curl -s https://www.software.travel/llms-full.txt | python3 -c "import sys; sys.stdin.buffer.read().decode('utf-8')" # llms.txt: имена GDS curl -s https://www.software.travel/llms.txt | grep -ciE "amadeus|sabre|travelport" # позиция h1 в байтах curl -sL -A "GPTBot/1.2" https://www.software.travel/ | grep -abo -m1 "<h1" | cut -d: -f1 # доля пробельных символов в документе curl -sL https://www.software.travel/ | python3 -c "import sys;d=sys.stdin.buffer.read();w=sum(1 for b in d if b in b' \t\r\n');print(f'{len(d)} байт, пробелов {w} = {w/len(d)*100:.0f}%')" # типы JSON-LD на странице curl -sL https://www.software.travel/blog/tour-operators/gds-system/ | grep -o '"@type":"[A-Za-z]*"' | sort | uniq -c