# 🤖 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 (на хосте) ```bash # Установи Ollama: https://ollama.com ollama pull gemma3:12b ollama serve # если не запущен как сервис ``` ### 2. Telegram API Получи `api_id` и `api_hash` на https://my.telegram.org ### 3. Конфигурация ```bash cp .env.example .env # Заполни .env: TG_API_ID, TG_API_HASH, список каналов ``` ### 4. Сборка и авторизация ```bash docker compose build docker compose run --rm app --auth # Введи номер телефона и код из Telegram ``` ### 5. Запуск ```bash # Тест (вывод в консоль, без отправки) docker compose run --rm app --dry-run # Боевой запуск docker compose run --rm app # Только сбор (без суммаризации) docker compose run --rm app --collect ``` ### Автозапуск (cron на маке) ```bash 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 # Отправка дайджеста ```