UCLA Daily: Lobby Card
The summary card that makes raw text look like a TV broadcast
- card_image
- save_path
UCLALobbyCard is where the UCLA Daily pipeline finally becomes visible. Every fetcher upstream hands you boring text; this node renders it as a 1920x1080 dark-theme display card - UCLA blue background, gold accents, clean monospace type, an "UNOFFICIAL" badge in red - the exact look you'd expect from a building lobby TV. It's the node that makes a string of event listings feel like a broadcast.
It's part of the UCLA Daily pack by Jeffrey A. Brick, built for the lobby screen at 6401 Wilshire Blvd. The pipeline is DataInit → fetchers → cards → MP4, and the LobbyCard is the summary tier: one card per source, each showing a handful of events, teletext-style. The deep-dive cards handle the per-event detail; this one is the overview.
How it works
It renders with PIL (Pillow), drawing directly onto a canvas with the pack's UCLA brand palette and a font fallback list (Liberation Sans → Lato → DejaVu). Input is a plain text string, not the UCLA_DATA dict - that's a deliberate design break: the card node doesn't care about your pipeline internals, it just wants text. Feed it a fetcher's segment_text directly, or run that text through UCLANarrator first for a polished version. It returns a ComfyUI IMAGE tensor (H×W×3 float 0–1), so it plugs into any standard image workflow - preview, save, or composite.
IS_CHANGED hashes the input text, so the node only re-renders when the text actually changes - the rare UCLA Daily node that isn't chatty by default. That's fine: text in, new card out.
The inputs that matter
- segment_text - required. The text to render; from any fetcher's
segment_textor the Narrator'snarrated_text. - card_width / card_height - default 1920×1080. The whole pack is tuned for that; drop below 800×600 and layout gets cramped.
- title_override - blank by default (auto-detect from the segment). Set it if you want a fixed header regardless of content.
- show_unofficial_badge - default true. The pack is a fan project, not a UCLA-branded product, and it's honest about it.
- save_to_disk - default false. Flip on to write a PNG to the output directory.
Outputs
Two: card_image (the IMAGE tensor - preview it, save it, or feed it to a video node) and save_path (the file path, if save_to_disk is on).
Install
ComfyUI Manager → search UCLA Daily, or:
cd ComfyUI/custom_nodes
git clone https://github.com/jbrick2070/ComfyUI-UCLADaily.git
pip install qrcode pillow requests
Restart ComfyUI. Pillow is the real dependency here - the node defers the import, so it'll load without it, but the render will fail until you pip install pillow.
Common issues
If the card comes out blank or the node errors on a fresh install, the cause is almost always missing Pillow - the README's pip install line includes it, so run that first. Font-related weirdness (fallback glyphs, boxes) means your system is missing the preferred fonts; install DejaVu or Liberation and it'll look right. And remember it renders whatever text you feed it - garbage in, beautifully-typeset garbage out.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| segment_text | STRING | Segment text from a fetcher or narrator node. | |
| card_widthopt | INT | 1920800–3840 | Card width in pixels. |
| card_heightopt | INT | 1080600–2160 | Card height in pixels. |
| title_overrideopt | STRING | Custom title. Blank = auto-detect from segment. | |
| show_unofficial_badgeopt | BOOLEAN | true | Show UNOFFICIAL badge. |
| save_to_diskopt | BOOLEAN | false | Save PNG to output directory. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| card_image | IMAGE | — |
| save_path | STRING | — |