Генерация фида товаров для Google Merchant Center

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Генерация фида товаров для Google Merchant Center
Средняя
~2-3 рабочих дня
Часто задаваемые вопросы

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

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Генерация фида товаров для Google Merchant Center

Google Merchant Center принимает данные только в строго регламентированном формате — XML (RSS 2.0 или Atom 1.0) либо через Content API. Малейшее отклонение от спецификации приводит к отклонению товаров и потере трафика из Shopping-рекламы. Разрабатываем генератор фида, который проходит валидацию с первого раза и поддерживается в актуальном состоянии автоматически.

Что входит в работу

  • Анализ структуры каталога и маппинг полей на атрибуты GMC
  • Генерация XML-фида по спецификации Google Product Data Specification
  • Настройка cron-задачи или webhook-триггера для обновления фида
  • Регистрация фида в аккаунте Merchant Center и первичная диагностика ошибок

Обязательные и рекомендуемые атрибуты

Атрибут Обязательность Примечание
id обязательный уникальный SKU, не меняется
title обязательный до 150 символов, без caps lock
description обязательный до 5000 символов
link обязательный канонический URL товара
image_link обязательный HTTPS, мин. 100×100 px
price обязательный формат 19.99 USD
availability обязательный in_stock / out_of_stock / preorder
brand рекомендуемый обязателен для одежды, электроники
gtin рекомендуемый повышает Quality Score
google_product_category рекомендуемый числовой ID из таксономии Google
custom_label_0..4 опциональный сегментация в Smart Shopping

Структура XML-фида

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:g="http://base.google.com/ns/1.0" version="2.0">
  <channel>
    <title>Название магазина</title>
    <link>https://example.com</link>
    <description>Каталог товаров</description>
    <item>
      <g:id>SKU-12345</g:id>
      <g:title>Кроссовки Nike Air Max 270 мужские чёрные</g:title>
      <g:description>Беговые кроссовки с технологией Air Max...</g:description>
      <g:link>https://example.com/products/nike-air-max-270</g:link>
      <g:image_link>https://cdn.example.com/products/nike-270-black.jpg</g:image_link>
      <g:availability>in_stock</g:availability>
      <g:price>8990.00 RUB</g:price>
      <g:brand>Nike</g:brand>
      <g:gtin>0012345678905</g:gtin>
      <g:google_product_category>187</g:google_product_category>
      <g:condition>new</g:condition>
      <g:custom_label_0>sale</g:custom_label_0>
    </item>
  </channel>
</rss>

Генератор на PHP/Laravel

class GoogleMerchantFeedGenerator
{
    public function generate(): string
    {
        $products = Product::with(['images', 'category', 'brand'])
            ->where('is_active', true)
            ->where('stock', '>', 0)
            ->cursor(); // cursor() для больших каталогов — не грузит RAM

        $xml = new \XMLWriter();
        $xml->openMemory();
        $xml->setIndent(true);
        $xml->startDocument('1.0', 'UTF-8');
        $xml->startElement('rss');
        $xml->writeAttribute('xmlns:g', 'http://base.google.com/ns/1.0');
        $xml->writeAttribute('version', '2.0');
        $xml->startElement('channel');

        foreach ($products as $product) {
            $this->writeItem($xml, $product);
        }

        $xml->endElement(); // channel
        $xml->endElement(); // rss

        return $xml->outputMemory();
    }

    private function writeItem(\XMLWriter $xml, Product $product): void
    {
        $xml->startElement('item');
        $xml->writeElement('g:id', $product->sku);
        $xml->writeElement('g:title', mb_substr($product->name, 0, 150));
        $xml->writeElement('g:link', route('products.show', $product->slug));
        $xml->writeElement('g:image_link', $product->mainImage()?->cdn_url ?? '');
        $xml->writeElement('g:price', number_format($product->price, 2, '.', '') . ' RUB');
        $xml->writeElement('g:availability', $product->stock > 0 ? 'in_stock' : 'out_of_stock');
        $xml->writeElement('g:brand', $product->brand?->name ?? '');
        $xml->writeElement('g:condition', 'new');
        $xml->endElement();
    }
}

Фид кэшируется в файловом хранилище и отдаётся через выделенный роут с заголовком Content-Type: application/xml. При каталоге свыше 100 000 позиций фид разбивается на части через механизм supplemental feeds в GMC.

Альтернатива: Content API for Shopping

Для интернет-магазинов с частыми изменениями цен и остатков (несколько раз в сутки) XML-фид неудобен из-за задержки индексации. Content API позволяет отправлять изменения в реальном времени:

// Google API Client Library for PHP
$service = new Google\Service\ShoppingContent($client);

$product = new Google\Service\ShoppingContent\Product([
    'offerId'     => 'SKU-12345',
    'title'       => $product->name,
    'link'        => $productUrl,
    'price'       => ['value' => '8990.00', 'currency' => 'RUB'],
    'availability' => 'in_stock',
    'channel'     => 'online',
    'contentLanguage' => 'ru',
    'targetCountry'   => 'RU',
]);

$service->products->insert('merchant-account-id', $product);

Подход через API используется, когда магазин обновляет цены несколько раз в день или работает с динамическим ценообразованием.

Типичные ошибки при первичной настройке

  • Missing required attribute — чаще всего gtin для брендовых товаров. Решение: добавить identifier_exists: no для товаров без штрихкода
  • Image not crawlable — CDN закрыт robots.txt или требует авторизации. Решение: открыть Googlebot в настройках CDN
  • Price mismatch — цена в фиде не совпадает с ценой на лендинге. Решение: синхронизировать источник данных

Сроки

Настройка генератора фида, первичная загрузка и устранение ошибок валидации — 3–5 рабочих дней. Плановая индексация товаров Google занимает ещё 2–7 дней после успешной отправки фида.