Image of the Day
A Fresh Reference Image Every Run, Straight From the Internet
- image
- title
- description
- source_url
- copyright
You know the drill: you want a fresh reference image for a prompt test, a style study, or a daily automation, and you're dragging some random JPEG from your downloads folder into a LoadImage node for the tenth time. Image of the Day (class ImageOfDayLoader) ends that ritual. It's a single node that pulls an image straight off the internet from one of eight daily or random sources and hands you a standard IMAGE tensor - the same thing LoadImage outputs - plus a few strings of metadata about it. The name is honest: it's a loader, not a generator. It just makes the "what if today's photo is the prompt" experiment one drag less annoying.
It's a small, single-purpose node from a small pack (author Peter Neill, MIT-licensed, no real community footprint yet). What it does, it does with zero heavy dependencies - worth knowing because ComfyUI's dependency hell is real, and a node that needs nothing is a pleasant rarity.
How it works
Under the hood it's just Python urllib calls against eight public endpoints - no SDKs, no keys for most of them:
- Lorem Picsum - random photo at the exact size you ask for
- Bing Daily - Microsoft's daily wallpaper, with metadata
- Wikimedia POTD - Commons Picture of the Day
- Random Dog / Random Cat - self-explanatory, and delightful for testing
- NASA APOD (API), Unsplash (API), Pexels (API) - need a free key
Responses are cached for an hour in your system temp folder, keyed per source/date/key, so repeated queues don't hammer the APIs. Notable details: NASA's APOD is sometimes a video on a given day, so the node silently walks back up to three days to find an image entry; if a source serves a video with a thumbnail, it'll take that. And despite a stale docstring mentioning NASA's demo key, the shipped code errors out cleanly if you run an API source with no key - you have to paste one in.
Inputs and outputs
Only one input actually matters most of the time: source, the dropdown with the eight choices above. Sources marked "(API)" need a key in api_key - that's it for the API ones. The three inputs that look like they'd do something universal - width, height, seed (64–4096, default 1024; seed 0 means random) - are only honored by Lorem Picsum. Every other source ignores them and returns its own native size, which trips up people more than anything else here.
Outputs: image (IMAGE, wire it anywhere LoadImage goes - a preview, an IP-Adapter reference, or a resize node feeding a Z-Image style refiner, which is exactly what the pack's example workflow does), plus title, description, source_url, and copyright (STRING). Those four are handy for overlaying attribution on the output or building an archive workflow that logs where each daily image came from.
Install
Easiest via ComfyUI Manager - search "Image of the Day" and hit install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/shootthesound/comfyui-image-of-the-day
Then restart ComfyUI. That's the whole install - no pip step. The README and the source agree: stdlib plus PIL/numpy/torch, which ComfyUI already ships. The node shows up under the image category.
Gotchas
- API keys are saved in plain text. The first time you use one, it's written to
.image_of_day_config.jsonnext to the node file. It's gitignored, so it won't leak into a fork, but don't share the file or yourcustom_nodesdirectory. - The gray-box failure mode. On any error the node returns a 512×512 gray placeholder, prints the message to the console, and puts the message in the
descriptionoutput. If you see gray, read the description - it's usually "requires an API key" or a network failure. That's deliberate, so a bad fetch doesn't kill the whole queue. - It needs internet. Obvious, but this is pure
urllibwith a 30-second timeout - a LAN-only ComfyUI box will just produce gray placeholders. - Seed ≠ fixed image on most sources. Only Picsum honors a seed (and a seeded Picsum request is cacheable). Random Dog/Cat and Pexels give you a different image each run, which is the point, but don't expect reproducibility there.
If you're building a daily-image automation, this is the one to reach for. For a fully offline setup, it's useless - but then, so is most of the fun.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| source | COMBO | Lorem Picsum | Image source. Sources marked (API) require a free API key. |
| api_keyopt | STRING | API key for selected source. NASA: api.nasa.gov | Unsplash: unsplash.com/developers | Pexels: pexels.com/api | |
| widthopt | INT | 102464–4096 | Image width (for Lorem Picsum) |
| heightopt | INT | 102464–4096 | Image height (for Lorem Picsum) |
| seedopt | INT | 00–999999 | Seed for reproducible random (0 = random) |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| title | STRING | — |
| description | STRING | — |
| source_url | STRING | — |
| copyright | STRING | — |