Інтеграція 1С-Бітрікс з Яндекс Вебмайстер

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з Яндекс Вебмайстер
Середня
~1-2 тижні
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • 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
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Інтеграція 1С-Бітрікс із Яндекс Вебмайстер

Яндекс Вебмайстер — не просто інструмент моніторингу. Через його API можна автоматизувати переіндексацію змінених сторінок, стежити за помилками краулера прямо з адміністративної частини 1С-Бітрікс, отримувати сповіщення про виключення сторінок з індексу. Без автоматизації це ручна робота у двох інтерфейсах.

Інтеграція 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();';
    }
}

Моніторинг помилок краулера в 1С-Бітрікс

Замість того щоб заходити в Яндекс Вебмайстер для перевірки помилок, отримуємо їх через 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) і кількість за кожен день. Ці дані можна вивести в дашборді адміністративної частини через стандартні компоненти 1С-Бітрікс 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 днів