# Color Correction

Diagnose and fix video/image color OBJECTIVELY with the get_image...

- Repository: https://github.com/artokun/comfyui-mcp (883 stars)
- Category: Media
- License: MIT
- Last updated: 2026-10-26
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add artokun/comfyui-mcp --skill color-correction -g -a claude-code -y`
Codex: `npx skills add artokun/comfyui-mcp --skill color-correction -g -a codex -y`
Cursor: `npx skills add artokun/comfyui-mcp --skill color-correction -g -a cursor -y`
Gemini CLI: `npx skills add artokun/comfyui-mcp --skill color-correction -g -a gemini-cli -y`
Claude Code plugin marketplace: `/plugin marketplace add artokun/comfyui-mcp`

## Description

Diagnose and fix video/image color OBJECTIVELY with the get_image (action:"analyze_color") tool (scopes/stats such as black/white points, contrast, saturation, clipping, cast) instead of eyeballing a contact sheet. Covers the "washed out" signature, why reference color-match (mkl/ColorMatch/ColorMatchAdobe) CAN'T add contrast a flat source lacks, the levels/contrast-stretch fix (core AdjustContrast / CurveEditor), the measure→fix→re-measure loop, the side-by-side sandbox pattern, and where to place the fix in a render graph (after decode, before save). Use when a render looks washed out / flat / dull / over-saturated / color-cast, or when deciding between a color-match and a contrast/levels fix.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Color Correction (measure, don't eyeball)

## The core principle

You cannot reliably judge color from a storyboard or contact sheet. "Is it washed
out?" flip-flops by eye, especially on AI-gen video. Make color measurable with the
`get_image (action:"analyze_color")` MCP tool, read the numbers like a colorist reads scopes, pick the
fix the data points to, then re-measure to confirm. The whole skill is this loop:

```
extract a frame ─► get_image (action:"analyze_color") ─► read black/white points + contrast + saturation
       ▲                                          │
       │                                          ▼
   re-measure  ◄──── apply fix (levels / contrast / match) ◄── diagnose from the numbers
```

> Origin: on a WAN-Animate render we argued for many turns over whether the clip was
> "washed out." The instant we measured it, the answer was unambiguous and the *correct*
> fix (a contrast stretch, not the color-match nodes we'd been adding) fell straight out.

---

## The `get_image (action:"analyze_color")` tool

Read-only. Source = `asset_id`, a ComfyUI output ref (`filename`/`subfolder`/`type`), or
an image `path` (absolute, or under the output dir). It returns per-image stats, heuristic
flags, a one-line verdict, and optionally an overlaid R/G/B/luma histogram PNG.

```
get_image({ action: "analyze_color", filename: "render_00007_.png" })       # absolute numbers
get_image({ action: "analyze_color", path: "frame.png", reference_path: "src.jpg" })  # + shot-match deltas
get_image({ action: "analyze_color", filename: "x.png", histogram: true })  # + histogram image
```

For videos, `get_image (action:"analyze_color")` is image-only (no ffmpeg dep). Extract a frame first with the
ComfyUI venv's cv2:

```bash
"<comfy-venv>/python" -c "import cv2; c=cv2.VideoCapture(r'IN.mp4'); n=int(c.get(7)); \
  c.set(1, n//2); _,f=c.read(); cv2.imwrite(r'frame.png', f)"
```

The rest: https://github.com/artokun/comfyui-mcp/blob/HEAD/plugin/skills/color-correction/SKILL.md
