Use this file to discover all available pages before exploring further.
YAML schedules — also called Sequential schedules — let you define a playout’s entire programming logic as a plain-text YAML file. Instead of configuring items through the ErsatzTV UI, you write a structured document that declares content sources, sequences, and playback instructions. ErsatzTV reads the file when building the playout, executes the instructions in order, and loops back to the start each cycle. Because the schedule lives in a file on disk, it can be version-controlled alongside the rest of your media server configuration.
YAML schedule files are plain text. Store them in a Git repository to track changes over time, roll back accidental edits, and collaborate with others on your channel programming.
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.
A YAML schedule file (YamlPlayoutDefinition) has four top-level sections:
# Optional: import definitions from other YAML files# import:# - other-file.yaml# Declare content sources with short keyscontent: []# Define reusable named sequencessequence: []# Instructions run once when the playout is resetreset: []# The main playback loop — repeated each cycleplayout: []# Optional: date-range-based alternate playout listsschedules: []
Only the content and playout sections are required. The others are optional.
The content 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.
The sequence 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.
Instructions in the reset 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.
The playout 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.
The schedules 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.
Date values can be either 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.
Imported files can contribute content, sequence, reset, and playout entries. Content keys defined in the importing file take precedence over keys from imported files, preventing accidental overrides.
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.