AI в лидогенерации: как фильтровать сотни чатов и находить нужное

29 мая 2026 г. · 7 мин чтения · Максим Космов

AI в лидогенерации: как фильтровать сотни чатов и находить нужное
Содержание

В нишевых Telegram-чатах каждый день публикуются сотни сообщений. Среди них - запросы на услуги, поиск подрядчиков, вопросы которые сигнализируют о потребности. Читать их вручную нереально если чатов 50 или 100.

Разберём метод: как автоматически мониторить большое количество чатов и получать только те сообщения, которые действительно интересны.

Проблема: объём против внимания

Типичная ситуация: специалист или небольшая компания хочет найти клиентов в Telegram. Есть 80-150 профессиональных чатов по теме. В каждом - 20-100 сообщений в день. Читать всё = потерять несколько часов ежедневно.

При этом реально нужных сообщений - единицы. «Ищу подрядчика», «нужна помощь с X», «кто делает Y» - их процент от общего потока маленький. Но именно они ценны.

Задача: сократить поток до минимума, оставив только целевые сообщения. AI-фильтр решает это.

Как устроен метод

Схема состоит из трёх компонентов: сборщик, фильтр, уведомления.

Сборщик читает сообщения из чатов. Фильтр оценивает каждое сообщение - насколько оно релевантно заданным критериям. Уведомления сообщают о высокорелевантных находках.

Практически это выглядит так: бот подключён к списку чатов, каждое новое сообщение отправляется в языковую модель с промптом «оцени релевантность для [цель] от 1 до 10», и только сообщения с оценкой 7+ уходят в уведомление.

Ничего сверхсложного. Но разница между «читать всё» и «видеть только нужное» - огромная.

Технический стек

Telethon - Python-библиотека для Telegram API. Позволяет читать сообщения из чатов как пользователь (не как бот). Это важно: боты могут читать только то, что им написали, а Telethon работает от имени обычного аккаунта.

Для начала нужно получить API credentials от Telegram: зайдите на my.telegram.org, войдите с номером телефона, создайте приложение, получите api_id и api_hash.

Языковая модель для фильтрации. Здесь важна скорость и стоимость, а не максимальное качество. Хорошо подходят:

  • DeepSeek V3 через API (очень дёшево, около $0.27 за миллион токенов)
  • Gemini Flash (бесплатный тир до 1500 запросов в день)
  • Ollama с небольшой локальной моделью (бесплатно, но медленнее)

При 150 чатах по 30 сообщений в день = 4500 запросов к модели. На Gemini Flash это бесплатно. На DeepSeek - примерно $0.5-1 в месяц.

Redis или простая SQLite - для хранения уже обработанных сообщений. Нужно чтобы не фильтровать одно сообщение дважды.

Ключевой элемент: промпт для оценки

Качество фильтрации на 80% зависит от промпта. Плохой промпт даёт много ложных срабатываний или пропускает нужное.

Хороший промпт для оценки сообщения:

Ты помощник по квалификации лидов.
Цель: найти сообщения где люди ищут [описание целевой аудитории].
Признаки целевого сообщения: [перечень конкретных признаков].
НЕ целевые: общие вопросы, обсуждения, реклама чужих услуг.

Сообщение: [текст]

Оцени от 1 до 10 где:
1-3: не относится
4-6: возможно относится, но неточно
7-10: явный целевой запрос

Ответь одним числом.

Конкретность критична. «Ищут услуги в сфере X» - плохо. «Сообщения содержащие слова: "ищу", "нужен подрядчик", "кто делает", "посоветуйте специалиста" в контексте [ниша]» - лучше.

Чем точнее описаны признаки, тем меньше мусора попадёт в уведомления.

Дедупликация

Без дедупликации одно и то же сообщение может прийти несколько раз - если чат просматривается повторно при перезапуске бота. Решение простое: хранить set обработанных message_id и пропускать уже виденные.

Временной горизонт дедупликации: обычно 24-48 часов достаточно. Более старые сообщения неактуальны.

Второй уровень фильтрации

Первый фильтр (1-10 оценка) отсекает явный мусор. Но иногда нужна более тонкая квалификация.

Второй уровень: для сообщений с оценкой 7+ просить модель извлечь структурированные данные - что именно нужно человеку, есть ли бюджет, есть ли контакт. Это помогает быстрее оценить качество лида перед тем как на него реагировать.

Промпт второго уровня:

Проанализируй сообщение и извлеки:
- Что ищет человек (конкретно)
- Сроки (если упомянуты)
- Бюджет (если упомянут)
- Контакт для связи (если есть)
Формат: JSON

Второй уровень работает только для прошедших первый - так не тратятся запросы на мусор.

Уведомления: как получать результат

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

Формат уведомления:

Новый лид [оценка 8/10]

Чат: [название]
Текст: [первые 200 символов сообщения]
Ссылка: [прямая ссылка]

Извлечено: ищет подрядчика для X, срок - следующая неделя, бюджет не указан

Сразу видно: стоит ли реагировать или пропустить.

Масштаб и реальные цифры

Параметры реалистичного сценария:

  • 150 профессиональных чатов
  • 30-50 сообщений в день на чат = 4500-7500 сообщений в день
  • Целевых сообщений: 1-3% = примерно 50-150 в день
  • После фильтрации (порог 7+): 5-15 уведомлений в день

Стоимость при DeepSeek V3: около $1-2 в месяц для такого объёма. При Gemini Flash: бесплатно в бесплатном тире.

Время настройки с нуля: 3-5 часов для программиста, 5-8 часов с помощью AI (вроде Claude или ChatGPT, которые напишут код по вашему описанию задачи).

Юридические и этические аспекты

Автоматическое чтение чатов технически возможно, но есть нюансы.

Telegram запрещает массовый автоматический сбор данных по своим правилам. Умеренное использование для личных нужд обычно не вызывает проблем. Агрессивный парсинг сотен чатов с большой частотой может привести к блокировке аккаунта.

Данные из чатов - это сообщения реальных людей. Хранить их надолго и передавать третьим лицам - плохая практика. Достаточно хранить только идентификаторы обработанных сообщений и сами уведомления для своего использования.

Пример кода: минимальный фильтр на Python

Для понимания механики - упрощённый пример. Полный рабочий код длиннее, но принцип такой:

from telethon import TelegramClient, events
import asyncio

# Эти данные получаете на my.telegram.org
api_id = 12345
api_hash = 'your_hash'

# Список chat_id чатов которые мониторим
MONITORED_CHATS = [-1001234567, -1009876543]

client = TelegramClient('session', api_id, api_hash)

async def score_message(text):
    # Здесь вызов LLM API для оценки
    # Возвращает число от 1 до 10
    return 7  # заглушка для примера

@client.on(events.NewMessage(chats=MONITORED_CHATS))
async def handler(event):
    score = await score_message(event.message.text)
    if score >= 7:
        # Отправить себе уведомление
        await client.send_message('me', f'Лид {score}/10: {event.message.text[:200]}')

client.start()
client.run_until_disconnected()

Это каркас. К нему добавляются: подключение к реальному LLM API вместо заглушки, Redis для дедупликации, логирование, обработка ошибок, запись в таблицу.

Ротация и качество базы чатов

Не все чаты одинаково полезны. За несколько недель работы обычно видно: 10-20% чатов дают 80% нужных сообщений. Остальные - балласт.

Раз в две недели стоит делать ревизию: посмотреть по каким чатам приходит больше всего уведомлений с высокой оценкой. Добавить похожие чаты из смежных тем. Убрать те что не дали ни одного качественного лида за месяц.

Отдельная задача - обновлять список. Telegram-чаты появляются и исчезают. Активный чат может стать мёртвым за 2-3 месяца. Поиск новых активных чатов через ключевые слова в поиске Telegram - это отдельная периодическая задача.

Интеграция с CRM или таблицей

Уведомление в Telegram - это промежуточный шаг. Для систематической работы с лидами удобнее складывать их в таблицу или CRM.

Дополнительный шаг в пайплайне: найденное сообщение с оценкой 7+ записывается в Google Таблицу через n8n. Колонки: дата, текст сообщения, ссылка на оригинал, чат, оценка релевантности, статус обработки.

Раз в день или раз в несколько часов открываете таблицу, проходитесь по новым строкам, ставите статус: «связался», «не подходит», «думает». Это превращает хаотичный мониторинг в управляемый процесс.

Более продвинутый вариант: автоматически создавать задачу в Trello, Notion или CRM для каждого лида с оценкой выше 8. Это делается через API этих инструментов прямо из n8n - без дополнительного кода.

Итог: когда это имеет смысл

Этот метод подходит если:

  • есть чёткое понимание какое именно сообщение является целевым
  • объём чатов для ручного мониторинга нереален (50+)
  • есть техническая возможность настроить (сами или с чьей-то помощью)

Не имеет смысла если чатов мало (5-10) - проще читать вручную. Или если целевое сообщение сложно описать формальными признаками - модель будет давать много ложных срабатываний.

Главный принцип: сначала вручную найти 20-30 примеров хороших лидов и 20-30 примеров нецелевых сообщений. Написать промпт на основе этих примеров. Протестировать на исторических данных. Только потом запустить в продакшн.

Разборы свежих AI-новостей - в канале AI Компас.

Больше гайдов - guides.kosmoslab.dev/guides.

Читайте дальше