Nodes/Continuity Director/CD · Manifest Builder
ComfyUI Node

CD · Manifest Builder

Where your whole production becomes one hashable document

By xinjian0101·Created 3 months ago·Updated 2 months ago· 0
CD · Manifest Builder
  • project
  • character
  • scene
  • shot
  • manifest
  • manifest_json
  • manifest_hash
extra_characters_json[]
extra_scenes_json[]
extra_shots_json[]

Here's the moment this whole pack earns its keep: you've got a project, a few characters, some scenes, and a stack of shots, each sitting in its own node. Now you need them to behave like one production instead of a pile of loose wires. CDManifestBuilder is the assembly point - it takes the locks you've built and fuses them into a single manifest document with one hash that represents "this is what the production was, exactly, at this moment."

It's from Continuity Director, a 20-node pack for repeatable AI video production. This node is the last one in the "locks" category, and it's the gateway to everything downstream: CDBatchDirector won't expand a storyboard without a manifest.

What goes in

The one required input is project - a CD_PROJECT wire from CDProjectLock. You can't build a manifest without knowing the project, which is a sensible rule.

Everything else is optional:

  • character, scene, shot - one of each can be wired in directly.
  • extra_characters_json, extra_scenes_json, extra_shots_json - JSON arrays (default []) for the rest. This is the honest, practical design: in a real production you'll have ten characters and thirty shots, not three nodes, so you paste the bulk in as JSON and wire the ones you want to keep prominent.

Whatever you pass in gets validated - every lock is checked for its kind and a non-empty id, and duplicate ids are rejected with a clear error. The output is a manifest containing the project plus character/scene/shot collections, each in order, with a SHA-256 hash over the whole thing.

What comes out

  • manifest - a CD_MANIFEST wire. This is what you feed CDBatchDirector and CDExportPackage.
  • manifest_json - the full document as text. Read it once; it's the best way to see exactly what your production state is.
  • manifest_hash - the fingerprint. If you change a character's wardrobe upstream, this hash changes. That's the feature: the manifest is a point-in-time snapshot you can verify against.

Installing it

Continuity Director is a genuinely low-friction install - no model downloads, no API keys, and requirements.txt contains only a comment saying there are no mandatory Python dependencies. It's all standard library, which means no dependency conflicts with your existing environment. Install via ComfyUI Manager by searching "Continuity Director" and restarting, or:

cd ComfyUI/custom_nodes
git clone https://github.com/xinjian0101/continuity-director.git ComfyUI-ContinuityDirector

Restart ComfyUI, find the nodes under their CD · names, and open the Continuity Director sidebar for an "Add starter chain" button that scaffolds the full path. Updates are a git pull.

Where people get burned

The JSON inputs are declarative data, never executed - that's a stated design rule and a good one, especially given the ecosystem's history with malicious node packs. But it does mean validation is strict: paste malformed JSON and the node fails with an error naming the exact line and column, so read the message and fix that line rather than guessing.

The other trap is treating the manifest as a living document. It isn't - it's a snapshot. Build it, expand it, and when something upstream changes, rebuild it deliberately and re-run the downstream chain. The hashes will tell you honestly when you forgot, and CDContinuityReport exists precisely to surface those differences instead of letting them hide.

CategoryContinuity Director/01 Locks

Inputs (7)

NameTypeDefaultDescription
projectCD_PROJECT
characteroptCD_CHARACTER
sceneoptCD_SCENE
shotoptCD_SHOT
extra_characters_jsonoptSTRING[]
extra_scenes_jsonoptSTRING[]
extra_shots_jsonoptSTRING[]

Outputs (3)

NameTypeDescription
manifestCD_MANIFEST
manifest_jsonSTRING
manifest_hashSTRING