Beispielausgabe von Assemble a cut in DaVinci Resolve

Plugin-Workflow

Beta

Assemble a cut in DaVinci Resolve

Turn a NOLGIA project into a first cut in DaVinci Resolve: its clips in a bin, in order, on a new timeline at their frame size and frame rate, with your music underneath.

Runs in DaVinci Resolve Studio on your computer

Ideal für
Getting the clips you made with NOLGIA into Resolve as an editable timeline, ready to cut.
Läuft in
DaVinci Resolve Studio 21.1 or later
Zeit
5 to 15 min
Kosten
With your own agent, like Claude or Cursor, the work in DaVinci Resolve Studio is free. With NOLGIA Agent, turns cost from 10 credits each. Anything it generates with NOLGIA is priced as usual.

Du hast schon ein Konto? Anmelden

Erstelle ein kostenloses Konto, und der NOLGIA Agent öffnet sich mit diesem Workflow. Er arbeitet über das NOLGIA-Plugin in DaVinci Resolve Studio.

Starte es über deinen Agenten

Füge das in Claude Code, Claude Desktop, Cursor oder einen beliebigen Agenten mit verbundenem NOLGIA ein, während DaVinci Resolve Studio geöffnet ist. Der Agent folgt diesem Workflow Schritt für Schritt und fragt, bevor er etwas Größeres ändert.

Start-Prompt

Use NOLGIA to assemble a cut in DaVinci Resolve from one of my NOLGIA projects: bring its clips into a bin, lay them on a new timeline in order at the clips' frame size and frame rate, add my music if I have some, and show me the first frame.

In Claude Code ist es auch ein Befehl: /mcp__nolgia__resolve-assemble-cut. Für „In Claude öffnen“ muss NOLGIA in Claude als Connector hinzugefügt sein.

Was es macht

Pick one of your NOLGIA projects and the NOLGIA assistant builds it into a timeline in your open DaVinci Resolve Studio. It brings every clip, still and audio file of the project into a bin named after the project, in the order they were made, reads their frame size and frame rate, and makes a new timeline to match: a vertical cut of 1080x1920 clips comes out at 1080x1920. The clips go down in order on one track, and your music, from the project or your library, goes on its own track under the cut, trimmed to its length.

It shows you the first frame and one from the middle, checks that the clips fill the frame, and offers a draft render into your NOLGIA library. Your existing timelines, bins and clips are never changed: the assistant only ever adds a bin and a timeline, and it exports a copy of the project before it starts.

You need DaVinci Resolve Studio 21.1 or later and NOLGIA for DaVinci Resolve. The work in Resolve is free. If you ask for something made with NOLGIA along the way, like a missing shot or a music bed, it is priced as usual and you are told the cost first.

Anwendungsfälle

  • A vertical social cut from a batch of generated clips
  • An assembly of a storyboard's shots in order, to watch and time
  • A rough cut with a temp music track for review

Der Workflow

Die schriftlichen Schritte, die dein Agent in DaVinci Resolve Studio befolgt, für jeden Agenten gleich: die Regeln, die jeder Workflow für DaVinci Resolve Studio einhält (zuerst eine Sicherheitskopie, alles bleibt bearbeitbar, eine Vorschau nach jeder Änderung), dann die eigenen Schritte dieses Presets.

Workflow lesen

Rules for every DaVinci Resolve Studio workflow

These instructions are served to the agent with every DaVinci Resolve preset in the Film assistant category. The agent works through the NOLGIA Bridge tools (nolgia_app_*) on DaVinci Resolve Studio running on the person's own computer, through NOLGIA for DaVinci Resolve (a script plugin that runs in Resolve's own Python). Code for nolgia_app_run is Python.

The plugin needs DaVinci Resolve Studio 21.1 or later: since 21.1 Resolve runs Python scripts only in the Studio edition. When the plugin is started from outside Resolve (a render machine, a script), Resolve must also have Preferences > System > General > External scripting set to Local.

Code in nolgia_app_run sees resolve (the Resolve object), project_manager, project (the open project), media_pool, timeline (the current timeline, or None when none is open) and fusion. It hands data back by setting result; Resolve objects in result come back as their names. A failure returns the traceback.

Before anything changes

  1. Call nolgia_app_status. If DaVinci Resolve is not listed, stop and tell the person in two lines: install NOLGIA for DaVinci Resolve from nolgia.ai/plugins/davinci-resolve (DaVinci Resolve Studio 21.1 or later), then in Resolve open Workspace > Scripts > NOLGIA, sign in and keep the NOLGIA window open with Connected on. Do not guess or continue without it.
  2. Call nolgia_app_info. Read what is really open: Resolve's version and edition, the current page, the project, the current timeline (name, frame rate, frame size, start timecode, length, tracks with their clip counts, selected clips, the clip under the playhead), the other timelines, the media pool's bins with clip counts and the render presets. If no project is open (Resolve's Project Manager), ask the person to open one and wait. Describe what you see in one sentence so the person can correct you.
  3. Make a safety copy first. Resolve projects live in Resolve's database, not in a file, and Resolve cannot tell a script whether the project has unsaved changes. Ask the person to save (or save with nolgia_app_save once they agree), then export a copy of the project with a nolgia_app_run that calls project_manager.ExportProject(project.GetName(), path) with a path in Documents/NOLGIA exports ending in <project name>_before_nolgia.drp, never over a file that exists (check with os.path.exists and number the name). Check that it returned True and that the file is there, and keep the path for the end.
  4. Ask only the questions the workflow lists. Offer a sensible default for each so the person can just say "go".

While working

  • Work in small steps: one nolgia_app_run per logical step, each returning a short summary in result (bin, timeline, clip and node names, counts, frame numbers, what each call returned). Resolve objects cannot be kept between runs: find things again by name in each run.
  • Never delete, rename, re-time or re-grade the person's existing clips, timelines, bins, nodes, color versions or render jobs unless they asked, and never delete media. In particular never call DeleteTimelines, DeleteClips, DeleteFolders, ResetAllGrades or DeleteAllRenderJobs on anything you did not make. Put what you add in new things named NOLGIA <workflow> (a bin, a timeline, a color version, a LUT folder), so each step is easy to take back.
  • Keep everything editable: LUTs on nodes the person can switch off, clips on their own tracks, settings they can read in the Edit page. No flattening, no compound clips, no rendering into the media pool unless the workflow says so.
  • After each visible change, call nolgia_app_preview and look at the image before moving on. frame counts from 0 at the start of the timeline; camera names another timeline than the current one. Do not describe a result you have not seen.
  • Renders run on the person's computer: nolgia_app_export mp4 renders the current timeline (H.264 with its audio, at its size) and png one frame, both into a temporary folder, never over the person's files, and puts the Deliver page's settings back. They can take minutes: if a tool hands back a command_id, follow it with nolgia_app_command instead of starting it again.
  • If Python fails, read the traceback in error, fix the code and try once more. After two failures on the same step, explain what failed in plain words and ask how to proceed.

Resolve Python that bites

  • Everything counts from 1: tracks (timeline.GetItemListInTrack("video", 1)), nodes (graph.SetLUT(1, path), 1 <= nodeIndex <= graph.GetNumNodes()), timelines (project.GetTimelineByIndex(1)) and node stack layers. Frame numbers on a timeline start at its start timecode (timeline.GetStartFrame(): 01:00:00:00 at 24 fps is frame 86400); the plugin's own frame arguments count from 0 at the start of the timeline.
  • project_manager.CreateProject(name) makes and opens a project that is not in the project library yet: GetProjectListInCurrentFolder() leaves it out, nolgia_app_save refuses it, project.ExportProject() answers False and CloseProject() loses it. It joins the library at its first change (a bin added, a clip imported), so make that change, then save, before anything else.
  • media_pool.CreateEmptyTimeline(name) makes the timeline in the current media pool folder. Call media_pool.SetCurrentFolder(media_pool.GetRootFolder()) first when it belongs at the root.
  • project.GetCurrentTimeline() (and the timeline global) is None when no timeline is open. A timeline you make in a run is not the timeline global: keep the object CreateEmptyTimeline returned, call project.SetCurrentTimeline(tl) and check project.GetCurrentTimeline().GetName(). media_pool.AppendToTimeline always appends to the current timeline.
  • Settings are dicts of strings: timeline.SetSettings({"useCustomSettings": "1", "timelineResolutionWidth": "1080", "timelineResolutionHeight": "1920", "timelineFrameRate": "24"}). Timeline settings other than useCustomSettings only change while it is "1", and Resolve applies that key first. timelineFrameRate is read as a number and set as a string ("29.97 DF" for drop frame). GetSettings() answers the project's settings while useCustomSettings is "0". The one-key SetSetting and GetSetting forms are deprecated; use the dict forms.
  • Most calls answer False instead of raising. Check every return value and read back what you set (GetLUT, GetSettings, GetTrackCount, GetName) before reporting it. SetSettings keeps the keys it applied before the one that failed.
  • Render jobs are asynchronous: project.AddRenderJob() answers a job id, project.StartRendering([job]) starts it, and the job is done only when project.GetRenderJobStatus(job)["JobStatus"] is Complete (Failed carries Error); poll it with a pause between reads, and delete only the job you added (project.DeleteRenderJob(job)). Prefer nolgia_app_export, which does all of this and puts the Deliver page back as it was.
  • media_pool.ImportMedia([{"FilePath": path}]) takes file paths on the person's computer and imports into the current media pool folder: call media_pool.SetCurrentFolder(bin) first and put the folder back afterwards. NOLGIA assets come in through nolgia_app_import, which downloads them to the computer and imports them for you.
  • Clip facts are clip.GetClipProperty() (one dict; the keys are the Clip Attributes names: FPS is a number, Resolution is "1920x1080", Type is Video, Audio or Video + Audio, Duration a timecode, Frames a count, File Path the file). An audio clip has no Frames, Resolution or FPS: take a music length from the cut, not from the clip.
  • Grades: item.GetNodeGraph() is a clip's node graph and timeline.GetNodeGraph() the timeline's own; GetNumNodes(), GetNodeLabel(i), GetToolsInNode(i) and GetLUT(i) read a node, SetLUT(i, path) and SetNodeEnabled(i, on) change it. The API cannot add a node: a fresh timeline graph has none (GetNumNodes() is 0), while an ungraded clip has one empty node. GetToolsInNode(i) answers None, not [], for an empty node. SetLUT takes an absolute path or a path relative to Resolve's LUT folder (NOLGIA/Kodak Portra 400.cube) that Resolve has already listed (project.RefreshLUTList()); GetLUT(i) reads it back with the computer's own separator (NOLGIA\Kodak Portra 400.cube on Windows), so compare by name. timeline.GetCurrentVideoItem() is the clip under the playhead and timeline.GetSelectedClips() the selection; when a grading call answers None or False, switch to the Color page with resolve.OpenPage("color"), run the step, and put the page back (resolve.GetCurrentPage() read first).
  • The scripting API cannot add a node to a grade, cannot read or set a node's key output gain, cannot move a clip on the timeline once placed, cannot say whether the project has unsaved changes, and cannot press buttons in Resolve's dialogs. Say so plainly and ask the person for the click instead of promising it.
  • project_manager.SaveProject() on a project that was never saved with a name (Resolve's own New Project or Untitled Project: project.GetName() is not in project_manager.GetProjectListInCurrentFolder() and project_manager.GetProjectLastModifiedTime(name) is None) opens Resolve's Save dialog and blocks every script until someone closes it. Never call it on such a project. The plugin's save command checks first and refuses with a message; info says in_library: false. Ask the person to save the project once with a name (File > Save Project), then go on. Loading another project over an unsaved project with content can raise the same question, and project_manager.CloseProject() does not close such a project (Resolve 21.1.1 answers False, renames it with a timestamp and leaves an "Untitled Project" in the library); resolve.Quit() asks too. The plugin's open refuses over it; ask the person to save or close it by hand.
  • Right after Resolve starts only its Project Manager is up: resolve.GetCurrentPage() is None, resolve.OpenPage() does nothing and media_pool.ImportMedia() answers None. nolgia_app_info shows page: null then; ask the person to open or create a project (or use the plugin's open command, which works from that state).
  • project.ExportCurrentFrameAsStill(path) has been seen to answer False on a fresh Resolve session (once, during a long session of imports and renders; six fresh sessions since exported their first still fine). When it does, nolgia_app_preview shows the Color page for a moment, comes back and tries again. In your own code do the same: resolve.OpenPage("color"), go back to the page you read first, and try again.
  • A long run holds the NOLGIA window until it ends. Keep runs short and set timeout_seconds for anything that may take a while. A dialog open in Resolve (a missing media prompt, a question about a project) holds every script until someone closes it: if a command sits in running for no reason, ask the person to look at Resolve.

Using NOLGIA where it helps

  • NOLGIA's film stocks: nolgia_list_color_presets lists them with their slugs, names and one-line descriptions (the same list as GET https://api.nolgia.ai/v1/color-presets). nolgia_app_import with color_preset: "<slug>" installs the stock's .cube LUT into the NOLGIA folder of Resolve's LUT folder for this person, refreshes Resolve's LUT list, and answers the path Resolve lists it under (lut, such as NOLGIA/Kodak Portra 400.cube). Installing a LUT is free.
  • Missing shots, stills, music and sound: make them with nolgia_text_to_video, nolgia_image_to_video, nolgia_text_to_image or nolgia_text_to_audio and bring them in with nolgia_app_import (into the NOLGIA imports bin, or a bin you name with bin; asset_ids takes up to 100 at a time, in order; append: true puts them on the end of the current timeline).
  • These generations cost credits: say what you are about to make and roughly what it costs (read it from the tool's estimate) before you run it. Work in Resolve itself, previews and renders included, is free.

Finishing

  1. Save the project with nolgia_app_save, with no path: Resolve keeps projects in its project library and saves the open one under its own name. Never switch projects (nolgia_app_open) to save.
  2. Export a preview with nolgia_app_export (png for a still, mp4 for motion) so the person has it in their NOLGIA library, and show the still.
  3. Leave nothing behind in the render queue, and tell the person, in a few lines: what you built, where it lives (bin, timeline, track, node or color version names, the LUT's path), the one or two things they are most likely to adjust and where those are in Resolve, and the path of the safety copy.

Assemble a cut in DaVinci Resolve

Turn a NOLGIA project into a first cut in the person's Resolve: its clips in a bin named after the project, in the order they were made, on a new timeline at the clips' own frame size and frame rate (vertical 1080x1920 clips are common), with music on its own track if they have some, and a first frame to look at. Their existing timelines are never touched.

Ask

  1. Which NOLGIA project? List them with nolgia_list_projects (name and asset count), then show what the chosen one holds with nolgia_list_assets and project_id (names, kinds, how many videos, images and audio clips). It lists newest first; the import puts them oldest first, so say the order you will use.
  2. The order: the order the clips were made (default), or an order they give by name.
  3. The timeline: named after the project (default), at the frame size most of the clips share and the frame rate most of them share (default). Clips that differ are scaled into the frame by Resolve; name them.
  4. Music: an audio clip from the project (offer it when the project has one), one from their library (nolgia_list_assets with modality audio), or none (default). Should it be trimmed to the length of the cut? (Default: yes.)
  5. Images, if the project has any, come in at Resolve's standard still length (Project Settings > Editing > Standard still duration). Keep that, or set a length in seconds? (Default: keep it.)

Build

  1. Take stock without changing anything. One nolgia_app_run that lists every timeline in the project (project.GetTimelineCount(), project.GetTimelineByIndex(i), their names and GetStartFrame() to GetEndFrame()) and the root bins (media_pool.GetRootFolder(), GetSubFolderList(), names and clip counts). Keep this list: at the end you compare against it. If a timeline or a root bin already carries the project's name, ask whether to use the bin or make <name> 2; a timeline name must be new (CreateEmptyTimeline answers None for a name in use).
  2. Import the clips into the bin. nolgia_app_import with project_id: "<NOLGIA project id>" and bin: "<project name>", no append. It brings every ready video, image and audio asset of the project in, oldest first, into that bin (made at the root of the media pool when it is not there yet), and answers imported (names, in order), assets (asset id, name and kind for each) and skipped (what Resolve does not import, such as 3D models). For an order the person gave, or a project of more than 200 assets, use asset_ids with the ids in that order instead (up to 100 per call; a longer list goes in several calls, in order). Keep the assets list: it is the order of the cut.
  3. Read the clips. One nolgia_app_run over the bin's clips (bin.GetClipList(), matched to the imported names with GetName()): GetClipProperty() gives Type (Video, Video + Audio, Audio, or a still), FPS, Resolution, Frames and Duration (an Audio clip has no Frames, Resolution or FPS). Work out the frame size and the frame rate most of the picture clips share, and list the ones that differ. A music file that came in as Video + Audio (an mp4 with a black picture) would be laid on V1 as a clip: say so and ask whether to leave it out, or to upload the audio itself to the Library. Say the plan in two lines (size, rate, number of clips, music) and wait for a yes unless they said "go".
  4. Make the timeline, before any clip is on it. One nolgia_app_run: media_pool.SetCurrentFolder(media_pool.GetRootFolder()) (a timeline is made in the current folder, and the import may have left the bin current), tl = media_pool.CreateEmptyTimeline(name) (None means the name is in use: stop and ask), then tl.SetSettings({"useCustomSettings": "1", "timelineResolutionWidth": "1080", "timelineResolutionHeight": "1920", "timelineFrameRate": "24"}) with the size and rate you chose (strings; "29.97 DF" for drop frame), then project.SetCurrentTimeline(tl). SetSettings answers False when a key failed, with the keys in the error: report it rather than carrying on. Read tl.GetSettings() back and put the width, height and frame rate in result, and check project.GetCurrentTimeline().GetName() is the new timeline.
  5. Lay the clips down in order. One nolgia_app_run: media_pool.AppendToTimeline([{"mediaPoolItem": clip} for clip in ordered]) with the picture clips in the order of step 2 (audio clips stay in the bin for step 6). It answers the timeline items it added: check the count and read GetStart() and GetEnd() of the first and last. For a still length the person asked for, give each image "startFrame": 0 and "endFrame": seconds * fps in its entry. The default track is V1, with each clip's own sound on A1.
  6. Music (if asked). Bring the audio clip in (it is in the bin from step 2, or nolgia_app_import with its asset_id and the same bin), then one nolgia_app_run: add a track with tl.AddTrack("audio", "stereo") and read tl.GetTrackCount("audio") for its index, then media_pool.AppendToTimeline([{"mediaPoolItem": music, "mediaType": 2, "trackIndex": index, "recordFrame": tl.GetStartFrame(), "startFrame": 0, "endFrame": length}]) where length is the cut's frames (tl.GetEndFrame() - tl.GetStartFrame()); an audio clip reports no Frames, so when the music is shorter than the cut the item simply ends where the music does. Read the new item's GetStart(): it must equal tl.GetStartFrame(). If it landed elsewhere, remove only that item (tl.DeleteClips([item])) and try "recordFrame": 0; the API cannot move an item once placed. Say that the music is laid under the cut, not mixed: levels are theirs to set in the Fairlight page.
  7. Look at it. nolgia_app_preview with frame 0, and one in the middle of the cut. The picture must fill the frame (a vertical clip on a vertical timeline shows no black at the sides); if it does not, read tl.GetSettings()["timelineInputResMismatchBehavior"] and say what Resolve is doing with the clips that differ.
  8. Offer a draft render. Ask first. nolgia_app_export mp4 renders the whole timeline (H.264 at the timeline's size, with its audio) into the person's NOLGIA library and answers the asset id; follow a command_id with nolgia_app_command. For a long cut offer a range (frames such as 0-239) first.

Check

  • nolgia_app_info: the new timeline is current, its frame size and frame rate are the ones agreed, V1 holds as many clips as pictures were imported, the music (if any) starts on the first frame of its track and ends with the cut, and the bin holds every imported clip.
  • Compare with step 1: every timeline the person had is still there with the same name, start and end frame, and every root bin still has its clip count. Nothing of theirs changed.
  • The first and middle frames look right: in order, the right way up, filling the frame.

Deliver

Save the project. Export the draft mp4 if they asked, else a png of the first frame, so they have it in their NOLGIA library. Tell the person: the bin and timeline names, the frame size and rate, the order of the clips (and which were scaled), which track holds the music, how to reorder clips (drag them in the Edit page; the timeline is an ordinary timeline), and the path of the safety copy.

What this workflow never does: it never edits, renames, re-times or deletes the person's existing timelines, bins or clips; it only ever adds a bin, a timeline and the clips in them, and it never renders without asking.

Probier es in DaVinci Resolve Studio aus.

Installiere das kostenlose NOLGIA-Plugin für DaVinci Resolve Studio, melde dich an und frag dann deinen Agenten.

Plugin für DaVinci Resolve Studio holen