Интеграция 1С-Битрикс с Яндекс Вебмастер

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Интеграция 1С-Битрикс с Яндекс Вебмастер
Средняя
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1177
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Разработка на базе Битрикс, Битрикс24, 1С для компании Development of an Online Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Интеграция 1С-Битрикс с Яндекс Вебмастер

Яндекс Вебмастер — не просто инструмент мониторинга. Через его API можно автоматизировать переиндексацию изменившихся страниц, следить за ошибками краулера прямо из административной части Битрикс, получать уведомления об исключении страниц из индекса. Без автоматизации это ручная работа в двух интерфейсах.

Интеграция 1С-Битрикс с Яндекс Вебмастер

Яндекс Вебмастер API: возможности

API предоставляет доступ к данным и действиям личного кабинета Вебмастера:

  • Hosts API — список верифицированных сайтов
  • Crawling API — история обходов, ошибки краулера
  • Indexing API — запрос на принудительную переиндексацию URL
  • Sitemap API — управление картами сайта
  • URL checking — статус URL в индексе
  • Search queries — поисковые запросы (аналог Search Console)

Авторизация через OAuth 2.0. Токен получается в личном кабинете Яндекс ID.

Авторизация и базовый клиент

namespace YandexWebmaster;

class ApiClient
{
    private const BASE_URL = 'https://api.webmaster.yandex.net/v4';
    private string $token;
    private string $hostId; // идентификатор сайта в формате 'https:site.ru:443'

    public function __construct()
    {
        $this->token  = \Bitrix\Main\Config\Option::get('mymodule', 'ya_webmaster_token');
        $this->hostId = \Bitrix\Main\Config\Option::get('mymodule', 'ya_webmaster_host_id');
    }

    public function request(string $method, string $endpoint, array $data = []): array
    {
        $http = new \Bitrix\Main\Web\HttpClient([
            'disableSslVerification' => false,
        ]);
        $http->setHeader('Authorization', 'OAuth ' . $this->token);
        $http->setHeader('Content-Type', 'application/json');

        $url = self::BASE_URL . '/user/{user-id}' . $endpoint;

        if ($method === 'GET') {
            $http->get($url . ($data ? '?' . http_build_query($data) : ''));
        } else {
            $http->post($url, json_encode($data));
        }

        return json_decode($http->getResult(), true) ?? [];
    }
}

user-id получается отдельным запросом GET /v4/user/ — его нужно сохранить в настройках модуля, не запрашивать каждый раз.

Принудительная переиндексация изменившихся страниц

Главная задача автоматизации: когда менеджер обновил товар или статью — отправить URL на переиндексацию в Яндекс без ручных действий.

Обработчик события обновления элемента инфоблока:

\Bitrix\Main\EventManager::getInstance()->addEventHandler(
    'iblock',
    'OnAfterIBlockElementUpdate',
    function (array &$arFields): void {
        if (!in_array($arFields['IBLOCK_ID'], [CATALOG_IBLOCK_ID, ARTICLES_IBLOCK_ID])) {
            return;
        }

        $element = \CIBlockElement::GetByID($arFields['ID'])->GetNextElement();
        if (!$element) return;

        $url = \CHTTP::URN2URL($element->GetFields()['DETAIL_PAGE_URL']);
        if (!$url) return;

        // Добавляем в очередь (не отправляем сразу — можем исчерпать лимит)
        \YandexWebmaster\ReindexQueue::push($url);
    }
);

Очередь на переиндексацию — отдельная таблица b_ya_reindex_queue:

CREATE TABLE b_ya_reindex_queue (
    ID       INT AUTO_INCREMENT PRIMARY KEY,
    URL      VARCHAR(2048) NOT NULL,
    ADDED    DATETIME DEFAULT NOW(),
    SENT     DATETIME NULL,
    STATUS   VARCHAR(20) DEFAULT 'pending'
);

Агент отправляет пачками по 200 URL (лимит API за один запрос):

class ReindexAgent
{
    public static function run(): string
    {
        $connection = \Bitrix\Main\Application::getConnection();
        $urls = $connection->query(
            'SELECT ID, URL FROM b_ya_reindex_queue WHERE SENT IS NULL LIMIT 200'
        )->fetchAll();

        if (empty($urls)) return __CLASS__ . '::run();';

        $client = new \YandexWebmaster\ApiClient();
        $result = $client->request('POST', '/hosts/{host-id}/reindex/url/', [
            'url_list' => array_column($urls, 'URL'),
        ]);

        $ids = array_column($urls, 'ID');
        $connection->query(
            'UPDATE b_ya_reindex_queue SET SENT = NOW(), STATUS = "sent" ' .
            'WHERE ID IN (' . implode(',', $ids) . ')'
        );

        return __CLASS__ . '::run();';
    }
}

Мониторинг ошибок краулера в Битрикс

Вместо того чтобы заходить в Яндекс Вебмастер для проверки ошибок, получаем их через API и показываем в административной части:

// Получение ошибок краулера за последние 7 дней
$errors = $client->request('GET', '/hosts/{host-id}/crawl/stats/errors/', [
    'date_from' => date('Y-m-d', strtotime('-7 days')),
    'date_to'   => date('Y-m-d'),
]);

Ответ содержит типы ошибок (HTTP_4XX, HTTP_5XX, TIMEOUT, EMPTY_CONTENT) и количество за каждый день. Эти данные можно вывести в дашборде административной части через стандартные компоненты Битрикс bitrix:main.admin.list.

Автообновление Sitemap через API

После публикации нового контента — уведомляем Яндекс об обновлении карты сайта:

// После регенерации sitemap.xml
$client->request('POST', '/hosts/{host-id}/sitemaps/', [
    'url' => 'https://site.ru/sitemap.xml',
]);

API принимает URL карты сайта и ставит её в очередь на обработку. Статус обработки можно запросить отдельно.

Хранение настроек

Все параметры (токен, user-id, host-id) хранятся через \Bitrix\Main\Config\Option в таблице b_option. Форма настроек — в административном разделе модуля (/local/modules/mymodule/admin/settings.php).

Ограничения API

  • Принудительная переиндексация: 200 URL в запросе, не более 20 000 URL в сутки
  • OAuth токен действует 1 год, необходимо реализовать обновление
  • Данные о поисковых запросах доступны с задержкой 2–3 дня

Сроки

Задача Сроки
Настройка OAuth, базовый клиент API 4–8 часов
Автоматическая переиндексация при обновлении страниц 1–2 дня
Мониторинг ошибок краулера в административной части 1–2 дня
Полная интеграция с дашбордом SEO-данных 3–5 дней