Локальная платформа автоматической публикации контента в Telegram-каналы с подготовкой текста с помощью AI-модели.
Парсер забирает посты из каналов-доноров, переписывает их через AI (локальную модель или облачный API), маршрутизирует по тегам и публикует в целевые каналы. База данных, сессия Telegram и настройки хранятся локально. При использовании облачного AI текст отправляется выбранному поставщику, а опубликованные сообщения и медиа передаются в Telegram.
| Сбор контента | Несколько каналов-доноров, защита от повторной публикации, обработка альбомов |
| AI-рерайт | 9 локальных провайдеров (Ollama, LM Studio, AnythingLLM, LocalAI, llama.cpp, vLLM, GPT4All, KoboldCpp, text-generation-webui) + любой облачный OpenAI-совместимый API |
| Маршрутизация | Маршруты «канал → теги». Пост уходит во все каналы с его тегами. Запасной тег общее |
| Ручная публикация | Очередь постов: правка, отложенная публикация, отмена, просмотр медиа |
| Прокси | SOCKS5 / SOCKS4 / HTTP / MTProto, импорт ссылки t.me/proxy |
| Панель управления | Локальный веб-интерфейс, тёмная и светлая темы, адаптивная вёрстка |
| Журнал | Полная история событий с расшифровкой кодов в разделе «Справка» |
| Безопасность | Секреты шифруются Windows DPAPI и маскируются в панели |
| Самопроверка | python main.py --check проверяет окружение и доустанавливает зависимости |
- Windows 10/11 и Python 3.11+ (для запуска из исходников)
- Для сборки
.exe: Python 3.11+ и PyInstaller 6+ - Для AI: локальное приложение с моделью (Ollama, LM Studio и др.) или облачный API-ключ
- Для Telegram: учётная запись Telegram и бот
- ffmpeg — необязательно, но нужен, чтобы видео в форматах
.mov,.mkv,.webmи анимированные.gifпроигрывались в канале. Без него такие файлы уходят в чат как документы. Скачивается с ffmpeg.org, exe кладётся вPATH
- Скачайте
Parser.exeиз раздела Releases. - Скопируйте в отдельную папку, например
D:\ContentFactory\. - Запустите двойным щелчком — откроется панель управления на
http://127.0.0.1:8000/.
При первом запуске рядом с EXE появляются .env, bot_storage.db и рабочие папки.
git clone https://github.com/Agro4221/-Content-Factory.git
cd .\-Content-Factory
python -m pip install -r requirements.txt
python main.pyПанель откроется на http://127.0.0.1:8000/.
Всё настраивается в панели управления. Порядок:
| Поле | Где взять |
|---|---|
Telegram API ID / API Hash |
my.telegram.org → API development tools |
Bot Token |
@BotFather → /token |
Каналы-доноры |
@username или числовой ID, по одному в строке |
Добавьте маршруты «канал → теги». Одному каналу можно задать несколько
тегов через запятую. Без маршрутов посты публиковаться не будут.
Тег общее нужен как запасной маршрут — туда уходят посты, чьи теги не
подошли ни к одному каналу.
Пост уходит сразу во все каналы, у которых есть его тег. Теги из ответа ИИ нужны только для выбора канала — в самом посте их не остаётся.
- Локально — выберите приложение, хост и порт подставятся автоматически. Список установленных моделей подгружается кнопкой «Показать модели».
- Облачно — OpenRouter, DeepSeek, Groq или любой OpenAI-совместимый API.
SOCKS5/SOCKS4/HTTP— применяются и к чтению, и к публикации;MTProto— только к чтению каналов (Bot API прокси не поддерживает);- для MTProto можно вставить готовую ссылку
t.me/proxy.
Нажмите «Сохранить настройки», затем «Запустить парсер».
Каналы-источники
│
▼
Telethon
│
▼
Фильтры и подготовка текста
│
▼
AI-рерайт
│
▼
Маршрутизация по тегам
│
▼
Telegram Bot API → целевые каналы
В разделе «Посты» можно переключить режим публикации на «Через очередь». Тогда посты не публикуются сразу, а попадают в очередь, где их можно:
- править текст, теги и целевые каналы;
- откладывать на дату и время — публикация произойдёт автоматически;
- публиковать сразу;
- отменять;
- смотреть медиа.
Медиафайлы очереди хранятся локально и удаляются по настраиваемому сроку (1, 2, 3, 7 дней или без срока). Очистка доступна вручную из панели.
- Секреты зашифрованы. Токен бота, ключи API и пароль прокси хранятся в
bot_storage.dbв виде блобов системного хранилища (Windows DPAPI), привязанных к учётной записи и к этому компьютеру. Перенос базы на другую машину делает их нечитаемыми — это ожидаемое поведение. - Панель не показывает секреты. Вместо значения отображается маска. Пустое поле при сохранении означает «оставить как есть», отдельная кнопка удаляет секрет.
- Секреты не попадают в журнал, терминал и отчёты.
- Сохранённый ключ не уходит на чужой адрес. Если поменять адрес облачного API или адрес прокси, ключ и пароль придётся ввести заново.
- Панель доступна локально по умолчанию — она слушает
127.0.0.1. Аутентификации у панели нет: не выставляйтеAPI_HOSTна сетевой адрес и не пробрасывайте порт в интернет. - Панель защищена от чужих сайтов. Запросы с чужого адреса и без признака «пришёл из панели» отбрасываются, в панель включены защитные HTTP-заголовки, а документация API не публикуется.
- Вторая копия приложения закрывается. Две копии делят файл сессии Telegram, и Telegram после этого требует вход заново.
python -m pip install -r requirements.txt -r requirements-dev.txt
python -m PyInstaller Parser.spec --cleanРезультат: dist/Parser.exe. Подробности — в BUILD.md.
Релизы собираются автоматически: пуш тега вида v1.30.0.0 запускает
workflow, который собирает EXE, прогоняет smoke-тест и публикует релиз
с контрольной суммой SHA-256.
python -m pip install -r requirements-dev.txt
python -m pytest -q tests # автоматические тесты
python tools/check_frontend.py # проверка панели
python tools/smoke_test.py # проверка ресурсов и импортовКарта функций панели — в docs/ADMIN_FUNCTION_MAP.md.
- CONTRIBUTING.md — правила Pull Request и стиль кода
- SECURITY.md — как сообщить об уязвимости и что нельзя коммитить в репозиторий
- BUILD.md — сборка
.exe - LICENSE — MIT
main.py основной цикл парсера и публикация
Site.py веб-панель и API
database.py SQLite: схема, миграции, шифрование секретов
config.py настройки и пути
secrets_store.py шифрование через Windows DPAPI
proxy_check.py проверка прокси
startup.py первый запуск и рабочие каталоги
admin.html панель управления (самодостаточный файл)
tests/ автоматические проверки
tools/ служебные скрипты сборки и проверки
При первом запуске приложение само проверяет окружение и доустанавливает недостающие зависимости:
- Python-пакеты (
telethon,aiogram,fastapi,uvicorn,aiohttp,aiohttp-socks,python-dotenv) — ставятся черезpip; если системныйpipнедоступен, создаётся локальное окружение.venvрядом с проектом и процесс перезапускается в нём; - база данных
bot_storage.db— создаётся автоматически, схема поднимается до актуальной версии через миграции; - рабочие каталоги
temp_media/иqueue_media/— создаются при старте; .env— создаётся из.env.example, если его нет.
Проверить окружение без запуска парсера:
python main.py --checkКоманда покажет состояние зависимостей, базы, каталогов и прав доступа.
В собранном .exe зависимости уже внутри — установка не требуется.