ComfyUI Node

EDL Import

Turn an editor's EDL into cut times ComfyUI can actually use

By criskb·Created 7 months ago·Updated 5 months ago· 0
EDL Import
    • events_json
    • cut_times_json
    • event_count
    • summary
    edl_path
    edl_text
    fps24.00

    An EDL (Edit Decision List) is the oldest surviving format in editing: a plain-text list of every cut in a timeline, one event per line, born in the 1970s and still what Premiere, Resolve and Avid can all export when you just need the cuts and nothing else. MKREDLImport is the node that reads one of those files inside ComfyUI and hands you back something the rest of your graph can use - a JSON array of events with real frame-accurate timestamps, and a list of cut times.

    Why would you want this? Say an editor hands you a sequence of shots and you need to generate or process per-cut. Rather than manually punching in scene ranges, you drop the EDL in and let the node compute where every cut lands. The cut_times_json output is sorted, deduplicated record-in times in seconds, which wires neatly into the pack's scene-range and selection nodes for shot-by-shot work. This is the "media finishing" lane of MKRShift Nodes, and it's built for round-tripping with a real NLE rather than hand-typing.

    How it works

    The node takes EDL text one of two ways: put a file path in edl_path and it reads the file, or paste the EDL text directly into edl_text. The fps input (default 24) is what it uses to convert the hh:mm:ss:ff timecodes into seconds - so if your EDL is 23.976 or 29.97, set it, or every cut time will be slightly off.

    It scans the text for classic CMX3600 event lines - a line starting with an event number followed by reel, track, transition and four timecodes. It also picks up * FROM CLIP NAME: lines and attaches the clip name to the preceding event. Each event becomes a dict with the source/record timecodes as text plus _sec versions, so you get both the display form and the numbers you can do math on.

    Outputs, in the order you'll actually use them:

    • events_json - the full parsed event list.
    • cut_times_json - sorted, unique record-in times in seconds. This is the one you wire into scene-selection logic.
    • event_count - how many cuts were parsed, as an INT.
    • summary - a short JSON string with counts and any warnings.

    Installing it

    Same story as every node in this pack - it ships inside MKRShift Nodes:

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

    Then restart ComfyUI. Or use ComfyUI Manager and search for "MKRShift_Nodes" - the pack is registered there. No extra Python packages; the parser is plain standard library. You don't need ffmpeg for this node specifically (that's for the video export nodes).

    Common issues

    The parser is deliberately strict, and that's where people get tripped up. It only recognizes the classic eight-field event line: event number, reel, track, transition, and four timecodes. If your EDL was exported with a different dialect or has extra leading garbage, lines that don't fit get skipped silently - so check event_count against the number of cuts you expected. If they don't match, your EDL isn't in the format this node expects.

    The other gotcha is the fps field. The EDL itself doesn't reliably say what frame rate it was cut at; you have to tell the node. Mismatch there is the most common reason cut times look "close but wrong" - every cut drifts a little as the frame count accumulates. Double-check it against your timeline's actual rate before you build an automated pipeline on the output.

    CategoryMKRShift Nodes/Media/IO

    Inputs (3)

    NameTypeDefaultDescription
    edl_pathSTRING
    edl_textSTRING
    fpsFLOAT24.001–240

    Outputs (4)

    NameTypeDescription
    events_jsonSTRING
    cut_times_jsonSTRING
    event_countINT
    summarySTRING