Nodes/Image of the Day/Image of the Day
ComfyUI Node

Image of the Day

A Fresh Reference Image Every Run, Straight From the Internet

By shootthesound·Created 4 months ago·Updated 3 months ago· 0
Image of the Day
    • image
    • title
    • description
    • source_url
    • copyright
    sourceLorem Picsum
    api_key
    width1024
    height1024
    seed0

    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.json next to the node file. It's gitignored, so it won't leak into a fork, but don't share the file or your custom_nodes directory.
    • 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 description output. 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 urllib with 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.

    Categoryimage

    Inputs (5)

    NameTypeDefaultDescription
    sourceCOMBOLorem PicsumImage source. Sources marked (API) require a free API key.
    api_keyoptSTRINGAPI key for selected source. NASA: api.nasa.gov | Unsplash: unsplash.com/developers | Pexels: pexels.com/api
    widthoptINT102464–4096Image width (for Lorem Picsum)
    heightoptINT102464–4096Image height (for Lorem Picsum)
    seedoptINT00–999999Seed for reproducible random (0 = random)

    Outputs (5)

    NameTypeDescription
    imageIMAGE
    titleSTRING
    descriptionSTRING
    source_urlSTRING
    copyrightSTRING