Кейс: «Бот-маркетолог на Python — как я победил гигантские промты и тарифы на токены»

Если интересно, ниже указан канал с аудиоотзывом от заказчика о разработке данного проекта.

Введение

Люблю и умею решать маркетинговые задачи — от разработки простого приветственного бота до создания масштабных клубных систем с рекуррентной оплатой. Но в этот раз ко мне пришли с настоящим «монстром» маркетинга: чат-ботом на базе искусственного интеллекта, который должен был решать самые сложные задачи для предпринимателей. От генерации продающих текстов и контент-планов до отправки индивидуальных напоминаний по всем пользователям.

Сразу скажу, что это не было стандартной «собачкой, которая говорит “Привет, я бот!”». Это был целый «дипломированный ассистент-маркетолог» c собственной админ-панелью, интеграцией платежей и библиотекой из 75 000+ символов промтов, которые казалось вот-вот превратятся в Википедию по маркетингу.

Обращение клиента

Клиент, девушка маркетолог в паре со свое сотрудницей, пришли с почти чётким запросом:

  • «Хочу, чтобы все рутинные маркетинг-задачи решались одним ботом. Чтобы он умел вести учёт подписчиков, подключать реферальную программу, хранить тысячи промтов и не сжигал мне всю кассу на OpenAI-токены за счёт огромного количества материала которым необходимо обучить бота».

Уже на этом этапе я насторожился:

  • Тысячи промтов — нужно продумать структуру хранения и механизмы быстрого поиска.
  • Интеграция с платёжными системами (YooMoney или YooKassa карты банков РФ, автопродление подписки).
  • Экономия токенов — ведь плата за OpenAI может «съесть» весь бюджет и оставить клиента без средств на кофе.

Как говорится, «Вызов принят!».

Проблемы и вызовы

  • Гигантские промты:
  • Когда я подумал о «модульном разделении» на 25 подкатегорий и файлы с промтами на 75 000+ символов, стало ясно, что GPT будет «жевать» много текста и это нужно реализовывать как глобальный вопрос. На первой итерации бот «проглотил» 60 000 токенов за раз и поглотил бы все деньги API кабинета, если бы не оперативное вмешательство.
  • Высокая стоимость токенов:
  • OpenAI-токены в больших объёмах больно били по кошельку клиента. Нужно было оптимизировать промты, не теряя их смысла и структуры.
  • Шахматы с подписками:
  • Отслеживание подписчиков (триал, платная подписка, без подписки).
  • Автоматическое продление.
  • Реферальная программа с бонусными запросами.
  • Отслеживание истечения подписки и удобные напоминания.
  • Разрозненность данных:
  • У клиента были тонны маркетинговых наработок — тексты, видео, чек-листы, гайды. Всё это хранилось в разных местах: Google Документы, Excel-таблицы, тетрадка на коленке. Надо было систематизировать в одном решении.
  • Платежи:
  • Требовалось подключить полный цикл обработки платежей через Flask: получение уведомления, проверка суммы, обновление подписки и рассылка уведомлений о платеже как покупателю так и администраторам.

Предпринятые решения

1. Сжатие и оптимизация промтов

  • Мы разработали «Модуль экономии токенов» об этом модуле читайте чуть ниже. В основе лежит идея, что длинный промт передаётся не целиком, а выборочно, под конкретную задачу.
  • Промты разбили на блоки по 2–3 тысячи символов. Если пользователю нужен блок «Продажи через соцсети», бот подгружает только нужный модуль, а не сразу весь гигантский текст.

В результате расход токенов снизился с 60 000 до 5 000 за один полноценный маркетинговый запрос.

Дополнение: Как модуль gpt_module_prompts.py экономит токены

При создании «Модуля экономии токенов» мы столкнулись с задачей: Как не передавать в GPT всю гигантскую простыню текста? Нужно было разбить исходные «промты-монстры» на логические блоки, чтобы при запросе к OpenAI-API загружать только нужные фрагменты, а не весь текст за раз.

Наше решение — gpt_module_prompts.py. Вот, как оно работает и чем помогает:

Пошаговое выделение смысловых частей

В файле есть функция split_prompt_to_structure, которая проходит по списку «секции» (introduction, instructions, reasoning, question_blocks, final_instructions).

Для каждой секции формируется отдельный запрос к GPT — но только по нужному контенту (тот же текст, но с конкретной задачей: «извлечь вопросы», «сформировать рекомендации» и т. д.).

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

Сегментация и гибкое взаимодействие

generate_prompt_for_section — эта функция «умно» формирует задачу для GPT, в зависимости от нужной секции. Например, для question_blocks бот фокусируется только на вопросах и не тратит токены на всю сопутствующую информацию.

Таким образом, если вам нужны только «финальные инструкции», вы запрашиваете их из GPT отдельно, без заголовков, без «всего текста целиком» и дополнительных блоков.

Перезапись и кэширование

Файл умеет проверять, была ли изменена исходная версия промта (.txt). Если да, то заново генерирует структуру (.json). Иначе использует уже готовые структурированные данные, без лишних обращений к GPT.

Это особенно важно, когда промт стабилен и его не нужно каждый раз «тянуть» целиком из OpenAI — мы экономим не только деньги, но и время на API-запросах.

Сжатие и хранение

Фактически, в итоговом .json каждое поле уже «подготовлено» GPT и не требует повторной обработки в будущем. При последующих обращениях, если эти данные не поменялись, мы можем просто подгружать нужный блок.

С точки зрения расхода токенов это огромная выгода — мы «разложили» текст на мини-«пакетики» и обращаемся к ним по мере надобности.

Гибкость для кастомных задач

Вы можете добавлять или убирать секции, в зависимости от того, какие части промта вам нужны (например, под «SMM», «SEO», «E-mail маркетинг» и т. п.). Код легко адаптировать под любые форматы.

Если GPT-модель попросили подготовить «отдельные блоки» (например, «что нужно сделать» и «чего делать не нужно»), функция generate_prompt_for_section формирует именно такие структурированные указания. Никакой траты токенов на дополнительные вступления и разглагольствования.

Итоговая польза

Сокращение расходов: Выгоднее отправлять несколько коротких запросов, чем один гигантский.

Ускорение ответа: GPT быстрее обрабатывает небольшие блоки.

Чистота структуры: Вы получаете готовые к использованию данные (JSON), пригодные для хранения, редактирования или дальнейшей автоматизации.

Легкость обновления: Изменили исходный .txt — модуль автоматически перегенерирует структуру и всё остаётся синхронизированным.

Таким образом, gpt_module_prompts.py — это не просто «скрипт-разделитель», а полноценный инструмент, позволяющий правильно «порезать» огромные маркетинговые промты, сэкономить токены и при этом не потерять контекст и смысл каждого отдельного блока. Именно он стал решающим фактором, позволившим урезать затраты с 60 000 до 5 000 токенов при работе с действительно большими объёмами текстов.

2. Библиотека промтов с чётким модульным разделением

  • Сделал 25 отдельных подкатегорий (landing, SMM, email-рассылки, SEO, коммерческие предложения и др.).
  • Каждая подкатегория — отдельный файл, лежит на сервере, к которому есть доступ только у админа через веб-интерфейс.
  • Допилил удобную систему загрузки/редактирования: захотели что-то поправить в промте — пять секунд и готово, никакой ручной правки кода.

3. Админ-панель на Flask

  • Развернул на Python (со стеком openai, python-telegram-bot, requests, apscheduler, flask, pytz).
  • Flask используется не только как база для веб-интерфейса админки, но и как «диспетчер» для платёжных уведомлений.
  • Разделы админ-панели:Статистика бота (количество пользователей, активные подписки, история запросов, затраты по токенам).
  • Управление тарифами и подписками.
  • Реферальная программа: видим, кто кого пригласил и сколько бонусных запросов заработать.
  • Создание и редактирование гайдов (описание, цена, ссылка для оплаты).

4. Интеграция с YooMoney и банками РФ

5. Рассылки и триггерные уведомления

  • Использовал apscheduler, чтобы запускать периодические рассылки «каждый понедельник в 10:00» или напоминать за неделю до окончания подписки или ежедневно при обнаружении об окончании подписки и перевода пользователя в другой статус подписки.
  • Разделил в админ-панели рассылки на сегменты: подписчики, триал, бесплатный доступ. Так кто-то получал «У вас заканчивается подписка, продлите», а кто-то — «Пора апгрейдить свои навыки, переходим на платный тариф!».

6. Реферальная программа

  • Создал отдельный модуль, который даёт пользователям реферальные ссылки.
  • Каждый раз, когда по такой ссылке приходит новый подписчик и оплачивает тариф, рефереру добавляются бонусные GPT-запросы.

7. Модуль «Гайды» и «Контент-план»

  • Бот создаёт и хранит гайды по маркетингу, которые можно купить отдельно, не оформляя подписку.
  • После покупки (через ту же платёжную систему) пользователю открывается доступ к материалам: видео, PDF, чек-листы.
  • Для постоянных подписчиков эти материалы могут быть включены в пакет или со скидкой, в зависимости от тарифа.

Как я всё это запустил

  • Анализ: провел переговоры с клиентом, выяснили, какой функционал критичен, а что «хочу на всякий случай» составил детальный пошаговый и структурированный ТЗ план разработки и предоставил клиенту на одобрение.
  • Дизайн системы: нарисовал схему в MindManager, расписал как бот взаимодействует с админ-панелью и сторонними сервисами.
  • Прототип: собрал MVP(минимально жизнеспособный продукт) с базовыми промтами и оплатой. Запустили тест для небольшой группы сотрудников агентства.
  • Оптимизация промтов: сократил токены, внедрил выборочные подгрузки текстов.
  • Реализация: допилил новые функции: гайды, рассылки, модуль уведомлений и аналитики, рассылка из админки разному сегменту аудитории(с подпиской и без).
  • Тестирование: проверял платежи, бан пользователей, истечение подписки — всё в боевых условиях.
  • Запуск: дали «зелёный свет» залил все на их сервер установил pm2, nodejs, apache, проксирование, конфиги(webhook.conf), перенаправил А записи домена на IP сервера, Certbot для получения SSL-сертификата, получил сертификат для домена, перезапустил Apache и о чудо... финальное подергивание глаза. Этот последний этап Запуск можно было бы вместить еще в одну огромную статью, но у меня не хватит на это нервов, поэтому решил хоть тут проскочить зайцем. Вы уж простите меня что сохранил вам немного зрения)

Итоги и результаты

  • Сокращение затрат на токены в 12 раз — из 60 000 до 5 000 токенов на один запрос. Клиент счастлив, ведь счета за OpenAI заметно «похудели».
  • Удобная админ-панель на Flask: клиент сам добавляет/редактирует промты и гайды. Ему не нужно будет дёргать меня по каждому чиху и ...
  • Стабильные продажи: интеграция с YooMoney и банками РФ + гибкие тарифы (триал, подписка, единоразовые гайды) дают стабильный прирост выручки по умолчанию.
  • Автоматизация рутины: выстрел в десять задач одним выстрелом. Сотрудники, которые раньше вручную выставляли счета и писали тексты, теперь могут заняться стратегией, а не рутиной.

Сервисы и инструменты

  • Python «мозг» системы.
  • Библиотеки:openai — общение с GPT-моделью.
  • python-telegram-bot — «глаза и уши» бота в Telegram.
  • requests — HTTP-запросы ко всему подряд.
  • apscheduler — планирование регулярных задач (рассылки, уведомления).
  • flask — админ-панель, приём уведомлений о платежах.
  • pytz — чтобы не было путаницы с часовыми поясами, когда отправляешь рассылку из Владивостока в Калининград.

Немного юмора для финала

  • Заказчик шутливо назвал бота «Маркетозаврик», потому что тот поглощал всё больше и больше маркетинговых кейсов. Но, сэкономив на токенах, он теперь не распугивает аудиторию одним своим аппетитом.
  • Мы иногда называем его «Почти Искусственный Интеллект», потому что он уже научился различать «я хочу Лендинг по продаже котиков» и «я хочу составить рекламу для кофейни». Что будет дальше — остаётся только догадываться.

Заключение

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

Если вы хотите, чтобы ваш бот:

  • Не ел все ваши деньги на токенах.
  • Умел продавать, рассылать и уведомлять клиентов без лишней рутины.
  • Имел гибкие тарифы и автоматические подписки.
  • При этом не утратил человеческое лицо и даже умел пошутить в чате.

Я готовы помочь! Напишите в Telegram @korzh_igor и мы обсудим ваш проект: превратим вместе вашу мечту в реальность с коммерческой жилкой.

«Не бойтесь больших промтов — бойтесь ботов без оптимизации!»

- из народной мудрости разработчиков.

2
1 комментарий

где найти этого бота?

1