Complete digest system

This commit is contained in:
2026-01-06 10:01:24 +01:00
parent 3f2d58b257
commit 252ba9f5cc
6 changed files with 751 additions and 224 deletions

273
README.md
View File

@@ -1,138 +1,231 @@
# Zpravobot Digest Bot
# Zprávobot AI Digest
Automatický denní digest z Mastodon postů pomocí Claude AI.
Automatický denní digest systém pro Mastodon boty používající Claude AI.
## Struktura
## 🎯 Co to dělá
```
/app/data/zpravobot-digest/
├── export-daily.sh # Export postů z DB do CSV
├── digest-bot.py # Hlavní script (Claude + Mastodon)
├── run-digest.sh # Wrapper s config
├── config.env.example # Template konfigurace
└── README.md
```
Systém 3× denně:
1. Načte včerejší posty z CSV exportu
2. Automaticky je kategorizuje podle témat (🌍 Politika, 🏒 Sport, 🎬 Kultura...)
3. Analyzuje pomocí Claude AI
4. Publikuje 2-toot thread na Mastodon
## Instalace
### Tři boty s různými styly
### 1. Klonuj repo
| Bot | Čas | Styl | Účel |
|-----|-----|------|------|
| @zpravobot | 7:30 | Neutrální | Ranní přehled zpráv |
| @pozitivni | 12:00 | Pozitivní | Polední motivace |
| @sarkasticky | 19:00 | Sarkastický | Večerní komentář |
## 📋 Požadavky
- Ruby 3.0+
- mastodon-api gem
- PostgreSQL s Mastodon daty
- Claude API klíč
- 3 Mastodon bot tokeny
## 🚀 Instalace (Cloudron)
### 1. Připrav prostředí
V Mastodon terminalu (Cloudron):
```bash
cd /app/data
git clone https://gitea.tvoje-domena.cz/user/zpravobot-digest.git
git clone https://gitea.vhsky.cz/user/zpravobot-digest.git
cd zpravobot-digest
```
### 2. Konfigurace
### 2. Nainstaluj Ruby gem
```bash
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH
gem install mastodon-api --user-install
```
Ověř instalaci:
```bash
ruby -e "require 'mastodon'; puts 'OK'"
```
### 3. Konfigurace
```bash
cp config.env.example config.env
nano config.env
```
Vyplň:
- `ANTHROPIC_API_KEY` - Claude API token
- `TOKEN_ZPRAVOBOT` - Mastodon token pro @zpravobot
- `TOKEN_POZITIVNI` - Mastodon token pro @pozitivni
- `TOKEN_SARKASTICKY` - Mastodon token pro @sarkasticky
### 3. Práva
Vyplň tokeny:
```bash
chmod +x export-daily.sh run-digest.sh digest-bot.py
export ANTHROPIC_API_KEY="sk-ant-api03-..."
export ZPRAVOBOT_TOKEN="token-zde"
export POZITIVNI_TOKEN="token-zde"
export SARKASTICKY_TOKEN="token-zde"
```
**Jak vytvořit Mastodon tokeny:**
1. Přihlásit se jako bot účet
2. Settings → Development → New application
3. Scopes: `read:statuses` + `write:statuses`
4. Zkopírovat "Your access token"
### 4. Spustitelné práva
```bash
chmod +x export-daily.sh publish_digest.rb run-digest.sh
chmod 600 config.env
```
### 4. Test
## 🧪 Testování
### Dry-run (bez publikace)
```bash
./export-daily.sh # Export CSV
./run-digest.sh zpravobot # Test digestu
source config.env
./run-digest.sh zpravobot --dry-run
./run-digest.sh pozitivni --dry-run
./run-digest.sh sarkasticky --dry-run
```
## Použití
### Manuální spuštění
### Live test (skutečná publikace)
```bash
./run-digest.sh zpravobot # Neutrální digest
./run-digest.sh pozitivni # Pozitivní digest
./run-digest.sh sarkasticky # Sarkastický digest
./run-digest.sh zpravobot
```
### Automatizace (Cloudron Cron)
Zkontroluj na Mastodonu že se thread publikoval.
## ⏰ Automatizace (Cron)
V Cloudron UI → Mastodon app → Cron tab:
```
0 6 * * * /app/data/zpravobot-digest/export-daily.sh
0 7 * * * /app/data/zpravobot-digest/run-digest.sh zpravobot
30 7 * * * /app/data/zpravobot-digest/run-digest.sh zpravobot
0 12 * * * /app/data/zpravobot-digest/run-digest.sh pozitivni
0 18 * * * /app/data/zpravobot-digest/run-digest.sh sarkasticky
0 19 * * * /app/data/zpravobot-digest/run-digest.sh sarkasticky
```
## Výstup
### Export CSV
- **Lokace:** `/app/data/posts-latest.csv`
- **Formát:** `id,created_at,text,uri,url,account_id`
- **Rozsah:** Posledních 48 hodin
- **Archiv:** `/app/data/archive/posts-YYYY-MM-DD.csv` (7 dní)
### Digest
- 2-toot thread (summary + odkazy)
- Publikováno na příslušný bot účet
- Styl podle bot personality
## Jak to funguje
1. **Export (6:00):** SQL → CSV export z PostgreSQL
2. **Digest (7:00/12:00/18:00):**
- Načte CSV
- Pošle data Claude API
- Claude analyzuje témata
- Publikuje 2-toot thread na Mastodon
## Struktura souborů
**Rozvrh:**
- 6:00 - Export postů z databáze
- 7:30 - Neutrální digest (@zpravobot)
- 12:00 - Pozitivní zprávy (@pozitivni)
- 19:00 - Sarkastický komentář (@sarkasticky)
## 📁 Struktura souborů
```
/app/data/
├── zpravobot-digest/ # Git repo
│ ├── export-daily.sh
│ ├── digest-bot.py
│ ├── run-digest.sh
│ ├── config.env # Gitignored!
│ └── README.md
├── posts-latest.csv # Denní export
├── archive/ # 7-denní historie
│ └── posts-YYYY-MM-DD.csv
├── zpravobot-digest/
│ ├── export-daily.sh # CSV export z PostgreSQL
│ ├── publish_digest.rb # Hlavní Ruby script
│ ├── run-digest.sh # Wrapper (načte config)
│ ├── config.env # Tokeny (gitignored!)
│ └── config.env.example # Template
├── posts-latest.csv # Denní export (2 dny postů)
├── archive/
│ └── posts-YYYY-MM-DD.csv # 7 denní historie
└── logs/
└── export.log
└── export.log # Logy exportu
```
## Požadavky
## 🔧 Ruční použití
- Python 3.x (v Cloudron Mastodonu je)
- Mastodon instance (zpravobot.news)
- Claude API přístup
- 3× Mastodon bot účty s tokeny
### Publikovat digest
```bash
source config.env
./run-digest.sh zpravobot # Neutrální
./run-digest.sh pozitivni # Pozitivní
./run-digest.sh sarkasticky # Sarkastický
```
## Bezpečnost
### Použít specifické datum
```bash
./run-digest.sh zpravobot --date=2026-01-05 --dry-run
```
- ⚠️ `config.env` obsahuje citlivé tokeny → chmod 600
- ⚠️ Nepublikuj `config.env` do Gitu (je v .gitignore)
- ✅ DB přístup jen pro export script
- ✅ Digest script čte pouze CSV (bez DB přístupu)
### Export CSV
```bash
./export-daily.sh
```
## TODO
## 🎨 Vlastnosti
- [ ] Prompt optimalizace pro Clauda
- [ ] Error handling v digest-bot.py
- [ ] Notifikace při selhání
- [ ] Web dashboard pro statistiky
-**Automatická kategorizace témat** (Politik, Sport, Kultura...)
-**Claude AI analýza** s fallbackem při selhání API
-**Style filtering** - pozitivní bot filtruje negativní zprávy
-**2-toot threads** - summary + odkazy
-**URL extraction** z postů
-**Error handling** a logging
-**Dry-run mode** pro testování
## Autor
## 📊 Monitoring
Kolega + Claude
### Zkontrolovat dnešní běhy
```bash
# V logu exportu
tail -50 /app/data/logs/export.log
# Ověřit CSV
ls -lh /app/data/posts-latest.csv
wc -l /app/data/posts-latest.csv
```
### Zkontrolovat publikace
Navštiv:
- https://zpravobot.news/@zpravobot
- https://zpravobot.news/@pozitivni
- https://zpravobot.news/@sarkasticky
## 🐛 Troubleshooting
### "CSV file not found"
```bash
# Ověř že export běžel
ls -la /app/data/posts-latest.csv
# Spusť manuálně
./export-daily.sh
```
### "Missing token"
```bash
# Ověř environment
source config.env
echo $ZPRAVOBOT_TOKEN
```
### "The access token is invalid"
Token vypršel nebo je neplatný. Vygeneruj nový v Mastodon → Settings → Development.
### Ruby gem chyba
```bash
# Reinstaluj gem
export GEM_HOME=$HOME/.gem
export PATH=$GEM_HOME/bin:$PATH
gem install mastodon-api --user-install
```
## 💰 Náklady
- **Claude API**: ~$3/měsíc (3 requesty/den)
- **Infrastruktura**: $0 (běží na Mastodon serveru)
## 🔒 Bezpečnost
- ✅ Žádný přímý DB přístup (používá CSV export)
- ✅ Tokeny v `config.env` (gitignored)
- ✅ Read-only přístup k datům
- ✅ Minimální oprávnění
## 📝 Licence
Open source - vytvořeno pro Zprávobot.news komunitu.
## 🙏 Credits
- **Zprávobot.news** - České/Slovenské Mastodon zpravodajství
- **Anthropic Claude** - AI analýza
- **Mastodon** - Decentralizovaná sociální síť
---
**Verze:** 1.0.0
**Aktualizováno:** Leden 2026