Nodes/MKRShift_Nodes/Project Manifest
ComfyUI Node

Project Manifest

One JSON that collects your whole project's media facts

By criskb·Created 7 months ago·Updated 5 months ago· 0
Project Manifest
  • video
  • audio
  • manifest_json
  • manifest_path
  • summary
project_nameMKR Project
save_manifest_filetrue
filename_prefixMKR_manifest
subfolder
overwritefalse
notes_json{}
scene_ranges_json[]
beat_markers_json[]
filename_label

MKRProjectManifest is the notebook of the MKRShift media lane: a single node that gathers every fact you care about about a piece of media - video metadata, audio stats, detected scenes, beat markers, and your own notes - and hands it back as one JSON document. If you've ever finished a shot and had to manually remember which clip it came from, what fps it was, and where the scene cut landed, this is the node that writes that down for you.

What it's for

It's the hub that the pack's analysis nodes feed into. MKRSceneCutDetector produces scene_ranges_json; beat detectors produce beat_markers_json; both can land here alongside the video and audio you actually worked on. The result is a manifest that says "this project, these media files, these scene ranges, these beats, these notes" in one place - and optionally writes it to disk so it outlives the ComfyUI session.

How it works

Give it a video and/or audio (either the wildcard media objects or paths), and it reads what it can: video metadata (duration, fps, resolution) via ffprobe when available, audio stats (sample rate, channels, waveform length) from a decoded waveform. It then merges in the scene_ranges_json and beat_markers_json you pass in, adds notes_json, and assembles manifest_json. If save_manifest_file is on (it is by default), it writes the file to output/<subfolder> and returns its path.

Inputs and outputs

  • project_name - the label that heads the manifest.
  • save_manifest_file, filename_prefix, subfolder, overwrite - file-writing controls.
  • notes_json - free-form JSON you want attached.
  • Optional: video, audio, scene_ranges_json (from the scene detector), beat_markers_json, filename_label.

Outputs: manifest_json (the whole document), manifest_path (where it was written, empty if you turned saving off), and summary (a compact human-readable recap).

Installing it

Standard pack install:

cd ComfyUI/custom_nodes
git clone https://github.com/criskb/MKRShift_Nodes

restart ComfyUI, or Manager → MKRShift_Nodes. No extra Python dependencies. Rich video metadata reads best when ffmpeg/ffprobe is on your PATH (the README's install step 3); without it you'll get the frames you can decode but fewer container-level facts.

Common issues

The manifest only knows what you give it - feed it a video path and no scene ranges, and the scene list is empty, which is correct but easy to mistake for a bug. Also, notes_json must be valid JSON text; pasting free prose in the multiline box will get you a warning rather than a merge. And the honest limitation: this is a structured log, not a database - it doesn't watch folders or track files that change after you run it. Run it at the end of a pass and treat the manifest as a snapshot.

CategoryMKRShift Nodes/Media/IO

Inputs (11)

NameTypeDefaultDescription
project_nameSTRINGMKR Project
save_manifest_fileBOOLEANtrue
filename_prefixSTRINGMKR_manifest
subfolderSTRING
overwriteBOOLEANfalse
notes_jsonSTRING{}
videoopt*
audioopt*
scene_ranges_jsonoptSTRING[]
beat_markers_jsonoptSTRING[]
filename_labeloptSTRING

Outputs (3)

NameTypeDescription
manifest_jsonSTRING
manifest_pathSTRING
summarySTRING