Shot Asset Loader v3.7 - Akki
The node that assembles a shot's cast, set, and lookdev prompts before you render
- character_images
- set_image
- character_lookdev_prompts
- set_lookdev_prompt
- character_names
Rendering a shot in a character-consistent way means the characters and the set need to look the same as they did in every other shot - which means you need their reference images and their art-direction prompts loaded, all at once. That's the whole job of Shot Asset Loader. You give it a shot index and the production CSV; it reads that shot's cast and location, then goes into your lookdev folders and drags out the character reference images, the set image, and the matching prompts. One node, everything a KSampler needs to keep a face recognizable across a 40-shot scene.
It's the heaviest of the pack's File I/O nodes, and the only one that outputs actual IMAGE tensors. It's also where the "lookdev bible" discipline pays off: if you've run the Character and Set Lookdev nodes (Phase 3) properly, the files this node expects will be there.
How it works
Five inputs:
- project_path - from the Project Director, relative to ComfyUI's
output/. - csv_report - the canonical shot list (usually
ProShotListParser'sfull_report_csv). The node reads the selected row'sLOCATIONandCHARACTERScolumns. - shot_index (default
1) - which row to load, 1-based. - character_lookdev_folder (default
Lookdev/CHR) and set_lookdev_folder (defaultLookdev/SET) - where the lookdev assets live inside the project folder.
For each asset it follows a strict naming convention, picking the latest file that matches:
- Image:
<sanitized_name>_L_<version>_.png(e.g.Mara_L_3_.png) - Prompt:
<sanitized_name>_<version>_<date>.txt
The node sanitizes character and set names for filenames (strips parentheticals, replaces illegal characters with _) before matching. Five outputs, and they map directly to what a render needs:
- character_images - a list of IMAGE tensors, one per character in the shot, in CSV order.
- set_image - the single set/location IMAGE.
- character_lookdev_prompts - a list of STRINGs, the art-direction prompts that pair with the character images.
- set_lookdev_prompt - the set's prompt.
- character_names - the sanitized names, in the same order as the images, so you know which tensor is which.
The natural wiring: character images + prompts go into an IPAdapter or reference setup, set_image into img2img, and the names feed the Scene Choreographer or your own prompt assembly.
Installing
Pack-level install, same as the rest:
cd ComfyUI/custom_nodes
git clone https://github.com/routhakash/AkkiNodes-LLM-Suite-for-ComfyUI
Windows: run install.bat as administrator once (installs llama-cpp-python==0.3.9 and openai), add a GGUF model to ComfyUI/models/llms/, restart. Linux/macOS: install those two packages into your ComfyUI environment manually.
Gotchas
- Missing assets don't crash - they degrade silently. If a character's image file isn't found, the node returns a 1×64×64 black dummy tensor and an
ERROR:string in the corresponding prompt slot, then prints a notice to the console. A character with no image becomes a tiny black square in your IPAdapter - you'll get a lovely black smudge where a face should be. The console is your only warning. - The naming convention is strict and versioned. Hand-named files like
Mara_final.pngwon't match<base>_L_<n>_.pngand are ignored. If you've been saving lookdev renders with a different naming scheme, this node can't see them. - The CSV must have
LOCATIONandCHARACTERScolumns (case-insensitive). No location, and the node throwsNo set/location specified for shot N. ANonecharacter in the list is filtered out - that's whyCHARACTERSin the CSV should readNonefor empty, not a blank. - It's single-set. One set image per shot, because the CSV stores one location per row. Multi-location shots aren't handled - restructure them as separate shots if that's your thing.
This is the node where the whole "film studio" metaphor becomes concrete: it's your production assistant walking to the art department, grabbing the reference stills, and handing them to the renderer. It's fiddly about file names, but once the lookdev stage is done right, it's genuinely the most satisfying node in the suite to watch fire.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| project_path | STRING | — | |
| csv_report | STRING | — | |
| shot_index | INT | 1 | — |
| character_lookdev_folder | STRING | Lookdev/CHR | — |
| set_lookdev_folder | STRING | Lookdev/SET | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| character_images | IMAGE | — |
| set_image | IMAGE | — |
| character_lookdev_prompts | STRING | — |
| set_lookdev_prompt | STRING | — |
| character_names | STRING | — |