Give it the straps (when each starts, its main line and its sub line), the station's
name, a kicker and the ticker's items; get the layers for a broadcast lower third, a
crawl and a LIVE bug, in a 16:9 or a 9:16 spec. The format, the commands and the
live-spec gate are hn4a-compositor's; this leaf is the news look and its timing.
Captions under it follow guide-caption-a-video.
Inputs
- Cues from the word times (
python-read-word-timings): a name strap lands as the person is introduced, a headline strap as the story is named. - The look: the brand's colours and fonts (
guide-capture-a-brand) or the default navy ribbon, red kicker and gold rule; a condensed face for the headlines and the bug and a sans for the sub lines and the crawl. - Copy: straps in capitals, the sub line one short phrase ("ANCHOR, REPORTER, ENTIRE STAFF"); ticker items joined with " • ". In a comic spot the jokes live in the sub lines and the crawl.
Run it
Write references/chyron.md's module into the job's scripts/ as chyron.py, as is,
and a build script beside it (the reference has one) that adds its layers over the footage:
exec python scripts/build_news.py
exec python scripts/build_news.py --vertical
exec hn4a-compositor still news_h.json stills/news_8.0.png --at 8
Then the live spec (hn4a-compositor, Live spec, then render) with a still at every
strap, before the render.
What it draws
- The bar builds in order: the gold rule wipes (0.6 s), the ribbon and kicker wipe on (0.45 s), the bug wipes and its name rises, a sheen crosses the ribbon, then the first strap.
- Straps swap in place: the main line wipes on in 0.36 s, the sub line rises 0.12 s later, both fade 0.18 s just before the next strap. The bar itself stays up.
- The ticker is full and moving from its first frame, about 75 px a second at 1280 wide, its text repeated to cover the whole span. A crawl that wiped on empty and filled from the right was sent back.
- LIVE and the place wipe in from the right, top right in 16:9, at the end of the kicker row in 9:16, only while the piece is "on the scene".
- 9:16: the block sits on the presenter's chest, under the face and above the
captions (y 1330 on), short of the platform's buttons down the right edge; the crawl
under the bar.
title_baris the short's story pill across the top (y ≈ 150), the key number in the accent, on for the whole video.
Tips and traps
- A strap must fit on one line: the layers are
nowrap, so a long name runs out of the ribbon. Check the longest strap's still; shorten it rather than shrink the type. - Kicker and LIVE tags are sized by the browser (an inline span with padding), so any word fits its tab.
- A ticker needs a clipping group: the crawl's text sits in a group with
overflow: hidden, or it draws over the tag. - A chyron that should lie on a surface in the set (a desk front, a video wall at an
angle) goes in a plane group (
hn4a-compositor-perspective-planes); these helpers draw it facing the camera. - Stills at 0.2 s and 1.5 s show the build; one mid-strap and one at each swap catch a strap fading over the next.
Check it
The checks in hn4a-compositor (frame count, two audio channels, a contact sheet), and
a still at each strap's swap: one strap at a time, the crawl full at 0 s.


