Nodes/Nilor Nodes by Nilor Corp/๐Ÿ‘บ Output Filename String
ComfyUI Node

๐Ÿ‘บ Output Filename String

A namespaced, timestamped output name โ€” built for a fleet of workers

By nilor-corpยทCreated 2 years agoยทUpdated 5 months agoยท 6
๐Ÿ‘บ Output Filename String
    • string
    โ—„clientnilorโ–บ
    โ—„projectresearchโ–บ
    โ—„sectiontest-1โ–บ
    โ—„nameout-1โ–บ

    What do you name a render so that a hundred machines producing files simultaneously never collide, and anyone can tell at a glance who made it, when, and for what? Nilor Output Filename String is their answer: four text fields in, one namespaced string out, with a timestamp baked in. It's an output node whose whole job is to produce a deterministic-in-structure, unique-in-practice filename, and it only makes real sense in a context where many workers write to shared storage.

    How it works

    Four inputs, all strings: client (default nilor), project (default research), section (default test-1), and name (default out-1). It builds a string with the current time - formatted %y%m%d-%H%M%S, i.e. 260811-153042 style - and glues everything together into a path-like string like:

    nilor_research/test-1/260811-153042_test-1/260811-153042_nilor_research_test-1_out-1
    

    That's the exact format from the source, and yes, it repeats fields - the timestamp appears twice and section appears three times. It's verbose by design: every component of the identity (who, what, when, which) is embedded in the string, so the filename is self-describing without needing a database. The function is called notify and the node is marked OUTPUT_NODE - it's meant to be a terminal node that hands the string to a save step or reports it to the UI. It also has a TODO in the source about making a live preview widget work, so don't expect the widget to show the result until a run executes.

    The honest read

    This node is the fingerprint of the pack's origin. The README and source describe a distributed setup: workers pull jobs from a queue, normalize path formatting between Windows and Linux, and write results somewhere shared. In that world, a timestamped, namespaced output name generated inside the graph - not hardcoded in a save node - is how you keep artifacts from colliding and traceable. For a solo local user, the same string is mostly ceremony: the timestamp makes every run unique (good), but the doubled section and repeated segments are just noise you could trim in a text node.

    Use it if you want zero-thought unique output names across many runs, or if you're replicating a pipeline where filenames must encode provenance. Skip it if you just want "render_001.png" - a plain ๐Ÿ‘บ Random String or ComfyUI's built-in save filename counter is simpler. One nice property worth stealing either way: it generates the name inside the graph, so the same graph can be saved and re-run anywhere and the output name stays correct without manual edits.

    Install

    ComfyUI Manager (search "Nilor Nodes") or:

    cd ComfyUI/custom_nodes
    git clone https://github.com/nilor-corp/nilor-nodes
    cd nilor-nodes && pip install -r requirements.txt
    

    Restart ComfyUI; it's under Nilor Nodes ๐Ÿ‘บ โ†’ Utilities. No dependencies beyond datetime (the pack's scipy import aside).

    Bottom line

    A provenance-encoding filename generator built for fleets of workers, offered to everyone. The string format is what it is - learn to read the client_project/section/timestamp_section/timestamp_client_project_section_name layout once and it's self-explanatory after that. For local use it's optional; for anything that shares storage across machines, it's the difference between "which file is mine?" and never asking.

    CategoryNilor Nodes ๐Ÿ‘บ/Utilities

    Inputs (4)

    NameTypeDefaultDescription
    clientSTRINGnilorโ€”
    projectSTRINGresearchโ€”
    sectionSTRINGtest-1โ€”
    nameSTRINGout-1โ€”

    Outputs (1)

    NameTypeDescription
    stringSTRINGโ€”