File Location and Playout Setup
To use a YAML schedule, create a playout in the ErsatzTV UI and set its Schedule Kind to Sequential. Then point the playout’s Schedule File field to the absolute path of your YAML file on the server. ErsatzTV reads this file each time the playout is rebuilt; any change to the file is picked up on the next rebuild without restarting the application.YAML File Structure
A YAML schedule file (YamlPlayoutDefinition) has four top-level sections:
content and playout sections are required. The others are optional.
Content Section
Thecontent section declares every media source your schedule references. Each entry gets a short key that subsequent instructions use to refer to that source. ErsatzTV resolves keys to real media collections at build time.
Content Item Fields
Sequence Section
Thesequence section defines reusable named instruction blocks that can be called from the playout section (or from other sequences via the pre_roll, mid_roll, and post_roll instructions). This avoids repeating the same filler logic in multiple places.
Reset Section
Instructions in thereset section run once when the playout is rebuilt from scratch (reset mode). A typical use is inserting a wait_until instruction so the playout always starts at a known wall-clock time, rather than wherever the previous cycle ended.
rewind_on_reset: true allows the playout’s current time to move backward to the specified time when a reset occurs, so a playout that was ahead of schedule doesn’t create a gap.
Playout Section (Instructions)
Theplayout section is the main program loop. ErsatzTV executes these instructions in order and repeats them from the top each cycle. Every instruction can optionally reference a content key and set shared fields such as filler_kind, custom_title, and disable_watermarks.
Playback Instructions
Instruction Reference
Roll and Watermark Instructions
EPG Grouping Instructions
Alternate Schedules (Schedules Section)
Theschedules section defines named alternate playout lists that activate on specific date ranges. When the current date falls within a schedule’s range, ErsatzTV executes that schedule’s playout instructions instead of the default list.
MM-DD (repeats annually) or YYYY-MM-DD (one-time specific year). Higher priority values win when multiple schedules overlap. Alternate schedules maintain their own instruction position state, so switching back and forth does not lose either list’s progress.
Imports
Theimport section lets you split a large schedule across multiple files:
content, sequence, reset, and playout entries. Content keys defined in the importing file take precedence over keys from imported files, preventing accidental overrides.
A Complete Example
Validating YAML Schedules
ErsatzTV includes a built-in YAML validator accessible from the UI. Navigate to Troubleshooting → YAML Validator, paste your YAML content, and click Validate. The validator checks the file against the official JSON Schema (sequential-schedule.schema.json) and reports any structural errors before the file is used in a playout build.
Use the built-in YAML Validator whenever you make changes to a schedule file. Syntax errors or unknown keys are reported immediately, avoiding a failed playout build at runtime.
