ComfyUI-GeN13
ComfyUI custom nodes for image-to-video and portrait workflows: synced remote values, chainable prompt switch, private image previews, temporal color match and skin retouch.
Nodes (26)
Your image-to-video clip goes blue halfway through. This is the node for that
Make each queue in your batch a different seed, box or file
The retouch pass that refuses to touch anything but skin
Stop re-running your LLM every time you tweak the seed
Load Image Orient (GeN13) exists because your iPhone screenshot loads sideways
Load Image Private (GeN13) is Load Image with a blur over the naughty bits — and over everything else
Load Image SD (GeN13) reads the A1111 settings out of an old PNG for you
The drop-a-file-in-a-folder loader that doesn't grab half a file
One value, three types, and a format field that fixes your prompt
The preview that doesn't end up in your output folder
One switch that turns five branches off at once
Keep denoise, CFG and megapixels in lockstep
One seed, five places, zero long wires
Type a prompt once, use it in six encoders
Pick which prompt runs from anywhere on the canvas
Remote Video (GeN13) does the boring maths that makes Wan and LTX accept your clip
Resize (GeN13) replaces three size nodes, and the multiple-of-32 thing is why
Save Image Private (GeN13) writes PNG + JPG in one pass and covers the preview while it does
The debug node that tells you what's actually in the wire
The one-line inspector you'll actually leave in the graph
Build a prompt out of boxes you can switch off
25 prompts in one node, and only the one you pick actually runs
One button that restarts every counter in your graph
ComfyUI-GeN13
Custom nodes for ComfyUI, built around image-to-video and portrait workflows: remote controls that keep one value in sync across a large graph, chainable prompt switching, image nodes that hide their preview, temporal color matching for generated video, photo-grade color grading with a live preview, portrait retouching, and a live resource monitor beside the Run button.
Every node's display name ends with (GeN13): double-click the canvas and type GeN13 to list them all.
Highlights
Monitor: your whole machine, at a glance
A live strip beside the Run button. RUN shows the running node, the elapsed time, the overall progress of the whole prompt and how many prompts are waiting, including prompts queued from a phone page, the API or another browser tab. Progress is estimated from earlier runs of the same workflow, so the bar moves steadily instead of jumping node by node, and the last bar stays after the run; click it to jump to a node run from this tab. CPU, RAM, GPU, VRAM and power each get a value, a trend line and a usage bar, and turn red before trouble: RAM and VRAM at 95%, the GPU at 83 °C. It is not a node, so nothing goes on the canvas. Show or hide each cell and set the refresh rate in Settings → GeN13 → Monitor.
<p align="center"><img src="docs/monitor.gif" alt="Monitor during a run" width="100%"></p> <p align="center"><img src="docs/monitor.png" alt="Monitor in dark and light themes" width="100%"></p>| GPU | What the monitor reads |
|---|---|
| NVIDIA (Windows, Linux) | Usage, core temperature, VRAM, power and power limit, through NVML (nvidia-ml-py) |
| AMD on Linux | Usage, temperature, VRAM, power and power limit, from the amdgpu driver; nothing to install |
| AMD or Intel on Windows | Usage and VRAM, from the same Windows counters as Task Manager; Windows does not publish their temperature or power |
| Apple silicon, CPU only | RUN, CPU and RAM |
A cell the machine cannot read is hidden, never shown empty.
Remote: set it once, control it anywhere
Put a Remote Int / Float / String / Boolean next to every place that needs the same value. Clones that share a channel name stay in sync: value, step and bypass. Change any clone and every clone follows, even inside subgraphs. No more long wires across the whole graph, and no more scrolling back to one setting.
Text Switch: switch prompts, chain without limits
Type prompts straight into named boxes and output the one you pick. Chain nodes side by side for as many boxes as you need; numbering continues across the chain and the first node, or a Remote Text Switch anywhere on the canvas, picks the box. auto next steps to the next filled box on every queue, and only the selected box's upstream runs. The first node has a pick row, ‹ #07 title ›, so the selected box stays in view even in a long chain; ‹ › skip empty boxes. Click a selected #NN again to fold it, EXPAND ALL / COLLAPSE ALL act on the whole chain, right-click → Clear all boxes empties one node, and dragging the chain output onto empty canvas adds the next node already linked.
Private image nodes: screen-share without showing your images
Load, Save and Preview Image Private cover the node preview with a mosaic, frosted glass, gradient, palette or solid color. Press and hold the preview to peek at the original. The image itself is never changed, so streaming or sharing your screen is safe.
<p align="center"><img src="docs/privacy.gif" alt="Privacy demo" width="80%"></p> <p align="center"><img src="docs/privacy.jpg" alt="Privacy cover styles" width="100%"></p>Color Match Temporal: stop image-to-video color drift
Generated video often turns bluer or warmer as it plays. Color Match Temporal pulls every frame back to the first-frame image, smoothed over time so nothing flickers. The default white balance method fixes color cast only and keeps the video's own brightness. It measures drift on background pixels that did not move, so a big white shirt or a close-up cannot fool it, and after a scene cut each shot is matched to its own start. skin_anchor then shifts each frame so the skin matches the reference skin, which fixes skin redrawn redder after a cut to a close-up.
Degrease: clean skin, untouched features
Removes the greasy, over-detailed look of generated portraits and video. Six effects, each from 0 (off) to 100 (full): deblemish, smooth, deshine, even tone, decontour and cool fair, which moves skin toward a lighter, cooler tone and keeps the lips' color. Eyes, lashes, brows and lips are protected, and only skin is touched.
<p align="center"><img src="docs/degrease.jpg" alt="Degrease effects from 0 to 100" width="100%"></p>Color Grade and Color Wheels: photo-grade color, with a live preview
Color Grade is a full photo-grading panel: white balance, tone, presence, sharpening, noise reduction, vignette and grain, laid out like Adobe Lightroom Classic: temperature, tint, exposure, contrast, highlights, shadows, whites, blacks, texture, clarity, dehaze, vibrance, saturation and the rest. 0 is untouched and both directions work. Every control was calibrated against Lightroom Classic exports, so the same numbers give the same look. AUTO WB and AUTO TONE run once and fill the sliders, Alt + click resets one slider, and right-click → Reset all resets the node.
Color Wheels is three-way color grading: wheels for shadows, midtones and highlights plus Global, Blending and Balance, calibrated the same way. Click the ring for the hue and the inside for the strength; each zone has an eye that switches it off without losing its values.
<p align="center"><img src="docs/colorwheels.jpg" alt="Color Wheels looks, Balance and Blending" width="100%"></p>PREVIEW: after one run, press PREVIEW on either node. A preview pinned to the workflow opens beside it and follows every slider at once, no queue. Scroll on the picture to zoom inside it, FIT / 1:1 to switch views, hold BEFORE to see the input. When Color Grade and Color Wheels are chained, one preview shows the whole chain, and the GRADE / WHEELS switches show either one alone. Both nodes run on video (the same grade on every frame) and can save the grade as a .cube LUT.
Faster wiring
Drop a link on empty canvas and the GeN13 nodes that fit that slot are listed first, in both the search box and the link menu, and the link lands on the input it is meant for (Trigger → Counter reset, Remote Text Switch → Text Switch select_num). Right-click a built-in Load / Save / Preview Image or a Primitive to convert it in place to the Private or Remote version, settings and links kept. Both can be turned off in Settings → GeN13 → Links.
Install
ComfyUI Manager: search for GeN13 and install.
Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/heigen13/ComfyUI-GeN13
pip install -r ComfyUI-GeN13/requirements.txt
Restart ComfyUI. ComfyUI Manager also installs the one extra package, nvidia-ml-py (NVIDIA's NVML library, which the monitor uses to read GPU usage, temperature and power on NVIDIA cards). For a manual install, run the pip line above with ComfyUI's own Python (portable build: python_embeded\python.exe -m pip). Everything else uses what ComfyUI already ships (torch, numpy, Pillow, psutil).
Optional: the nvidia_rtx_vsr upscale method in Resize needs the nvidia-vfx package and an RTX GPU.
Example workflows: four ready-made workflows (Text Switch chain, Remote two-pass txt2img, portrait retouch, video color match) are in the ComfyUI Templates panel under ComfyUI-GeN13, or in example_workflows.
All nodes
Video / color
| Node | What it does |
|---|---|
| Color Grade | Photo grading: white balance, tone, presence, sharpening, noise reduction, vignette and grain, calibrated against Adobe Lightroom Classic exports. Live PREVIEW, AUTO WB / AUTO TONE, images and video, .cube export. |
| Color Wheels | Three-way color grading: shadows, midtones, highlights and global wheels with Blending and Balance. Shares the live PREVIEW with Color Grade; images and video, .cube export. |
| Color Match Temporal | Matches generated video frames to a reference image (usually the first frame), smoothed over time. white balance fixes color cast only; mkl and reinhard also match brightness. Detects scene cuts. skin_anchor pulls skin back to the reference skin tone. Can export a .cube LUT. |
| Degrease | Portrait retouch for images and video: deblemish, smooth, deshine, even tone, decontour and cool fair, each 0 = off. Facial features are protected and only skin is touched. |
| Remote Video | Scales the first frame to an aspect ratio and megapixels, outputs width, height, seconds, FPS and a valid frame count for MiniMax H3, Wan 2.1 / 2.2 or LTX. Clones with the same channel stay in sync. |
Image
| Node | What it does | |---|---| | Load Image Private | Load Image with a privacy cover on the node preview. Hold the preview to reveal the original. Outputs width and height. Drag and drop or upload. | | Save Image Private | Saves PNG (8 or 16-bit), JPG, BMP, PNG + JPG or WEBP (lossless or lossy) with a custom prefix, padding and quality; embed or strip the prompt and workflow. Same privacy preview. | | Preview Image Private | Preview (temporary, not saved to output) with the privacy cover. | | Load Latest Image Private | Picks images from a folder by newest, oldest or name, with filename filters, subfolders and batch loading; files still being written are skipped. | | Load Image Orient | Plain loader that decodes with Pillow only, so iOS screenshots are not rotated. | | Load Image SD | Loads an image and reads its A1111 / Forge generation parameters (prompt, negative, seed, steps, CFG, sampler, scheduler, size, clip skip) to recreate old images in ComfyUI. |
Latent
| Node | What it does | |---|---| | Resize | One node for latent size: empty latent, image + VAE encode, or rescale an existing latent. Aspect presets with width, height and megapixels linked, crop / resize / pad / pad_edge / stretch, multiple of 8 to 64. Resizes up to four images and a mask with the same settings. |
Text
| Node | What it does |
|---|---|
| Text Switch | Up to 25 named, collapsible prompt boxes per node; chain nodes for more. A pick row ‹ › on the first node, auto next and select_num (INT input) drive the selection. Right-click → Clear all boxes. |
| Text Concatenate | Type text in boxes and join them; per-box on/off and solo, empty boxes skipped. |
| Prompt Cache | Saves upstream text (for example an LLM-written script) to a file and replays it later without loading the upstream model. One rolling backup plus any number of favorites. |
| Show Any / Show Any Lite | Accept any type, display it and pass it through. Cut / copy / paste buttons; text is saved with the workflow. |
Utilities and remotes
| Node | What it does |
|---|---|
| Remote Int / Float / String / Boolean | Clones that share a channel name stay in sync (value, step, bypass), even inside subgraphs. Wire any one clone and that input drives the whole group. |
| Remote Text Switch | Remote for Text Switch: shows the selected box's number and title; ‹ › skip empty boxes. Its select_num output goes to Text Switch's select_num; auto next is the same OFF / NEXT switch as on Text Switch. |
| Counter | Counts up or down per queue with ranges, hold (repeat each value N times), reset button, reset input and auto reset every hour or day. Freezes while bypassed. |
| Trigger | A button or an upstream change produces a new value; connect it to Counter's reset. |
| Number | One number out as INT, FLOAT and STRING, with a choice of rounding. |
| Switch Any | Picks one of any number of inputs by number, any type. Only the selected input runs; an index output lets two switches follow each other. Inputs can be renamed. |
Notes
- Tooltips and descriptions are in English, with translations in Traditional Chinese, Simplified Chinese and Japanese, shown when the ComfyUI language is set to one of them.
- Built and tested on ComfyUI 0.40 with the classic canvas (Nodes 1.0). Nodes 2.0 is supported for the image previews.
- The Remote and Text Switch pictures are diagrams; the privacy, color match, degrease, Color Grade and Color Wheels examples are real node output, the PREVIEW clip is the real window recorded step by step, and the monitor pictures are the real strip drawn with sample readings.
Support
GeN13 is free. If these nodes save you time, you can buy me a coffee on Ko-fi.
Disclaimer
GeN13 is provided as is, without warranty of any kind (see sections 15 and 16 of the GPL-3.0). You are responsible for how you use it and for following the laws where you live. Do not use it to create or edit content that is illegal, infringes copyright or likeness rights, or depicts real people without their consent. The privacy cover only hides the on-screen preview; it does not encrypt or protect the image files. Adobe and Lightroom are trademarks or registered trademarks of Adobe Inc. GeN13 is not affiliated with, sponsored or endorsed by Adobe; the name is used only to describe what the color nodes were calibrated against.
License
Copyright (C) 2026 GeN's Studio Inc.
Licensed under the GNU General Public License v3.0 (the same license as ComfyUI). You may use, modify and share these nodes, including for commercial work; if you distribute a modified version, it must also be released under GPL-3.0 with its source code. See LICENSE.
Artwork in docs/ © 2026 GeN's Studio Inc.