Nodes/CopySight/CopySight Verify Image
ComfyUI Node

CopySight Verify Image

A copyright spot-check that bills you every time you hit Run

By copysight·Created 7 days ago·Updated 7 days ago· 0
CopySight Verify Image
  • image
  • annotated_image
  • report_json
◄api_key►

What it's actually for

Almost every node you install makes pixels. This one audits them: wire an image in and CopySight answers with the protected characters, brands, people and artworks it resembles, boxed and labelled.

It's a pre-publish smoke detector, so it only earns a slot if you have something at stake: you're listing a print-on-demand tee and want to know whether your "generic cute robot" reads as a specific company's robot. It's also an HTTP client holding a credential - the category our API-nodes doc says to eye warily - though at least this one is candid: one documented endpoint, one image per call.

One caveat: CopySight doesn't appear once in the r/comfyui / r/StableDiffusion corpus I can search, so this is README-and-source, not a crowd who've run it for a year.

How the check works

On queue it keeps the image's RGB channels, encodes a PNG in memory, and makes one multipart POST to https://api.copysight.ai/v1/verify with your key in the X-API-Key header. Ten seconds to connect, 120 to read. No startup requests, no background uploads, no retries, no cache.

The response is normalised and validated hard before you see it: a contains_face boolean plus a detected_ips array, each finding carrying a name, category, author, owner, a similarity from 0 to 1, and a box in normalised x/y/width/height. A similarity out of range, or a box outside the frame, fails the execution rather than getting drawn anyway. Then each box goes down in its own hue with a label like Nike 84%, and the annotated image saves through ComfyUI's own image path into your output folder.

Original node by Filliptm (Machine Delusions, the FL_* packs); CopySight repackages it under Apache-2.0, verification code unchanged.

The inputs and outputs that matter

image is required, and it takes exactly one image. The tooltip says "Image batches must be split before this node," and the code enforces it, so a batch of eight doesn't quietly become eight billable requests. Split upstream, check one per run.

api_key is optional and marked advanced; blank means read COPYSIGHT_API_KEY from the environment ComfyUI started in. Leave it blank - anything typed in that widget is saved into the workflow file, which is how you hand your key to a stranger when you post the graph.

Out comes annotated_image (IMAGE - preview it, save it, feed it onward) and report_json (STRING, the normalised response). No numeric output, no threshold widget, so nothing decides "infringing" for you. Want a pass/fail gate? Parse report_json downstream.

Installing it

No model files, no multi-gigabyte download, no CUDA surprises - the only dependency is requests, which your ComfyUI environment already has. Try ComfyUI Manager (search CopySight) and fall back to this:

cd ComfyUI
git clone https://github.com/copysight/ComfyUI-CopySight.git custom_nodes/ComfyUI-CopySight
.venv/bin/python -m pip install -r custom_nodes/ComfyUI-CopySight/requirements.txt

Then hand it a key. The environment variable keeps it out of your workflows, which is the point:

read -r -s -p "CopySight key: " COPYSIGHT_API_KEY; printf '\n'; export COPYSIGHT_API_KEY

Start ComfyUI from that same terminal; a Desktop instance launched from an icon inherits none of it. Then open example_workflows/CopySight Verify Image.json and run once.

Two things that bite: installing gives you no credits, and the node is built on ComfyUI's newer comfy_api schema (the pack declares ComfyUI ≥ 0.39.2), so an older build can fail at import before you ever see it. And the key you'd use to publish to Comfy Registry is a different credential entirely - don't paste that one in here.

Where people get burned

The cost model, first. The node is registered as not idempotent, so ComfyUI won't cache-skip it when nothing upstream changed. Press Run twice on an untouched graph and that's two calls. Watch the usage page.

Second, an empty result is not a clearance and a hit is not a verdict. There's no overall CopyScore - the panel's "Highest match" is the biggest single finding, not how close your image is to some original. Similarity is evidence, not a legal determination: the doctrine here runs on conduct rather than capability, and nobody treats your green check as a licence.

Third, access. A standard API plan, a creator account and the ComfyUI key in your account menu can carry different permissions, so a key that logs you into the demo can still be refused here. Check its status and quota before blaming the node. Failures are loud rather than silent - rejected key, rejected image, rate limit with retry_after when supplied, timeout, malformed response - and each fails the run rather than returning a placeholder. Keys are redacted from error text.

Do you need it

If you make images for yourself, no. Even the web demo covers the three times a year you'd worry. If you ship commercially, a check right before Save Image is the cheapest place to catch a problem - and you get an annotated PNG and a parseable report, not a vibe.

CategoryCopySight

Inputs (2)

NameTypeDefaultDescription
imageIMAGEOne image to check. Image batches must be split before this node.
api_keyoptSTRINGOptional CopySight API key override. Leave blank to use COPYSIGHT_API_KEY. Values entered here are saved with the workflow.

Outputs (2)

NameTypeDescription
annotated_imageIMAGEThe checked image with CopySight finding boxes and labels.
report_jsonSTRINGThe normalized CopySight response as JSON.