Автоматическая генерация контента: пайплайн от данных до публикации

ИнструментыИгорь Мельник12 мин чтения
Автоматическая генерация контента: пайплайн от данных до публикации

Автоматическая генерация контента в этом материале означает ровно одно: сотни однотипных текстов собираются из структурированных данных по шаблону, прогоняются через языковую модель и уезжают в CMS без того, чтобы человек писал каждый из них руками. Это не работа в чате и не редакция с ролями, а пайплайн из пяти звеньев: источник данных, шаблон, модель, проверки, шлюз перед публикацией.

Окупается он на одном условии: единиц много и они однотипны. Тысяча карточек товара, четыреста страниц филиалов. Если материалов меньше сотни или каждый уникален по смыслу, машина проиграет человеку по всем статьям, включая скорость.

Источник данных: выгрузка, YML-фид, таблица филиалов

Пайплайн начинается не с промпта, а с ответа на вопрос, откуда берётся вход: выгрузка номенклатуры, товарный фид, уже сделанный для рекламы, или таблица объектов с атрибутами. Удобнее всего YML-фид, потому что он уже существует и обновляется. По требованиям Яндекс Директа к YML корневой элемент один, yml_catalog, а его атрибут date обязан нести дату и время генерации файла в формате YYYY-MM-DD hh:mm. Предложения лежат в offers, каждое отдельным элементом offer. Для генерации важны поля и их ограничения:

  • id обязателен и уникален, до 100 знаков. Это ключ, по которому пайплайн сопоставляет строку с уже созданной страницей.
  • categoryId обязателен, целое до 18 знаков, у предложения он ровно один. url обязателен, до 2048 символов.
  • Название передаётся либо элементом name, либо тройкой typePrefix, vendor, model, если у оффера выставлен атрибут type со значением vendor.model. Нет vendor и model у такого оффера, и робот его игнорирует.
  • description необязателен. Ключевой факт для планирования: у части позиций описания в фиде просто нет, и эту дыру пайплайн и закрывает.
  • Характеристики передаются элементами param и property name, последних до 10 на предложение.

Отсюда первое правило: инвентаризация полей делается до написания промпта. Пока не посчитано, у скольких строк заполнены бренд, категория и характеристики, объём генерации не спрогнозировать.

Проверка за минуту: подойдёт ли вашим данным пайплайн

Проверьте по своей выгрузке: единиц больше 300, у 90 процентов строк заполнены все поля шаблона, есть уникальный ключ на строку, у CMS есть API на запись, есть человек, который подпишет выборку. Пять «да» означают, что задача решается пайплайном, три и меньше, что дешевле написать руками.

Обсудить задачу

Разработка контента сайта: что отдают машине, а что нет

Разработка контента сайта на потоке имеет смысл только для сущностей с повторяющейся структурой и объективным источником фактов.

Сущность Что генерируется Источник фактов
Карточка товара Описание, расшифровка характеристик прозой param и property name из фида
Страница филиала Абзац про адрес, режим, как добраться Таблица филиалов, поля адреса и часов
Страница категории Вводный абзац и подсказка по выбору Состав категории, диапазон цен из фида
Метатеги title и description по формуле из полей name или связка vendor и model
Вопросы и ответы 3-5 пар по типовым возражениям категории Регламент компании, а не выдумка модели

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

Шаблон: обязательные поля и строки, где данных нет

Шаблон это не «красивый промпт», а контракт из трёх частей.

  1. Обязательные слоты. Поля, без которых строка не идёт в генерацию: категория, название или связка бренд плюс модель, минимум одна характеристика. Строка без такого слота падает не в модель, а в отчёт об ошибках выгрузки.
  2. Опциональные слоты. На каждое пишется отдельная ветка: цвет не передан, абзац про цвет не генерируется. Ветка «если поля нет, придумай» запрещена, это путь к выдуманному факту сразу в тысяче карточек.
  3. Запреты. Список того, чего в тексте быть не должно: обещания вроде бесплатной доставки, ссылки на магазин, упоминания конкурентов и аксессуаров. Те же формулировки запрещены и в самом элементе description фида по требованиям Директа.

Следствие: доля строк с полным набором обязательных слотов и есть верхняя граница первого запуска. Если из 4000 позиций категория и бренд заполнены у 2600, генерируется 2600, а остальные уходят в задачу на дозаполнение справочника.

Модель и лимиты API: цена тысячи токенов и пропускная способность

Объём ограничивают цена за тысячу токенов и квота на число запросов. Yandex AI Studio тарифицирует генерацию по тысячам токенов, отдельно входящих и исходящих, цены с НДС. В синхронном режиме YandexGPT Lite стоит 0,2 рубля за 1000 токенов, YandexGPT Pro 5.1 стоит 0,8 рубля за 1000 входящих. Асинхронный режим примерно вдвое дешевле: Lite 0,1 рубля, Pro 5.1 составляет 0,41 рубля. У пакетного режима задана минимальная стоимость запуска в 200 000 токенов.

GigaChat при оплате по факту стоит 0,065 рубля за 1000 токенов на модели Lite, 0,5 рубля на Pro и 0,65 рубля на Max, с НДС. Действует минимальный платёж: в месяце, когда сервисом не пользовались, плата не берётся, а если суммарный объём операций вышел меньше 600 рублей, спишется 600. Один токен в среднем состоит из 3-4 символов, точное число считается запросом POST /tokens/count.

Квоты важнее цены, потому что задают срок прогона. У Yandex AI Studio по умолчанию доступно 10 одновременных генераций в синхронном режиме, в асинхронном 10 запросов в секунду и 5000 в час, пакетный режим ограничен 10 запусками в час и 100 в сутки. У GigaChat физлицу доступен один поток, юрлицу и ИП по умолчанию 10. Отсюда срок: тысяча карточек упирается не в модель, а в часовую квоту, то есть проходит примерно за 12 минут. Результаты асинхронных запросов хранятся на сервере 3 суток.

Написать текст нейросетью бесплатно: почему бесплатный доступ не держит поток

Запрос «написать текст нейросеть бесплатно» уместен ровно на одном шаге: обкатать шаблон на 20-30 строках и понять, что модель делает с вашими полями. Дальше он упирается в три стены.

  • Нет API, нет пайплайна. Веб-интерфейс без программного доступа в цепочку не встраивается: строки придётся носить руками.
  • Один поток. Физическому лицу в GigaChat API доступен один поток независимо от того, платные это токены или freemium. Десять потоков открываются юрлицам и ИП.
  • Пороги входа у дешёвых режимов. Пакетный режим Yandex AI Studio стартует от 200 000 токенов за запуск, а GigaChat спишет минимум 600 рублей за месяц, в котором вы генерировали.

Дедупликация: как не выпустить пятьсот почти одинаковых текстов

Главная проблема массовой генерации не в качестве отдельного текста, а в том, что пятьсот текстов по одному шаблону получаются похожими друг на друга. Ловится это двумя слоями.

Дешёвый слой, правилами. Совпадение первых 10-15 слов между текстами, доля общих последовательностей из 4-5 слов (шинглов), повтор одной вводной фразы более чем в 5 процентах партии. Стоят такие проверки ноль и отсекают одинаковые зачины и хвосты.

Точный слой, векторами. Текст переводится в эмбеддинг, считается косинусная близость внутри партии, пары выше порога уходят на перегенерацию с другой веткой шаблона. В Yandex AI Studio векторизация стоит 0,0101 рубля за 1000 токенов, на вход до 2048 токенов, размерность вектора 256, квота 10 запросов в секунду. В GigaChat эндпоинт POST /embedding стоит 0,014 рубля за 1000 токенов.

Порог близости не берётся из чужой статьи: он подбирается на своей выборке из 50-100 пар, размеченных вручную как «допустимо похожи» и «дубль». У карточек одной серии нормальная близость выше, чем у страниц разных филиалов. Есть и машинная проверка на признаки ИИ-текста: у GigaChat это эндпоинт POST /ai-check по цене 0,5 рубля за 1000 токенов.

Автопроверки и ручной шлюз перед публикацией

Между моделью и CMS всегда стоит шлюз: машинные правила на каждой единице и приёмка человеком на выборке. Правила, которые окупаются первыми:

  • Длина текста в заданном коридоре, иначе строка в брак.
  • Присутствие подстрок из источника: артикул, бренд, модель. Потеряла их модель, значит текст не про этот товар.
  • Сверка чисел: любое число в тексте обязано встречаться в полях строки. Число, которого нет в источнике, это выдуманный факт.
  • Стоп-слова: обещания доставки, скидок, гарантий и сроков, если те не приходят отдельным полем.
  • Дубли по правилам и векторам из предыдущего раздела.

Приёмка устроена как выборка с правилом отказа: берётся фиксированная доля партии, например 50 текстов из 1000, и если брака больше оговорённого числа, партия возвращается на переделку шаблона, а не правится поштучно. Иначе пайплайн вырождается в ручную работу с лишним звеном.

Когда объём перестаёт быть однотипным и каждая единица требует своей мысли, пайплайн заканчивается: нужен редакционный конвейер с ролями и ритмом выпуска. Как он устроен, разобрано в материале про создание контента с ИИ-креатором.

Соберём пайплайн под вашу выгрузку

Разбираем поля источника, пишем шаблон с ветками и запретами, ставим автопроверки и шлюз, подключаем публикацию в вашу CMS. На выходе воспроизводимый прогон, а не разовая партия текстов.

Обсудить задачу

Автопубликация через API CMS и очередь на модерацию

На WordPress последнее звено это REST API: запись создаётся запросом POST на /wp-json/wp/v2/posts, допустимые значения поля status ограничены списком publish, future, draft, pending, private. Правило пайплайна: он никогда не ставит publish сам. Машина кладёт материал в очередь на модерацию статусом draft или pending, а перевод в publish делает человек после приёмки выборки.

  • Доступ. Application Passwords поставляются с WordPress начиная с версии 5.6, передаются схемой Basic Auth по стандарту RFC 7617 и требуют HTTPS. Пароль администратора в скрипт не кладут.
  • Идемпотентность. Внешний ключ строки (тот самый id из фида) сохраняется в мета-поле записи. Повторный прогон обязан находить запись по нему и обновлять, иначе второй запуск удвоит каталог.
  • Пагинация при сверке. Параметр per_page ограничен сотней записей за запрос, общее число отдаётся заголовками X-WP-Total и X-WP-TotalPages.

Что поисковые системы считают малополезным контентом

Яндекс держит в Вебмастере отдельный вид нарушения «Малополезный контент»: информация, которая не несёт дополнительную ценность пользователю и не решает его задачу. Среди признаков прямо назван пункт «Текст выглядит как автоматически сгенерированный или не несёт дополнительной ценности»: такой контент нередко создаётся нейросетями или шаблонными подстановками ключевых слов без анализа и редактуры, и текст при этом формально может быть оригинальным и всё равно оставаться малополезным. Дальше идёт список: отклонение от темы, циклические повторы, предложения ради объёма, отсутствие практической пользы, подача вымышленных фактов как достоверных. Отдельно названы автоматически сгенерированные каталоги с неработающими категориями и фильтрами.

Цена ошибки измеряется в календаре: ограничение может действовать и на весь сайт, и на отдельные разделы, срок перепроверки после исправления до 30 дней, а повторно сообщить об устранении можно только через 30 дней с момента отправки. У Google это политика Scaled content abuse: создание множества страниц с основной целью повлиять на ранжирование, а не помочь пользователю, причём способ создания значения не имеет.

Вывод для шаблона: ценностью такой страницы считается не текст, а данные. Полный набор характеристик, актуальная цена и наличие, работающие фильтры, честное описание того, чем позиция отличается от соседней. Абзац прозы поверх пустой таблицы характеристик проблему не решает.

Нейросеть для создания видео: почему её не ставят в тот же конвейер

Запрос «нейросеть для создания видео» в контексте пайплайна возникает регулярно, и ответ чаще всего отрицательный. Дело не в качестве моделей, а в трёх свойствах, которые ломают автоматическую цепочку.

  • Нет дешёвой автопроверки. Текст проверяется правилами за доли копейки: длина, подстроки, числа, дубли. Для ролика эквивалента нет, и шлюз становится ручным на каждой единице, а не на выборке.
  • Другой порядок цены. Одна генерация изображения в Yandex AI Studio тарифицируется как 2,23 рубля за запрос, тогда как текст карточки на YandexGPT Lite в асинхронном режиме обходится примерно в 0,11 рубля: картинка стоит как двадцать текстов. Ролик собирается из кадров, и в прайс-листе AI Studio генерации видео нет вообще, её берут в отдельном сервисе с отдельным счётом.
  • Операционные ограничения. Промпт на генерацию изображения ограничен 500 символами, результат хранится 12 часов, квоты составляют 500 запросов в минуту и 5000 в сутки. В товарном фиде видео тоже отдельная сущность: формат MP4, до 45 секунд, одно на товар.

Рабочая схема иная: видео идёт отдельной очередью с приёмкой каждой единицы, а в пайплайн из данных попадает только ссылка на принятый ролик.

Экономика: расчёт пайплайна на 1000 карточек

Допущения: 700 входящих токенов на строку, ответ около 400 токенов, что при 3-4 символах на токен даёт текст примерно на 1400 знаков. Итого 1,1 млн токенов на партию.

Статья Тариф На 1000 карточек
Генерация, YandexGPT Lite, асинхронно 0,1 руб. за 1000 токенов около 110 руб.
Генерация, YandexGPT Pro 5.1, асинхронно 0,41 руб. за 1000 токенов около 451 руб.
Генерация, GigaChat Lite, по факту 0,065 руб. за 1000 токенов около 72 руб., но не меньше 600 руб. за месяц
Векторизация для дедупликации 0,0101 руб. за 1000 токенов около 4 руб. на 400 тыс. токенов

Правая колонка получена умножением тарифа на объём токенов. Смысл таблицы не в экономии на токенах: сама генерация оказывается самой дешёвой строкой сметы. Основные затраты в другом: дозаполнение полей источника, разработка шаблона с ветками, настройка автопроверок и время человека на приёмку.

Частые вопросы

С какого объёма пайплайн выгоднее ручной работы

От нескольких сотен однотипных единиц с общим набором полей. На 50 карточках разработка шаблона, автопроверок и шлюза не окупится: сама генерация тысячи описаний стоит около 110 рублей на YandexGPT Lite в асинхронном режиме, а деньги уходят на работу с данными и шаблоном.

Обязательно ли человеку смотреть каждый текст

Нет, приёмка идёт выборкой с правилом отказа: например 50 текстов из 1000, и при превышении порога брака партия возвращается целиком. Но публиковать напрямую нельзя: пайплайн создаёт записи со статусом draft или pending.

Как быстро можно сгенерировать тысячу текстов

Ограничение задают квоты, а не модель. В асинхронном режиме Yandex AI Studio доступно 10 запросов в секунду и 5000 в час, то есть тысяча строк проходит примерно за 12 минут. Результаты хранятся на сервере 3 суток.

Попадёт ли сайт под фильтр за машинные тексты

Риск реален. У Яндекса это нарушение «Малополезный контент», среди признаков которого прямо назван текст, который выглядит как автоматически сгенерированный и не несёт дополнительной ценности. Срок перепроверки после исправления до 30 дней. У Google аналог называется Scaled content abuse.

Как не получить сотни почти одинаковых описаний

Двумя слоями: правилами по совпадению зачинов и общих шинглов, затем векторами. Векторизация в Yandex AI Studio стоит 0,0101 рубля за 1000 токенов при входе до 2048 токенов и размерности вектора 256. Порог косинусной близости подбирается на своей размеченной выборке.

Поделиться:

About Author: Игорь Мельник

nu_editor_melnik@neurounit.ai

Редактор Neurounit. Пишет про автоматизацию, разработку и внедрение AI в процессы.

Neurounit

Запустить рост с AI

Оставьте заявку или напишите в мессенджер