ComfyUI-Goofer v1.0
IMDb Goof-to-Video Pipeline
Random IMDb movie goof → AI video prompt → LTX-2 video clips → procedural interstitial → MusicGen film score → final stitched video.
Fully automated. Zero API keys. Drop into custom_nodes/ and queue.
Download
Click here to download the full package (v1.0) — includes workflow JSON + this guide.
What It Does
Goofer picks a random film from a pool of 424 curated titles, fetches its IMDb continuity errors and goofs, sanitizes all copyrighted names and brands, generates a cinematic video prompt for each goof, renders an LTX-2 video clip per goof, creates a procedural data-viz interstitial with an AI-generated film score, then stitches everything into a single upscaled output video.
Every run is a different movie. Every queue is a new short film.
New to ComfyUI? Start Here
ComfyUI is a free, node-based interface for running AI image and video models locally on your GPU.
Already have ComfyUI installed? Skip to Step 2.
Step 1 — Install ComfyUI
Use the official desktop installer — it handles Python, Git, and dependencies automatically:
https://www.comfy.org/download
Advanced users can also install manually from https://github.com/comfyanonymous/ComfyUI
Step 2 — Install Required Models
☕ Grab a coffee — the main video model is ~9.5 GB.
| Model | Download | Size | Save To |
|---|---|---|---|
| LTX-Video v0.9.5 (required) | HuggingFace | ~9.5 GB | ComfyUI/models/checkpoints/ |
| LTX-Video 13B (optional, higher quality) | HuggingFace | ~26 GB | ComfyUI/models/checkpoints/ |
| MusicGen Large | Auto-downloaded on first run | ~3.3 GB | HuggingFace cache |
| Flan-T5-small | Auto-downloaded on first run | ~80 MB | HuggingFace cache |
MusicGen and Flan-T5 download automatically the first time you run the workflow — no manual steps needed.
Step 3 — Install ComfyUI-Goofer
Option A — ComfyUI Manager (recommended):
- Open ComfyUI Manager → Install Custom Nodes
- Search "Goofer" → Install → Restart
Option B — Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/jbrick2070/ComfyUI-Goofer
Then install Python dependencies:
pip install cinemagoer requests transformers torch
Step 4 — Load the Workflow
- Open ComfyUI at
http://127.0.0.1:8000 - Click Load and select
example_workflows/goofer_basic.json - If any nodes appear red: Manager → Install Missing Custom Nodes → Restart
- Hit Queue — Goofer picks a random movie and starts generating
Which GPU do I need?
| Setup | GPU | VRAM |
|---|---|---|
| Recommended | RTX 5080 / 4090 | 16 GB+ |
| Minimum | RTX 4070 / 3060 | 8 GB |
Check your VRAM: Windows: Task Manager (Ctrl+Shift+Esc) → Performance → GPU → Dedicated GPU Memory. Linux:
nvidia-smi
The Node Pipeline
GooferInit
│
▼
GooferGoofFetch ──────────────────────────────────┐
│ movie_data goofs_data │
▼ │
GooferSanitizer │
│ sanitized_goofs │
▼ │
GooferPromptGen │
│ prompts (×5) │
▼ │
GooferBatchVideo │
│ video clips (×5) │
▼ ▼
[final stitch] ◄── GooferProceduralClip ◄── GooferBackgroundMusic
Node Reference
| Node | What It Does |
|---|---|
| GooferInit | Sets global config: output path, upscale mode, seed |
| GooferGoofFetch | Picks a random film from 424 titles, fetches goofs from IMDb via Cinemagoer + direct HTTP fallback. Seed-diversified so every run draws a fresh subset from the full goof pool |
| GooferSanitizer | Strips copyrighted character names, actor names, studio names, brand names, and franchise references from all goof text before it reaches any AI model |
| GooferPromptGen | Converts sanitized goof descriptions into cinematic LTX-2 video prompts using category-aware templates (continuity errors → observational style, factual errors → documentary style, etc.) |
| GooferBatchVideo | Feeds each prompt to LTX-Video and renders one video clip per goof. Configurable resolution, frame count, and guidance strength per clip |
| GooferBackgroundMusic | Generates a film score with Meta MusicGen 3. Prompt is derived from actual goof keywords (explosions → percussive bass, chases → driving rhythm, basketball → upbeat brass, etc.) plus Flan-T5-small genre/mood inference from the film's plot. Falls back to additive-synthesis chord progression if MusicGen is unavailable |
| GooferProceduralClip | Renders a data-viz interstitial showing goof metadata as animated neon graphics. Duration syncs to the MusicGen output length via the music_duration input |
| GooferAudioEnhance | Optional EQ / loudness normalization pass on the final audio mix |
Movie Pool
Goofer ships with 424 curated titles spanning 1939–2024:
Action · Sci-Fi · Horror · Comedy · Drama · Western · War · Disaster · Spy/Espionage · Animation · Romance · Musical · Sports · Cult Classics
Each entry is verified against IMDb with a title-sanity check — if an ID returns the wrong film, Goofer skips it and picks another rather than generating content for the wrong movie.
To add your own films, edit _RANDOM_MOVIE_POOL in goofer_goof_fetch.py:
("Your Movie Title", YEAR, "IMDB_ID_WITHOUT_TT"),
# e.g.
("The Thing", 1982, "0084787"),
Copyright Safety
Goofer is designed to keep copyrighted names out of AI-generated video prompts. The GooferSanitizer node runs several passes before any text reaches LTX-Video or MusicGen:
- Franchise names replaced with generic descriptions (
"James Bond"→"a spy thriller") - Movie title as character name →
"the character" - Movie title as title reference →
"the film" - Actor and character names from the IMDb cast list stripped automatically
- Studio and production company names stripped
- Brand names including model names (
"Lamborghini Gallardo") →"a well-known brand" - Standard First-Last name patterns detected and replaced
Troubleshooting
Nodes load with wrong widget values / "Failed to convert FLOAT"
Cause: Stale .pyc bytecode in __pycache__ loaded before the updated .py files.
Fix: Delete the cache folder and restart ComfyUI:
Remove-Item "ComfyUI/custom_nodes/ComfyUI-Goofer/__pycache__" -Recurse -Force
"No goofs found" / placeholder goofs appearing
Cause: Cinemagoer's HTML parser is broken against IMDb's current page structure (known upstream issue). Goofer includes a direct HTTP fallback using __NEXT_DATA__ JSON extraction, but some films legitimately have zero goofs listed.
Fix: The fallback is automatic. If a specific film keeps returning empty, verify its IMDb ID by checking https://www.imdb.com/title/ttXXXXXXX/goofs/ in your browser.
MusicGen prompt shows "cinematic atmospheric" every run
Cause: No plot text from Cinemagoer (common on first fetch for some titles), so Flan-T5 skips inference and the genre keyword dict has no match.
What to expect: This is normal for some titles on first run. Goof keyword matching (explosions, chases, fights, sports, etc.) still enriches the prompt regardless of genre availability.
MusicGen takes a long time on first run
Cause: facebook/musicgen-large (~3.3 GB) downloads on first use and loads into VRAM alongside LTX-Video.
Fix: One-time only. After first run both models stay cached locally. If VRAM is tight, switch to facebook/musicgen-small (~300 MB) in the GooferBackgroundMusic node widget.
"Title mismatch" warning in logs
Cause: The IMDb ID in _RANDOM_MOVIE_POOL points to the wrong film (reused ID, sequel confusion, or regional title difference).
Fix: Look up the correct ID at https://www.imdb.com/find?q=TITLE+YEAR and update the 8-digit number in goofer_goof_fetch.py.
Setting Up Continuous Output with OBS
Run Goofer as a live generative broadcast — each output video auto-loads into OBS as it finishes.
Prerequisites
Setup
- Install OBS and the Media Playlist Source plugin
- In OBS: Tools → Scripts → Python Settings → point to your Python 3.11 path
- Load the
directory_sorter_for_obsscript and point it toComfyUI/output/ - Add a Media Playlist Source scene item pointed to the same folder
- OBS automatically picks up each new Goofer output as it renders
Pro tip: If your main GPU is maxed out on inference, set OBS to encode via your integrated GPU (QSV AV1 or HEVC). This keeps the stream smooth while the RTX handles LTX-Video and MusicGen.
Requirements
cinemagoer
requests
transformers>=4.40.0
torch>=2.0.0
numpy
Optional (for higher-quality audio resampling):
librosa
Built by Jeffrey A. Brick — Los Angeles, 2026