davinci-resolve · git:20261005.2bc0998 · 2026-10-05 · sha256 8ea3bbe772804102
davinci-resolve git:20261005.2bc0998A
Immutable. This exact content never changes and is served at /api/v1/blob/8ea3bbe772804102.
---
name: davinci-resolve
description: "Automate DaVinci Resolve media and timelines with its scripting API, build Fusion workflows, and configure render jobs."
category: video-editing
risk: safe
source: self
source_type: self
date_added: "2026-08-26"
tags: ["davinci-resolve", "resolve-scripting", "fusion", "color-management", "deliver", "batch", "studio"]
tools: ["claude", "cursor", "gemini", "codex"]
---
# Blackmagic DaVinci Resolve Studio AI Skill Guide (Claude)
## Overview & Engine Architecture
DaVinci Resolve **Studio** (pin e.g. **19.x / 20.x / 21.x**) unifies Edit, Color, Fusion, Fairlight, Deliver. Pipeline automation uses **`DaVinciResolveScript`** (Python/Lua), optional **`fuscript.exe`**, and **Deliver** render queue APIs. Color: **YRGB 32-bit**, **ACES / DWG**, timeline **Color Management** settings drive all outputs.
**License gate (critical):** From **Resolve 19.1+**, **external** scripting (`scriptapp("Resolve")` from a separate Python process) is **Studio-only**. Free edition: Console/Workspace scripts only — plan automation accordingly ([community reports](https://www.reddit.com/r/davinciresolve/comments/17bke61/), BMD docs). AI features may require **Extras** downloads before API calls succeed.
```
┌─────────────────────────────────────────────────────────────┐
│ PYTHONPATH → DaVinciResolveScript → Project / MediaPool │
│ Deliver: SetCurrentRenderFormatAndCodec + AddRenderJob │
│ Headless: Resolve -nogui (API still available) │
│ Color: project color science + CST nodes → export tags │
└─────────────────────────────────────────────────────────────┘
```
---
## When to use / when not to
**Use when:** batch ingest, timeline assembly, render queue, metadata, Fusion comp batch, OTIO/XML interchange (file-based, not always scripting).
**Do not use when:** Studio license unavailable and external Python is required; expect Free + external process to fail silently.
---
## Operational Capabilities & Agent Directives
1. **Environment (Windows):** `RESOLVE_SCRIPT_API`, `RESOLVE_SCRIPT_LIB` (path to `fusionscript.dll`), `PYTHONPATH` → `...\Developer\Scripting\Modules`.
2. **Studio check:** Fail fast if `resolve.GetProductName()` / license APIs indicate Free when external automation is required.
3. **Deliver pipeline:** Set format/codec → `SetRenderSettings` (`TargetDir`, `CustomName`, `SelectAllFrames`, `ExportVideo`, `ExportAudio`) → `AddRenderJob()` → `StartRendering()`; poll `IsRenderingInProgress()`.
4. **Color / export:** Match **timeline color science** to deliverable — Rec.709 gamma 2.4 for H.264 web; ACES2065-1 EXR for VFX handoff. Wrong **Color Space Transform** order in nodes causes legal-range clipping in H.264.
5. **Deterministic stills:** Fixed timeline frame export via `ExportCurrentFrameAsStill` or Deliver with single-frame range; disable noise reduction variance for regression where possible.
6. **GPU memory:** TNR, Fusion 3D, oversampled comps → VRAM exhaustion — Smart Render Cache, proxy workflow, reduce TNR radius.
7. **Python version:** Match Resolve-supported Python (check Help → Documentation → Developer); do not mix conda env without matching Resolve's embedded expectations.
---
## Production Python: connect + queue H.264 deliverable
```python
import os, sys
def get_resolve():
if sys.platform.startswith("win"):
api = os.environ.get("RESOLVE_SCRIPT_API") or os.path.expandvars(
r"%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting"
)
sys.path.append(os.path.join(api, "Modules"))
import DaVinciResolveScript as bmd
resolve = bmd.scriptapp("Resolve")
if not resolve:
raise RuntimeError("Resolve not running or external scripting unavailable (Studio required)")
return resolve
def queue_mp4(project, timeline, out_dir, name):
project.SetCurrentTimeline(timeline)
project.LoadRenderPreset("H.264 Master") # or SetCurrentRenderFormatAndCodec
project.SetRenderSettings({
"TargetDir": out_dir,
"CustomName": name,
"ExportVideo": True,
"ExportAudio": True,
})
project.AddRenderJob()
project.StartRendering()
while project.IsRenderingInProgress():
pass
if project.GetRenderJobStatus(0).get("JobStatus") != "Complete":
raise RuntimeError("Render failed: " + str(project.GetRenderJobStatus(0)))
# resolve = get_resolve()
# pm = resolve.GetProjectManager()
# project = pm.LoadProject("MyProject")
# timeline = project.GetTimelineByIndex(1)
# queue_mp4(project, timeline, r"C:\Exports", "master")
```
---
## Failure taxonomy
| Symptom | Cause | Fix |
| :--- | :--- | :--- |
| `ImportError: DaVinciResolveScript` | PYTHONPATH | Set env vars; use Resolve-bundled Python |
| External script no connect | Free edition / 19.1+ gate | Studio license |
| API returns False | Studio-only function on Free | Guard feature matrix |
| GPU memory full | TNR / Fusion | Proxies, cache, lower radius |
| H.264 dull/wrong | Display-referred vs scene-referred | CST + correct output gamma |
| HEVC edit stutter | Long-GOP | Proxy media (DNxHR LB / ProRes Proxy) |
**Headless:** `Resolve.exe -nogui` — scripting APIs documented as available without UI ([Scripting API wiki](https://wiki.dvresolve.com/developer-docs/scripting-api)).
---
## Agent Operational Directive
> **MANDATORY**: Confirm Studio + external scripting before building separate-process agents. Set PYTHONPATH every run. Align timeline color science with Deliver codec. Poll render job status; never assume `StartRendering` success without status check.