Інтеграція 1С-Бітрікс з Google Search Console

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Інтеграція 1С-Бітрікс з Google Search Console
Середня
~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С-Бітрікс із Google Search Console

Google Search Console не має прямого аналога серед інструментів 1С-Бітрікс. Дані про кліки, покази, позиції з GSC недоступні в Метриці. Інтеграція через Search Console API дає можливість автоматично отримувати ці дані та агрегувати їх в адміністративній частині 1С-Бітрікс — без щоденного відкриття сторонніх сервісів.

Інтеграція 1С-Бітрікс із Google Search Console

Google Search Console API: доступні дані

Search Console API (v1) надає:

  • Search Analytics — кліки, покази, CTR, позиції за запитами, сторінками, пристроями, країнами
  • URL Inspection API — статус індексування конкретного URL
  • Sitemaps API — керування картами сайту
  • URL Notifications API (через Indexing API) — запит на переіндексацію сторінок із вакансіями та трансляціями (обмежений доступ для інших типів)

Авторизація: OAuth 2.0 або Service Account (переважно для серверних застосунків — не потребує ручної авторизації при оновленні токена).

Авторизація через Service Account

// Встановлюємо google/apiclient через Composer у /local/
// composer require google/apiclient

namespace Google\SearchConsole;

class ServiceClient
{
    private \Google\Service\SearchConsole $service;

    public function __construct()
    {
        $keyFile = \Bitrix\Main\Config\Option::get('mymodule', 'gsc_key_file_path');

        $client = new \Google\Client();
        $client->setAuthConfig($keyFile);
        $client->addScope(\Google\Service\SearchConsole::WEBMASTERS_READONLY);

        $this->service = new \Google\Service\SearchConsole($client);
    }

    public function getSearchAnalytics(
        string $siteUrl,
        string $startDate,
        string $endDate,
        array  $dimensions = ['query', 'page']
    ): array {
        $request = new \Google\Service\SearchConsole\SearchAnalyticsQueryRequest();
        $request->setStartDate($startDate);
        $request->setEndDate($endDate);
        $request->setDimensions($dimensions);
        $request->setRowLimit(5000);

        $response = $this->service->searchanalytics->query($siteUrl, $request);
        return $response->getRows() ?? [];
    }
}

JSON-ключ сервісного акаунта зберігається в захищеній папці поза webroot. Шлях до нього — в b_option через \Bitrix\Main\Config\Option.

Збір даних за сторінками сайту

Агент 1С-Бітрікс щодня забирає дані за попередній день і зберігає в кастомну таблицю:

class GscDataCollectorAgent
{
    public static function run(): string
    {
        $client  = new \Google\SearchConsole\ServiceClient();
        $siteUrl = \Bitrix\Main\Config\Option::get('mymodule', 'gsc_site_url');
        $date    = date('Y-m-d', strtotime('-3 days')); // GSC: дані із затримкою 2-3 дні

        $rows = $client->getSearchAnalytics(
            $siteUrl,
            $date,
            $date,
            ['page', 'query']
        );

        $connection = \Bitrix\Main\Application::getConnection();

        foreach ($rows as $row) {
            $connection->queryExecute(
                'INSERT INTO b_gsc_analytics (DATE, PAGE, QUERY, CLICKS, IMPRESSIONS, CTR, POSITION)
                 VALUES (?, ?, ?, ?, ?, ?, ?)
                 ON DUPLICATE KEY UPDATE
                   CLICKS = VALUES(CLICKS), IMPRESSIONS = VALUES(IMPRESSIONS),
                   CTR = VALUES(CTR), POSITION = VALUES(POSITION)',
                [
                    $date,
                    $row->getKeys()[0], // page
                    $row->getKeys()[1], // query
                    (int)$row->getClicks(),
                    (int)$row->getImpressions(),
                    round($row->getCtr() * 100, 2),
                    round($row->getPosition(), 1),
                ]
            );
        }

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

Таблиця b_gsc_analytics:

CREATE TABLE b_gsc_analytics (
    ID          INT AUTO_INCREMENT PRIMARY KEY,
    DATE        DATE NOT NULL,
    PAGE        VARCHAR(2048) NOT NULL,
    QUERY       VARCHAR(512) NOT NULL,
    CLICKS      INT DEFAULT 0,
    IMPRESSIONS INT DEFAULT 0,
    CTR         DECIMAL(5,2) DEFAULT 0,
    POSITION    DECIMAL(6,1) DEFAULT 0,
    UNIQUE KEY idx_date_page_query (DATE, PAGE(500), QUERY(200))
);

URL Inspection: статус індексування сторінок

Перевірка статусу індексування конкретного URL через API:

public function inspectUrl(string $siteUrl, string $pageUrl): array
{
    $request = new \Google\Service\SearchConsole\InspectUrlIndexRequest();
    $request->setInspectionUrl($pageUrl);
    $request->setSiteUrl($siteUrl);

    $response = $this->service->urlInspection_index->inspect($request);
    $result   = $response->getInspectionResult();

    return [
        'verdict'              => $result->getIndexStatusResult()->getVerdict(),
        'coverage_state'       => $result->getIndexStatusResult()->getCoverageState(),
        'last_crawl_time'      => $result->getIndexStatusResult()->getLastCrawlTime(),
        'robots_txt_state'     => $result->getIndexStatusResult()->getRobotsTxtState(),
        'indexing_state'       => $result->getIndexStatusResult()->getIndexingState(),
        'canonical'            => $result->getIndexStatusResult()->getGoogleCanonical(),
    ];
}

Виведення статусу в картці елемента інфоблоку дозволяє редактору одразу бачити, чи проіндексована сторінка.

Дашборд SEO-даних в адміністративній частині

На основі зібраних даних будуємо звіти в адміністративній частині 1С-Бітрікс. Використовуємо стандартний інтерфейс admin-сторінок:

  • Топ запитів із низьким CTR при високих показах — потенціал для покращення title/description
  • Сторінки з падаючими позиціями — потребують уваги контент-команди
  • Сторінки з нульовими кліками — можлива ознака неправильної метарозмітки або канібалізації

Дані з b_gsc_analytics джоїняться з b_iblock_element за URL — отримуємо прямі посилання на редагування матеріалу в адміністративній частині.

Автооновлення Sitemap

// Після генерації sitemap
$sitemap = $this->service->sitemaps;
$sitemap->submit($siteUrl, 'https://site.ru/sitemap.xml');

Обмеження API

  • URL Inspection: 2000 запитів на добу на проект
  • Search Analytics: дані із затримкою 2–3 дні, глибина — 16 місяців
  • Рядки у відповіді: до 25 000 за запит (фільтрація потрібна для великих сайтів)
  • Service Account має бути доданий до GSC із правами «Повний доступ»

Терміни

Завдання Терміни
Налаштування Service Account, авторизація, тест підключення 4–8 годин
Збір Search Analytics, зберігання в БД 1С-Бітрікс 1–2 дні
Дашборд зі звітами за запитами та сторінками 2–3 дні
URL Inspection у картках елементів інфоблоку 1 день