Сайт растёт, и структура ссылок перестаёт быть очевидной. Меню ведёт в каталог, блог ссылается на фильтры, фильтры — друг на друга, а часть страниц получает внутренний вес буквально по крупицам. В итоге одни разделы перегружены ссылочным весом, другие — почти невидимы для поисковых систем. Разобраться помогает внутренний PageRank — численная оценка важности страниц на основе ссылок внутри одного сайта. Это не про ранжирование в Google, а про диагностику: где вес распределён нелогично и какие страницы стоит усилить.

Что такое внутренний PageRank и зачем он нужен

Классический PageRank присваивает каждой странице число, отражающее её «авторитет» с точки зрения ссылок. Если страница A ссылается на B, часть веса A передаётся B. Чем больше входящих ссылок от «тяжёлых» страниц, тем выше вес. Для внутреннего анализа мы считаем то же самое, но только по ссылкам внутри домена. Это даёт картину, которую не видно в обычных отчётах: какие страницы получают вес, а какие остаются на периферии.

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

Как считать: формула и нормализация

Базовая формула PageRank для страницы P: PR(P) = (1-d) + d * Σ (PR(Q) / L(Q)), где Q — страницы, ссылающиеся на P, L(Q) — количество исходящих ссылок с Q, d — коэффициент затухания (обычно 0,85). Сумма берётся по всем входящим ссылкам. Для внутреннего расчёта важно правильно нормализовать веса: сумма PR по всем страницам обычно приводится к 1 или к количеству страниц. Это позволяет сравнивать страницы между собой, а не абсолютные значения.

Расчёт выполняется итеративно: начинаем с равных весов, затем несколько раз пересчитываем по формуле, пока значения не стабилизируются. На практике хватает 20–30 итераций. Важно учитывать только внутренние ссылки, исключая внешние и служебные (например, ссылки на соцсети). Также нужно решить, как обрабатывать страницы с исходящими ссылками только на внешние ресурсы — они становятся «тупиками» и теряют вес, который можно было бы передать дальше.

Шаги: от краула до отчёта

Чтобы получить полезный отчёт, следуйте алгоритму:

  • Соберите список URL. Используйте краулер (например, Screaming Frog или собственный скрипт на Python) для обхода сайта. Ограничьте глубину и исключите параметры, чтобы не раздувать выборку.
  • Постройте граф ссылок. Для каждой страницы сохраните список исходящих внутренних ссылок. Удалите дубликаты и ссылки на несуществующие страницы (404).
  • Рассчитайте PageRank. Реализуйте итеративный алгоритм с коэффициентом затухания 0,85. Нормализуйте результат так, чтобы сумма весов равнялась количеству страниц (или 1 — в зависимости от удобства).
  • Проанализируйте распределение. Отсортируйте страницы по весу. Сравните с ожиданиями: важные разделы должны быть вверху. Если статья в блоге имеет вес выше, чем карточка товара, — это повод задуматься.
  • Найдите аномалии. Страницы с высоким весом, но низкой ценностью (например, страницы пагинации) — кандидаты на закрытие от индексации или удаление из внутренней ссылочной структуры. Страницы с низким весом, но высокой ценностью — кандидаты на добавление ссылок.

Для визуализации можно построить тепловую карту или граф, но даже таблица с весами и количеством входящих ссылок даёт многое.

Типичные ошибки и как их избежать

При расчёте внутреннего PageRank легко допустить ошибки, которые исказят картину. Вот самые распространённые:

  • Игнорирование редиректов. Если страница отдаёт 301-редирект, её вес должен передаваться целевому URL. Краулер должен следовать редиректам и учитывать конечный адрес.
  • Учёт внешних ссылок. Внутренний PageRank должен учитывать только ссылки внутри домена. Внешние ссылки не передают вес внутри сайта, но могут «съедать» его, если страница ссылается наружу. В формуле это не учитывается, но при анализе структуры стоит помнить: страница с большим количеством внешних ссылок теряет внутренний вес.
  • Неверная обработка nofollow. Ссылки с атрибутом nofollow не передают вес. Если вы их учитываете, результаты будут неверными. Исключайте такие ссылки из графа.
  • Пренебрежение динамическими параметрами. Фильтры и сортировки могут создавать множество дублирующихся страниц, которые забирают вес. Используйте канонические URL или закрывайте параметры от индексации.
  • Слишком мало итераций. Если остановиться на 5–10 итерациях, веса не сойдутся, и выводы будут ошибочными. Дайте алгоритму стабилизироваться.

Ещё одна ошибка — интерпретировать PageRank как единственный критерий важности. Это лишь один из сигналов. Он не учитывает поведенческие факторы, релевантность и коммерческие показатели. Используйте его в комплексе с другими данными.

Что делать с результатами

После расчёта у вас на руках список страниц с весами. Как действовать?

  • Усильте ссылками недооценённые страницы. Добавьте ссылки с авторитетных страниц (например, с главной или из популярных статей) на важные, но обделённые вниманием разделы. Не забывайте про анкоры — они должны быть естественными.
  • Сократите передачу веса на малозначимые страницы. Если страницы пагинации или фильтров получают много веса, закройте их от индексации или уберите из меню, заменив на AJAX-подгрузку. Но помните: если страница не индексируется, она не должна участвовать в передаче веса.
  • Оптимизируйте структуру. Сделайте так, чтобы важные страницы были ближе к главной и имели больше внутренних ссылок. Используйте хлебные крошки, блоки «похожие статьи», но не переусердствуйте с количеством ссылок на одной странице.
  • Повторяйте анализ регулярно. Структура сайта меняется, и веса перераспределяются. Проводите аудит раз в квартал или после крупных изменений.

Внутренний PageRank — это диагностический инструмент, а не волшебная таблетка. Он помогает увидеть, куда уходит вес, и принять обоснованные решения. Начните с простого скрипта, визуализируйте результаты и действуйте итеративно.