Автонаполнение SEO-данных товаров (мета-теги, описания) 1С-Битрикс
Пустые <title> и <meta name="description"> на 20 000 товарных страниц — это прямой ущерб для органического трафика. Ручное заполнение нереалистично, шаблонная генерация («Купить {NAME} по лучшей цене») работает, но средне. Правильная автоматизация даёт уникальные мета-теги на основе реальных данных товара — без клонирования и с учётом особенностей каждой категории.
Как Битрикс хранит SEO-данные
SEO-поля элемента инфоблока хранятся в таблице b_iblock_element_iprop (SEO-шаблоны) и в прямых полях:
-
b_iblock_element.NAME— используется как fallback для title -
b_iblock_element_property— свойства типа SEO_TITLE, SEO_DESCRIPTION (если созданы вручную)
Битрикс предоставляет класс \Bitrix\Iblock\InheritedProperty\ElementValues для работы с SEO-полями через механизм шаблонов. Это предпочтительный способ — он учитывает наследование от раздела и инфоблока.
Запись SEO-данных через API:
$ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($iblockId, $elementId);
$ipropValues->save([
'ELEMENT_META_TITLE' => $metaTitle,
'ELEMENT_META_DESCRIPTION' => $metaDescription,
'ELEMENT_META_KEYWORDS' => $keywords,
'ELEMENT_PAGE_TITLE' => $pageTitle,
]);
Шаблонная генерация с переменными
Базовый подход: шаблоны с плейсхолдерами, уникальные для каждой категории.
Примеры шаблонов по категориям:
-
Электроника:
{NAME} — купить за {PRICE} руб. | {BRAND} официальный дилер -
Одежда:
{NAME} {COLOR} {SIZE} — купить в {CITY} -
Запчасти:
{NAME} арт. {ARTICLE} — наличие {QTY} шт., цена {PRICE} руб.
Шаблоны хранятся в Highload-блоке SeoTemplates с привязкой к IBLOCK_SECTION_ID. При генерации: находим ближайший раздел с шаблоном (с подъёмом вверх по дереву), заменяем плейсхолдеры значениями свойств элемента.
Ограничения: title до 70 символов, description до 155–160. После подстановки — обрезаем с умом: не обрываем слово на середине, добавляем «...» если текст обрезан.
AI-генерация для уникальности
Шаблонные мета-теги — одинаковые по структуре, поисковики это видят. Для важных категорий или высококонкурентных запросов — генерация через LLM:
$prompt = "Напиши SEO-title (до 65 символов) и meta description (до 155 символов)
для товара: {$product['NAME']}, бренд: {$product['BRAND']},
характеристики: {$characteristicsText}.
Формат ответа: JSON {\"title\": \"...\", \"description\": \"...\"}";
$response = $openAiClient->chat($prompt);
$seoData = json_decode($response, true);
Стоимость: ~0.001–0.003 USD за товар на GPT-3.5-turbo. Для 10 000 товаров — $10–30.
Приоритеты и защита ручных правок
SEO-данные часто требуют ручной доработки для топовых позиций. Логика приоритетов:
- Если
ELEMENT_META_TITLEзаполнен вручную (флагSEO_LOCKED = Y) — не трогаем - Если пустой — генерируем по шаблону
- Если шаблонная генерация слабая (низкое качество по метрикам длины/уникальности) — ставим в очередь на AI-генерацию
Автообновление при изменении товара
Мета-теги должны обновляться при изменении названия, цены, остатка. Обработчик события OnAfterIBlockElementUpdate:
AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', function($fields) {
if (in_array($fields['IBLOCK_ID'], $catalogIblockIds)) {
SeoAutoFillQueue::add($fields['ID'], 'update');
}
});
Не обновляем синхронно в обработчике — кладём в очередь, воркер обработает асинхронно.
Таймлайн работ
| Этап | Срок |
|---|---|
| Аудит текущих SEO-полей, выявление пустых | 2–4 часа |
| Система шаблонов по категориям | 1–2 дня |
| Интеграция с InheritedProperty API Битрикса | 4–8 часов |
| AI-генерация для приоритетных категорий | 1–2 дня |
| Защита ручных правок, триггеры обновления | 1 день |
| Административный интерфейс управления шаблонами | 1 день |
Итого: 5–8 рабочих дней. Результат виден в органике через 4–8 недель после индексации.







