105 lines
3.7 KiB
Markdown
105 lines
3.7 KiB
Markdown
# 🤖 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 # Отправка дайджеста
|
||
```
|