Gravity: автопилот контента для производителя БАДов
Автопилот контента для БАД-бренда: экспертный уровень для нутрициологов и врачей, международные первоисточники, проверка медформулировок, публикация в ВК, TG, Instagram.
С чем пришли
Привет! Этот проект живёт в нише, где цена одного неудачного слова — не плохой пост, а нарушение требований регулятора. Мы собрали «Gravity» — систему, которая сама пишет и публикует контент для производителя БАДов и витаминов, где в каждом тексте нельзя ошибиться с формулировкой. Проект коммерческий, имя клиента не называем — но про подход расскажем подробно.
Клиент ведёт три площадки: ВКонтакте, Telegram, Instagram. Контент рассчитан на профессионалов — нутрициологов, диетологов, врачей частной практики и других специалистов, которые читают материалы придирчивым взглядом и сразу замечают общие слова, неточную формулировку или утверждение без фактической основы.
Отсюда принципиальная разница в требованиях к контенту. Потоковые посты «о здоровье вообще» — не тот формат. Нужен материал, который держит профессиональный уровень: опирается на реальные составы конкретных продуктов, строится на первоисточниках, точен в формулировках. Именно эта планка — не маркетинговая амбиция, а требование аудитории — определяет, почему «Gravity» устроена так дотошно: первоисточники вместо вторичных пересказов, реальный состав продукта вместо общих описаний, армия проверяющих агентов вместо одного «умного запроса».
Контент — продуктовые посты, новости о нутрициологии, акционные и образовательные материалы. Всё это нужно регулярно, в разных форматах под каждую площадку, и каждый раз — с проверкой на медицинские формулировки, которые в нише БАДов строго регулируются.
Реальная картина до запуска системы: копирайтер пишет текст, редактор убирает запрещённые слова («лечит», «гарантирует»), дизайнер делает картинку, SMM-менеджер планирует и публикует. Три-четыре человека на один пост. Умножить на три площадки, умножить на регулярность — и получается, что половина рабочего времени команды уходит на воспроизводство одного и того же процесса снова и снова.
Ключевая проблема была не в том, что «дорого». Проблема в том, что человек в этой цепочке мог ошибиться: пропустить запрещённую фразу, забыть адаптировать текст под Telegram, поставить картинку не того формата. И каждая такая ошибка — или ручной откат, или риск для репутации бренда.
Отдельная история — масштаб ассортимента. В каталоге клиента более пятисот наименований, и это не простые витаминки с одним-двумя компонентами. Сложные многосоставные формулы: у каждого продукта своя область применения, свои активные вещества, свои нюансы описания. Охватить качественным контентом весь этот ассортимент вручную — означает держать ещё нескольких людей только на создание продуктовых постов.
Что было сложно:
- Три площадки с разными требованиями к тексту и формату изображений — нужно писать отдельно под каждую, не копипастой
- Постоянная проверка на медицинские заявления: слова «лечит», «вылечит», «100% результат» недопустимы для БАДов, и проверить их нужно в каждом тексте перед публикацией
- Вписывать конкретный продукт из каталога в каждый пост — нативно, без ощущения рекламы, и делать это содержательно: через реальный состав и область применения, а не просто названием
- Поддерживать регулярность: если кто-то из команды занят или в отпуске, контент-план просаживался
Три человека, три дня, один пост — и всё равно кто-то мог пропустить «лечит хроническую усталость» в последнем абзаце.
Что сделали
Мы собрали «Gravity» — систему автоматического производства и публикации контента. Строили её не как универсальный генератор, которому можно скормить любую тему, — а под конкретную нишу с её требованиями: первоисточники вместо перефразирования, работа с реальными составами, проверка медицинских формулировок. Система не пытается всё делать одним «умным» запросом к нейросети. Вместо этого — цепочка узких специалистов: каждый отвечает ровно за свой шаг. Стратег думает о подаче, копирайтер пишет под площадку, отдельный агент вписывает продукт, цензор проверяет по чёткому списку правил. Технически каждый такой специалист — отдельный узел графа на LangGraph (это оркестратор агентов поверх Python и FastAPI): переходы между узлами заданы жёстко, поэтому пост идёт по конвейеру предсказуемо, а не зависит от того, что «решит» одна большая модель. ИИ занимается только тем, что нельзя сделать кодом — творчеством и пониманием смысла. Всё остальное — детерминированная логика без вариантов.
Откуда берётся контент — несколько независимых потоков
Контент в «Gravity» появляется из нескольких независимых источников, и каждый работает параллельно. Это не один «умный запрос», который пытается придумать всё сам, — это разные ветки с разным характером материала, которые дают системе и вариативность тем, и охват актуальных трендов.
Продуктовая карусель запускается сама по расписанию. Система берёт из каталога область здоровья — Сон, Энергия и Тонус, Иммунитет — и выбирает продукт, который ещё не выходил в ленту. По каждому продукту система вычитывает его реальный состав: активные вещества, концентрации, область применения. Эта фактура — не маркетинговое описание, а то, из чего реально сделан продукт, — уходит в основу исследовательского текста. Получается материал о физиологическом действии конкретных компонентов, не рекламная карточка. Каждый из более чем пятисот продуктов может стать героем отдельной статьи — с учётом своего состава и назначения, содержательно и по делу. Этот текст уходит на конвейер: стратегия → пост под платформу → проверка → картинка → публикация.
RSS-ленты международных первоисточников работают отдельным потоком. Система следит за авторитетными зарубежными изданиями по нутрициологии, превентивной медицине и науке о здоровье — материалы на языке оригинала, английском. Не русскоязычные агрегаторы, не чужие пересказы — первичные публикации. Система сама переводит и обрабатывает оригинальный текст. Когда появляется новая статья, она сначала проходит быструю словарную проверку кодом: нет нужных сигналов или есть нерелевантные — отклонить без вызова ИИ. Прошедшие статьи оценивает классификатор: подходит ли тематика бренду. Только статья, прошедшая оба барьера, попадает на конвейер и превращается в пост с нативно вписанным продуктом. Для аудитории нутрициологов, которые читают свежие исследования в оригинале, это не деталь реализации, а базовое требование к качеству материала.
Поиск актуальных трендов — это не фильтр входящего потока, а активная работа: система самостоятельно отслеживает, какие темы сейчас на подъёме в авторитетных источниках, какие исследования и обсуждения появляются, — и подхватывает тему, пока она актуальна. Материал берётся из тех же международных первоисточников — не из русскоязычного вторичного шума, который часто содержит ошибки или устаревшие данные.
Идеи руководителя — ещё один поток. Форма в дашборде: тема, тезисы, контекст — и платформа по желанию. Но это не просто «поле для идеи», а полноценный планер: можно задать дату, указать площадку или оставить выбор системе. Руководитель закидывает мероприятие, акцию, разовую тему — и пост выходит тогда, когда нужно. Сочетание автопотока и ручного планирования в одном месте.
Идея встаёт в очередь с паузой на сутки: в это окно её можно отредактировать или удалить. После паузы система «разворачивает» идею самостоятельно — подбирает нутрициологический контекст, интересные факты, угол подачи — и дальше тот же конвейер.
Единый каталог — один источник правды
Клиент вносит товары в Google Таблицу — в инструмент, которым пользуется каждый день. Таблица здесь не рабочее хранилище, а удобное окно ввода: данные из неё загружаются в централизованную базу каталога, которая и является общим источником для обоих приложений. Добавил позицию, изменил состав, уточнил описание — и через этот маршрут обновление попадает в единый каталог и сразу становится доступным и автоматизации маркетплейсов, и «Gravity». Никакого двойного ввода, никакого рассинхрона. Автоматизация маркетплейсов клиента — отдельное решение; здесь важно, что оба приложения работают из одной базы, а клиент управляет ею через привычный интерфейс.
Армия агентов — и ни одна ошибка не проходит насквозь
В нише БАДов цена ошибки в тексте — не просто «неудачный пост». Это репутационный риск и потенциальные юридические последствия: слово «лечит» или «100% гарантия» в контексте пищевой добавки — это нарушение требований регуляторов. Но почему нельзя просто попросить один мощный ИИ «быть аккуратнее»? Потому что просьба — не защита: ни один промпт с «пожалуйста, не пиши так» не даёт гарантии, что в последнем абзаце не проскочит запрещённая фраза.
«Gravity» построена на принципе, который прямо противоположен одному «умному» агенту: над каждым постом работает цепочка узких специалистов, и каждый из них занимается ровно одной задачей. Стратег определяет угол подачи. Копирайтер пишет текст под конкретную площадку. Отдельный агент подбирает и нативно вписывает продукт — ни до, ни после: только он и только это. Цензор проверяет по явному чек-листу.
Агенты передают работу друг другу, и если один находит проблему — текст возвращается на точечную правку, а не уходит дальше. Копирайтер не переписывает пост с нуля, а устраняет конкретное нарушение. После правки цензор перепроверяет. Если после исправления текст всё равно не прошёл — задача уходит в ручную очередь для просмотра оператором. Публикация без прохождения всей цепочки физически невозможна.
Результат: галлюцинация или ошибочное утверждение не доходит до публикации — его останавливает следующий агент в цепочке. Для медицинской ниши, где одно неточное слово — это риск, защита от ошибки встроена в саму структуру, а не добавлена поверх готового текста отдельным шагом.
Дисклеймеры и служебные блоки — за пределами «мозгов»
Вот деталь, которую хотим объяснить отдельно. Юридический дисклеймер и ссылка на магазин добавляются кодом после того, как цензор одобрил текст. Хэштеги для Instagram — тоже кодом. Ни один агент не видит ни дисклеймер, ни ссылку, ни хэштеги: это не промпт, это жёсткая постобработка.
Мы сделали это намеренно: чем меньше служебной нагрузки агент несёт во время работы, тем точнее он работает с тем, для чего создан. Агент занят только смыслом и текстом, не отвлекается на формальности — а формальности проставляет код без вариантов. Меньше пространства для «творчества» там, где оно не нужно. Меньше шансов, что юридическая фраза окажется переформулирована или выдана в другом виде. В медицинской нише, где стандартный дисклеймер должен выходить одинаково в каждом посте без исключений, это особенно важно.
Ручной контроль, когда он нужен
По умолчанию «Gravity» работает на полном автопилоте: пост проходит всю цепочку и публикуется без участия человека. Но контроль остаётся за руководителем — если он хочет его включить.
В разделе «Пайплайн» любой готовый пост можно открыть до публикации: текст и изображение целиком. Прямо в этом окне пост можно перегенерировать с комментарием о том, что поправить, или удалить, если материал не подходит. При перегенерации система переписывает текст, изображение остаётся. Это не отдельный «режим проверки» со своими настройками — это просто дашборд, который не скрывает ничего от тех, кто хочет смотреть.
Итог: система сама решает и публикует, но руководитель в любой момент может зайти в дашборд, открыть готовый пост и вмешаться до того, как он уйдёт в ленту.
Карусель платформ и настройки ритма
ВКонтакте, Telegram, Instagram — три площадки, три формата текста, три соотношения сторон изображения. В «Gravity» карусель платформ работает автоматически: каждая следующая задача идёт на следующую платформу по кругу.
Текст под каждую площадку пишется отдельно: Telegram — форматированный, с разбивкой; ВКонтакте — чуть плотнее; Instagram — короче, с хэштегами. Хэштеги добавляются кодом в момент подготовки пакета — не ИИ их придумывает, а система.
В разделе «Настройки» дашборда руководитель настраивает ритм под каждую площадку: минимальный интервал между публикациями, включение и отключение отдельных платформ — без перезапуска системы. Это позволяет держать нужный темп: не слишком часто, чтобы не казаться спамом, и не слишком редко, чтобы алгоритмы площадок не «забывали» аккаунт.
Если публикация на одной платформе зависла — её можно откатить прямо из дашборда. Кнопка сбрасывает статус и снимает паузу, чтобы следующая задача могла пойти немедленно.
Мультипользовательский режим и инструкции
Дашборд работает в многопользовательском режиме: в разделе «Настройки» руководитель добавляет сотрудников, меняет пароли, управляет доступом. Несколько человек могут работать в системе одновременно — каждый видит одно состояние очереди и пайплайна. Предусмотрено развитие с разграничением прав: кто может только просматривать, кто может запускать пересоздание задач, кто управляет настройками.
Для входа в работу с системой в дашборде есть раздел инструкций — всё необходимое рядом: как добавить идею, что означают статусы задач, как читать дашборд. По мере роста команды раздел обогащается, в том числе под введение новых сотрудников.
Картинка с заголовком — без отдельного дизайнера
Картинки генерирует Riverflow V2 Pro — модель, которую мы выбрали ровно за одно свойство: она умеет рендерить кириллицу прямо внутри изображения. Работает она в связке с текстовым конвейером: стратег одновременно с темой поста задаёт текст для наложения на картинку, цветовую схему и тип природных объектов на фото. Это не «красивая картинка к посту» — это часть маркетингового сообщения. Кириллический заголовок рендерится прямо внутри изображения: промежуточного шага с отдельной программой наложения текста нет — раньше для этого пришлось бы городить отдельный модуль, а тут модель закрывает задачу сама.
На изображениях — природные объекты и фон, соответствующий теме здоровья. Упаковки с логотипами бренда система не генерирует: это осознанное редакционное правило, зашитое в промпт генерации.
Как это устроено: путь поста
- Материал попадает в очередь — через каталог продуктов, RSS или форму идей
- Стратег определяет целевую аудиторию и угол подачи, придумывает заголовок от «боли», а не от названия продукта
- Копирайтер пишет текст под конкретную платформу — с нужной длиной, структурой, форматированием
- Агент подбирает продукт из каталога по теме и нативно вписывает его торговое название в текст
- Цензор проверяет по чёткому списку правил: блокирует при нарушении или одобряет
- Если нарушение найдено — копирайтер вносит точечные правки, цензор перепроверяет
- После одобрения код добавляет дисклеймер и ссылку — агенты этот шаг не видят
- Нейросеть генерирует изображение с кириллическим заголовком
- Готовый пост (текст + картинка) уходит в планировщик и публикуется на нужной площадке
Что изменилось
Контент-план работает без SMM-менеджера в ежедневном контуре. Руководитель заходит в дашборд, чтобы посмотреть на готовые посты или добавить идею — не чтобы контролировать цепочку исполнителей.
Продуктовые посты выходят в автоматическом режиме: каталог крутится по карусели областей здоровья, каждая область — свой продукт, каждый продукт — только раз. Система не повторяется: перед тем как стратег задаёт угол подачи, он видит заголовки последних нескольких постов этой площадки и получает явный запрет их воспроизводить. Дедупликация без участия оператора. При этом сам каталог клиент не переносит в отдельный интерфейс — он вносит товары в Google Таблицу, как и вносил. Данные оттуда загружаются в единую базу каталога, из которой работают и «Gravity», и маркетплейсы: клиент ввёл один раз — актуальный товар доступен обоим приложениям.
Редполитика соблюдается не потому что «редактор всё перечитал», а потому что правила зашиты в систему и работают без исключений. Пост с запрещённой формулировкой физически не попадёт в публикацию — цензор его не пропустит. Дисклеймеры и ссылки добавляются кодом в неизменном виде — система не может их «переформулировать» или «забыть».
Если что-то пошло не так — дашборд покажет это раньше, чем руководитель заметит сам: мониторинг проверяет все зависимости каждые полчаса и присылает алерт в Telegram при любом пороговом событии. Ежедневный дайджест в утреннее время — сводка по всем платформам за сутки.
Эксплуатация системы обходится в пятнадцать–двадцать долларов в месяц — и это полная сумма: аренда сервера плюс все обращения к ИИ-моделям. Больше никаких отдельных счетов. Это прямое следствие архитектуры: ИИ занят только там, где без него нельзя — творчество и понимание смысла. Вся рутина, все проверки, вся внутренняя логистика — это код без обращений к платным «мозгам». Экономим и на самих моделях: дешёвая Claude Haiku отвечает за классификацию и фильтрацию тем, а более сильная (и более дорогая) Claude Sonnet — только за творческие шаги: стратегию, копирайтинг, цензуру. Все обращения идут через OpenRouter — это агрегатор, который даёт доступ к разным моделям через один ключ, без отдельных договоров с каждым поставщиком. Меньше обращений к ИИ и правильная модель под каждую задачу — меньше счетов за его работу. При этом система работает практически ежедневно: с учётом трёх площадок суммарно выходит почти один пост каждый день. Это не дорогая игрушка с постоянным счётом за искусственный интеллект, а рабочий инструмент, который окупает себя ценой одного обеда.
Расположение на собственном сервере клиента — это ещё и вопрос контроля. Технически вся система живёт в Docker-контейнерах под управлением Dokploy прямо на сервере клиента: основная база на PostgreSQL, каталог продуктов в векторной базе Qdrant, изображения — в собственном хранилище MinIO. Всё в одном контуре. Весь каталог продуктов, весь контент, ключи доступа к соцсетям, история публикаций — всё остаётся у клиента и никуда не уходит. Никакого стороннего облака, никакого агрегатора, которому отданы доступы к аккаунтам. Обращения к внешним ИИ-сервисам тоже идут из его контура — под его управлением, без посредников. Для бизнеса, который не готов класть данные и доступы в чужие руки, это принципиальная часть архитектуры, а не бонус.
Каждый элемент «Gravity» — работа с составами, международные первоисточники, многоуровневый цензор — появился не потому что «так принято строить автоматизацию». Мы добавляли их потому, что ниша требовала. И именно поэтому система работает: она не пытается быть универсальной.
Система не устаёт, не уходит в отпуск и не пропускает «лечит хроническую усталость» в последнем абзаце.
Задел на будущее
«Gravity» — первый этап, и архитектура спроектирована так, чтобы следующие шаги встраивались в готовую основу без переделки. Сама публикация вынесена во внешний роутер на n8n — поэтому новую площадку подключаем как отдельную ветку в нём, не переписывая основное приложение. Дальше — видеоформаты и новые площадки, а к каждому упоминанию продукта добавится прямая ссылка на карточку товара: система уже знает, какой продукт вписан в текст, — следующий шаг подтянуть, где он лежит на маркетплейсе или в каталоге.
После этого — аналитика: охват, переходы, вовлечённость, а со временем и интеграция с рекламными платформами. Органика покажет, какие темы и форматы работают сами по себе, рекламная аналитика — что окупается при платном продвижении. Стратегия начнёт корректироваться не по ощущениям, а по тому, что читатели реально открывают, на что кликают и какая реклама даёт отдачу.
Та же архитектура — другие ниши
«Gravity» заточена под одну нишу, и именно поэтому работает. Но сама архитектура — узкие агенты с чёткими зонами ответственности, контроль на каждом стыке, первоисточники вместо вторичного шума, служебные блоки вынесены в код — не является собственностью нутрициологии. Она переносится на любую нишу, где у контента есть своя редполитика, свои требования к точности и свой каталог: юридические услуги, медицинские клиники, финансовые советники, производители косметики. Меняются правила, источники и список продуктов — но каркас, который мы заложили, остаётся тем же.