
Plugin-Workflow
BetaAssemble 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.
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
- 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. - 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. - 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_saveonce they agree), then export a copy of the project with anolgia_app_runthat callsproject_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 withos.path.existsand number the name). Check that it returned True and that the file is there, and keep the path for the end. - 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_runper logical step, each returning a short summary inresult(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,ResetAllGradesorDeleteAllRenderJobson anything you did not make. Put what you add in new things namedNOLGIA <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_previewand look at the image before moving on.framecounts from 0 at the start of the timeline;cameranames another timeline than the current one. Do not describe a result you have not seen. - Renders run on the person's computer:
nolgia_app_exportmp4renders the current timeline (H.264 with its audio, at its size) andpngone 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 acommand_id, follow it withnolgia_app_commandinstead 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 ownframearguments 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_saverefuses it,project.ExportProject()answers False andCloseProject()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. Callmedia_pool.SetCurrentFolder(media_pool.GetRootFolder())first when it belongs at the root.project.GetCurrentTimeline()(and thetimelineglobal) is None when no timeline is open. A timeline you make in a run is not thetimelineglobal: keep the objectCreateEmptyTimelinereturned, callproject.SetCurrentTimeline(tl)and checkproject.GetCurrentTimeline().GetName().media_pool.AppendToTimelinealways appends to the current timeline.- Settings are dicts of strings:
timeline.SetSettings({"useCustomSettings": "1", "timelineResolutionWidth": "1080", "timelineResolutionHeight": "1920", "timelineFrameRate": "24"}). Timeline settings other thanuseCustomSettingsonly change while it is"1", and Resolve applies that key first.timelineFrameRateis read as a number and set as a string ("29.97 DF"for drop frame).GetSettings()answers the project's settings whileuseCustomSettingsis"0". The one-keySetSettingandGetSettingforms 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.SetSettingskeeps 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 whenproject.GetRenderJobStatus(job)["JobStatus"]isComplete(FailedcarriesError); poll it with a pause between reads, and delete only the job you added (project.DeleteRenderJob(job)). Prefernolgia_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: callmedia_pool.SetCurrentFolder(bin)first and put the folder back afterwards. NOLGIA assets come in throughnolgia_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:FPSis a number,Resolutionis"1920x1080",TypeisVideo,AudioorVideo + Audio,Durationa timecode,Framesa count,File Paththe file). An audio clip has noFrames,ResolutionorFPS: take a music length from the cut, not from the clip. - Grades:
item.GetNodeGraph()is a clip's node graph andtimeline.GetNodeGraph()the timeline's own;GetNumNodes(),GetNodeLabel(i),GetToolsInNode(i)andGetLUT(i)read a node,SetLUT(i, path)andSetNodeEnabled(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.SetLUTtakes 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.cubeon Windows), so compare by name.timeline.GetCurrentVideoItem()is the clip under the playhead andtimeline.GetSelectedClips()the selection; when a grading call answers None or False, switch to the Color page withresolve.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 inproject_manager.GetProjectListInCurrentFolder()andproject_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'ssavecommand checks first and refuses with a message;infosaysin_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, andproject_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'sopenrefuses 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 andmedia_pool.ImportMedia()answers None.nolgia_app_infoshowspage: nullthen; ask the person to open or create a project (or use the plugin'sopencommand, 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_previewshows 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
runholds the NOLGIA window until it ends. Keep runs short and settimeout_secondsfor 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 inrunningfor no reason, ask the person to look at Resolve.
Using NOLGIA where it helps
- NOLGIA's film stocks:
nolgia_list_color_presetslists them with their slugs, names and one-line descriptions (the same list asGET https://api.nolgia.ai/v1/color-presets).nolgia_app_importwithcolor_preset: "<slug>"installs the stock's.cubeLUT into theNOLGIAfolder of Resolve's LUT folder for this person, refreshes Resolve's LUT list, and answers the path Resolve lists it under (lut, such asNOLGIA/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_imageornolgia_text_to_audioand bring them in withnolgia_app_import(into theNOLGIA importsbin, or a bin you name withbin;asset_idstakes up to 100 at a time, in order;append: trueputs 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
- Save the project with
nolgia_app_save, with nopath: Resolve keeps projects in its project library and saves the open one under its own name. Never switch projects (nolgia_app_open) to save. - Export a preview with
nolgia_app_export(pngfor a still,mp4for motion) so the person has it in their NOLGIA library, and show the still. - 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
- Which NOLGIA project? List them with
nolgia_list_projects(name and asset count), then show what the chosen one holds withnolgia_list_assetsandproject_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. - The order: the order the clips were made (default), or an order they give by name.
- 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.
- Music: an audio clip from the project (offer it when the project has one), one from their library (
nolgia_list_assetswithmodalityaudio), or none (default). Should it be trimmed to the length of the cut? (Default: yes.) - 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
- Take stock without changing anything. One
nolgia_app_runthat lists every timeline in the project (project.GetTimelineCount(),project.GetTimelineByIndex(i), their names andGetStartFrame()toGetEndFrame()) 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 (CreateEmptyTimelineanswers None for a name in use). - Import the clips into the bin.
nolgia_app_importwithproject_id: "<NOLGIA project id>"andbin: "<project name>", noappend. 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 answersimported(names, in order),assets(asset id, name and kind for each) andskipped(what Resolve does not import, such as 3D models). For an order the person gave, or a project of more than 200 assets, useasset_idswith the ids in that order instead (up to 100 per call; a longer list goes in several calls, in order). Keep theassetslist: it is the order of the cut. - Read the clips. One
nolgia_app_runover the bin's clips (bin.GetClipList(), matched to the imported names withGetName()):GetClipProperty()givesType(Video,Video + Audio,Audio, or a still),FPS,Resolution,FramesandDuration(anAudioclip has noFrames,ResolutionorFPS). 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 asVideo + 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". - 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), thentl.SetSettings({"useCustomSettings": "1", "timelineResolutionWidth": "1080", "timelineResolutionHeight": "1920", "timelineFrameRate": "24"})with the size and rate you chose (strings;"29.97 DF"for drop frame), thenproject.SetCurrentTimeline(tl).SetSettingsanswers False when a key failed, with the keys in the error: report it rather than carrying on. Readtl.GetSettings()back and put the width, height and frame rate inresult, and checkproject.GetCurrentTimeline().GetName()is the new timeline. - 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 readGetStart()andGetEnd()of the first and last. For a still length the person asked for, give each image"startFrame": 0and"endFrame": seconds * fpsin its entry. The default track is V1, with each clip's own sound on A1. - Music (if asked). Bring the audio clip in (it is in the bin from step 2, or
nolgia_app_importwith itsasset_idand the samebin), then onenolgia_app_run: add a track withtl.AddTrack("audio", "stereo")and readtl.GetTrackCount("audio")for its index, thenmedia_pool.AppendToTimeline([{"mediaPoolItem": music, "mediaType": 2, "trackIndex": index, "recordFrame": tl.GetStartFrame(), "startFrame": 0, "endFrame": length}])wherelengthis the cut's frames (tl.GetEndFrame() - tl.GetStartFrame()); an audio clip reports noFrames, so when the music is shorter than the cut the item simply ends where the music does. Read the new item'sGetStart(): it must equaltl.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. - Look at it.
nolgia_app_previewwithframe0, 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, readtl.GetSettings()["timelineInputResMismatchBehavior"]and say what Resolve is doing with the clips that differ. - Offer a draft render. Ask first.
nolgia_app_exportmp4renders 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 acommand_idwithnolgia_app_command. For a long cut offer a range (framessuch as0-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.

