homelab-brain/homelab-ai-bot/tools/matomo.py

60 lines
2.7 KiB
Python

"""Matomo Website-Analytics Tools."""
from core import config, matomo_client
TOOLS = [
{
"type": "function",
"function": {
"name": "get_matomo_analytics",
"description": "Matomo Website-Analytik: Besucher heute, Trend, Top-Seiten, Traffic-Quellen, Laender. Fuer alle Fragen zu Besucherzahlen, Zuschauern, Traffic, Seitenaufrufen, Bounce Rate, Herkunftslaendern.",
"parameters": {"type": "object", "properties": {}, "required": []},
},
},
{
"type": "function",
"function": {
"name": "get_matomo_trend",
"description": "Besucherentwicklung ueber Zeit: Tageweise Besucherzahlen ueber N Tage. Nutze bei 'wie entwickeln sich die Zuschauer', 'Besuchertrend', 'wachsen wir'.",
"parameters": {
"type": "object",
"properties": {
"days": {"type": "number", "description": "Anzahl Tage zurueckblicken (default: 30)", "default": 30}
},
"required": [],
},
},
},
]
SYSTEM_PROMPT_EXTRA = """ANALYTICS-INTERPRETATION (Matomo):
Wenn du Analytics-Daten bekommst (get_matomo_analytics, get_matomo_trend), interpretiere sie QUALIFIZIERT:
- Nenne nicht nur Zahlen, sondern BEWERTE sie ("88% Bounce Rate ist schlecht", "42s Verweildauer ist zu kurz")
- Vergleiche IMMER mit der Vorwoche wenn Daten vorhanden ("30% mehr als letzte Woche")
- Nenne den TREND klar ("Traffic steigt seit 5 Tagen", "Ruecklaeufig seit Montag")
- Bei Peaks: Vermute WARUM ("Am 24.02. 147 Besucher — pruefe welcher Artikel viral ging")
- Bei hoher Abhaengigkeit von einer Quelle: WARNE ("80% kommt von Google — riskant")
- Gib 1-2 konkrete EMPFEHLUNGEN ("Bounce Rate senken: Ueberschriften verbessern, Ladezeit pruefen")
- Wochentags-Muster nutzen: "Dienstag ist dein staerkster Tag — poste neue Artikel dienstags"
- NICHT: endlose Zahlentabellen wiedergeben. Fasse zusammen, hebe das Wichtige hervor.
- Format: Kurze Absaetze, KEINE langen Listen. Wie ein Analytics-Berater der auf den Punkt kommt."""
def handle_get_matomo_analytics(**kw):
cfg = config.parse_config()
if not matomo_client.init(cfg):
return "Matomo nicht konfiguriert (MATOMO_URL/MATOMO_TOKEN fehlt in homelab.conf)"
return matomo_client.format_analytics()
def handle_get_matomo_trend(days=30, **kw):
cfg = config.parse_config()
if not matomo_client.init(cfg):
return "Matomo nicht konfiguriert (MATOMO_URL/MATOMO_TOKEN fehlt in homelab.conf)"
return matomo_client.format_trend(days=days)
HANDLERS = {
"get_matomo_analytics": handle_get_matomo_analytics,
"get_matomo_trend": handle_get_matomo_trend,
}