A reeln-cli plugin that bridges game initialization to the streamn-scoreboard OBS plugin.
When reeln game init runs, this plugin writes initial game state to the scoreboard's 22 text output files — setting team names, clock time, scores, shots, faceoffs, fouls, period labels, penalty durations, sport, and clearing penalties. It also clears any stale timestamps.txt from a previous session.
When reeln game finish runs, the plugin copies timestamps.txt (written by OBS during the game) to chapters.txt in the game directory and populates context.shared["game_events"] for downstream plugins (e.g. Google plugin YouTube chapter insertion).
reeln plugin install streamn-scoreboardOr for development:
git clone https://github.com/StreamnDad/reeln-plugin-streamn-scoreboard
cd reeln-plugin-streamn-scoreboard
make dev-installAdd the scoreboard plugin settings to your reeln-cli config:
{
"plugins": {
"settings": {
"streamn-scoreboard": {
"output_directory": "/path/to/scoreboard/output"
}
}
}
}| Key | Required | Description |
|---|---|---|
output_directory |
Yes | Path to the scoreboard text file output directory |
| File | Content at game init |
|---|---|
clock.txt |
Formatted period length (e.g., 20:00) |
period.txt |
1 |
home_name.txt |
Home team name |
away_name.txt |
Away team name |
home_score.txt |
0 |
away_score.txt |
0 |
home_shots.txt |
0 |
away_shots.txt |
0 |
home_faceoffs.txt |
0 |
away_faceoffs.txt |
0 |
home_fouls.txt |
0 |
away_fouls.txt |
0 |
home_fouls2.txt |
0 |
away_fouls2.txt |
0 |
home_penalty_numbers.txt |
(empty) |
home_penalty_times.txt |
(empty) |
away_penalty_numbers.txt |
(empty) |
away_penalty_times.txt |
(empty) |
default_penalty_duration.txt |
Minor penalty seconds (e.g., 120 for hockey) |
default_major_penalty_duration.txt |
Major penalty seconds (e.g., 300 for hockey) |
sport.txt |
Sport name (e.g., hockey) |
period_labels.txt |
Sport-specific labels (e.g., 1\n2\n3\nOT\nOT2\nOT3\nOT4\n for hockey) |
Once installed and configured, the plugin activates automatically. Run:
reeln game init Eagles Hawks --sport hockey --level bantamThe plugin writes initial scoreboard state to the configured output directory. The OBS scoreboard's 100ms write loop takes over once the game is running.
After the game, run:
reeln game finishThe plugin copies event timestamps from the scoreboard output to chapters.txt in the game directory for downstream use (YouTube chapter descriptions, ffmpeg chapter injection).
The clock value is resolved with the following priority:
game_info.period_length— set via--period-lengthCLI flag or interactive prompthome_profile.period_length— from the team profile when--levelis used- Sport-based default — fallback from the table below
| Sport | Default Clock | Notes |
|---|---|---|
| hockey | 20:00 |
20 min periods, count down |
| basketball | 12:00 |
12 min quarters |
| soccer | 45:00 |
45 min halves |
| football | 30:00 |
30 min halves |
| lacrosse | 12:00 |
12 min quarters |
| rugby | 40:00 |
40 min halves |
| baseball | 0:00 |
No clock |
| generic | 0:00 |
No default duration |
make dev-install # editable install with dev deps
make test # pytest with 100% coverage
make lint # ruff check
make format # ruff format
make check # lint + type check + testAGPL-3.0