ComfyUI Extension: UCLA Daily

Authored by jbrick2070

Created

Updated

0 stars

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

ComfyUI custom node pack for aggregating UCLA campus news, events, and daily briefs.

README

ComfyUI-UCLADaily

By Jeffrey A. Brick · March 2026

A self-contained custom node pack for ComfyUI that aggregates daily news, events, and press releases from across the UCLA campus into lobby-ready TV displays.

Built for the lobby TV at 6401 Wilshire Blvd (UCLA Housing, Miracle Mile). Outputs a looping 1920x1080 MP4 for OBS → YouTube streaming.

Inspired by the Data Media Machine project. Built following the principles of the ComfyUI Custom Node Survival Guide.


What It Does

Fetches live data from 10 UCLA sources, renders two types of cards, and stitches them into a single MP4:

  • Lobby Summary Cards — one per source, 4 events each, dark theme teletext style
  • Deep Dive Cards — one per event with venue address, enriched description, QR code, procedural geometric art, factual institutional context, and dynamic font sizing

Nodes

| Node | Description | |------|-------------| | UCLADailyDataInit | Initializes the UCLA_DATA pipeline structure | | UCLAMedFetch | Health & Behavior news via Newsroom RSS | | UCLAFilmArchiveFetch | Film & TV content filtered from Newsroom RSS | | UCLAFowlerFetch | Fowler Museum events via HTML scrape | | UCLAArtsFetch | Arts & Culture news via Newsroom RSS | | UCLANewsroomFetch | Any of 11 UCLA Newsroom RSS categories | | UCLACSFetch | UCLA Computer Science events | | UCLAHammerFetch | Hammer Museum events via HTML scrape | | UCLASEISFetch | School of Education events | | UCLAEventbriteFetch | UCLA Eventbrite events | | UCLAHousingInfo | Housing info for Wilshire Apartments | | UCLANarrator | LLM-ready narration formatter | | UCLALobbyCard | Renders 1920x1080 lobby summary cards | | UCLADeepDiveCard | Renders 1920x1080 deep dive detail cards | | UCLADeepDiveBatch | Batch renders all deep dives as a tensor | | UCLASlideshowExport | Stitches cards into MP4 with fade transitions | | UCLADailyPulse | Compiles all data into a formatted report |

Pipeline

DataInit → Fetchers (chain any combination) → LobbyCard / DeepDiveCard → SlideshowExport

All fetchers accept and return UCLA_DATA, so they can be chained in any order.

Standalone MP4 Generator

For OBS workflows, skip the ComfyUI GUI entirely:

cd ComfyUI/custom_nodes/ComfyUI-UCLADaily
python generate_obs.py

Outputs ComfyUI/UCLADAILYOUTPUT/UCLADaily_OBS.mp4 — 12 seconds per card, crossfade transitions, ~10 minutes total. Point OBS Media Source at it with loop enabled.

Deep Dive Card Features

  • Dynamic font sizing — description text scales from 72pt down to 38pt, picks the largest size that fits
  • Venue address database — 20+ UCLA venues mapped to real street addresses
  • Description enrichment — fetches og:description from event detail pages
  • Procedural geometric art — category-aware patterns (film strips, constellations, ripples, hexagons, etc.)
  • QR codes — scannable link to event detail page
  • Factual context — university-level institutional info, not marketing fluff

Data Sources

All public, no API keys needed:

  • UCLA Newsroom RSS (11 category feeds)
  • Hammer Museum (HTML scrape)
  • Fowler Museum (HTML scrape)
  • UCLA CS Events (HTML scrape)
  • UCLA SEIS Events (HTML scrape)
  • Eventbrite UCLA (JSON API)
  • UCLA Housing (built-in data)

Installation

cd ComfyUI/custom_nodes
git clone https://github.com/jbrick2070/ComfyUI-UCLADaily.git
pip install qrcode pillow requests

Restart ComfyUI. Nodes appear under the UCLA Daily category.

Testing

cd ComfyUI-UCLADaily
python test_fetch.py

Runs a 16-step integration test: data init, all fetchers, lobby cards, deep dive cards, batch rendering.

Survival Guide Compliance

Every node follows the ComfyUI Custom Node Survival Guide:

  • Custom type UCLA_DATA prevents accidental cross-wiring
  • IS_CHANGED returns time.time() — forces fresh data every queue run
  • Only stdlib at module scope — heavy imports deferred inside functions
  • NODE_CLASS_MAPPINGS keys are permanent — treated as public API
  • Shared http_utils with requests→urllib fallback for zero-dependency operation
  • Graceful error handling — fetch failures log to errors[] without crashing
  • Unicode cleanup — fixes mojibake from RSS feeds (curly quotes, em dashes, etc.)

License

MIT

Run ComfyUI workflows without the setup

No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.

Learn more