Extensions/UCLA Daily
ComfyUI Extension

UCLA Daily

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

By jbrick2070·Created 6 months ago·Updated 6 months ago· 0
jbrick2070/ComfyUI-UCLADaily
Nodes17
On cloudLocal install
CategoryUCLA Daily/Fetchers, UCLA Daily
Stars0
Updated6 months ago

Nodes (17)

UCLA Daily: Arts Fetch

Arts & culture news, since arts.ucla.edu is a JS trap

UCLA Daily/Fetchers
UCLA Daily: CS Fetch

CS seminars from UCLA's server-rendered events page

UCLA Daily/Fetchers
UCLA Daily: Data Init

The node that makes UCLA Daily re-fetch every run

UCLA Daily
UCLA Daily: Pulse Report

The terminal node that turns a day of UCLA feeds into a report

UCLA Daily
UCLA Daily: Deep Dive Batch

Render every event as a full deep-dive card, in one tensor

UCLA Daily
UCLA Daily: Deep Dive Card

One event, one full-screen card, with QR code and procedural art

UCLA Daily
UCLA Daily: Eventbrite Fetch

UCLA events from Eventbrite, with a party filter that actually works

UCLA Daily/Fetchers
UCLA Daily: Film Archive Fetch

UCLA Film & TV Archive news, scraped the honest way

UCLA Daily/Fetchers
UCLA Daily: Fowler Fetch

Fowler Museum events — the other free museum on campus

UCLA Daily/Fetchers
UCLA Daily: Hammer Fetch

Hammer Museum events, dated automatically for today

UCLA Daily/Fetchers
UCLA Daily: Housing Info

The node that's honest about being a static reference card

UCLA Daily
UCLA Daily: Lobby Card

The summary card that makes raw text look like a TV broadcast

UCLA Daily
UCLA Daily: Med Fetch

Health & Behavior news from UCLA Newsroom, no API key required

UCLA Daily/Fetchers
UCLA Daily: Narrator (Qwen2.5)

Qwen2.5 rewrites your dry event list into something readable

UCLA Daily
UCLA Daily: Newsroom Fetch

11 UCLA Newsroom feeds in one dropdown

UCLA Daily/Fetchers
UCLA Daily: SEIS Fetch

UCLA School of Education events, scraped cleanly

UCLA Daily/Fetchers
UCLA Daily: Slideshow Export (MP4)

The node that turns your cards into a looping MP4

UCLA Daily
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