A command line tool for ZWO Workout Creation and Management
Convert CSV data into Zwift Workout Files.
> git clone https://github.com/jameswberry/workout-creator-cli.git
> cd workout-creator-cli
> npm install
INTERACTIVE MODE
15 > node workout-creator-cli
Input [.csv] > (WorkoutCreator.csv)
Output Directory > (./)
Template [.mustache] > (WorkoutCreator.mustache)
Verbose > (true)
Debug > (false)
CLI ARGS
23 > node workout-creator-cli --input WorkoutCreator.csv --output ./ --template WorkoutCreator.mustache -- verbose true --debug true
The following "columns" are required in the input CSV.
- Phase
- The top level grouping for individual workouts. (e.g. Aerobic Base, Base, Hills, etc.)
- Class
- The incremental class number within the phase (e.g. 1, 2, 3, 4)
- Type
- The type of block in the class. (e.g. Author, SteadyState, etc.)
- See: Workout Block Types for Type value definitions
- Value
- A value or message associated with the Phase:Class:Type block.
- Offset
- Time offset for blocks of type TEXTEVENT. (5 or 10 Second increments)
- Repeat
- Number of times to repeat the block.
- Duration
- Total duration of the main block. (Seconds)
- DurationOff
- Total duration of the off block. (Seconds)
- Power
- Power target for the block. (% of FTP)
- PowerLow
- Low power target for the block. (% of FTP)
- PowerHigh
- High power target for the block. (% of FTP)
- PowerOff
- Power target for the off block. (% of FTP)
- Cadence
- Cadence target for the block.
- CadenceLow
- Low cadence target for the block.
- CadenceHigh
- High cadence target for the block.
- CadenceOff
- Cadence target for the off block.
Each Class in each Phase is required to have the following block Types defined.
- Author
- Name
- Description
- Sport
- Tag (Multiple, Optional)
- Zwift Defaults: RECOVERY, INTERVALS, FTP, TT.
- Note: A tag will automatically be added to the Class for the Phase value (e.g. Base, Hills, etc.). This allows you to search groups of workout classes by Phase in Zwift.
- Zwift Defaults: RECOVERY, INTERVALS, FTP, TT.
Supports all of the default ZWO blocks, as well as custom workout block options.
- Warmup
- Ramp
- Steady State
- IntervalsT
- Freeride
- ProgressiveWarmup
- ProgressiveBuild
- SteadyBuild
- Progression
- Rest
- ActiveRest
- AlternatingClimb
- Climbing
- SeatedRoller
- StandingRolloer
- PaceLine
- Cooldown
- BigDaddies
- Motivation5
Text events are displayed on the Zwift screen, triggered at the beginning of each workout block. They can be added in three ways:
- Value
- Associating a Value with a Phase:Class:Type workout block in the CSV will automatically add a TextEvent at time 0 with that value.
- Type
- Adding a TextEvent block will automatically apply the TextEvent to the previous non-textevent block at time Offset.
- Defaults
- Many Custom Blocks add predefined TextEvents.
- If you choose to add your own, you will want to confirm that your Offset values take these into consideration.
TextEvents are displayed in Zwift for 10 seconds, so it's recommended that Offset values are in multiples of 5 or 10.