Автонаповнення контенту за допомогою нейромереж для 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 хвилин і коштує приблизно 3 долари. AI обробляє 100 описів на хвилину при середній вартості 0,03 долара за опис. Ось порівняння методів:
| Метод |
Швидкість |
Якість |
Вартість |
| Ручне написання |
1 опис/15 хв |
Висока |
~3 дол./опис |
| Шаблонна генерація |
1000 описів/хв |
Низька |
Мінімальна |
| AI-генерація (наш підхід) |
100 описів/хв |
Середня–висока |
0,01–0,05 дол./опис |
AI-генерація виграє за співвідношенням ціна-якість. Ви отримуєте унікальний контент за ціною, близькою до шаблонного. Наприклад, один опис обійдеться від 0,01 до 0,05 долара залежно від моделі. Це в 30 разів дешевше за ручне написання. Крім того, AI-генерація швидша в 50 разів (100 описів за хвилину проти 1 опису за 15 хвилин).
Що входить у роботу
- Розробка та інтеграція API-клієнта під вашу AI-модель (OpenAI, Anthropic, YandexGPT). Досвід роботи з різними провайдерами гарантує сумісність. Наша команда має понад 5 років досвіду з Бітрікс та реалізувала більше 50 AI-проектів.
- Створення бібліотеки промптів для кожного типу контенту. Сертифіковані спеціалісти Бітрікс налаштовують промпти з урахуванням вашої ніші.
- Побудова системи черг з rate limiter та контроль якості. Вбудовані гарантії: перезапуск збійних запитів, логування помилок.
- Адміністративний інтерфейс для моніторингу статистики та витрат.
- Документація та навчання команди.
- Підтримка після запуску: два тижні ітерацій над промптами.
Середня вартість впровадження становить 2000–4000 доларів залежно від складності каталогу.
Таймлайн
| Етап |
Термін |
| Інтеграція з AI API, rate limiter |
1–2 дні |
| Розробка промптів за категоріями (ітеративно) |
2–3 дні |
| Система черг, воркери |
1–2 дні |
| Контроль якості, модерація |
1–2 дні |
| Адміністративний інтерфейс, статистика витрат |
1 день |
Разом: 6–10 робочих днів. Ітерації над промптами тривають ще 1–2 тижні після запуску.
Як відбувається впровадження: покрокова інструкція
- Налаштування API-клієнта — підключаємо вашу AI-модель.
-
Створення промптів — розробляємо бібліотеку під ваші категорії товарів.
-
Запуск черги — генеруємо контент з rate limiting.
- Контроль якості — автоматичні фільтри та модерація.
- Ітерації — два тижні налаштування стилю.
Щоб отримати консультацію щодо вашого проєкту — зв'яжіться з нами
Оцінимо каталог, підберемо модель та розрахуємо терміни. Результат — готовий конвеєр автогенерації контенту у вашому Бітрікс. Замовте демонстрацію роботи системи на ваших даних.
З чого почати розробку парсера для 1С-Бітрікс?
XMLReader, а не SimpleXML — вибір інструмента визначає долю проекту. SimpleXML завантажує весь XML у пам’ять, і при файлі постачальника на 800 МБ PHP впаде з fatal error на ліміті 512 МБ. XMLReader обробляє потоково, node за node, споживаючи 20–30 МБ — в 30 разів ефективніше. З цієї деталі стартує будь-яка розробка парсерів під Бітрікс. Ми робимо такі системи вже понад 10 років, реалізували 50+ проектів, і жоден не обходиться без правильного вибору парсера.
Проблеми, які вирішує парсинг
- Первинне наповнення каталогу — 15 000 карток з описами, характеристиками, фото. Вручну це три місяці контент-менеджера; парсер — тиждень з налагодженням. Економія часу — до 90%.
- Моніторинг цін конкурентів — збір даних з Ozon, Wildberries, сайтів конкурентів. Конкурент знизив ціну на ходову позицію — дізнаєтеся через дві години, а не через два тижні. Окупається за 2–3 місяці.
- Агрегація постачальників — п’ять прайсів у різних форматах (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 з чергою агентів Bitrix — щоб не забити канал
- Інкрементальне оновлення за хешем рядка: змінився рядок — оновлюємо, ні — пропускаємо
- 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 тижнів |
| Підтримка та адаптація парсерів |
за підпискою |
Отримайте консультацію: розкажіть про своє джерело даних — ми підберемо оптимальний підхід. Зв’яжіться для оцінки вашого проекту — запропонуємо рішення під ваш бюджет. Гарантуємо стабільну роботу парсерів і повну підтримку.