Alle Artikel
/ 3 Min. Lesezeit

MRC Race Reports: Wie ich Rennberichte und Clubmeisterschaft mit KI automatisiert habe

Rennberichte schreiben und Clubmeisterschafts-Platzierungen auswerten — automatisiert mit RaceResult-Scraping und Claude AI.

ReactClaude AIWeb ScrapingNode.jsSportverein
suetti.it/dev-log
MRC Race Reports: Wie ich Rennberichte und Clubmeisterschaft mit KI automatisiert habe

Rennberichte: Ein unterschätzter Zeitfresser

Wer in einem Laufverein aktiv ist, kennt das: Nach jedem Wettkampf will man einen Bericht für die Vereinsseite schreiben. Wer war dabei, welche Zeiten wurden gelaufen, wer hat sich verbessert? Klingt einfach — ist aber bei 20+ Veranstaltungen pro Saison ein echtes Zeitproblem.

Beim Markgräfler Runners Club (MRC) kam noch die Clubmeisterschaft dazu: Eine Jahreswertung über alle Wettkämpfe, mit Bonuspunkten für Halbmarathon, Marathon und Ultra. Die manuelle Auswertung war ein Albtraum aus Tabellen, Copy-Paste und Fehlerquellen.

Also habe ich eine App gebaut, die beides automatisiert.

RaceResult-Scraping: Ergebnisse auf Knopfdruck

Die meisten Laufveranstaltungen im DACH-Raum nutzen RaceResult für die Zeitmessung. Die Ergebnisse sind öffentlich — aber es gibt keine einheitliche API für den Zugriff von außen.

Das Problem: Jede Veranstaltung benennt die Spalten anders. Mal heißt es "Platz", mal "Rang", mal "PLP". Die Bruttozeit ist bei einem Event "Brutto", beim nächsten "Chipzeit" und beim übernächsten einfach "Time". Mein Parser muss über 20 Feldnamen-Varianten erkennen und normalisieren.

Der Ablauf: URL eingeben, die App holt sich den API-Key aus der RaceResult-Konfiguration, fetcht die Ergebnisdaten und filtert automatisch alle MRC-Läufer heraus. Vereinszugehörigkeit wird per Case-insensitive-Matching erkannt — denn nicht jeder schreibt "Markgräfler Runners Club" gleich.

KI-generierte Berichte mit Claude

Die Ergebnistabelle allein macht noch keinen guten Bericht. Also kommt Claude ins Spiel. Die App übergibt dem Modell alle relevanten Daten: Eventname, Datum, Läuferliste mit Platzierungen und Zeiten. Dazu kann man Fotos hochladen — Claude erkennt per Vision-API Startnummern auf den Bildern und ordnet sie den Läufern zu.

Aus diesen Daten generiert Claude einen strukturierten HTML-Bericht im Vereins-Stil: Erzählender Text mit persönlichen Highlights, eingebettete Fotos und eine saubere Ergebnistabelle am Ende. Der Stil ist per Custom Prompt anpassbar — der Verein kann selbst bestimmen, wie die Berichte klingen sollen.

Das Ergebnis lässt sich im integrierten Editor nachbearbeiten, und per Copy-to-Clipboard direkt ins CMS der Vereinsseite übernehmen.

Clubmeisterschaft: Automatische Jahreswertung

Der eigentliche Gamechanger war aber die Clubmeisterschaft. Die Regeln klingen simpel: Punkte für jeden gewerteten Lauf, Bonuspunkte für längere Distanzen, getrennte Wertung nach Geschlecht. In der Praxis ist die Auswertung ein Krampf — Namen werden unterschiedlich geschrieben, Läufer fehlen mal in der Vereinsspalte, und die Punkteberechnung über eine ganze Saison manuell zu pflegen ist fehleranfällig.

Die App löst das automatisch: Jeder gespeicherte Rennbericht fließt in die Clubmeisterschafts-Wertung ein. Namenserkennung mit Normalisierung fängt Tippfehler ab. Bonusläufe (Halbmarathon, Marathon, Ultra) können separat eingetragen werden. Das Gesamtranking aktualisiert sich live und lässt sich per Klick als formatierte Tabelle exportieren.

Was vorher Stunden gedauert hat, passiert jetzt in Sekunden.

Tech-Stack

Die App ist ein klassisches React-Frontend mit Express-Backend:

  • Frontend: React 19, React Router, Tailwind CSS — ein 4-Schritt-Wizard führt durch die Berichterstellung
  • Backend: Express 5 mit Multer für Foto-Uploads, Cheerio für HTML-Parsing der RaceResult-Seiten
  • KI: Anthropic Claude (Sonnet) für Berichtsgenerierung und Foto-Analyse
  • Daten: Filesystem-basiert mit JSON — kein Datenbank-Overhead für eine Vereins-App
  • Deployment: Docker mit Traefik als Reverse Proxy

Fazit

Nicht jedes Projekt muss die Welt verändern. Manchmal reicht es, einem kleinen Laufverein jede Woche ein paar Stunden Arbeit zu sparen. Die Kombination aus Web Scraping und KI-Textgenerierung passt hier perfekt — und die automatische Clubmeisterschafts-Auswertung hat allein schon den Entwicklungsaufwand gerechtfertigt.

TS

Timo Sütterlin

Fullstack-Entwickler — Web, Mobile, KI

Weitere Artikel

← Alle Artikel