Nodes/ComfyUI_MieNodes/Save Scene Asset (Auto) ๐Ÿ‘
ComfyUI Node

Save Scene Asset (Auto) ๐Ÿ‘

A Captioned Room, With No Voice Field to Argue With

By MieMieeeeeยทCreated 2 years agoยทUpdated 2 days agoยท 269
Save Scene Asset (Auto) ๐Ÿ‘
  • llm_service_connector
  • image
  • name
  • description
  • image
  • status
  • asset
โ—„library_dirโ–บ
โ—„name๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰โ–บ
โ—„descriptionโ–บ
โ—„new_nameโ–บ
โ—„image_uploadโ–บ
โ—„image_promptโ–บ

Save Scene Asset (Auto) ๐Ÿ‘ is a hidden legacy node - the pre-merge scene saver with an LLM attached. The visible equivalent is Save Asset (Auto) ๐Ÿ‘ with kind = scene. If you're holding an old workflow that contains this, it still runs; if you're building fresh, use the merged one.

What makes it worth understanding is that scenes are the case where LLM drafting genuinely earns its keep. A character description is something you have opinions about - the face, the wardrobe, the little scar. A room description is mostly enumeration, and enumeration is what vision models are good at.

What it drafts, and from what

Leave description empty and the node sends the picture to the connected LLM with a scene-specific instruction: describe the place in 60โ€“100 words, English - the space, its key furniture and objects, the lighting, the atmosphere, and the spatial facts an image reference has to preserve (what stands where). Then it saves the draft along with the asset, in the same queue run.

Fields you filled are saved verbatim; the model only fills blanks. That's the invariant across all the Auto nodes, and it's what makes them usable on a curated library.

Note what this node doesn't have: no voice, no audio socket, no voice_prompt. A scene is a picture plus a description, full stop. The merged node hides those widgets when you flip kind to scene, but this one never had them in the first place.

image_prompt is the author note for the drafting call: place, time of day, mood, furnishing facts that must appear. Any language. Leave it empty and the model works from the picture alone - which is fine, but if the picture is ambiguous (is that a hotel lobby or a very tidy living room?) a one-line hint fixes it for free.

Inputs and outputs

name is the Existing/New toggle: ๐Ÿ“‹ ๅทฒๆœ‰่ต„ไบง Existing opens a dropdown and picking a name means overwrite; โœ๏ธ ๆ–ฐๅปบ New reveals new_name for creating. They're mutually exclusive by design, and names are matched case-insensitively with the first-created spelling kept.

image is the picture socket and image_upload is the picker over ComfyUI's input directory; a wired socket wins, and both empty on an overwrite preserves the PNG already on disk. llm_service_connector is required for the Auto behaviour - without a picture or a description, the node raises rather than saving something half-formed.

library_dir shows up in the input list and is ignored at execution; the library root is fixed per machine (the plugin's asset_library/ folder, or $MIE_ASSET_LIBRARY), reachable through the ๐Ÿ“‚ button.

Outputs: name, description, image, status, asset. status says created or overwritten and flags that the description was LLM-drafted, which is a useful paper trail when you revisit the project months later and can't remember whether you wrote the room or the model did.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/MieMieeeee/ComfyUI-MieNodes
pip install -r ComfyUI-MieNodes/requirements.txt

Or ComfyUI Manager, search ComfyUI_MieNodes. No model weights ship with the pack - the drafting model is whatever the connector points at (local Ollama works with no key; hosted endpoints need one in mie_llm_keys.json). The picture does leave your machine on a hosted call, so if the scene is client work, point it at something local.

Things that go wrong

auto-draft needs a picture to write the description - nothing to look at. Wire an image or type the description yourself.

A drafted description that reads beautifully and still doesn't hold the room across clips is the common quality complaint, and it's a real limitation: captioners describe what's in a frame more confidently than where things are. Skim the draft after the first save and add the layout sentences yourself - "window behind the desk, door on the left, sofa facing the fireplace" - then re-save over the same name. That's a thirty-second edit that pays for itself across a ten-scene board.

Categoryhidden

Inputs (8)

NameTypeDefaultDescription
library_dirSTRINGโ€”
nameCOMBO๏ผˆไธ‹ๆ‹‰้€‰ๆ‹ฉ่ต„ไบง๏ผ‰่ต„ไบงๅ๏ผš๐Ÿ“‹ ๅทฒๆœ‰่ต„ไบง Existing ๆจกๅผไธ‹ๆ‹‰้€‰ๅๅญ— = ่ฆ†็›–่ฏฅ่ต„ไบง๏ผ›โœ๏ธ ๆ–ฐๅปบ New ๆจกๅผ่พ“ๅ…ฅๅๅญ— = ๆ–ฐๅปบ๏ผˆไธค่€…ไบ’ๆ–ฅไบŒ้€‰ไธ€๏ผ‰ใ€‚ Asset name: ๐Ÿ“‹ Existing mode picks an asset to overwrite; โœ๏ธ New mode types a name to create โ€” the two are mutually exclusive.
descriptionSTRING่ต„ไบง็š„่‹ฑๆ–‡ๆ่ฟฐ๏ผˆ60โ€“100 ่ฏ๏ผ‰ใ€‚่ง’่‰ฒ = ๅค–่ง‚ไบ‹ๅฎž๏ผˆๅนด้พ„/ๅ‘ๅž‹/่„ธๅž‹/็€่ฃ…๏ผ‰๏ผŒๅœบๆ™ฏ = ็ฉบ้—ด/้™ˆ่ฎพ/ๅ…‰็บฟ/ๆฐ›ๅ›ดใ€‚ English description (60-100 words). Character = looks only; scene = space, furniture, lighting, atmosphere.
new_nameSTRINGโ€”
llm_service_connectorLLMServiceConnector่ตท่‰็ฉบ็™ฝ description/voice ็š„ LLM ่ฟžๆŽฅๅ™จใ€‚LLM connector that drafts the empty fields.
imageoptIMAGEโ€”
image_uploadoptSTRINGโ€”
image_promptoptSTRING็ป™ๆ่ฟฐ LLM ็š„ไฝœ่€…ๅ…ˆ้ชŒ๏ผˆๅฏ้€‰๏ผ‰๏ผš่ง’่‰ฒ = ๆฐ”่ดจ/็€่ฃ…/ๅฟ…้กปๅ†™่ฟ›็š„ไบ‹ๅฎž๏ผ›ๅœบๆ™ฏ = ๅœฐ็‚น/ๆ—ถๆฎต/ๆฐ›ๅ›ด/้™ˆ่ฎพไบ‹ๅฎž๏ผ›ไปปๆ„่ฏญ่จ€ใ€‚็ฉบ = ็บฏ็œ‹ๅ›พ่ตท่‰ใ€‚ Author prior for the description call (optional): character mood/wardrobe facts or scene place/time/furnishing facts โ€” any language. Empty = draft from the picture alone.

Outputs (5)

NameTypeDescription
nameSTRINGโ€”
descriptionSTRINGโ€”
imageIMAGEโ€”
statusSTRINGโ€”
assetMIE_ASSETโ€”