Автонаполнение контента с помощью нейросетей для 1С-Битрикс
Вы запускаете интернет-магазин на Битрикс. Каталог — 50 000 товаров. Описания пусты или скопированы из прайса. Ручное написание займёт годы. Наём копирайтеров на такой объём разорителен. Шаблонная генерация даёт предсказуемо слабый результат: одинаковые абзацы, «водянистые» фразы, нулевая ценность для SEO. Наша AI-интеграция решает проблему. Нейросеть создаёт уникальный контент на основе структурированных данных товара. Тон, длина и SEO-оптимизация — настраиваются.
Интеграция с OpenAI API проста: клиент на Guzzle, промпты в Highload-блоке, система очередей для больших каталогов. Мы используем модель GPT-4o-mini — она экономична и быстра. Для премиальных карточек переключаем на GPT-4o.
За счёт системы очередей и rate limiting мы обрабатываем до 100 запросов в минуту. Полная генерация описаний для 50 000 товаров занимает около 8–10 часов — без блокировок API. Это позволяет быстро наполнить каталог качественным контентом.
Что можно автоматизировать с AI
- Описания товаров — уникальный текст на основе характеристик.
- SEO-теги — title, description, keywords.
- Заголовки разделов — H1, H2 для страниц категорий.
- Ответы на часто задаваемые вопросы — FAQ-блоки для карточки товара.
- Тексты кнопок и микрокопи — call-to-action, подсказки.
- Переводы (при наличии контента на одном языке).
Как устроена интеграция с OpenAI API
Простой клиент для работы с Chat Completions API:
class OpenAiClient {
private string $apiKey;
private string $model = 'gpt-4o-mini';
public function generate(string $prompt, int $maxTokens = 500): string {
$response = (new \GuzzleHttp\Client())->post(
'https://api.openai.com/v1/chat/completions',
[
'headers' => ['Authorization' => "Bearer {$this->apiKey}", 'Content-Type' => 'application/json'],
'json' => [
'model' => $this->model,
'messages' => [['role' => 'user', 'content' => $prompt]],
'max_tokens' => $maxTokens,
],
]
);
return json_decode($response->getBody(), true)['choices'][0]['message']['content'];
}
}
Управление расходами: GPT-4o-mini значительно экономит бюджет по сравнению с GPT-4o, при этом обеспечивает достаточное качество для массовой генерации. Для сложных текстов (например, премиальных карточек) легко переключиться на более мощную модель.
Почему важен правильный промпт?
Качество вывода определяется промптом. Структура эффективного промпта для описания товара:
Ты копирайтер для интернет-магазина электроники.
Напиши описание товара в 2–3 абзаца (150–200 слов) для следующего продукта:
Название: {NAME}
Бренд: {BRAND}
Характеристики: {SPECS_LIST}
Требования:
- Стиль: профессиональный, без восторгов
- Первый абзац — главное преимущество
- Второй абзац — технические характеристики в контексте использования
- Третий абзац — для кого этот товар
- Без фраз "высокое качество", "отличный выбор"
- Язык: русский
Промпты хранятся в Highload-блоке AiPrompts с привязкой к категории товара — разные категории требуют разных стилей.
Система очередей и rate limiting
OpenAI имеет ограничения: 10 000 RPM и 10 000 000 TPM для GPT-4o-mini. Для больших каталогов нужна очередь:
CREATE TABLE ai_generation_queue (
id SERIAL PRIMARY KEY,
element_id INT NOT NULL,
task_type VARCHAR(50), -- 'description', 'seo_title', 'faq'
status VARCHAR(20) DEFAULT 'pending',
result TEXT,
tokens_used INT,
error TEXT,
created_at TIMESTAMP DEFAULT NOW()
);
Воркер обрабатывает не более 100 запросов в минуту, добавляя паузы между батчами.
Как контролируется качество AI-текстов?
AI может генерировать нерелевантный или некорректный контент. Система контроля включает двойную проверку. Автоматические фильтры проверяют минимальную длину текста (меньше 50 символов — ошибка), отсутствие запрещённых слов/фраз, проверку на «галлюцинации» — упоминание характеристик, не переданных в промпте. Второй AI-запрос оценивает качество по шкале 1–10 с причиной. Низкие оценки отправляются менеджеру на ревью. Вы можете настроить свои метрики.
Сравнение подходов: AI против ручного труда
AI-генерация дешевле ручного написания в десятки раз. По данным нашего опыта, ручное написание одного описания занимает около 15 минут и стоит существенно дороже. AI обрабатывает 100 описаний в минуту при средней стоимости токенов. Вот сравнение методов:
| Метод |
Скорость |
Качество |
Стоимость |
| Ручное написание |
1 описание/15 мин |
Высокое |
Высокая |
| Шаблонная генерация |
1000 описаний/мин |
Низкое |
Минимальная |
| AI-генерация (наш подход) |
100 описаний/мин |
Среднее–высокое |
Средняя |
AI-генерация выигрывает по соотношению цена-качество. Вы получаете уникальный контент по цене, близкой к шаблонному.
Что входит в работу
- Разработка и интеграция API-клиента под вашу AI-модель (OpenAI, Anthropic, YandexGPT). Опыт работы с разными провайдерами гарантирует совместимость.
- Создание библиотеки промптов для каждого типа контента. Сертифицированные специалисты Битрикс настраивают промпты с учётом вашей ниши.
- Построение системы очередей с rate limiter и контроль качества. Встроенные гарантии: перезапуск сбойных запросов, логирование ошибок.
- Административный интерфейс для мониторинга статистики и расходов.
- Документация и обучение команды.
- Поддержка после запуска: две недели итераций над промптами.
Таймлайн
| Этап |
Срок |
| Интеграция с AI API, rate limiter |
1–2 дня |
| Разработка промптов по категориям (итеративно) |
2–3 дня |
| Система очередей, воркеры |
1–2 дня |
| Контроль качества, модерация |
1–2 дня |
| Административный интерфейс, статистика расходов |
1 день |
Итого: 6–10 рабочих дней. Итерации над промптами продолжаются ещё 1–2 недели после запуска.
Чтобы получить консультацию по вашему проекту — свяжитесь с нами?
Оценим каталог, подберём модель и рассчитаем сроки. Результат — готовый конвейер автогенерации контента в вашем Битрикс. Закажите демонстрацию работы системы на ваших данных.
Разработка парсеров для 1С-Битрикс: с чего начать?
XMLReader, а не SimpleXML — выбор инструмента определяет судьбу проекта. SimpleXML загружает весь XML в память, и при файле поставщика на 800 МБ PHP упадёт с fatal error на лимите 512 МБ. XMLReader обрабатывает потоково, node за node, потребляя 20–30 МБ — в 30 раз эффективнее. С этой детали стартует любая разработка парсеров под Битрикс. Мы делаем такие системы уже 10+ лет, и ни один проект не обходится без правильного выбора парсера.
Какие проблемы решает парсинг?
- Первичное наполнение каталога — 15 000 карточек с описаниями, характеристиками, фото. Вручную это три месяца контент-менеджера; парсер — неделя с отладкой.
- Мониторинг цен конкурентов — сбор данных с Ozon, Wildberries, сайтов конкурентов. Конкурент снизил цену на ходовую позицию — узнаёте через два часа, а не через две недели.
- Агрегация поставщиков — пять прайсов в разных форматах (CSV с CP1251, XML в CommerceML, Excel с объединёнными ячейками) превращаются в единый каталог с общей системой свойств инфоблока.
- Обогащение карточек — подтягиваем характеристики, инструкции, 3D-модели с сайтов производителей. Без этого карточка товара — пустышка для SEO.
- Обновление ассортимента — товары, пропавшие из фида поставщика, деактивируются через
CIBlockElement::Update($ID, ['ACTIVE' => 'N']). Новые — создаются. Каталог синхронизирован.
Какие инструменты используем в разработке парсеров?
Статические сайты — PHP (Goutte, Symfony DomCrawler) или Python (Scrapy, lxml). Скорость: 50–100 страниц/сек. Хватает для каталогов без JS-рендеринга.
SPA и динамические сайты — Puppeteer или Playwright. Бесконечный скролл, AJAX-фильтры, lazy-load картинок — headless-браузер всё это обработает. Скорость падает до 1–10 страниц/сек, но альтернативы нет: данные существуют только после выполнения JavaScript.
Файлы поставщиков:
- Excel (XLS, XLSX) — PhpSpreadsheet. Осторожно с объединёнными ячейками и формулами — они ломают автоматический маппинг.
- CSV —
fgetcsv() с правильной кодировкой. Поставщики любят CP1251, BOM в UTF-8 и точку с запятой вместо запятой. Всё это нужно детектить и обрабатывать.
- XML/YML — XMLReader для больших файлов, SimpleXML для фидов до 50 МБ.
- CommerceML — стандартный формат обмена с 1С. Разбираем
import.xml и offers.xml, маппим на структуру инфоблоков.
API — REST-эндпоинты поставщиков, API маркетплейсов (Ozon Seller API, Wildberries API). Работаем в рамках rate limits, обрабатываем пагинацию.
Как устроен пайплайн автонаполнения?
Четыре этапа. Каждый может сломаться по-своему.
-
Сбор. Парсер обходит источники по cron-расписанию. Сырые данные пишем в промежуточную таблицу — не сразу в b_iblock_element. Логируем всё: сколько страниц обошли, сколько элементов распарсили, где получили 403 или timeout. Без логов отладка парсера — гадание на кофейной гуще.
-
Нормализация. Здесь основная работа:
- Очистка HTML-тегов, лишних пробелов, Unicode-мусора
- Единицы измерения: «мм» → «мм», «millimeters» → «мм», «миллиметр» → «мм»
- Маппинг категорий поставщика → разделы инфоблока Битрикс. У одного поставщика «Ноутбуки», у другого «Ноутбуки и планшеты», у третьего «Laptops» — всё в одну секцию
- Дедупликация по артикулу, EAN/GTIN. Один товар от трёх поставщиков не должен появиться трижды
-
Загрузка в Битрикс. Через CIBlockElement::Add() для новых элементов, CIBlockElement::Update() для существующих. Изображения: скачиваем, ресайзим через CFile::ResizeImageGet(), конвертируем в WebP. Свойства — через CIBlockElement::SetPropertyValuesEx(). SEO-мета через \Bitrix\Iblock\InheritedProperty\ElementValues. ЧПУ генерируем из транслитерации названия.
-
Обновление. Ключевой момент — не затереть ручные правки контент-менеджера. Обновляем только цену, остатки, активность. Описание и фото, доработанные вручную, помечаем флагом UF_MANUAL_EDIT в свойствах элемента и пропускаем при импорте. Товары, пропавшие из фида — деактивируем, но не удаляем.
Почему мониторинг цен конкурентов необходим?
Отдельная подсистема со своей спецификой:
| Параметр |
Как устроено |
| Частота |
От раза в день до каждых 2 часов — зависит от волатильности рынка |
| Сопоставление |
По артикулу, EAN, нечёткое сравнение названий через расстояние Левенштейна |
| Хранение |
Своя таблица vendor_price_monitor с историей, не инфоблоки |
| Алерты |
Telegram/email при отклонении цены конкурента более чем на X% |
| Автоправила |
«Держать цену на 3% ниже минимальной среди конкурентов, но не ниже себестоимости + 15%» |
Результат — дашборд: ваш товар vs конкуренты, история цен, тренды. Менеджер видит, где можно поднять цену без потери позиции, а где нужно реагировать.
Модуль импорта CSV/XML: настройка под ваш формат
Для файлов от поставщиков — кастомный модуль с админкой:
- Настраиваемый маппинг: «колонка B в файле → свойство BRAND инфоблока»
- Автодетект кодировки (CP1251, UTF-8, UTF-16) через
mb_detect_encoding() с проверкой
- Загрузка изображений по URL с очередью — чтобы не забить канал
- Инкрементальное обновление по хешу строки: изменилась строка — обновляем, нет — пропускаем
- Cron-расписание, отчёт: создано 145, обновлено 892, ошибок 3 (с деталями)
Большие файлы: CSV обрабатываем батчами по 1000 строк через fgetcsv(), XML потоково через XMLReader, фоновое выполнение через очередь агентов Битрикс — никаких PHP-таймаутов.
Правовая сторона — что важно учесть
-
robots.txt — уважаем. Crawl-delay — соблюдаем.
- Частота запросов — 1–2 в секунду, не больше. Не нужно DDoS-ить чужой сайт.
- Контент производителей — используем. Уникальные авторские тексты — не копируем.
- Персональные данные — не собираем.
Что входит в разработку парсера под ключ?
| Составляющая |
Описание |
| Прототип |
Парсер 1–2 источников за 2–3 дня для оценки качества данных |
| Основной парсер |
Полный сбор данных с одного источника (статический/динамический) |
| Модуль импорта в Битрикс |
Нормализация, загрузка, обновление, админка маппинга |
| Мониторинг цен |
Если требуется – система сбора и алертов (до 10 конкурентов) |
| Документация |
Описание архитектуры, инструкция по обновлению селекторов |
| Поддержка |
Гарантия 3 месяца на бесперебойную работу, правка при изменении вёрстки донора |
Как мы работаем и сроки
-
Прототип — парсер для 1–2 источников за 2–3 дня. Оцениваем качество данных, подводные камни (защита Cloudflare, капча, динамическая подгрузка).
-
Разработка — полный пайплайн: парсер → нормализация → импорт в Битрикс → админка для управления.
-
Тестирование — прогоняем на полном объёме каталога, проверяем edge-кейсы (пустые поля, кривой HTML, битые картинки).
-
Запуск — настраиваем cron, мониторинг ошибок через Telegram-бот.
-
Поддержка — конкурент переделал вёрстку? Обновляем CSS-селекторы в парсере.
| Задача |
Сроки |
| Парсер одного сайта (статический HTML) |
3–5 дней |
| Парсер SPA-сайта (Puppeteer/Playwright, обход защиты) |
1–2 недели |
| Модуль импорта CSV/XML в Битрикс |
1–2 недели |
| Система мониторинга цен (5–10 конкурентов) |
2–4 недели |
| Комплексная система автонаполнения |
4–8 недель |
| Поддержка и адаптация парсеров |
по подписке |
Свяжитесь для оценки вашего проекта — мы предложим оптимальное решение под ваш бюджет. Гарантируем стабильную работу парсеров и полную поддержку в течение всего срока использования.