SuperAPI AI Directory

davinci-resolve-fusion

Design & creation

View repository

Updated 10-16 02:23

About this skill

DaVinci Resolve & Fusion

This skill helps you write DaVinci Resolve automation scripts (Lua/Python) and build or edit Fusion compositions, macros (.setting files), and animations. It bundles a reference set and helper scripts so you can build new things, not just modify existing ones.

Source of truth — read this first

When sources disagree, trust them in this order:

  1. references/resolve-api.txt — the official Resolve scripting README.txt, kept as plain text (it is monospace column-aligned and unreadable rendered as Markdown). This is authoritative for the DaVinci Resolve API. It is a snapshot; if a Resolve install is present, the live file at …/Blackmagic Design/DaVinci Resolve/Developer/Scripting/README.txt is the very latest and supersedes the snapshot. Re-sync it after a Resolve update with scripts/update-resolve-api.sh (macOS/Linux) or scripts/update-resolve-api.bat (Windows).
  2. Tested, working code — a real script that runs correctly beats any doc for usage details (exact parameter shapes, return values, ordering).
  3. references/fusion-manual/ — the Fusion 8 scripting manual. Use it for Fusion-specific concepts the Resolve API doc does not cover (object model, splines, tools, GUIs). It was converted from a PDF and is an older snapshot that can be outdated or inaccurate, so defer to (1) and (2) on anything they also describe.

Every manual file carries a banner repeating this, so the warning travels with the content even when only one file is open.

What's here

references/
  resolve-api.txt           # Resolve scripting API — SOURCE OF TRUTH (plain text; view monospace)
  animation.md              # Fusion animation: keyframes, handles, easing, connecting props
  macro-authoring.md        # Building .setting macros, exposing/hiding controls
  fusion-templates.md       # Transitions, generators, titles, effects as macros
  fusion-manual/
    00-index.md             # START HERE for the manual — map of every section & class
    01-introduction.md … 06-class-hierarchy.md
    classes/<ClassName>.md  # one file per Fusion class (46 of them)
scripts/
  run-script.sh / .bat          # run a script via fuscript (Studio only)
  update-resolve-api.sh / .bat  # re-sync resolve-api.txt from your Resolve install
  split-fusion-manual.py        # regenerate fusion-manual/ from a converted manual PDF

How to use it

Writing a Resolve automation script (timelines, media pool, rendering, project management): start from references/resolve-api.txt. For working examples, see "Example scripts" below. See "Running a script" below for how to actually run it.

Example scripts

DaVinci Resolve ships representative example scripts. They are not bundled into this skill (to avoid redistributing Blackmagic's code); read them from your local install instead, in the Examples subfolder of the Scripting folder:

  • macOS: /Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Examples
  • Windows: %PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\Examples
  • Linux: /opt/resolve/Developer/Scripting/Examples (or /home/resolve/...)

For real, working Resolve API usage (not just illustrative examples), the most reliable reference is the AutoSubs Lua server, autosubs_core.lua, in the AutoSubs project. It shows the API used in production for timelines, the media pool, rendering, and driving the Fusion macro.

Running a script

There are two ways to run a script, depending on the Resolve edition:

Menu method (works on every edition, free and Studio). Place the .lua/.py file in Resolve's Fusion Scripts folder, then in Resolve go to Workspace → Scripts (top menu) and pick it from the list. Put it under the Utility subfolder to have it listed on all pages. The Scripts folder (from references/resolve-api.txt) is:

  • macOS: ~/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts (or /Library/... for all users)
  • Windows: %APPDATA%\Roaming\Blackmagic Design\DaVinci Resolve\Support\Fusion\Scripts (or %PROGRAMDATA%\... for all users)
  • Linux: $HOME/.local/share/DaVinciResolve/Fusion/Scripts (or /opt/resolve/Fusion/Scripts)

External runner (DaVinci Resolve Studio only). scripts/run-script.sh <file.lua> (macOS/Linux) or scripts/run-script.bat (Windows) invoke Resolve's fuscript directly, so you can run a script from anywhere without going through the menu. This is often more convenient, especially for AI agents, but external/fuscript invocation of the scripting API requires Resolve Studio — it does not work on the free edition. The menu method above works on both, so it's the reliable fallback.

Building or editing a Fusion macro (.setting): read references/macro-authoring.md for the two-layer control model (UserControls vs published InstanceInputs) and the common gotchas. For tool/class details, open references/fusion-manual/00-index.md and jump to the specific class file.

Animating (keyframes, easing, character/word effects): read references/animation.md. The single biggest gotcha: SetKeyFrames() handle coordinates are relative, but .setting files store them absolute.

Making a reusable template (transition/generator/title/effect for the Edit & Cut pages): read references/fusion-templates.md.

Navigating the Fusion manual efficiently

The manual is large, so it is split into one file per topic and per class. Do not read it whole. Open references/fusion-manual/00-index.md, find the section or class you need from its one-line summaries, then open only that file. To locate something by keyword, grep across references/fusion-manual/ rather than scrolling.

To regenerate the split (e.g. from a newer manual), convert Blackmagic's Fusion scripting PDF to Markdown for free with Mistral Document AI (https://console.mistral.ai/build/document-ai/ocr-playground), then run python3 scripts/split-fusion-manual.py <converted.md>.

Tips

  • Lua and Python are both supported by Resolve/Fusion; the object model is the same across both — see fusion-manual/02-scripting-languages.md.
  • Connect an input to a modifier with tool.Input = modifier.Result; disconnect with tool.Input = nil then tool:SetInput(...) for a static value.
  • After changing a macro's published controls, reload the comp or drop a fresh node instance — the Inspector layout is cached per instance.
  • For editing .setting files, the Fusion Setting Highlighter VS Code extension adds proper highlighting (incl. embedded Lua). See references/macro-authoring.md for the install command, or https://github.com/tmoroney/fusion-setting-highlighter.