Nodes/Dustin ComfyUI Nodes/Dustin Marble Build Multi-Image Prompt
ComfyUI Node

Dustin Marble Build Multi-Image Prompt

Turn a batch of photos into the multi-image prompt Marble actually wants

By zihualiu1997·Created 4 months ago·Updated 4 months ago· 1
Dustin Marble Build Multi-Image Prompt
  • images
  • multi_image_json
api_key
azimuths0,180
upload_modemedia_asset

Multi-image world generation is Marble's party trick: hand it a handful of photos of the same place - a few angles of a room, say - and it reconstructs a coherent 3D world that ties them together. The catch is the API doesn't accept a raw image batch. It wants a JSON array where each image is tagged with an azimuth, the camera direction that photo was shot from. Dustin Marble Build Multi-Image Prompt is the glue that does that conversion on your behalf: it takes an IMAGE batch from ComfyUI, uploads each frame to Marble, and produces the multi_image_json string the generate node consumes.

What it actually does

Under the hood (read the source, it's short): it walks your image batch, uploads each frame through Marble's media-assets:prepare_upload endpoint by default, and builds one JSON entry per image pairing it with an azimuth. The output is a single multi_image_json string you feed into Dustin Marble Generate World with prompt_type set to multi_image_json. So the flow is: Load Image(s) → this node → Generate World → world.

The inputs that matter

  • images - your photo batch. Square scene photos are the recommendation; they're what Marble's multi-image mode is tuned for.
  • azimuths - comma-separated degrees, one per image, and the count must match the batch exactly. Default 0,180 for two images; four images might be 0,90,180,270. Get the count wrong and the node errors out with "Expected N azimuth values but got M" - it won't silently drop or duplicate. This is the field that actually matters, because the azimuth is what tells Marble how the photos relate in space. If your photos aren't evenly spaced around a subject, think about what angles they really are and write those.
  • upload_mode - media_asset (default) uploads each frame to Marble's storage and references it by ID; data_base64 embeds the whole image in the JSON as base64. The README calls media_asset the recommended path - it keeps the payload small and is the same upload mechanism the video nodes use. data_base64 is the fallback if you want everything self-contained in the string.
  • api_key - yes, this node needs a key even though it only uploads. Same story as everywhere in this pack: set it here or export WLT_API_KEY.

One quirk worth knowing: this node uploads files as a side effect. Running it spends API calls before you've generated anything - those uploaded media assets are on World Labs' storage, and the generation itself will reference them. It's not free iteration; the images leave your machine the moment this node runs.

Where it fits

This is the split version of the pack's all-in-one Multi-Image World node. The all-in-one node does upload + generate in a single step and is what most people should start with. This build node earns its keep when you want to inspect the JSON, cache the uploads, or drive the prompt string through something else - but for a beginner, Generate Multi-Image World is the one to reach for. Think of this as the "show me the plumbing" variant.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/zihualiu1997/dustin-comfyui-nodes

Restart ComfyUI; or install "dustin-comfyui-nodes" from ComfyUI Manager. Requires requests (auto-installed with the pack) and a World Labs API key. No models, no local GPU - the heavy lifting is all on Marble's side, and your bill.

CategoryDustin Nodes/Marble

Inputs (4)

NameTypeDefaultDescription
api_keySTRING
imagesIMAGE
azimuthsSTRING0,180
upload_modeCOMBOmedia_asset2 options: media_asset, data_base64

Outputs (1)

NameTypeDescription
multi_image_jsonSTRING