Sloyd: Save Asset
Save Asset — put the GLB where you actually want it
- sloyd_job
- saved_path
Every Sloyd generation node already writes its result to ComfyUI/output/sloyd/ with the job id as the filename. That's fine until you've made forty of them and can't tell 9f2c…-a41.glb from b70e…-8c2.glb. Sloyd: Save Asset is the one optional extra in the pack: it copies a generated asset to a filename you choose, with a counter appended when the name is taken.
It's a two-widget node, it does one thing, and it's the difference between a folder of hashes and a folder of assets.
How it works
It's not a downloader - the file is already on disk by the time this node runs. It takes the SLOYD_JOB handle from any upstream Sloyd node, reads the absolute path of the file that job produced, and copies it (extension and all) to <ComfyUI/output>/<filename_prefix><ext>. Directories in the prefix are created for you, so props/crates/wooden_crate lands in a folder tree, not flat in output/.
Two details from the source worth knowing:
- The extension comes from the source file. A GLB stays
.glb, a skybox panorama keeps.png/.jpg/.webp, a 2D result keeps its image extension. There's no format conversion happening here. - Collisions are handled, not overwritten. If the target name exists, it appends a counter:
wooden_crate_00001.glb. So running the same graph twice never destroys the first result - and never silently replaces it either. That also means a batch of ten gives you ten files, not one.
Unsafe characters in the prefix are sanitised to underscores, and the leading/trailing slashes and spaces are trimmed, so a sloppy prefix won't escape the output directory.
Inputs
- sloyd_job - required, and it's a
SLOYD_JOB, not an IMAGE. Wire it from Text to 3D, Image to 3D, Multi-Image to 3D, Retexture, Split to Parts, or any of the skybox/2D nodes. There's nojob_idstring alternative on this node (unlike the model tools), so it has to be a live wire. - filename_prefix - defaults to
sloyd/model. Name it relative toComfyUI/outputand leave the extension off; the node supplies it.game/props/lantern_brassis the right shape.
Output
Just saved_path - a STRING, the new file's path relative to ComfyUI/output. Feed it to a text node if you want to see it on the canvas, or ignore it entirely and let the copy happen. This node is marked as an output node, so ComfyUI always executes it, which is what you want: it doesn't get optimised away when nothing downstream consumes it.
Install
ComfyUI Manager → search Sloyd, or:
cd ComfyUI/custom_nodes
git clone https://github.com/Sloydai/comfyui-sloyd
pip install -r comfyui-sloyd/requirements.txt
requests and nothing else, no weights, no GPU. Credentials go in Settings → Sloyd (Client ID + Client Secret from api-dashboard.sloyd.ai) or in SLOYD_CLIENT_ID / SLOYD_CLIENT_SECRET env vars. The node itself costs nothing - the generation behind it is what's billed.
Two limitations to plan around
It only works off a Sloyd handle, so it can't rescue a file from an old session where you've lost the graph - for that, just copy the file out of output/sloyd/ by hand. And it copies rather than moves, so you'll accumulate duplicates: the original under sloyd/ stays put. If you want to keep the output dir tidy, that's on you, and there's no delete node here.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| sloyd_job | SLOYD_JOB | — | |
| filename_prefix | STRING | sloyd/model | Output name relative to ComfyUI/output, without an extension. A counter is appended when the name already exists. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| saved_path | STRING | — |