Paskal logo paskal.nl GPT × Strava guide
Custom GPT × Strava

Van trainingsschema naar dynamische hardloopcoach.

Koppel een Custom GPT rechtstreeks aan Strava, zodat je AI-coach niet werkt met verouderde CSV's, maar met actuele trainingsdata.

My Marathon Trainer — analyse via Strava
Voorbeeld van een analyse van acht weken Strava trainingsdata door My Marathon Trainer
Het eindresultaat: je vraagt je GPT om acht weken trainingsdata te analyseren. De coach haalt daarvoor actuele activiteiten uit Strava op in plaats van een verouderde CSV te gebruiken.
Custom GPT
GPT Action
Strava API
Trainingsdata
Wat heb je nodig?

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.

Het idee

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.

Geen momentopname

Werk niet meer met een CSV die na de volgende training alweer achterloopt, maar met recente activiteiten uit Strava.

Schema dat meebeweegt

De planning kan rekening houden met wat je daadwerkelijk uitvoert, inclusief gemiste of zwaardere trainingen.

Bewust read-only

De GPT mag trainingsdata lezen, maar krijgt geen rechten om activiteiten op Strava te wijzigen.

De setup

De koppeling stap voor stap

1

Maak je Strava API-app aan

Maak binnen Strava een eigen API-applicatie aan. Na het registreren van de app krijg je onder andere een Client ID en Client Secret.

Tijdens de eerste configuratie kun je als Authorization Callback Domain tijdelijk bijvoorbeeld localhost gebruiken.

Strava — My API Application
Strava My API Application instellingen
2

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
ChatGPT — Edit actions
GPT Action editor met OpenAPI schema en Strava endpoints
Het OpenAPI-schema in de GPT Action-editor. Onderaan worden de gevonden operations als testbare actions weergegeven.
3

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.

GPT Action — OAuth configuration
OAuth configuratie voor Strava in een GPT Action
De OAuth-configuratie in de Action-editor. Client ID en Client Secret zijn in dit screenshot bewust verborgen.
4

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.

5

Autoriseer de koppeling

Start vanuit de GPT bijvoorbeeld een call naar getAthleteActivities. De eerste keer moet je de Strava-koppeling autoriseren.

Strava — Authorize application
Strava OAuth autorisatiescherm voor de GPT Action
De gebruiker geeft bij Strava zelf toestemming voor toegang tot zijn of haar trainingsdata.
6

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.

Voorbeeldcase

Trainen voor de Marathon Alblasserwaard

42,2 km Marathon Alblasserwaard
20-03-2027 Geplande racedag
< 4:00 Doel — circa 5:41 min/km

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.

Dynamisch coachen

Van statisch schema naar een feedback-loop

Trainen
Strava
Analyseren
Bijsturen
Analyseer de afgelopen week en maak een schema voor volgende week.
Haal eerst de recente Strava-activiteiten op, vergelijk volume en lange duurloop met de voorgaande weken en pas daarna de trainingsweek aan.
Hoe ging de lange duurloop van vandaag?
Analyseer de activiteit, inclusief tempo en hartslag, en gebruik indien nodig laps of streams om te zien hoe stabiel de inspanning was.
Waarom

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.

CSV

Een momentopname. Na je volgende activiteit is de dataset alweer verouderd.

Strava API

De coach kan actuele trainingen ophalen zodra een advies daarom vraagt.

GPT Action

Verbindt natuurlijke taal en coachinglogica met gestructureerde trainingsdata.

Techniek

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.

Troubleshooting

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.

Samengevat

De kern

  1. Een betaald Strava-abonnement.
  2. Een eigen Strava API-app met Client ID en Client Secret.
  3. Een Custom GPT met Actions.
  4. Een compact OpenAPI-schema met alleen de endpoints die je nodig hebt.
  5. OAuth tussen ChatGPT en Strava, bij voorkeur read-only.
  6. 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.