3.7 KiB
3.7 KiB
🤖 tg-digest-docker
Автоматический сбор новостей из Telegram-каналов с AI-суммаризацией и доставкой дайджеста.
Архитектура
┌─────────────────────────────────────────────┐
│ macOS (M4 Pro) │
│ │
│ ┌───────────┐ ┌──────────────────────┐ │
│ │ Ollama │◄───│ Docker: tg-digest │ │
│ │ (native) │ │ ┌────────────────┐ │ │
│ │ GPU ✓ │ │ │ collector.py │ │ │
│ └───────────┘ │ │ summarizer.py │ │ │
│ localhost:11434 │ │ delivery.py │ │ │
│ │ └────────────────┘ │ │
│ │ volume: /data │ │
│ └──────────────────────┘ │
└─────────────────────────────────────────────┘
- Ollama работает нативно на macOS → полный доступ к Apple GPU
- Python-приложение в Docker → изолированные зависимости
- Связь через
host.docker.internal:11434
Быстрый старт
1. Ollama (на хосте)
# Установи Ollama: https://ollama.com
ollama pull gemma3:12b
ollama serve # если не запущен как сервис
2. Telegram API
Получи api_id и api_hash на https://my.telegram.org
3. Конфигурация
cp .env.example .env
# Заполни .env: TG_API_ID, TG_API_HASH, список каналов
4. Сборка и авторизация
docker compose build
docker compose run --rm app --auth
# Введи номер телефона и код из Telegram
5. Запуск
# Тест (вывод в консоль, без отправки)
docker compose run --rm app --dry-run
# Боевой запуск
docker compose run --rm app
# Только сбор (без суммаризации)
docker compose run --rm app --collect
Автозапуск (cron на маке)
crontab -e
# Каждый день в 8:00 и 20:00
0 8,20 * * * cd /path/to/tg-digest && docker compose run --rm app >> /tmp/tg-digest.log 2>&1
Конфигурация (.env)
| Переменная | Описание | По умолчанию |
|---|---|---|
TG_API_ID |
Telegram API ID | — |
TG_API_HASH |
Telegram API Hash | — |
TG_CHANNELS |
Каналы через запятую | — |
TG_HOURS_BACK |
За сколько часов собирать | 12 |
LLM_PROVIDER |
ollama / anthropic / openai |
ollama |
OLLAMA_MODEL |
Модель Ollama | gemma3:12b |
DELIVERY_METHOD |
saved_messages / bot / file |
saved_messages |
Полный список — в .env.example.
Структура
tg-digest/
├── .env.example # Шаблон конфигурации
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
├── config.py # Загрузка конфига из env
├── main.py # Точка входа + CLI
├── collector.py # Сбор из Telegram
├── summarizer.py # LLM-суммаризация
└── delivery.py # Отправка дайджеста