Academia SD Project Paths ๐
One name in, four paths out โ the node that keeps a chained workflow's files in one folder
- project_name
- path
- vid_path
- vid_int_loop
This is the least exciting node in the pack and the one you'd miss most if it disappeared. You type a project name once; it hands back the four path strings everything else in the workflow needs. Yes, it's plumbing. Plumbing is the difference between a folder of orphaned clips and an actual project.
Academia SD Project Paths ๐ has exactly one input: project_name, a plain single-line string. That's it - no model, no image, no sockets to connect. It returns four STRING outputs:
| output | what it is |
|---|---|
| project_name | the cleaned-up name, for the prompt nodes |
| path | <project>/loop - where latents and frames live |
| vid_path | <project>/vid_loop - your plain video saver |
| vid_int_loop | <project>/vid_int_loop - your interpolated video saver |
Everything resolves under ComfyUI's output/ folder, like any saving node, so nothing this node produces can write outside it.
Why this exists at all
Not convenience - the shape of the graph. In the pack's chained-generation pipeline, the "what take are we on" index is computed by another node reading the disk, and that index feeds the multi-prompt node. Which means the multi-prompt node can never feed anything back upstream: ComfyUI's graph is acyclic, one loop closes it, and the whole thing refuses to run.
The fix is a node with no inputs. What depends on nothing can feed everything. So the paths got lifted out of the prompt node and dropped here, and now one widget drives the output folder, the video savers, the prompt library and the editor at the end of the chain. If you're building anything where several nodes have to agree on where this project lives, this is the cheap way to stop them disagreeing.
The sanitising is real, and it's a feature
The name lands in a disk path, so it's filtered through an allow-list - letters, digits, space, dash, underscore - and everything else is dropped. ../../etc/passwd comes out as etcpasswd. That's the right way round: block-lists get outrun, allow-lists don't.
The consequence you'll actually notice: slashes vanish. Type my/film and you get myfilm, silently. Use spaces or dashes in project names and you'll never think about it again.
Leave project_name empty and you get the bare suffixes back - loop, vid_loop, vid_int_loop - with no folder in front of them, so files land loose in the root of output/. That's deliberate; the node's own comments argue a default folder would only hide the fact that you left the field blank. Fill the field.
Wiring it up
Three connections, worth doing in this order:
project_nameโ the pack's Multi-Prompt node. Loading a saved prompt project there writes the name back upstream into this node, so switching projects switches the prompt set and the output folder together instead of one of the two.pathโ the Moviola In node and the editor node. The editor also asks this node's rule where the project points before it deletes anything, through a local/academia/projectpaths/resolveroute - the browser asks the node instead of re-implementing the path rule in JavaScript, where two copies would eventually drift.vid_pathandvid_int_loopโ your video savers. Do this properly: the editor builds its cut from files named afterpath's basename, so savers wired elsewhere leave it hunting clips that don't exist.
Installing it
Same pack as the rest of the Academia SD nodes, so:
cd ComfyUI/custom_nodes
git clone https://github.com/AcademiaSD/comfyui_AcademiaSD
Then restart ComfyUI - or search comfyui_AcademiaSD in ComfyUI Manager. There's no requirements.txt and no declared dependencies; this node is pure string work on top of what ships with ComfyUI.
One thing specific to this node: ProjectPaths is not an output node, so it only executes when something downstream needs it. Drop it on an empty canvas and Queue does nothing - that isn't it being broken.
The pack comes from the author behind the Academia SD YouTube channel, and it reads like a tutorial author's toolkit: many small nodes shaped to fit one or two workflows rather than general-purpose mega-nodes. When updating versions, restart and use Fix node (recreate) on any node whose sockets a release note mentions.
When it misbehaves
Almost every surprise here is a name. my/film becomes myfilm with no warning, and a name that sanitises to nothing leaves your files loose in output/. Rename a project mid-series and you're pointing the whole chain at a new, empty folder - the old takes are still sitting under the old name. And since the node only executes when something downstream needs it, a Queue that seems to ignore it usually has nothing wired to its outputs.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| project_name | STRING | โ |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| project_name | STRING | โ |
| path | STRING | โ |
| vid_path | STRING | โ |
| vid_int_loop | STRING | โ |