Pierre Laub endurance × creativity

Den Marathonplan als JSON-API für Claude und ChatGPT

Manchmal passt eine Trainingswoche einfach nicht. Dienstreise, Kind krank, schlechtes Wetter drei Tage am Stück. Der Plan steht, aber das Leben hält sich nicht daran. Bisher war die Lösung: selbst überlegen, was man wie verschiebt.

Naheliegendere Lösung: das einfach jemand anderen machen lassen. Und dafür braucht Claude oder ChatGPT erst einmal die Daten.

Neu im Plan-Header: ein „{ } JSON für KI kopieren”-Button. Ein Klick, und man hat eine URL in der Zwischenablage, die der fertige Trainingsdatensatz zurückliefert — mit der aktuellen Woche prominent oben, dem Gesamtplan darunter, und allen Paces an die eigene Zielzeit angepasst.


Was die API zurückliefert

GET https://pierrelaub.de/marathon-plan.json
GET https://pierrelaub.de/marathon-plan.json?goalTime=14400

Die Antwort ist strukturiertes JSON: Metadaten, Pace-Zonen, die aktuelle Woche als eigenes Objekt, und alle 23 Wochen im plan-Array. Gekürzt sieht das so aus:

{
  "meta": {
    "generatedAt": "2026-05-20T08:14:00.000Z",
    "planStart": "2026-05-18",
    "raceDate": "2026-10-25",
    "totalWeeks": 23,
    "currentWeekNumber": 2,
    "goalTime": "3:30:00",
    "goalTimeSeconds": 12600
  },
  "paceZones": [
    {
      "zone": 1,
      "name": "Easy / Z2",
      "pace": "5:45–6:15",
      "vsMP": "~60–75 Sek. langsamer",
      "purpose": "Grundlage, Regeneration, Volumen aufbauen ohne Stress"
    }
  ],
  "currentWeek": {
    "weekNumber": 2,
    "phase": "Regeneration",
    "weekStart": "2026-05-25",
    "weekEnd": "2026-05-31",
    "volumeKm": 52,
    "isKeyWeek": false,
    "isRecoveryWeek": false,
    "coachNote": "...",
    "days": [
      {
        "weekday": "Monday",
        "date": "2026-05-25",
        "type": "Easy",
        "title": "Regenerationslauf",
        "description": "45 Min easy @ 5:45–6:15, lockeres Tempo",
        "distanceKm": 8
      }
    ]
  },
  "plan": [ ... ]
}

currentWeek ist immer serverseitig berechnet — Timezone Europe/Berlin, damit montags morgens die richtige Woche zurückkommt und nicht schon die nächste.


Wie man es benutzt

URL kopieren, in Claude oder ChatGPT einfügen, und dann einfach fragen:

„Hier sind meine Trainingsdaten: [URL]. Diese Woche habe ich Mittwoch und Donnerstag nicht trainiert. Wie verteile ich die verpassten Einheiten auf Freitag bis Sonntag?”

Oder:

„Ich fahre nächste Woche auf Geschäftsreise und habe nur ein Hotelgymnasium. Schlag mir eine angepasste Woche vor, die das Volumen hält.”

Das LLM sieht die aktuellen Pace-Zonen, weiß in welcher Trainingsphase man sich befindet, und kann fundierte Vorschläge machen statt generischen Ratschläge.


Technisch: personalisierte Paces im JSON

Dasselbe Prinzip wie beim iCalendar-Feed: Der ?goalTime-Parameter (Sekunden) steuert die Pace-Berechnung. Wer auf 4:00 trainiert, bekommt ?goalTime=14400 — und alle Beschreibungen im JSON enthalten dann die passenden Paces für diese Zielzeit, nicht die Standard-3:30-Werte.

Der kopierte Link enthält automatisch die im Plan eingestellte Zielzeit, sofern sie vom Standard abweicht.


Den Plan gibt es hier: /marathon