Werk niet meer met een CSV die na de volgende training alweer achterloopt, maar met recente activiteiten uit Strava.
Voor deze guide heb je een Strava-abonnement nodig om een eigen API-app aan te maken. Daarnaast heb je toegang nodig tot een Custom GPT waarin je Actions kunt configureren.
Een coach die weet wat je echt hebt gelopen
Een CSV-export uit Strava is prima voor een eenmalige analyse, maar na de volgende training is zo'n export alweer verouderd. Voor doorlopende coaching wil je actuele data kunnen ophalen wanneer de coach die nodig heeft.
Met een GPT Action kan je Custom GPT rechtstreeks Strava raadplegen. De coach haalt dan eerst recente trainingsdata op en maakt daarna pas een advies of nieuw trainingsschema.
De planning kan rekening houden met wat je daadwerkelijk uitvoert, inclusief gemiste of zwaardere trainingen.
De GPT mag trainingsdata lezen, maar krijgt geen rechten om activiteiten op Strava te wijzigen.
De koppeling stap voor stap
Definieer je GPT Action
Open de editor van je Custom GPT en voeg een nieuwe Action toe. Via een OpenAPI-schema leg je vast welke functies de GPT van Strava mag gebruiken.
Voor een hardloopcoach gebruik je bijvoorbeeld:
- het profiel van de geauthenticeerde atleet;
- recente activiteiten;
- details van een specifieke activiteit;
- laps;
- hartslagzones;
- activity streams;
- samenvattende statistieken.
De belangrijkste API-call voor de coach is:
GET /athlete/activities
Stel OAuth read-only in
Voor authenticatie gebruik je OAuth. Daardoor log je zelf bij Strava in en geef je expliciet toestemming aan de koppeling.
Authentication type:
OAuth
Authorization URL:
https://www.strava.com/oauth/authorize
Token URL:
https://www.strava.com/oauth/token
Scope:
activity:read_all
Token exchange:
Default (POST request)
Daarnaast voer je in de GPT Action de Client ID en Client Secret van je Strava-app in.
Gebruik bewust geen
activity:write.
De coach kan trainingsdata dan analyseren, maar activiteiten niet
aanpassen.
Voeg de callback URL toe aan Strava
ChatGPT genereert voor de Action een eigen OAuth callback-URL. Die ziet er ongeveer zo uit:
https://chat.openai.com/aip/g-.../oauth/callback
Het callback-domein voeg je vervolgens toe aan de configuratie van je Strava-app:
chat.openai.com
Na het autoriseren bij Strava kan de browser daardoor weer terugkeren bij de Custom GPT.
Geef je GPT coaching-instructies
Alleen toegang tot de API maakt nog geen goede coach. De belangrijkste stap is vastleggen wanneer de GPT Strava moet raadplegen en hoe hij de data vervolgens moet interpreteren.
Laat je coach bij relevante vragen bijvoorbeeld dit analyseren:
- kilometers per week;
- gemiddelde weekomvang over 4 en 8 weken;
- trainingsfrequentie;
- ontwikkeling van de lange duurloop;
- typische easy pace;
- tempo- en intervaltrainingen;
- gemiddelde en maximale hartslag;
- eventuele snelle veranderingen in belasting.
Pas daarna bepaalt de coach wat een logische volgende trainingsweek is.
Trainen voor de Marathon Alblasserwaard
Leg naast je doel ook je trainingsvoorkeuren vast. Bijvoorbeeld: op maandag en donderdag staat krachttraining gepland en wil je liever geen looptraining.
Een belangrijk onderdeel van de instructie is dat de GPT je doeltempo niet automatisch als huidig trainingsniveau beschouwt. Eerst moet de coach naar daadwerkelijke prestaties kijken.
Van statisch schema naar een feedback-loop
Waarom niet gewoon een CSV uploaden?
Een CSV-export blijft handig voor historische analyse of als fallback. Voor doorlopende coaching is rechtstreekse API-toegang alleen veel interessanter.
Een momentopname. Na je volgende activiteit is de dataset alweer verouderd.
De coach kan actuele trainingen ophalen zodra een advies daarom vraagt.
Verbindt natuurlijke taal en coachinglogica met gestructureerde trainingsdata.
Het OpenAPI-schema
Het schema hoeft niet de volledige Strava API te bevatten. Expose alleen de read-only functies die relevant zijn voor trainingsanalyse.
Bekijk voorbeeld van het OpenAPI-schema
openapi: 3.1.0
info:
title: Strava Marathon Training API
description: >
Read-only Strava access for analysing running volume,
pace, heart rate, long runs and training load.
version: 1.0.1
servers:
- url: https://www.strava.com/api/v3
paths:
/athlete:
get:
operationId: getAuthenticatedAthlete
summary: Get authenticated athlete
/athlete/activities:
get:
operationId: getAthleteActivities
summary: Get athlete activities
/activities/{id}:
get:
operationId: getActivity
summary: Get activity details
/activities/{id}/laps:
get:
operationId: getActivityLaps
summary: Get activity laps
/activities/{id}/zones:
get:
operationId: getActivityZones
summary: Get activity zones
/activities/{id}/streams:
get:
operationId: getActivityStreams
summary: Get detailed activity streams
In de echte Action moeten response-objecten ook
expliciete properties bevatten. Een kale
type: object kan door de GPT
Action-validator worden afgekeurd.
Waar het mis kan gaan
Strava meldt “client_id invalid”
Controleer de OAuth authorization URL die ChatGPT opent.
Deze parameter moet daadwerkelijk een waarde bevatten:
client_id=123456
Als je dit ziet:
client_id=
dan wordt de Client ID niet correct uit de OAuth- configuratie meegenomen. Vaak helpt het om de OAuth-instellingen opnieuw op te slaan.
De Action zegt dat Strava eerst geautoriseerd moet worden
Controleer of Authentication daadwerkelijk op OAuth staat en voltooi vervolgens de OAuth-flow via de gegenereerde Strava sign-in link.
Welke rechten geef je de GPT?
Voor trainingsactiviteiten kun je deze scope gebruiken:
activity:read_all
Geef alleen aanvullende scopes wanneer je die voor je eigen OpenAPI-endpoints daadwerkelijk nodig hebt. Schrijfrechten zijn voor deze coach niet nodig.
Moet de GPT iedere keer alle Strava-data ophalen?
Nee. Laat de coach normaal gesproken de recente 6 tot 8 weken bekijken en alleen detaildata zoals laps of streams ophalen wanneer dat voor een analyse meerwaarde heeft.
De kern
- Een betaald Strava-abonnement.
- Een eigen Strava API-app met Client ID en Client Secret.
- Een Custom GPT met Actions.
- Een compact OpenAPI-schema met alleen de endpoints die je nodig hebt.
- OAuth tussen ChatGPT en Strava, bij voorkeur read-only.
- Goede instructies voor het interpreteren van de trainingsdata.
Daarmee verandert je Custom GPT van een statische schema-generator in een coach die eerst kijkt naar wat je daadwerkelijk hebt gedaan. De techniek is niet het doel; het doel is beter kunnen bijsturen met actuele trainingsdata.
Wil je daarna ook trainingen terugschrijven naar je horloge? Lees dan de guide over GPT koppelen aan Garmin.