Nodes/ComfyUI-Easy-Media/H3 Project Artifact
ComfyUI Node

H3 Project Artifact

It decides what gets saved and which version wins

By yolain·Created 4 months ago·Updated about 23 hours ago· 184
H3 Project Artifact
  • context_latent
  • tracks_info
  • context_latent_low
  • previous
  • audio
  • project_name
project_name
project_savenew
segment_index
continuity_modeshot
sampling_passsingle
video_path
seed0

easy h3ProjectArtifact is the node easy multitrackProject expands to at the end of every segment. Its job is narrow and mechanical: take the segment's rendered media and its continuity latent, and write them into the project folder under ComfyUI/output/easy_media/projects/<project_name>/. You will almost never add this node to a graph by hand - it appears when the project node expands into its internal graph, and the sensible advice is to leave it alone. But understanding what it's doing explains every versioning quirk you'll hit when you regenerate a segment.

What it actually does

It's an output node (it terminates a graph branch). On each run it:

  • resolves the safe project directory, creating it if needed;
  • picks the generation number for this segment - project_save = new keeps old files and writes a new version, override replaces the current one;
  • saves the segment's media: a video file (moved from the staged video_path) or, for audio-only projects, a WAV (when the editor dimensions are 32 × 32, it saves audio instead);
  • stores the context latent - plus the low-res context_latent_low when present - which is what the next segment's continuity reads;
  • deletes stale files for the same generation.

The inputs mirror that: project_name, project_save (new/override), segment_index, context_latent (and optional context_latent_low), video_path or audio, tracks_info (to detect audio-only), continuity_mode (shot/context) and sampling_pass (single/first/second) - the latter two get recorded in the project manifest so the combine node can show you each segment's mode. Output: the project_name string, passed along.

Why you should care about this node's quirks

The versioning policy here is the source of the "my old result disappeared" surprise. In override mode with segment_count = -1, the project node clears saved segments from the start point onward before regenerating - the artifact node then writes fresh ones. In new mode, old generations survive as separate versions, which is what makes the combine node's side-by-side comparison possible. And because each segment is saved before the next runs, a crash or cancel leaves a partial project you can resume - but a half-written version can leave the context chain pointing at files that aren't there yet. If you're resuming, regenerate in order, not middle-out.

Deleting a version here deletes its files and its context. If a later Context segment depends on that context, it will fail on the next run. The README's advice is blunt: make sure nothing downstream needs the files before you let them go.

Installation

It ships inside ComfyUI-Easy-Media:

# FFmpeg first (the README's hard requirement)
cd ComfyUI/custom_nodes
git clone https://github.com/yolain/ComfyUI-Easy-Media

Restart ComfyUI, or install via Manager (search "ComfyUI-Easy-Media"). No models or extra dependencies for this node - it's pure file management over the H3 project directory.

Troubleshooting

  • "Staged H3 video was not found" - video_path points at a file that isn't there (or was already moved by an earlier run). This usually means a partial/cancelled save; regenerate the segment.
  • Segments land in the wrong project - project_name is sanitized, so an invalid name gets folded into a safe one. Use the exact name the project node output.
  • Old versions keep coming back - you're in new mode; that's the feature. Switch to override to replace.

It's the unglamorous end of the pipeline, but every file in your projects folder got there through this node - and knowing how it picks generation numbers is the key to predicting what a regeneration will (and won't) destroy.

CategoryEasyUse/H3/dev

Inputs (12)

NameTypeDefaultDescription
project_nameSTRING
project_saveCOMBOnew2 options: new, override
segment_indexINT
context_latentLATENT
tracks_infoTRACKS_INFO
continuity_modeCOMBOshot3 options: shot, context, context_swap
sampling_passCOMBOsingle3 options: single, first, second
context_latent_lowoptLATENT
video_pathoptSTRING
seedoptINT00–18446744073709550000
previousopt*
audiooptAUDIO

Outputs (1)

NameTypeDescription
project_nameSTRING