Project Manifest
One JSON that collects your whole project's media facts
- video
- audio
- manifest_json
- manifest_path
- summary
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.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| project_name | STRING | MKR Project | — |
| save_manifest_file | BOOLEAN | true | — |
| filename_prefix | STRING | MKR_manifest | — |
| subfolder | STRING | — | |
| overwrite | BOOLEAN | false | — |
| notes_json | STRING | {} | — |
| videoopt | * | — | |
| audioopt | * | — | |
| scene_ranges_jsonopt | STRING | [] | — |
| beat_markers_jsonopt | STRING | [] | — |
| filename_labelopt | STRING | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| manifest_json | STRING | — |
| manifest_path | STRING | — |
| summary | STRING | — |