Instagram Lead Magnet Bot - автоматическая система лидогенерации через Instagram. Мониторит комментарии под постами, отслеживает ключевые слова и отправляет персонализированные сообщения в Direct.
- Мониторинг комментариев - автоматическое отслеживание комментариев под выбранными постами
- Ключевые слова - триггеры для отправки сообщений (exact/contains/regex)
- Шаблоны сообщений - персонализированные сообщения с переменными
- Правила - гибкая связка "ключевое слово → шаблон → пост"
- Welcome-сообщения - автоматические приветствия новым подписчикам
- Массовые рассылки - broadcast по сегментам пользователей
- Google Sheets логирование - запись всех событий в таблицу
- Telegram-бот - полное управление через Telegram
┌─────────────────────────────────────────────────────────────┐
│ main.py │
│ (Инициализация, event loop, координация) │
└─────────────────────────────────────────────────────────────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌──────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
│ Telegram Bot │ │ Comment │ │ Direct │ │ Follower │ │Broadcast │
│ (admin/bot) │ │ Monitor │ │ Messenger│ │ Monitor │ │ Manager │
└──────────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘
│
▼
┌───────────────────────────────┐
│ Google Sheets Logger │
└───────────────────────────────┘
git clone https://github.com/ircitdev/devtools.git
cd InstaLeadMagnitBotpython -m venv venv
# Windows
venv\Scripts\activate
# Linux/Mac
source venv/bin/activatepip install -r requirements.txtСкопируйте .env.example в .env и заполните:
# Instagram
INSTAGRAM_USERNAME=your_username
INSTAGRAM_PASSWORD=your_password
INSTAGRAM_SESSION_FILE=session.json
# Telegram Bot
TELEGRAM_BOT_TOKEN=your_bot_token
ADMIN_TELEGRAM_IDS=123456789
# Database
DATABASE_URL=sqlite+aiosqlite:///./data/bot.db
# Rate Limiting
CHECK_INTERVAL_SECONDS=60
MESSAGE_DELAY_MIN_SECONDS=30
MESSAGE_DELAY_MAX_SECONDS=60
MAX_MESSAGES_PER_HOUR=50
# Logging
LOG_LEVEL=INFO
LOG_FILE=logs/bot.log
# Google Sheets (опционально)
GOOGLE_SHEETS_ENABLED=true
GOOGLE_CREDENTIALS_FILE=credentials.json
GOOGLE_SPREADSHEET_ID=your_spreadsheet_id- Создайте проект в Google Cloud Console
- Включите Google Sheets API
- Создайте Service Account и скачайте JSON-ключ
- Поместите файл как
credentials.jsonв корень проекта - Откройте доступ к таблице для email сервисного аккаунта
python run.pyБот использует упрощенный интерфейс с inline-кнопками. Введите /start и вы увидите главное меню:
┌─────────┬─────────┐
│ Статус │ Посты │
├─────────┼─────────┤
│ Слова │ Шаблоны │
├─────────┼─────────┤
│ Правила │ Привет │
├─────────┼─────────┤
│ Рассылки│ Справка │
└─────────┴─────────┘
| Команда | Описание |
|---|---|
/start |
Главное меню с кнопками |
/pause |
Приостановить мониторинг |
/resume |
Возобновить мониторинг |
/instahow |
Проверка подключения к Instagram |
Все функции доступны через кнопки:
- Статус - статистика бота
- Посты - управление постами
- Слова - ключевые слова
- Шаблоны - шаблоны сообщений
- Правила - связка слов и шаблонов
- Приветствие - welcome-сообщения
- Рассылки - массовые broadcast
- Справка - открывает WebApp со справкой
| Команда | Описание |
|---|---|
/add_post <url> |
Добавить пост |
/add_keyword <word> |
Добавить слово |
/add_template <name> | <text> |
Добавить шаблон |
/add_rule <kw_id> <tpl_id> [post_id] |
Создать правило |
/set_welcome <text> |
Установить приветствие |
/broadcast <segment> | <name> | <message> |
Создать рассылку |
Переменные в шаблонах:
{username}- имя пользователя{post_url}- URL поста{keyword}- сработавшее ключевое слово
-
Добавить пост:
/add_post https://instagram.com/p/ABC123 -
Добавить ключевое слово:
/add_keyword ГАЙД -
Создать шаблон:
/add_template Приветствие | Привет, {username}! Держи гайд: https://example.com -
Создать правило:
/add_rule 1 1
Теперь когда кто-то напишет "ГАЙД" в комментарии, бот отправит ему DM.
/set_welcome Привет, {username}! Спасибо за подписку! Вот ссылка на бесплатные материалы: https://example.com
/toggle_welcome
/segments
/broadcast followers 7 | Акция | Привет {username}! Только для подписчиков - скидка 50%!
InstaLeadMagnitBot/
├── src/
│ ├── __init__.py
│ ├── main.py # Главный модуль
│ ├── config.py # Конфигурация
│ ├── instagram/
│ │ ├── client.py # Instagram API клиент
│ │ ├── monitor.py # Мониторинг комментариев
│ │ ├── messenger.py # Отправка DM
│ │ ├── follower_monitor.py # Мониторинг подписчиков
│ │ └── broadcast_manager.py # Массовые рассылки
│ ├── core/
│ │ ├── matcher.py # Поиск ключевых слов
│ │ └── rules.py # Движок правил
│ ├── database/
│ │ ├── models.py # SQLAlchemy модели
│ │ └── repository.py # CRUD операции
│ ├── admin/
│ │ ├── bot.py # Telegram бот
│ │ └── handlers/ # Обработчики команд
│ │ ├── common.py
│ │ ├── menu.py # Inline-меню с кнопками
│ │ ├── posts.py
│ │ ├── keywords.py
│ │ ├── templates.py
│ │ ├── rules.py
│ │ ├── control.py
│ │ ├── welcome.py
│ │ ├── broadcasts.py
│ │ ├── instagram.py # Управление сессией Instagram
│ │ └── help.py # WebApp справка
│ └── utils/
│ ├── helpers.py # Утилиты
│ └── sheets_logger.py # Google Sheets логгер
├── data/ # База данных
├── logs/ # Логи
├── .env # Конфигурация
├── .env.example # Пример конфигурации
├── credentials.json # Google API ключ
├── requirements.txt
└── run.py # Точка входа
При включенном логировании автоматически создаются вкладки:
| Вкладка | Содержимое |
|---|---|
| Events | Запуск, остановка, изменения конфигурации |
| SentMessages | Отправленные DM (username, status, preview) |
| NewFollowers | Новые подписчики (welcome sent: Yes/No) |
| Comments | Все комментарии (action: dm_queued/already_messaged/no_match) |
| Errors | Ошибки (component, type, message) |
| Broadcasts | Массовые рассылки (sent/failed/status) |
| Settings | Посты, ключевые слова, шаблоны, правила |
Comments - каждый обработанный комментарий:
dm_queued- найдено совпадение, DM поставлен в очередьalready_messaged- пользователь уже получал сообщениеno_match- нет совпадения с ключевыми словами
NewFollowers - новые подписчики:
- Записывается username, user_id, отправлено ли welcome-сообщение
- Welcome отправляется только тем, кто подписался ПОСЛЕ запуска бота
SentMessages - все отправленные DM:
- Статус: sent/failed
- Preview первых 100 символов сообщения
Вкладка Settings автоматически обновляется при каждом запуске бота и содержит полный обзор текущей конфигурации.
Для защиты от блокировки Instagram:
| Параметр | Значение |
|---|---|
| Проверка комментариев | каждые 60 сек |
| Задержка между DM | 30-60 сек |
| Лимит DM | 50/час |
| Задержка broadcast | 45-90 сек |
| Лимит broadcast | 30/час |
| Модель | Описание |
|---|---|
| Post | Отслеживаемый пост |
| Keyword | Ключевое слово (exact/contains/regex) |
| MessageTemplate | Шаблон сообщения |
| Rule | Связка keyword → template → post |
| SentMessage | Лог отправленных сообщений |
| ProcessedComment | Обработанные комментарии |
| WelcomeSettings | Настройки приветствий |
| ProcessedFollower | Приветствованные подписчики |
| Broadcast | Кампания рассылки |
| BroadcastRecipient | Получатели рассылки |
- Python 3.11+
- instagrapi - Instagram Private API
- python-telegram-bot 20.x - Async Telegram Bot
- SQLAlchemy 2.0 + aiosqlite - Async ORM
- gspread - Google Sheets API
- pydantic-settings - Конфигурация
- loguru - Логирование
- Храните
.envиcredentials.jsonв секрете - Не коммитьте файлы с паролями
- Используйте отдельный Instagram аккаунт
- Соблюдайте rate limits
- Добавьте файлы в
.gitignore
MIT License