Интеграция 1С-Битрикс с Google Search Console

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

Google Search Console не имеет прямого аналога среди Битрикс-инструментов. Данные о кликах, показах, позициях из GSC недоступны в Метрике. Интеграция через Search Console API даёт возможность автоматически получать эти данные и агрегировать их в административной части Битрикс — без ежедневного открытия сторонних сервисов.

Интеграция 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.

Сбор данных по страницам сайта

Агент Битрикс ежедневно забирает данные за предыдущий день и сохраняет в кастомную таблицу:

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-данных в административной части

На основе собранных данных строим отчёты в административной части Битрикс. Используем стандартный интерфейс 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–2 дня
Дашборд с отчётами по запросам и страницам 2–3 дня
URL Inspection в карточках элементов инфоблока 1 день