Nodes/ComfyUI LC123 Nodes/LC Image Label
ComfyUI Node

LC Image Label

A sticker with no sockets that makes a shared workflow readable

By lonecatone23·Created 2 months ago·Updated 2 days ago· 19
LC Image Label

      This node does nothing. That's the feature. No inputs, no outputs, no title bar, no execution cost worth measuring - it's an image you park anywhere on the canvas so the workflow explains itself.

      Here's the problem it solves. A ComfyUI workflow is a JSON graph that doubles as its own documentation, which is why "workflow included" became a community norm. But the graph is only self-documenting if you can read it, and past about forty nodes you can't: three LoRA stacks, two ControlNet branches and a pile of utils all look like boxes with wires. Core gives you a Note node for text, and no way to say this thumbnail belongs with these nodes. So people park a muted Preview Image in a corner - until they share the workflow and the reference is a dead node pointing at a file only they have.

      What it actually is

      Drag an image file onto the node and it just sits there, framed, sized to the image's aspect ratio, drawn with no title and no socket strip - the pack calls it a "floating image sticker." Drag it around the canvas like a note. Size, padding, border width and radius, border colour and background (transparent by default) all live behind a double-click, which opens a small dialog with a Load Image button if you'd rather not drop the file. Escape closes it.

      The mechanism is the interesting part, and it's not in Python. lc_image_label.py is a stub: empty INPUT_TYPES, an empty return tuple, a noop function. Everything you see happens in web/lc_image_label.js, which overrides drawNode to render the label chromeless instead of as a node box. The upload goes to ComfyUI's standard /upload/image endpoint, into your temp folder, and the node re-fetches it from there for its preview.

      That temp file is not what makes labels survive sharing. On load the image is redrawn to a canvas, capped at 512px on the long side, encoded as a webp data URL at quality 0.9, and stored in the node's properties - which serialize into the workflow JSON. The thumbnail travels with the workflow and still shows up long after your temp directory has been wiped. That's the one genuinely clever decision here, and the reason to pick this over a screenshot in a Note node.

      Two consequences. It can't be muted away: the label is drawn by a client-side override that fires regardless of node mode, so right-click → Mute won't hide it. And each label is a few tens of KB of base64 inside your workflow, so don't fight that 512px cap. At execution time it's registered as an output node, so the server runs it every queue; it returns nothing, touches no VRAM, and costs one line in the console.

      Installing it

      The pack installs the boring way. Through Manager, search for ComfyUI_LC123_nodes, or do it by hand:

      cd ComfyUI/custom_nodes
      git clone https://github.com/lonecatone23/ComfyUI_LC123_nodes.git
      

      Then restart. There's no requirements.txt to run - the README says so and the repo confirms it: LC123 uses only what ComfyUI already ships (torch, numpy), so there's no pip step. The one trap is folder nesting. If you unzipped instead of cloning and got ComfyUI_LC123_nodes/ComfyUI_LC123_nodes/__init__.py, the pack won't load - __init__.py has to sit directly inside the pack folder, and the console will tell you if it doesn't.

      The label ships inside a 109-node pack, but nothing about it needs the other 108.

      Where people get burned

      Dropping a generated image onto the label. ComfyUI's core drop handler treats any image carrying embedded workflow metadata as "load this workflow" - basically every PNG this app has ever saved. Without care, dropping a render on your label replaces your entire graph instead. This port claims the drop first, at window capture, so the file lands on the label. If that isn't working on your build the symptom is unmistakable: your graph swaps out for the workflow inside the image you dropped.

      Blank label on a downloaded workflow. The embedded copy is what draws it. If it's absent - older file, hand-edited file - the node falls back to the temp upload, and temp gets cleaned. Re-drop the image and re-save.

      Running someone's LC123 workflow on a hosted runner. The author publishes workflows on Civitai, and people trying to run them on cloud platforms get missing-node errors - those services control which custom nodes exist and you can't install your own. The label is the first casualty: a red box in the graph.

      Expecting it to affect the render. It won't. It's not a mask, not a conditioning source, not a region. If you want an image to influence generation, that's IP-Adapter, a reference latent, or regional conditioning - this one is for the human reading the graph.

      CategoryLC123/image

      Inputs (0)

      No inputs

      Outputs (0)

      No outputs