▤ Руководства

Обратные ссылки

Содержание

SEOMaster не строит свой индекс интернета: обход миллиардов страниц для поиска ссылок — задача уровня Ahrefs, Majestic или Яндекса. Модуль берёт ссылки у них и считает всё остальное сам, без ИИ.

Источники

ИсточникЧто даётОграничения
CSV-выгрузка (Ahrefs, Semrush, Majestic, Netpeak и др.)Ссылки с анкорами, DR, датами; можно загружать и конкурентовВручную; до 8 МБ и 50 000 строк за раз
Ahrefs API v3 (Backlinks\Ahrefs)До 5000 ссылок за загрузку (страницами по 1000, сортировка по DR источника), DR, итоги; любой доменНужен тариф с API; расходует units; формат ответа не проверялся на живом аккаунте
Яндекс.Вебмастер, «Внешние ссылки» (Backlinks\YandexLinks)Выборка внешних ссылок на свои подтверждённые сайтыТолько выборка (список неполный → пропавшие не определяются), без анкоров и DR

Majestic (Backlinks\Majestic, до 5000 ссылок за запрос, индекс fresh, Trust Flow доноров) и Moz (Backlinks\Moz, Links API v2, до 1000 ссылок страницами по 50, Domain Authority доноров; ключ хранится как «AccessID:SecretKey») подключаются так же и работают через тот же интерфейс LinkSource. Формат ответов не проверялся на живых аккаунтах. При нескольких источниках на одном сайте ссылки объединяются по паре «донор → страница», а пропавшими по полному списку считаются только ссылки того же источника.

Ключ Ahrefs хранится в integrations (provider ahrefs) в зашифрованном виде, как и остальные. Яндекс использует тот же токен, что и «Поисковые системы».

Разбор CSV

Backlinks\Csv::parse: кодировка (UTF-8, UTF-8 с BOM, UTF-16 с BOM, иначе cp1251), разделитель (, ; табуляция | или строка sep=;), столбцы — по названию без учёта регистра и знаков: источник («Referring page URL», «Source url», «Откуда»…), цель, анкор, nofollow (Nofollow, Flag NoFollow, rel, Type), DR (Domain rating, DR, Authority score), даты («First seen», «Last seen», «Lost»). Строки без корректного http(s)-адреса источника пропускаются и считаются.

Хранение и разница между загрузками

Таблица bl_links — по строке на пару «страница-источник → страница сайта» (уникально по пользователю, сайту и паре адресов); bl_runs — журнал загрузок. Сайт — свой или конкурент (host).

  • Первая загрузка сайта — базовая: её ссылки не считаются новыми (иначе первая же загрузка «нашла бы» все ссылки).
  • Новая — ссылки, появившиеся после базовой загрузки, или с датой «first seen» из сервиса за выбранный период.
  • Пропавшая — в полной загрузке (complete) нет ссылки, которая была живой; либо строка пришла с датой потери. Неполная загрузка (выборка Яндекса, достижение лимита Ahrefs, CSV без отметки «полный список») пропавших не определяет.
  • Вернувшаяся — ссылка пришла снова после пометки «пропала».
  • Домен источника — регистрируемый (blog.example.co.uk → example.co.uk; список вторых уровней Norm::SLD короткий, не полный публичный суффикс-лист).

Анкоры

Analysis::anchorKind: пусто → «без текста»; адрес; содержит бренд (первая часть домена сайта, от 3 знаков); безликий из списка (здесь, click here…); иначе ключевой. Предупреждения (от 30 ссылок): ключевых больше 60%, брендовых меньше 5%, один анкор в 30%+ ссылок. Это ориентиры, а не приговор.

Пересечения и разрывы

Analysis::gap(мои домены, домены конкурентов): домен попадает в разрыв, если ссылается хотя бы на одного конкурента и не ссылается на вас. Сортировка: по числу конкурентов, затем DR, затем числу ссылок. Домены, ссылающиеся на двух и более конкурентов, — самые «естественные» кандидаты для просьбы о ссылке. Для конкурентов нужны их данные (CSV или Ahrefs); добавление конкурентов — на странице «Конкуренты».

События

backlinks-lost (раз в 72 часа): потеряно не меньше 5 ссылок и не меньше 10% живых. Вид сигнала links.lost — в ленте событий, без отдельного инцидента.

Что осталось

Ссылки по страницам (какая страница получает больше ссылок), токсичные ссылки и «Disavow», регулярное обновление по расписанию (bin/-скрипт) — пока загрузка по кнопке.

По страницам и риски (версия 49)

  • По страницам: группировка живых ссылок по пути страницы назначения (Backlinks\Pages); нужна колонка с адресом назначения в выгрузке.
  • Риски (Backlinks\Risk): очки за признаки — 50+ ссылок с домена (+20, 200+ — +30), DR 0–5 (+20), дешёвая зона (+15), спамные анкоры (+25/+40), почти все анкоры — коммерческие ключи (+10), «сгенерированное» название (+10); от 35 — средний риск, от 60 — высокий. Это эвристика по загруженным данным, не оценка Google.
  • Решения хранятся в bl_decisions; disavow.txt содержит только домены с отметкой «отклонить» (формат domain:example.com). Файл загружается вручную в инструмент отклонения ссылок Google Search Console. Ссылки обычно просто игнорируются Google: отклонять стоит только явный искусственный мусор.

Ссылочный профиль 2.0 (версия 60)

  • Качество профиля (Backlinks\Quality): 0–100 из шести частей — разнообразие источников 25, авторитетность 20, баланс dofollow 10, анкоры 15, подозрительные домены 20 (решения «оставить/отклонить» снимают штраф), концентрация 10. Эвристика, не оценка поисковика; при меньше 20 ссылок помечается ориентировочной. Снимок на каждую загрузку (bl_snap), сравнение с конкурентами, чьи ссылки загружены.
  • Динамика (Backlinks\Velocity): новые и потерянные ссылки по неделям; всплеск — выше медианы + 4 устойчивых отклонения (MAD), не ниже тройной медианы и абсолютного порога (15 новых / 10 потерянных); нужно ≥4 недель истории. Всплеск со спамных доменов или ≥20 ссылок с одного домена — «возможна ссылочная атака»: событие backlinks-spike, правило причин «linkspam», задача b:spike.
  • Утечки веса (Backlinks\Leaks): страницы со внешними ссылками сопоставляются с последним глубоким обходом — битые, закрытые от индексации, не найденные в обходе (только при полном обходе), без внутренних ссылок, через редирект, без исходящих ссылок. Задача b:leak.
  • Возврат (Backlinks\Reclaim): потерянные за 90 дней ссылки по доменам с причиной — страница-получатель недоступна/переехала, ссылку сняли при живом домене, домен ссылаться перестал; приоритет по DR, dofollow и числу ссылок, недолговечные (<30 дней) ниже. Задача b:reclaim.

Выбор источника по стоимости и свежести (v132)

Кнопка «Получить из любого источника» больше не идёт по фиксированному списку. Роутер возможностей (Providers\Router::plan()) расставляет подключённые источники так: выбранный пользователем — первым; затем полноценные источники, у которых последняя загрузка прошла без ошибки; затем те, чьи данные не обновлялись больше 7 суток; внутри каждой группы — дешёвые вперёд (Moz, Majestic, Ahrefs — по расходу единиц тарифа сервиса); источники с урезанными данными (Вебмастер) — после полноценных. Если источник отказал, берётся следующий. Причина места каждого источника записывается в протокол (why, Router::explain()); та же логика работает для возможности traffic. Стоимости в Router::COST относительные и приблизительные: они нужны для порядка, не для биллинга.