--- 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 ""`: Überschrift des Diagramms. - `--notes ""`: Optionale Unterzeile / Erläuterung. - `--type bar|hbar|line|area|donut|kpi|table`: Visualisierungstyp. - `--data ""` oder `--data -` (Stdin): Eingabedaten. - `--x ` / `--y `: 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:` 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 ```