Files
mop-skills/skills/chart-to-chat/SKILL.md
T

101 lines
4.1 KiB
Markdown

---
name: chart-to-chat
description: Generiert hochwertige Diagramme und Charts (Balken, Linien, Verlauf, Donut/Kuchen, KPI-Karten, Tabellen) aus strukturierten Chat-Daten und sendet sie direkt als Bild (PNG) nach Telegram. Basiert auf dbt-charts (lokales Rendering via dct) mit QuickChart.io-Fallback.
---
# 📊 Chart-to-Chat: Diagramm- und Chart-Generator
Dieser Skill transformiert tabellarische Daten, Verläufe, Statistiken oder Kennzahlen direkt in fertige, publikationsreife **PNG-Grafiken**, die nativ per Telegram-Bildnachricht ausgeliefert werden.
---
## 🎯 Wann diesen Skill verwenden?
* Immer wenn der Nutzer nach einer Visualisierung fragt:
* *„Zeig mir das als Diagramm / Chart / Balkendiagramm“*
* *„Plotte mir den Verlauf von X über die letzten 7 Tage“*
* *„Visualisiere meine Ausgaben / mein Training / meine Schritte“*
* *„Erstelle eine Grafik / Kurve dazu“*
* Bei Vergleichsdaten oder Verteilungen (z. B. Anteile, Kategorien, Monatsumsätze).
* Für KPI-Zusammenfassungen mit Hauptwert und Delta.
---
## 📈 Welcher Chart-Typ passt wann?
| Chart-Typ (`--type`) | Bester Anwendungsfall | Beispiel |
|---|---|---|
| `bar` (Default) | Diskrete Kategorien, Rankings, Monatsvergleiche | Schritte pro Tag, Stunden pro Projekt |
| `hbar` | Viele Kategorien mit langen Namen | Ranking der Supermärkte nach Ersparnis |
| `line` | Zeitreihen, kontinuierliche Verläufe, Messwerte | Herzfrequenz, Temperaturverlauf, Gewicht, Watt |
| `area` | Kumulierte Volumina oder Trends über Zeit | Datenverbrauch, kumulierter Regen, Trainingsvolumen |
| `donut` / `pie` | Prozentuale Anteile an einem Ganzen (100 %) | Ausgaben nach Kategorie, Makronährstoff-Verteilung |
| `kpi` | Einzelne prominente Kennzahl mit Kontext/Delta | Aktueller FTP, Monatsumsatz, Gesamtschritte |
| `table` | Strukturierte Datentabelle mit formatierten Spalten | Vergleichstabelle von Produkten oder Tarifen |
---
## 🛠️ Ausführung
Führe das Skript `chart.py` via `uv run` aus (Cluster-Pfad: `/home/node/mop-skills/mop-skills/skills/chart-to-chat/scripts/chart.py`):
### 1. Daten direkt als JSON-String übergeben
```bash
uv run /home/node/mop-skills/mop-skills/skills/chart-to-chat/scripts/chart.py \
--title "Wöchentliche Laufdistanz" \
--type bar \
--data '[{"tag": "Mo", "km": 8.5}, {"tag": "Mi", "km": 12.0}, {"tag": "Fr", "km": 6.2}, {"tag": "So", "km": 16.5}]'
```
### 2. Daten per Pipe (Standard-Eingabe) übergeben
Besonders empfohlen bei größeren Datenmengen oder um Shell-Escaping-Probleme zu vermeiden:
```bash
cat << 'EOF' | uv run /home/node/mop-skills/mop-skills/skills/chart-to-chat/scripts/chart.py --title "Ruhepuls Trend" --type line --data -
[
{"datum": "12.09.", "puls": 54},
{"datum": "13.09.", "puls": 52},
{"datum": "14.09.", "puls": 55},
{"datum": "15.09.", "puls": 53},
{"datum": "16.09.", "puls": 51}
]
EOF
```
### 3. Donut-Chart für Anteile / Verteilungen
```bash
uv run /home/node/mop-skills/mop-skills/skills/chart-to-chat/scripts/chart.py \
--title "Ausgaben September" \
--type donut \
--data '[{"kategorie": "Miete", "euro": 950}, {"kategorie": "Lebensmittel", "euro": 420}, {"kategorie": "Sport", "euro": 110}]'
```
### 4. Optionen des CLI-Tools
- `--title "<Text>"`: Überschrift des Diagramms.
- `--notes "<Text>"`: Optionale Unterzeile / Erläuterung.
- `--type bar|hbar|line|area|donut|kpi|table`: Visualisierungstyp.
- `--data "<JSON>"` oder `--data -` (Stdin): Eingabedaten.
- `--x <Spaltenname>` / `--y <Spaltenname>`: Manuelle Angabe der Achsenspalten (wird ansonsten automatisch erkannt).
- `--engine auto|dct|quickchart`: `auto` nutzt primär das lokale `dbt-charts` und fällt bei Bedarf transparent auf `QuickChart.io` zurück.
---
## 📱 Auslieferung an Telegram
Das Skript gibt als letzte Zeile den Pfad der erzeugten PNG-Datei im Format `MEDIA:<pfad>` aus, z. B.:
```text
MEDIA:/tmp/charts/chart_a1b2c3d4.png
```
Schließe diese Zeile einfach in deine finale Antwort an den Nutzer ein. OpenClaw versendet das Diagramm dadurch automatisch als Bild im Chat:
```markdown
Hier ist die Übersicht deiner Laufdistanzen für diese Woche:
MEDIA:/tmp/charts/chart_a1b2c3d4.png
```