Как создать универсальный Telegram-бот — парсер любых постов из каналов с AI-нормализацией и fallback-правилами
Следующий шаг
Открой бота или продолжай маршрут внутри раздела.
Статья -> план в ИИ
Отправь ссылку на эту статью в любой ИИ и получи план внедрения под свой проект.
Прочитай эту статью: https://vibecode.morecil.ru/ru/telegram-boty/kak-sozdat-yniversalny-parser/
Работай в контексте моего текущего проекта.
Сделай план внедрения под мой стек:
1) что изменить
2) в каких файлах
3) риски и типичные ошибки
4) как проверить, что всё работает
Если есть варианты, дай "быстрый" и "production-ready". Как использовать
- Скопируй этот промпт и отправь в чат с ИИ.
- Прикрепи проект или открой папку репозитория в ИИ-инструменте.
- Попроси изменения по файлам, риски и короткий чеклист проверки.
В этой статье разберем как создать бота, который:
- Автоматически забирает новые посты из любых Telegram-каналов (публичных и приватных).
- Через AI (Groq) превращает хаотичный текст в структурированную карточку: тип поста, категория, заголовок, summary, ссылки, контакты и т.д.
- При сбое AI мгновенно переключается на надёжные правила (fallback).
- Полностью автономно публикует чистую ленту — без ручной модерации.
- Работает 24/7 и легко расширяется под любую нишу.
Что тебе понадобится (подготовка за 10 минут)
- Установленный Node.js 20+
- Telegram-аккаунт
- Бесплатный аккаунт Groq (самый быстрый и дешёвый LLM на 2026 год)
- (Опционально) Бесплатный Supabase проект для хранения данных
Шаг 1. Создаём бота через BotFather
- Открой Telegram → найди @BotFather
- Напиши
/newbot - Придумай имя:
МойПарсерБот - Придумай username:
my_parser_bot(должен заканчиваться наbot) - BotFather пришлёт токен вида
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
Сохрани токен в безопасное место. Это твой BOT_TOKEN.
Шаг 2. Получаем Groq API-ключ
- Перейди на https://console.groq.com/keys
- Нажми Create API key
- Скопируй ключ (начинается на
gsk_) - Сохрани как
GROQ_API_KEY
Шаг 3. (Опционально) Создаём Supabase проект
- https://supabase.com → Sign up (через GitHub)
- New Project → выбери регион (Europe)
- Запомни:
- Project URL (SUPABASE_URL)
- anon public key (SUPABASE_ANON_KEY)
Шаг 4. Создаём проект и устанавливаем зависимости
Создай папку и выполни команды:
mkdir tg-universal-parser-bot
cd tg-universal-parser-bot
npm init -y
npm install telegraf node-cron axios cheerio groq-sdk dotenv
npm install -D nodemon
Создай файл .env и вставь:
BOT_TOKEN=твой_токен_из_BotFather
GROQ_API_KEY=твой_groq_ключ
SUPABASE_URL=https://...
SUPABASE_ANON_KEY=eyJ...
Шаг 5. Первый промпт — базовый каркас бота
Скопируй и отправь целиком в Codex или Claude:
Создай полный рабочий каркас бота на Telegraf v4.
Требования:
- Использовать dotenv
- Команды: /start, /addsource, /listsources, /status
- Inline-кнопки и single-navigation (обновлять одно сообщение)
- Подготовь отдельный файл worker.js для cron-воркера (каждые 10 минут)
- Подготовь папки: src/bot, src/worker, src/parsers, src/ai, src/db
- Подключи Supabase (или SQLite как fallback)
- Всё должно запускаться командой npm start и npm run worker
- Добавь комментарии "// TODO" где нужно будет вставить логику парсера и AI
Выведи ВЕСЬ код проекта в виде структуры файлов с содержимым.
Шаг 6. Второй промпт — архитектура и структура БД
На основе предыдущего кода добавь полную архитектуру универсального парсера любых постов из Telegram-каналов.
Таблицы Supabase (SQL миграции):
- sources (id, channel_username, type: public|private, cursor, last_import)
- raw_posts (id, source_id, message_id, raw_text, posted_at)
- parsed_posts (id, raw_id, post_type, category, title, summary, links: jsonb, contacts: jsonb, confidence, status: published|skipped, published_at)
Логика:
- worker каждые 10 мин обходит sources
- для public: парсит https://t.me/s/...
- для private: заглушка (потом добавим MTProto)
- После получения raw → AI parse → fallback rules → auto decision (publish если confidence > 75 и есть полезный контент)
- Никакой ручной модерации! Только auto-publish или skip + лог причины
Выведи обновлённые файлы: db/migrations.sql, src/ai/parser.js, src/worker/importer.js
Шаг 7. Третий промпт — парсер публичных каналов
На основе предыдущего кода реализуй полноценный парсер публичных каналов.
Функция parsePublicChannel(channel: string, afterTimestamp?: number):
- axios.get(`https://t.me/s/${channel}`)
- cheerio парсит все посты
- Извлекает: message_id, full_text, date, все ссылки, все @username, кнопки
- Убирает шум: футеры канала, рекламу, "подписывайся", повторяющиеся блоки
- Возвращает массив чистых raw-постов
Добавь анти-дубликат по (channel + message_id)
Шаг 8. Четвёртый промпт — AI-контракт + fallback
Создай два промпта для Groq (llama-3.3-70b или mixtral):
1. Основной AI-промпт (возвращает ТОЛЬКО JSON):
Системный: "Ты — эксперт по структурированию Telegram-постов. Верни ТОЛЬКО валидный JSON без markdown."
JSON-схема:
{
"post_type": "announcement | sale | question | news | offer | discussion | other",
"category": "string (одно слово или короткая фраза)",
"title": "string",
"summary": "string до 300 символов",
"links": ["array of urls"],
"contacts": ["@username", "phone", "other"],
"confidence": 0-100,
"reason": "string коротко"
}
2. Fallback rules (если AI недоступен или confidence < 60):
- Если есть @username или ссылка на внешний ресурс → confidence 70
- Если больше 100 символов осмысленного текста → confidence 50
- Извлекать все ссылки и @ через regex
Реализуй функцию normalizePost(rawText) которая сначала пытается AI, при ошибке — fallback.
Шаг 9. Пятый промпт — полностью автоматический decision engine
Добавь decision engine без ручной модерации:
Правила:
- Если confidence >= 78 И (есть contacts ИЛИ links.length > 0) → status: "published"
- Иначе → "skipped" с сохранением причины в БД
- Для published — сохраняем в parsed_posts и (опционально) отправляем в канал бота или личку подписчикам
Реализуй функцию decideAndSave(parsedData)
Шаг 10. Шестой промпт — тесты и запуск
Добавь:
- Простые тесты (jest или console.log) на парсер и AI
- Команду в package.json: "dev": "nodemon src/bot/index.js"
- "worker": "node src/worker/importer.js"
- В /start покажи красивую клавиатуру с кнопками
Выведи финальную инструкцию по запуску.
Шаг 11. Запуск бота
npm run dev
В отдельном терминале:
npm run worker
Добавь первый источник:
/addsource mychannel (без @)
Готово! Бот уже парсит, нормализует через AI + fallback и публикует только качественные посты.
Важно, даже запуск бота или добавление каналы в базу можно сделать через ИИ. В статье написан ручной способ, чтобы было понимание, как это работает. Также не нужно слепо копировать каждый промт, вы его всегда можете откорректировать под себя, задача статьи — объяснить алгоритм, архитектуру, дальше вы можете отправить эту статью в свой ИИ и задавать ему вопросы, чтобы проект был реализован под вашу идею. Идеальных промтов не существует.
Что дальше (расширение за 1 час)
- Добавить приватные каналы (MTProto + grammY userbot)
- Подписка пользователей на категории
- Уведомления через Telegram
- Хостинг на Railway / Render (бесплатно)