Что нужно было решить
Превращать комментарии под роликами в подписчиков и заявки автоматически, не отвечая каждому вручную, и понимать, кто пришёл из какого ролика.
Путь человека
Комментарий
Человек пишет под роликом ключевое слово, а бот отвечает под комментарием случайной фразой из набора.
Личное сообщение
Бот присылает личное сообщение с просьбой подписаться и кнопкой профиля.
Проверка подписки
Человек нажимает «Я подписался», система проверяет подписку.
Telegram-бот
Получает материал к ролику: сообщения, видео и файлы, кнопки со ссылками.
Что умеет система
Кампании по роликам
Для каждого ролика свои ключевые слова, тексты, набор сообщений и файлов.
Предпросмотр
Кампанию можно проверить в админке до запуска.
Тексты и переменные
Все сообщения бота и личек правятся в админке, есть переменные вроде {имя} и общие ссылки.
Общий гайд
Для тех, кто пришёл без кампании: пошаговый гайд «Сделаю сам» с кнопкой «Дальше».
Заказ видео в боте
Мини-анкета: тип видео, идея, длительность, формат, срок, контакт, подтверждение. Заказ попадает в админку.
Обучение
Кнопка с реферальной ссылкой на обучение, ссылка правится в одном месте.
Клиенты
Связка «профиль Instagram ↔ аккаунт Telegram» и выгрузка в CSV.
Заявки с сайта
Форма сайта сохраняет заявки в ту же админку и присылает уведомление в Telegram.
Удаление данных
Человек может сам удалить свои данные командой в боте.
Какие защитные механизмы сделаны
Подпись вебхуков
События Instagram принимаются только с верной подписью приложения Meta, сравнение за постоянное время.
Админка
Пароль в виде bcrypt-хэша, защита от подделки запросов (CSRF-токены), блокировка входа после неверных попыток с учётом настоящего адреса посетителя.
Защита формы сайта
Скрытая приманка для ботов и лимит заявок: 5 за 10 минут с одного адреса.
Секреты
Токены Instagram и Telegram не пишутся в журналы и не лежат в коде. Токен Instagram продлевается заранее.
Загрузки и ввод
Загрузка только картинок с проверкой содержимого и размера. Текст из форм очищается, ссылки проверяются.
Заголовки и лимиты
HTTPS с автоматическим сертификатом, защитные заголовки, лимит размера запроса.
Резервные копии
Ежедневные копии базы, 7 локальных и копия в облаке, восстановление проверено.
Аудит безопасности
Проведён аудит: найденные уязвимости закрыты, обновлены зависимости, тесты проходят.
Где живёт
Эта воронка работает в той же админке, что и этот сайт.