This commit is contained in:
Тимур Абайдулин
2026-02-07 16:31:46 +03:00
commit ba1245a06c
11 changed files with 754 additions and 0 deletions

104
README.md Normal file
View File

@@ -0,0 +1,104 @@
# 🤖 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 # Отправка дайджеста
```