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

4.1 KiB

name, description
name description
chart-to-chat 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

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:

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

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.:

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:

Hier ist die Übersicht deiner Laufdistanzen für diese Woche:

MEDIA:/tmp/charts/chart_a1b2c3d4.png