Мы проходим каждый адрес, а не выборку
Прямые запросы к каждому известному адресу, без следования перенаправлениям, максимум шесть одновременных запросов, чтобы не беспокоить сервер, и 23 столбца на адрес: код, канонический адрес, заголовок, описание, hreflang, число блоков структурированных данных, объём видимого текста. Результат — табличный файл, который мы передаём. На этом сайте: 249 адресов, из которых 244 отвечают 200 и 5 перенаправляют.
Официальный адрес страницы, решённый один раз для всего сайта
131 страница не объявляла никакого канонического адреса, а 219 из 244 объявляли главную страницу адресом для шаринга — значит, любая публикация в сетях показывала другую страницу. Обе проблемы были исправлены одной относительной декларацией в базовой настройке, которая разрешается для каждого маршрута отдельно. Это одна строка кода вместо соглашения, которое каждая новая страница должна была бы сама помнить.
Карта сайта, сгенерированная из данных, проверенная после публикации
Карта строится из источников контента и проходит финальное удаление дублей — на этом сайте 147 адресов, та же цифра в коде и в файле, который отдаётся в production. Скрипт, запущенный после публикации, падает, если карта теряет страницу или если появляются варианты адреса, которые не открываются. Что сегодня отсутствует, как отсутствие: записи не содержат дату последнего изменения, а 93 индексируемых адреса ещё не включены.
Старые адреса получают каждое своё решение
При реструктуризации каждый существующий адрес получает вердикт: остаётся, перенаправляется постоянно или исчезает. На этом сайте получилось 43 перенаправления в конфигурации. Отдельно проверены и вещи, которые никто не тестирует: переход с домена без `www` на домен с `www` один; адрес с завершающим слэшем перенаправляется правильно; адрес, написанный заглавными буквами, возвращает 404, значит дубликата записи нет.
Заголовки, описания и тонкий контент, посчитанные
100 заголовков из 244 превышают 60 символов, самый длинный — 106, риск в том, что они будут обрезаны в результатах. 33 описания превышают 160 символов, но ноль отсутствуют. Более серьёзно: 65 страниц делят одно описание, сгенерированное из шаблона, а 30 из них отличаются между собой в общей сложности на 240 байт. Медиана видимого текста: 2.328 символа, при этом 96 страниц ниже 2.000. Это цифры, а не впечатления, и за каждой стоит список адресов.
Собственный анализатор, с модулями и весами, записанными в коде
Наш анализатор имеет 16 модулей — по странице, производительность, карта сайта, безопасность, доступность, инфраструктура имён, сведения о регистрации домена, внешние ссылки, социальные сети, технический стек, позиции, исследование ключевых слов, общий аудит — плюс модули сравнения: поиск конкурентов, разница ключевых слов, разница контента, ориентиры. Общий балл явно взвешен в коде: производительность 0,20, SEO 0,20, по странице 0,15, безопасность 0,15, прямые ответы 0,10, доступность 0,10, социальные сети 0,10. Модули, которые дают сбой, не тянут оценку вниз — они выходят из взвешивания, чтобы упавший внешний сервис не создавал ложный отчёт.
Редиректы, которые не стоят целой страницы
Редирект, сделанный изнутри приложения, сначала строит страницу и только потом отправляет ответ с редиректом. На этом сайте есть 11 таких случаев, и каждый производит более 200 KB HTML, прежде чем сказать «перейдите в другое место». Это работает, но это расточительно; перенос их в конфигурацию — небольшая работа с прямым эффектом на бюджет обхода. Это в списке исправлений, записано как отсутствие.
Что видит crawler, проверено crawler-ом, а не предположено
Мы запросили пять адресов с 18 разными идентификаторами агентов и сравнили код, размер и отпечаток нормализованного содержимого. Все получают 200 и точно такое же содержимое, как браузер; `robots.txt` идентичен, 129 байт, для всех; нет блокировки, проверки или ограничения для краулеров. Единственное воспроизводимое различие — на 237 байт меньше на динамической странице, для трех агентов — исходит из самого фреймворка, который отправляет им полный нестриминговый HTML, то есть больше готового отрендеренного содержимого, а не меньше.
Что мы не обещаем, написано до контракта
Мы не обещаем позиции, проценты роста или число визитов. У нас нет публикуемых измерений для такого, и мы не выдумываем. Что мы поставляем, проверяется иначе: список адресов с состоянием каждого, выполненные исправления, проверка, запущенная после публикации, и измеримая разница между состоянием до и после — в байтах, кодах и числах страниц, а не в обещаниях.