News aggregator for Telegram channels with automatic text rewriting via LLM.
💡 Note: Pet project. It was written for my personal tasks, and worked perfectly, as it became unnecessary I remade it for general use. There may be bugs. AI was used.
The bot forwards, rewrites, and publishes posts from donor channels:
- Parses new posts from the list of specified sources.
- Filters ads, spam, or junk content by keywords.
- Sends the post text to an LLM model (via OpenAI API or any other compatible API) for rewriting.
- The generated draft is sent to a private chat for moderation.
- A moderator reviews the text. By clicking the "Approve" button, the post is published to the target channel. By clicking "Reject", it is deleted.
- In the moderation chat, you can reply to the draft with your feedback, and the bot will rewrite the news taking your edits into account.
- The bot handles attachments flawlessly (photos, videos, and media albums up to 10 files).
- Create a configuration from the example:
cp .env.example .env- Fill in the required parameters in
.env:
API_IDandAPI_HASH— get your keys at my.telegram.orgBOT_TOKEN— your bot's tokenLLM_API_KEY— OpenAI API key (or another provider like Groq or DeepSeek)LLM_BASE_URL— API base address (if you use something other than OpenAI)LLM_MODEL_NAME— model name (e.g.,gpt-4o-mini)SOURCE_IDS— donor channel IDs (comma separated)TARGET_ID— ID of your main channel where the posts will be publishedMODERATION_CHAT_ID— ID of the moderation chat or group
- Build and run the bot:
docker-compose up -d --buildPlease note: The Telethon client session (userbot) is used to parse posts from other's channels. On the very first run, you will need to authorize this account and enter the code from Telegram. If you don't have a ready session string (STRING_SESSION) yet, run the project locally once: install dependencies (pip install -r requirements.txt) and run python src/core/main.py. After authorization, the bot will give you a session string - paste it into .env and then run via Docker.
Агрегатор новостей для Telegram-каналов с функцией автоматического переписывания текста (рерайта) через LLM.
💡 Примечание: Пет-проект. Написан был для моих личных задач, и работал отлично, по ненадобности переделал под general use. Ошибки могут быть. ИИ использовался.
Бот пересылает, переписывает и публикует посты из каналов-доноров:
- Парсит новые записи из списка указанных источников.
- Фильтрует рекламу, спам или мусорный контент по ключевым словам.
- Отправляет текст поста в LLM-модель (через API OpenAI или любое другое совместимое API) для переписывания.
- Готовый черновик отправляется в закрытый чат для модерации.
- Модератор проверяет текст. По нажатию кнопки "Одобрить" пост публикуется в целевой канал, по кнопке "Отклонить" — удаляется.
- В чате модерации можно ответить (reply) на черновик текстом замечания, и бот перепишет новость с учетом ваших правок.
- Бот корректно работает со вложениями (фото, видео и медиа-альбомы до 10 файлов).
- Создайте конфигурацию из примера:
cp .env.example .env- Впишите нужные параметры в
.env:
API_IDиAPI_HASH— получите ключи на my.telegram.orgBOT_TOKEN— токен вашего ботаLLM_API_KEY— ключ от OpenAI (или другого провайдера, например Groq или DeepSeek)LLM_BASE_URL— базовый адрес API (если используете не OpenAI)LLM_MODEL_NAME— название модели (например,gpt-4o-mini)SOURCE_IDS— ID каналов-доноров (пишутся через запятую)TARGET_ID— ID вашего основного канала, куда будут выходить постыMODERATION_CHAT_ID— ID чата или группы для модерации
- Соберите и запустите бота:
docker-compose up -d --buildОбратите внимание: для парсинга постов из чужих каналов используется клиентская сессия (юзербот) Telethon. При самом первом запуске потребуется авторизовать этот аккаунт и ввести код из Telegram. Если у вас еще нет готовой строки сессии (STRING_SESSION), запустите проект один раз локально: установите зависимости (pip install -r requirements.txt) и запустите python src/core/main.py. После авторизации бот выдаст вам строку сессии — вставьте её в .env и дальше запускайте через Docker без проблем.