Nodes/ComfyTV/Selective Color
ComfyUI Node

Selective Color

The Old Photoshop Trick, Done Per-Zone

By jtydhr88·Created 3 months ago·Updated about 15 hours ago· 725
Selective Color
  • video
  • video
force_run_token0
project_id
parent_output_id0
sc_methodabsolute
sc_reds0.00
sc_yellows0.00
sc_greens0.00
sc_cyans0.00
sc_blues0.00
sc_magentas0.00
sc_whites0.00
sc_neutrals0.00
sc_blacks0.00

Selective color is that grade every colorist secretly loves and every beginner skips because Photoshop buried it. The trick: instead of adjusting hue or saturation globally, you nudge one color zone - reds, cyans, greens, and so on - without touching anything else. ComfyTV's Selective Color stage is a faithful port, under ComfyTV/VideoFX, and it's the quietest way to fix a cast in footage without nuking the whole grade.

The inputs are a sc_method dropdown - absolute (default) or relative - plus nine zone sliders: sc_reds, sc_yellows, sc_greens, sc_cyans, sc_blues, sc_magentas, sc_whites, sc_neutrals, sc_blacks. Each runs -1 to 1 (default 0 = untouched). You add or remove the opponent color inside a zone: want cooler shadows? Pull cyan up in sc_blacks (or red down). Skin tones too green? Nudge magenta in sc_yellows/sc_reds. Because it works inside the zone, the effect is surgical - adjust reds, and the grass doesn't move.

sc_method decides how the zone sliders apply. Absolute is the classic Photoshop mode - a fixed adjustment per zone regardless of the source pixel's magnitude. Relative scales the adjustment with how strongly a pixel belongs to that zone, so a mild red pixel gets a mild correction and a saturated red gets the full amount. Relative is usually the safer default for footage; absolute is where you go to force a decisive shift. Video in (optional video), video out, rendered through the pack's shared FX engine - live preview in the node, single-pass bake when you run an FX Chain.

The mental model

Think of the nine zones as nine buckets, and each slider as "add/subtract the opponent color inside this bucket." If all sliders are 0, the node short-circuits and passes the video through untouched - which also tells you the common failure mode: nothing happens because you forgot to move a slider. The other failure mode is expecting hue change - selective color changes the amount of the opponent channel within a zone, not hue. If you want to actually rotate greens toward cyan, that's a curves or hue-rotate node; this one is for tasteful cast correction and zone-specific saturation shaping.

Install

With the pack:

cd ComfyUI/custom_nodes
git clone https://github.com/jtydhr88/ComfyTV

Restart ComfyUI; under ComfyTV → VideoFX. ComfyUI Manager: search "ComfyTV". Desktop/macOS: clone into the running instance's absolute custom_nodes (startup-log path), unwrap any ComfyTV/ComfyTV/ nesting, full backend restart. No models, no extra dependencies.

Troubleshooting

  • Nothing changes. All nine sliders at 0 = identity pass by design. Move one.
  • Grade looks heavy-handed. You're in absolute pushing a zone hard. Switch to relative or halve the slider - a 0.1–0.2 nudge is usually plenty on footage.
  • Skin tones get blotchy. You're adjusting a zone that overlaps skin heavily (sc_reds/sc_yellows). Dial back and lean on sc_neutrals instead, which hits midtones more gently.
CategoryComfyTV/VideoFX

Inputs (14)

NameTypeDefaultDescription
force_run_tokenINT00–2147483647Internal — bumped on Run to invalidate ComfyUI's input cache.
project_idSTRINGInternal — populated by the projectStore on the frontend.
parent_output_idINT00–2147483647Internal — lineage parent set by spawn handlers on the frontend.
sc_methodCOMBOabsolute2 options: absolute, relative
sc_redsFLOAT0.00-1–1
sc_yellowsFLOAT0.00-1–1
sc_greensFLOAT0.00-1–1
sc_cyansFLOAT0.00-1–1
sc_bluesFLOAT0.00-1–1
sc_magentasFLOAT0.00-1–1
sc_whitesFLOAT0.00-1–1
sc_neutralsFLOAT0.00-1–1
sc_blacksFLOAT0.00-1–1
videooptCOMFYTV_VIDEO

Outputs (1)

NameTypeDescription
videoCOMFYTV_VIDEO