Hi,
I tried and tried, but I did not come across a complete and current definition of the (formal) syntax of possible workout definitions. By that I mean the text used in the workout builder.
Robert
Hi,
I tried and tried, but I did not come across a complete and current definition of the (formal) syntax of possible workout definitions. By that I mean the text used in the workout builder.
Robert
Use the builder for what you want to achieve. Then check the text and you will quickly see what you need to build it with text.
No, the idea is to try to have some AI generate an importable plan from some plain text. For that I need a formal syntax definition of the target “language”.
I’m actively fighting this battle with ChatGPT and trying to get it to write reasonable workouts as well.
In lieu of a complete definition, I’ve found some success with providing it examples of the typical things I want (steps, paces etc etc).and it usually does the right thing when given that and adapting it to some new version.
Would be interested in something that was more comprehensive though.
I’ve had some success with:
You are a workout generator that outputs correctly formatted Intervals.icu Markdown.
⚙️ Format rules:
1. **Section headers** like Warmup/Main Set/Cooldown on a separate line.
2. **Steps** begin with `- `, followed by:
• Duration (e.g., `5m`, `30s`, `1m30`).
• Target intensity:
– For cycling: `%` of FTP (e.g., `85%`, `95-105%`).
– For running: `%` of pace threshold (e.g., `95%`, `90-100%`).
– Zones: e.g., `Z2`, `Z3 HR`, or `Z2 Pace`.
• Optional cadence (e.g., `90rpm`).
• Optional ramp (e.g., `ramp 60-80%`).
3. **Repeats**: use `Nx` on its own line, preceding the block.
4. **Comments/prompts** free text before intensity elements.
5. Leave **blank lines** between sections and repeats.
6. You may **mix modes** (e.g., Power/Pace/HR), as long as each step specifies a valid single unit. :contentReference[oaicite:1]{index=1}
đź’ˇ Example (cycling):
Warmup
- 10m ramp 55-75% FTP 90rpm
Main Set 3x
- 5m 90% FTP 95rpm
- 3m 65% FTP 85rpm
Cooldown
- 10m ramp 75-55% FTP 85rpm
đź’ˇ Example (running):
Warmup
- 10m ramp 60-80% pace
Main Set 4x
- 6m 100% pace
- 3m 75-80% pace
Cooldown
- 10m cooldown at Z1-Z2 pace
---
When I give you a workout description in plain English (with sport, target intensity type, durations, reps, etc.), respond **only** with the correctly formatted Intervals.icu Markdown.
AFFIRM "UNDERSTOOD." if you’re ready.
Huh. One of the reasons I like intervals.icu is that you can already write the workout in plain text. And then you can just copy/paste and make some light edits as needed.
How much time is this going to save? Isn’t it going to take as much time to describe it in plain English? And you still have to get it into intervals.icu?
I feel like I’m missing something here. @David has already created the most elegant workout builder I’ve seen!
For me, it’s more that I’m experimenting with ChatGPT as a coach, and it’s nice to be able to have it build the workouts for the week, and simply be able to put them into intervals.icu.
Ideally, next step would be an LLM that can use a tool to directly write to intervals.icu.
The idea is that on some webpage there is a trainingplan in plain text. I want to put this into some machinery that generetes a snipped that I can put into intervals. This clearly saves time since I would not have to extract and to retype what is already in the workout description.
That’s how I’ve built my library of workouts. A few times I had forgotten to change the title so the workout said the original, but the plan said the increased interval/duration/intensity.
This all makes sense. I don’t worry too much about the details and have an overall idea, so I’m generally writing what I want to do week-to-week. But yeah, if you could just point an AI at a multi week or month plan, being able to input it plain text makes intervals.icu better than other platforms.
The whole thread on the workout builder is here, not sure it has all the syntax rules.
Hi,
some time ago i started to program an “AI” myself, which can create an individual training for several weeks.
The aim is to have the highest possible fitness on the “competition” day with the lowest possible acute exhaustion.
The training is then planned up to the start time ![]()
Sync to icu currently via the calendar import (subscription calendar). Then it stays up to date even if you change the plan etc..
You can take a look at it if you like.
You could try an MCP like GitHub - spraot/intervals-mcp-server: Model Context Protocol (MCP) server for connecting Claude with the Intervals.icu API
Same here, the idea (similar to OP’s) is to plan out series of workouts ahead of time to some goal, tweaking them using LLM (or just programming rules). To do that you need to start off from a full spec of the builder syntax (much like any API really).
Builder is absolutely great btw!
I want to use an LLM as well to create multi-sport and multi-week workout plans. Is this prompt you posted your latest, or if you’re like me, you’ve likely made some tweaks - If so, can you share? Also, do you have a way to have the LLM create say a month’s worth of workouts, output to csv, then upload via some program’s api to intervals.icu?
Is there a way you can share your workouts?
Hello,
I have two guidelines to create cycling planned training workouts that may help in what you are looking for (they are not free though):
and
Greetings