259 lines
5.6 KiB
Markdown
259 lines
5.6 KiB
Markdown
# Zprávobot AI Digest
|
||
|
||
Automatický denní digest systém pro Mastodon boty používající Claude AI.
|
||
|
||
## 📖 O projektu
|
||
|
||
Automatizační nástavba pro [Zprávobot.news](https://github.com/DanielSnor/Zpravobot.news) od Daniela Snora.
|
||
Přidává AI-powered digest systém s Claude analýzou a automatickou kategorizací zpráv.
|
||
|
||
## 🎯 Co to dělá
|
||
|
||
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
|
||
|
||
### Tři boty s různými styly
|
||
|
||
| 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.vhsky.cz/user/zpravobot-digest.git
|
||
cd zpravobot-digest
|
||
```
|
||
|
||
### 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ň tokeny:
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
## 🧪 Testování
|
||
|
||
### Dry-run (bez publikace)
|
||
|
||
```bash
|
||
source config.env
|
||
./run-digest.sh zpravobot --dry-run
|
||
./run-digest.sh pozitivni --dry-run
|
||
./run-digest.sh sarkasticky --dry-run
|
||
```
|
||
|
||
### Live test (skutečná publikace)
|
||
|
||
```bash
|
||
./run-digest.sh zpravobot
|
||
```
|
||
|
||
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
|
||
30 7 * * * /app/data/zpravobot-digest/run-digest.sh zpravobot
|
||
0 12 * * * /app/data/zpravobot-digest/run-digest.sh pozitivni
|
||
0 19 * * * /app/data/zpravobot-digest/run-digest.sh sarkasticky
|
||
```
|
||
|
||
**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/
|
||
│ ├── 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 # Logy exportu
|
||
```
|
||
|
||
## 🔧 Ruční použití
|
||
|
||
### Publikovat digest
|
||
|
||
```bash
|
||
source config.env
|
||
./run-digest.sh zpravobot # Neutrální
|
||
./run-digest.sh pozitivni # Pozitivní
|
||
./run-digest.sh sarkasticky # Sarkastický
|
||
```
|
||
|
||
### Použít specifické datum
|
||
|
||
```bash
|
||
./run-digest.sh zpravobot --date=2026-01-05 --dry-run
|
||
```
|
||
|
||
### Export CSV
|
||
|
||
```bash
|
||
./export-daily.sh
|
||
```
|
||
|
||
## 🎨 Vlastnosti
|
||
|
||
- ✅ **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í
|
||
|
||
## 📊 Monitoring
|
||
|
||
### 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
|
||
|
||
- **Daniel Snor** - [Zprávobot.news](https://github.com/DanielSnor/Zpravobot.news) - Původní Mastodon instance a koncept
|
||
- **Zprávobot.news komunita** - České/Slovenské Mastodon zpravodajství
|
||
- **Anthropic Claude** - AI analýza a kategorizace
|
||
- **Mastodon** - Decentralizovaná sociální síť
|
||
|
||
---
|
||
|
||
**Verze:** 1.0.0
|
||
**Aktualizováno:** Leden 2026
|