render-export
One-Click Render Export for DaVinci Resolve
When you're rendering 100+ videos per week across multiple client projects, every second of friction compounds into hours of wasted time. I built this script to eliminate the seven-step manual render process and reclaim my ability to multitask while exports queue up.
The Problem
The standard DaVinci Resolve render workflow requires complete attention. You have to switch to the Deliver page (Shift+8), wait for it to load, select your export preset, click "Add to Render Queue," select the job, and click "Start Render." That's roughly 7 seconds of clicking through menus, but the real cost is mental overhead. You can't check email, respond to Slack messages, or move on to the next edit until the render starts.
My previous solution used Hammerspoon with keyboard shortcuts to automate the clicks, but it had a fatal flaw: once initiated, the script would simulate keyboard input, meaning I couldn't touch my mouse or keyboard until it completed. For someone constantly juggling QuikTrip social content, AirCo videos, and Galaxy Home Recreation projects, this was unacceptable.
The Solution
This script uses the DaVinci Resolve API to bypass the UI entirely. Instead of simulating clicks, it directly commands Resolve to switch pages, load the preset, clear the queue, add the job, and start rendering. The entire process runs in the background.
The workflow is now: Cmd+Space to open Raycast, type "render," hit Enter. Done. I can immediately switch to another task while the export queues up. A companion notification script alerts me with a chime when the render completes.
Technical Implementation
The script handles a specific edge case that would otherwise cause failures: NAS lag. When working on network storage (my typical 9-to-5 setup), the Deliver page needs time to communicate with the network drive before render buttons become active. Without accounting for this, the script would attempt to add jobs while the UI was still initializing, resulting in silent failures.
The retry loop solves this by attempting to add the render job up to 10 times with 1-second intervals. If the network or database is slow to respond, the script waits rather than failing. The same buffer prevents issues when working locally on personal projects, where the Edit-to-Deliver page transition still requires a brief cache period.
Error handling sends macOS notifications for failure states: no project loaded, preset not found, or timeout waiting for the Deliver page to initialize.
Time Savings
At a conservative estimate of 100 renders per week, this script saves 700 seconds (11.6 minutes) of active clicking time. But the real value is eliminating context switching. Instead of babysitting each render setup, I can immediately return to editing, client communication, or next steps in the production pipeline.
The headache reduction alone justifies the automation. No more "Did I click Start Render?" or "Why is the button grayed out?" The script either completes or notifies me of failure.
Implementation Notes
This script requires Raycast and access to the DaVinci Resolve Python API. The render preset name ("01 tv export") should be changed to match your own preset. Users rendering to network storage will benefit from the NAS lag handling, but the script works equally well on local drives.
The notification integration requires a separate Python script (render_notify.py) placed in Resolve's Fusion Scripts directory to trigger the completion alert.