Nodes/ComfyUI-ZeroCLIP-nodes/ZeroClip-A Conditioning
ComfyUI Node

ZeroClip-A Conditioning

ZeroClip-A Conditioning

By MushroomFleet·Created 5 months ago·Updated 5 months ago· 0
ZeroClip-A Conditioning
  • anchors
  • seed
  • conditioning

This is the heart of the ZeroCLIP-A variant: ZeroClip-A Conditioning takes an anchor library plus a seed and produces a standard ComfyUI CONDITIONING that plugs straight into KSampler. In the normal text pipeline you'd have a CLIP Text Encode node here; in a ZeroCLIP workflow this node is that box, minus the text box.

Why would you want that? Because the result is a pure function of the numbers. Same anchors, same seed → same conditioning vector → same image, on any machine, forever. No tokenizer version drift, no prompt parse differences between ComfyUI releases. If you're building reproducible grids or sharing workflows where the "prompt" is a seed range instead of a paragraph, that's the whole point.

The two inputs that matter

  • anchors - the ZEROCLIP_A_ANCHORS output from a ZeroClip-A Load Anchors node. This is your vocabulary: the library of CLIP embeddings the conditioning gets built from.
  • seed - a ZEROCLIP_SEED, from either ZeroClip Seed Pack (deliberate four-axis control) or ZeroClip Seed From Random (single randomized master seed). The four values inside - concept_id, style_id, mood_salt, world_seed - are what actually drive the output.

Output is a single conditioning (CONDITIONING) for the positive input of KSampler. Pair it with a ZeroClip Empty Conditioning node on the negative socket if you're running CFG above 1.

How it works, in plain terms

The seed gets hashed with FNV-1a, and that hash drives a weight distribution over the anchor library. The clever bit is the weighting: it's generated from coherent noise over the concept_id/style_id coordinate space, so nearby coordinates produce nearby weight distributions. That's the mechanism behind the "nearby seeds → related images" property, and it's why you can sweep concept_id and get a smooth visual walk rather than static. The weighted sum over anchors is then L2-normalized (it has to live on the unit sphere) and expanded to the standard [1, 77, D] conditioning shape the sampler expects.

Install

Part of ComfyUI-ZeroCLIP-nodes. ComfyUI Manager (search "ZeroCLIP"), or:

cd ComfyUI/custom_nodes
git clone https://github.com/MushroomFleet/ComfyUI-ZeroCLIP-nodes

Restart ComfyUI; it's under ZeroClip/A - Basis Decomposition. No pip install, but you do need the anchor artifact in models/zeroclip/ (download from huggingface.co/mushroomfleet/zeroclip or build with --variant A).

The honest take

ZeroClip-A is the most "general-purpose" of the four variants - the README's table calls it smooth blends of known concepts, best for general-purpose text-free conditioning. It's also the most predictable: because anchors are real CLIP embeddings, the outputs tend to sit in familiar semantic territory. It's the variant I'd hand a beginner first. Where people trip up: forgetting the anchors library (the Conditioning node errors without a connected loader), and mismatching dimension - 768 for SD1.x checkpoints, 2048 for SDXL (which needs the separate SDXL Conditioning node).

CategoryZeroClip/A - Basis Decomposition

Inputs (2)

NameTypeDefaultDescription
anchorsZEROCLIP_A_ANCHORS
seedZEROCLIP_SEED

Outputs (1)

NameTypeDescription
conditioningCONDITIONING