Кейс: «Бот-маркетолог на 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 и мы обсудим ваш проект: превратим вместе вашу мечту в реальность с коммерческой жилкой.
«Не бойтесь больших промтов — бойтесь ботов без оптимизации!»
- из народной мудрости разработчиков.
Можно ли создать нейросеть, которая будет продавать услуги так, чтобы её не отличили от человека? Я решила проверить и создать такого бота для себя. О том, что получилось и какие трудности возникли — в статье. В конце — ссылка на демонстрацию такого бота, можете протестировать сами:)
Ошибки — это цена, которую ты платишь за успех.
Обычно ботов создают с заранее продуманными цепочками диалогов. Каждый шаг прописывается вручную. Любые изменения требуют анализа и знаний в маркетинге.
Всем привет! Я прошёл сложный путь от создания бота до получения первых платежей, поэтому, как порядочный разработчик, хочу поделить информацией, за которую, я уверен, кто-то кому-то платит большие деньги, а в это время ваши полезные труды пылятся на задворках интернета.Как примерно говорит Тони Роббинс: "Хочешь быть богатым - зарабатывай много ден…
где найти этого бота?