davinci-resolve-mcp 2.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +85 -0
- package/CHANGELOG.md +802 -0
- package/CLAUDE.md +15 -0
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/SECURITY.md +53 -0
- package/bin/davinci-resolve-mcp.mjs +376 -0
- package/docs/README.md +56 -0
- package/docs/SKILL.md +1145 -0
- package/docs/authoring/fuse-dctl-authoring.md +242 -0
- package/docs/authoring/script-plugin-authoring.md +195 -0
- package/docs/contributing.md +82 -0
- package/docs/guides/color-decision-guide.md +387 -0
- package/docs/guides/editorial-decision-guide.md +136 -0
- package/docs/guides/media-analysis-guide.md +615 -0
- package/docs/guides/multicam-setup-guide.md +138 -0
- package/docs/install.md +198 -0
- package/docs/integrations/workflow-integrations.md +120 -0
- package/docs/kernels/README.md +28 -0
- package/docs/kernels/audio-fairlight-kernel.md +86 -0
- package/docs/kernels/color-grade-kernel.md +103 -0
- package/docs/kernels/extension-authoring-kernel.md +101 -0
- package/docs/kernels/fusion-composition-kernel.md +91 -0
- package/docs/kernels/media-pool-ingest-kernel.md +147 -0
- package/docs/kernels/project-lifecycle-kernel.md +120 -0
- package/docs/kernels/render-deliver-kernel.md +92 -0
- package/docs/kernels/review-annotation-kernel.md +110 -0
- package/docs/kernels/timeline-conform-interchange-kernel.md +99 -0
- package/docs/kernels/timeline-edit-kernel.md +189 -0
- package/docs/notes/codec-plugin-notes.md +136 -0
- package/docs/notes/dctl-notes.md +234 -0
- package/docs/notes/fusion-template-notes.md +136 -0
- package/docs/notes/lut-notes.md +136 -0
- package/docs/notes/openfx-notes.md +120 -0
- package/docs/process/release-process.md +152 -0
- package/docs/reference/api-coverage.md +488 -0
- package/docs/reference/resolve_scripting_api.txt +1012 -0
- package/examples/README.md +53 -0
- package/examples/markers/README.md +81 -0
- package/examples/media/README.md +94 -0
- package/examples/timeline/README.md +98 -0
- package/install.py +1196 -0
- package/package.json +52 -0
- package/scripts/audit_api_parity.py +275 -0
- package/scripts/live_media_analysis_polish_probe.py +65 -0
- package/src/__init__.py +3 -0
- package/src/analysis_dashboard.py +4936 -0
- package/src/control_panel.py +13 -0
- package/src/granular/__init__.py +17 -0
- package/src/granular/common.py +727 -0
- package/src/granular/folder.py +287 -0
- package/src/granular/gallery.py +306 -0
- package/src/granular/graph.py +309 -0
- package/src/granular/media_pool.py +679 -0
- package/src/granular/media_pool_item.py +852 -0
- package/src/granular/media_storage.py +179 -0
- package/src/granular/project.py +1594 -0
- package/src/granular/resolve_control.py +521 -0
- package/src/granular/timeline.py +1074 -0
- package/src/granular/timeline_item.py +2251 -0
- package/src/resolve_mcp_server.py +43 -0
- package/src/server.py +15691 -0
- package/src/utils/__init__.py +3 -0
- package/src/utils/app_control.py +319 -0
- package/src/utils/audio_fairlight_live_probe.py +263 -0
- package/src/utils/cdl.py +20 -0
- package/src/utils/cloud_operations.py +192 -0
- package/src/utils/color_grade_live_probe.py +444 -0
- package/src/utils/dctl_templates.py +368 -0
- package/src/utils/extension_authoring_live_probe.py +292 -0
- package/src/utils/fuse_templates.py +1968 -0
- package/src/utils/fusion_composition_live_probe.py +284 -0
- package/src/utils/layout_presets.py +333 -0
- package/src/utils/mcp_stdio.py +32 -0
- package/src/utils/media_analysis.py +3618 -0
- package/src/utils/media_analysis_jobs.py +796 -0
- package/src/utils/media_pool_ingest_live_probe.py +592 -0
- package/src/utils/multicam.py +393 -0
- package/src/utils/object_inspection.py +287 -0
- package/src/utils/platform.py +157 -0
- package/src/utils/project_lifecycle_live_probe.py +376 -0
- package/src/utils/project_properties.py +601 -0
- package/src/utils/render_deliver_live_probe.py +384 -0
- package/src/utils/resolve_connection.py +77 -0
- package/src/utils/review_annotation_live_probe.py +352 -0
- package/src/utils/script_templates.py +1193 -0
- package/src/utils/sync_detection.py +887 -0
- package/src/utils/timeline_conform_live_probe.py +280 -0
- package/src/utils/timeline_kernel_live_probe.py +1091 -0
- package/src/utils/timeline_kernel_probe.py +185 -0
- package/src/utils/timeline_title_text.py +87 -0
- package/src/utils/update_check.py +610 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
# Resolve Color Decision Guide
|
|
2
|
+
|
|
3
|
+
This guide is the project-owned color correction and grading context for the
|
|
4
|
+
DaVinci Resolve MCP. It defines what an agent can actually create through the
|
|
5
|
+
public Resolve scripting API, what it can only apply as an opaque grade artifact,
|
|
6
|
+
and how to make color decisions without pretending the API exposes the full Color
|
|
7
|
+
page UI.
|
|
8
|
+
|
|
9
|
+
## API Reality
|
|
10
|
+
|
|
11
|
+
The public Resolve scripting API supports useful color automation, but it does
|
|
12
|
+
not expose most interactive Color page controls as editable parameters.
|
|
13
|
+
|
|
14
|
+
### Directly Creatable Or Controllable
|
|
15
|
+
|
|
16
|
+
These are the safest surfaces for procedural color work:
|
|
17
|
+
|
|
18
|
+
- CDL values on an existing node:
|
|
19
|
+
- `NodeIndex`
|
|
20
|
+
- `Slope`
|
|
21
|
+
- `Offset`
|
|
22
|
+
- `Power`
|
|
23
|
+
- `Saturation`
|
|
24
|
+
- Color versions:
|
|
25
|
+
- add, rename, delete, load, and snapshot local or remote grade versions
|
|
26
|
+
- Color groups:
|
|
27
|
+
- create/delete groups
|
|
28
|
+
- assign/remove timeline items
|
|
29
|
+
- inspect group pre-clip and post-clip node graph availability
|
|
30
|
+
- Existing node graph state:
|
|
31
|
+
- count nodes
|
|
32
|
+
- read node labels, LUTs, cache state, enabled state, and tools
|
|
33
|
+
- set LUT on an existing node
|
|
34
|
+
- enable/disable an existing node
|
|
35
|
+
- set node cache mode
|
|
36
|
+
- LUT and DCTL assets:
|
|
37
|
+
- author/install MCP-marked DCTL files
|
|
38
|
+
- refresh regular LUT/DCTL discovery
|
|
39
|
+
- export LUTs from existing grades
|
|
40
|
+
- apply discovered LUT paths to existing nodes
|
|
41
|
+
- Gallery and still assets:
|
|
42
|
+
- grab stills
|
|
43
|
+
- import/export stills and `.drx` grade files
|
|
44
|
+
- label and delete stills
|
|
45
|
+
- Full-grade transfer:
|
|
46
|
+
- copy an existing grade to other timeline items
|
|
47
|
+
- apply a `.drx` grade to a graph
|
|
48
|
+
- reset all grades on a graph
|
|
49
|
+
|
|
50
|
+
### Opaque Full-Grade Operations
|
|
51
|
+
|
|
52
|
+
These can represent fully featured Resolve grades, but the MCP cannot inspect or
|
|
53
|
+
edit every internal decision inside them:
|
|
54
|
+
|
|
55
|
+
- `CopyGrades([timelineItems])`
|
|
56
|
+
- `ApplyGradeFromDRX(path, gradeMode)`
|
|
57
|
+
- imported Gallery stills / `.drx` files
|
|
58
|
+
- exported LUTs
|
|
59
|
+
- existing node graphs created manually in Resolve
|
|
60
|
+
|
|
61
|
+
Treat these as whole-grade artifacts. They can include complex node trees,
|
|
62
|
+
windows, qualifiers, curves, keys, OFX, and tracking if they already exist in
|
|
63
|
+
the source grade, but the MCP is applying or copying them as a package.
|
|
64
|
+
|
|
65
|
+
Important: `ApplyGradeFromDRX` replaces the target graph. It is not an append
|
|
66
|
+
operation. Create a version snapshot before applying it.
|
|
67
|
+
|
|
68
|
+
### Not Directly Creatable From Structured Params
|
|
69
|
+
|
|
70
|
+
Do not claim the MCP can build these from scratch through the public API:
|
|
71
|
+
|
|
72
|
+
- new serial, parallel, layer, or outside nodes
|
|
73
|
+
- node reordering or mixer construction
|
|
74
|
+
- Lift/Gamma/Gain wheel values
|
|
75
|
+
- offset/log/HDR palette values
|
|
76
|
+
- custom curves or HSL curves
|
|
77
|
+
- qualifiers
|
|
78
|
+
- power windows
|
|
79
|
+
- tracker/window animation
|
|
80
|
+
- Color Warper changes
|
|
81
|
+
- detailed OFX or ResolveFX parameter edits in the Color page
|
|
82
|
+
- a fully editable node tree from JSON
|
|
83
|
+
|
|
84
|
+
If the user asks for one of these, the agent should either propose a manual
|
|
85
|
+
Resolve workflow, use a prebuilt `.drx`/still/LUT/DCTL artifact, or state that
|
|
86
|
+
the current API does not expose that control.
|
|
87
|
+
|
|
88
|
+
## Correction Priorities
|
|
89
|
+
|
|
90
|
+
Use this order when making or recommending corrections:
|
|
91
|
+
|
|
92
|
+
1. Technical transform and color management
|
|
93
|
+
2. Exposure and contrast
|
|
94
|
+
3. White balance and neutral placement
|
|
95
|
+
4. Skin tone and memory colors
|
|
96
|
+
5. Shot-to-shot continuity
|
|
97
|
+
6. Creative look
|
|
98
|
+
7. Output legality and deliverable constraints
|
|
99
|
+
|
|
100
|
+
Do not chase a look before the image is technically coherent. Do not make a shot
|
|
101
|
+
match by destroying the thing that matters most in that shot, usually the face,
|
|
102
|
+
the product, or the story point.
|
|
103
|
+
|
|
104
|
+
## Colorist Judgment Principles
|
|
105
|
+
|
|
106
|
+
The API can move values, but color decisions still need colorist judgment:
|
|
107
|
+
|
|
108
|
+
- start from representative frames, not metadata alone
|
|
109
|
+
- use both scopes and eyes when available; neither is enough alone
|
|
110
|
+
- establish black point, white point, and density before chasing style
|
|
111
|
+
- protect faces, skin tone, products, and story-critical details before the
|
|
112
|
+
background
|
|
113
|
+
- judge memory colors deliberately: skin, sky, foliage, snow, practical lights,
|
|
114
|
+
and known neutrals may be corrected or intentionally bent, but not ignored
|
|
115
|
+
- use the focus technique for exposure decisions: push darker/brighter or
|
|
116
|
+
warmer/cooler far enough to find the boundary, then settle back to the useful
|
|
117
|
+
point
|
|
118
|
+
- prefer restraint when the media is fragile, highly compressed, 8-bit, noisy,
|
|
119
|
+
clipped, or already display-referred
|
|
120
|
+
- when the request is mood-based, such as "dusk", "noir", "warm", or "clean",
|
|
121
|
+
translate that into observable targets: density, highlight level, shadow color,
|
|
122
|
+
saturation, skin protection, and continuity across cuts
|
|
123
|
+
|
|
124
|
+
If a requested look requires secondaries, windows, curves, texture, or selective
|
|
125
|
+
relighting, say so. A CDL can suggest the direction, but it is not a substitute
|
|
126
|
+
for a full interactive color pass.
|
|
127
|
+
|
|
128
|
+
## What CDL Is Good For
|
|
129
|
+
|
|
130
|
+
CDL is the main procedural correction surface available to the MCP. Use it for
|
|
131
|
+
simple, reversible primary moves:
|
|
132
|
+
|
|
133
|
+
- small exposure balance through `Slope`
|
|
134
|
+
- black/mid/white density shaping through `Offset`, `Power`, and `Slope`
|
|
135
|
+
- gentle RGB balance shifts
|
|
136
|
+
- global saturation trims
|
|
137
|
+
- broad shot matching when a node already exists
|
|
138
|
+
|
|
139
|
+
CDL is not a replacement for:
|
|
140
|
+
|
|
141
|
+
- curved highlight roll-off
|
|
142
|
+
- qualified skin isolation
|
|
143
|
+
- windowed relighting
|
|
144
|
+
- hue-specific curve work
|
|
145
|
+
- texture, halation, glow, grain, or OFX looks
|
|
146
|
+
- full scene-level creative grading
|
|
147
|
+
|
|
148
|
+
Prefer conservative CDL values. Large CDL moves can break skin, clip channels,
|
|
149
|
+
or create unnatural color separation.
|
|
150
|
+
|
|
151
|
+
## What LUTs And DCTLs Are Good For
|
|
152
|
+
|
|
153
|
+
Use LUTs and DCTLs when the desired transform can be expressed as a reusable
|
|
154
|
+
mathematical or lookup-based operation:
|
|
155
|
+
|
|
156
|
+
- camera/log to viewing transform
|
|
157
|
+
- show LUT or creative contrast/saturation curve
|
|
158
|
+
- color matrix or channel operation
|
|
159
|
+
- technical IDT/ODT-style transform
|
|
160
|
+
- repeatable look preview
|
|
161
|
+
|
|
162
|
+
Use DCTL authoring only for transforms that are appropriate to code. DCTLs can
|
|
163
|
+
be powerful, but they are not a substitute for tracked windows, qualifiers, or
|
|
164
|
+
hand-shaped secondaries.
|
|
165
|
+
|
|
166
|
+
Regular LUT/DCTL installs require `project_settings(action="refresh_luts")`.
|
|
167
|
+
ACES IDT/ODT DCTLs require a Resolve restart.
|
|
168
|
+
|
|
169
|
+
## What DRX Is Good For
|
|
170
|
+
|
|
171
|
+
Use `.drx` and Gallery stills for full Resolve grades:
|
|
172
|
+
|
|
173
|
+
- prebuilt node trees
|
|
174
|
+
- manually created grades
|
|
175
|
+
- complex secondaries
|
|
176
|
+
- tracked windows
|
|
177
|
+
- OFX-based looks
|
|
178
|
+
- show looks that should be reused exactly
|
|
179
|
+
|
|
180
|
+
Before applying DRX:
|
|
181
|
+
|
|
182
|
+
- save or snapshot the current grade version
|
|
183
|
+
- confirm the target graph can be replaced
|
|
184
|
+
- use `grade_mode=0` unless source-timecode or start-frame alignment is
|
|
185
|
+
explicitly needed
|
|
186
|
+
- verify the result visually with a still, thumbnail, or Gallery export
|
|
187
|
+
|
|
188
|
+
## Frame Comparison Requirements
|
|
189
|
+
|
|
190
|
+
For creative grading, shot matching, look development, or changing an existing
|
|
191
|
+
grade, compare pictures at matched timecodes whenever the API can safely provide
|
|
192
|
+
them:
|
|
193
|
+
|
|
194
|
+
- untreated or bypass frame: the source without the active grade, captured by
|
|
195
|
+
loading a clean version or temporarily disabling grade nodes, then restoring
|
|
196
|
+
the previous state
|
|
197
|
+
- current frame: the active creative baseline before the requested change
|
|
198
|
+
- after frame: the same timecode after the change
|
|
199
|
+
|
|
200
|
+
Use untreated frames as diagnostic evidence, not as permission to discard an
|
|
201
|
+
existing grade. If a current grade exists, it is the creative baseline. The
|
|
202
|
+
untreated frame explains what the image is made of; the current frame explains
|
|
203
|
+
what the colorist or user already chose.
|
|
204
|
+
|
|
205
|
+
All frame references must be Resolve-rendered and written only to sidecar,
|
|
206
|
+
session scratch, or the configured analysis root. Never create derivatives next
|
|
207
|
+
to source media. Record the frame, timecode, marker, contact sheet, or still path
|
|
208
|
+
that informed the decision.
|
|
209
|
+
|
|
210
|
+
If untreated/current/after comparison is not available through the API in the
|
|
211
|
+
moment, say which part is unavailable and whether the user wants a blind/global
|
|
212
|
+
pass. Do not imply that a grade was reviewed if no rendered frames were checked.
|
|
213
|
+
|
|
214
|
+
## Safe Color Workflow
|
|
215
|
+
|
|
216
|
+
Before changing color:
|
|
217
|
+
|
|
218
|
+
- switch to the Color page when required
|
|
219
|
+
- call `timeline_item_color(action="grade_boundary_report")`
|
|
220
|
+
- call `timeline_item_color(action="grade_version_snapshot")`
|
|
221
|
+
- call `timeline_item_color(action="probe_node_graph")`
|
|
222
|
+
- check whether the item is in a color group and whether group pre-clip or
|
|
223
|
+
post-clip grades may affect the rendered result
|
|
224
|
+
- check whether the requested action is direct, opaque, or unsupported
|
|
225
|
+
- inspect representative Resolve-rendered frames for the target shot or shots
|
|
226
|
+
before writing grade changes
|
|
227
|
+
- use timeline thumbnails, contact sheets, marker frames, Gallery stills, or
|
|
228
|
+
existing visual analysis reports as the frame reference
|
|
229
|
+
- when there is an existing grade, capture current treated frames before making
|
|
230
|
+
the adjustment
|
|
231
|
+
- when useful for diagnosis, capture untreated/bypass frames at the same
|
|
232
|
+
timecodes and then restore the original active version or node-enabled state
|
|
233
|
+
- note the reference frame, timecode, marker, or contact sheet used to make the
|
|
234
|
+
decision
|
|
235
|
+
- if frame review is unavailable, ask before applying a blind/global look unless
|
|
236
|
+
the user explicitly requested blind/global grading
|
|
237
|
+
|
|
238
|
+
For sequence-wide creative looks:
|
|
239
|
+
|
|
240
|
+
- confirm the target scope first: current clip, selected clips, current timeline,
|
|
241
|
+
duplicated timeline, color group, or every timeline using the same media
|
|
242
|
+
- duplicate the timeline unless the user explicitly wants an in-place/global pass
|
|
243
|
+
- create recoverable local grade versions across the whole target set before
|
|
244
|
+
applying the look:
|
|
245
|
+
- reference/base version: a clean version used for diagnosis and A/B
|
|
246
|
+
- current/baseline version: the active creative grade before the new request
|
|
247
|
+
- requested look version: the active version that receives the new pass
|
|
248
|
+
- do not call a reference version "ungraded" unless it is truly ungraded; if the
|
|
249
|
+
best available base is `Version 1`, name or report it as a `Version 1`
|
|
250
|
+
reference when its grade state has not been verified
|
|
251
|
+
- batch repeated version, group, and CDL operations through a single Resolve
|
|
252
|
+
script or bulk helper when practical; avoid one tool call per clip per step
|
|
253
|
+
- use color groups when multiple clips should share scene-level intent, but keep
|
|
254
|
+
per-shot balance and matching on clip versions
|
|
255
|
+
|
|
256
|
+
Use this group structure when it fits the work:
|
|
257
|
+
|
|
258
|
+
- group pre-clip: shared normalization or input trim, when the clips genuinely
|
|
259
|
+
need the same upstream correction
|
|
260
|
+
- clip: shot-specific balance, exposure, skin, sky, and continuity decisions
|
|
261
|
+
- group post-clip: shared creative look or output trim for the sequence
|
|
262
|
+
|
|
263
|
+
Do not use groups as a shortcut around reviewing shots. A group look can establish
|
|
264
|
+
the broad direction, but clip-level review remains responsible for faces,
|
|
265
|
+
highlights, skies, foliage, and outliers.
|
|
266
|
+
|
|
267
|
+
For small corrections:
|
|
268
|
+
|
|
269
|
+
- use `timeline_item_color(action="safe_set_cdl", params={...})`
|
|
270
|
+
- dry-run first when possible
|
|
271
|
+
- target an existing node index
|
|
272
|
+
- read back grade state afterward, including node tools when exposed
|
|
273
|
+
|
|
274
|
+
For adjusting an existing grade:
|
|
275
|
+
|
|
276
|
+
- treat the current grade as the creative baseline, not disposable state
|
|
277
|
+
- inspect the active version, available local/remote versions, node count, LUTs,
|
|
278
|
+
cache state, color group membership, and representative frames
|
|
279
|
+
- create or switch to a clearly named adjustment version before changing values
|
|
280
|
+
- make incremental changes through supported controls such as CDL, LUT assignment
|
|
281
|
+
on existing nodes, node enable/cache state, or accepted grade-copy workflows
|
|
282
|
+
- avoid `reset_all_grades`, DRX application, or copied whole-grade replacement
|
|
283
|
+
unless the user explicitly accepts replacement semantics
|
|
284
|
+
- explain whether the change adjusted the existing grade, copied a grade, or
|
|
285
|
+
replaced a graph-level artifact
|
|
286
|
+
- do not describe Resolve's default one-node graph as an existing creative grade;
|
|
287
|
+
distinguish "default/empty node graph" from "active grade tools present"
|
|
288
|
+
|
|
289
|
+
For matching:
|
|
290
|
+
|
|
291
|
+
- choose a hero/reference shot
|
|
292
|
+
- copy the grade only when the reference grade is already valid
|
|
293
|
+
- otherwise apply a conservative CDL match and review visually
|
|
294
|
+
- use color groups for shared scene-level intent when appropriate
|
|
295
|
+
- compare against the hero shot and the adjacent cuts, not just the shot in
|
|
296
|
+
isolation
|
|
297
|
+
|
|
298
|
+
For look development:
|
|
299
|
+
|
|
300
|
+
- prefer a plan first: CDL, LUT/DCTL, DRX, or manual Resolve work
|
|
301
|
+
- generate DCTL/LUT assets only when the transform is suitable for code
|
|
302
|
+
- use DRX/stills for complex hand-built looks
|
|
303
|
+
- start with hero frames for the look, then test the look on outlier shots before
|
|
304
|
+
applying it broadly
|
|
305
|
+
- sampling is acceptable for a fast first-pass direction, not final approval; for
|
|
306
|
+
short sequences, inspect every target shot before handoff
|
|
307
|
+
- for long sequences where full review is not feasible in the current turn,
|
|
308
|
+
clearly separate sampled look development from final validation and report the
|
|
309
|
+
remaining unreviewed scope
|
|
310
|
+
|
|
311
|
+
After changing color:
|
|
312
|
+
|
|
313
|
+
- grab or export after frames for visual confirmation when useful
|
|
314
|
+
- compare against the same untreated/current reference frames or reference shot
|
|
315
|
+
- confirm no obvious clipping, bad skin tone, or mismatch was introduced
|
|
316
|
+
- check whether the intended effect actually reads as requested, and revise if
|
|
317
|
+
the first pass is only technically different rather than creatively successful
|
|
318
|
+
- re-probe grade versions and node graph state when the change should have
|
|
319
|
+
modified node tools, LUTs, cache, or enabled state
|
|
320
|
+
- keep the original grade recoverable through versions or Gallery stills
|
|
321
|
+
- confirm the active version at handoff and note whether a reference/base version
|
|
322
|
+
was created, assumed from an existing version, or unavailable
|
|
323
|
+
|
|
324
|
+
## Review Notes And Handoff
|
|
325
|
+
|
|
326
|
+
Assistant-style documentation makes automated color work easier to trust:
|
|
327
|
+
|
|
328
|
+
- report the active version before and after the operation
|
|
329
|
+
- report the target scope and whether the operation happened on the original
|
|
330
|
+
timeline, a duplicated timeline, a color group, or selected clips
|
|
331
|
+
- report any created reference/current/look versions and whether the reference
|
|
332
|
+
was verified as truly ungraded
|
|
333
|
+
- report whether the node graph was default/empty, carried active tools, used a
|
|
334
|
+
LUT, or belonged to a color group
|
|
335
|
+
- report the operation type: CDL adjustment, LUT assignment, copied grade, DRX
|
|
336
|
+
replacement, DCTL/LUT asset creation, or review only
|
|
337
|
+
- report the frame references used for the decision and whether they were
|
|
338
|
+
untreated, current, or after frames
|
|
339
|
+
- report known limits, such as compressed source, clipped highlights, missing
|
|
340
|
+
thumbnails, unavailable Gallery export, or unsupported node construction
|
|
341
|
+
- use timeline markers, clip colors, or notes for review flags when the API
|
|
342
|
+
supports them and the user wants persistent review state
|
|
343
|
+
|
|
344
|
+
Do not promise node labels or node colors unless the available API path can
|
|
345
|
+
actually write them. Existing labels, LUTs, tools, and cache state can be
|
|
346
|
+
inspected and reported.
|
|
347
|
+
|
|
348
|
+
## Agent Response Rules
|
|
349
|
+
|
|
350
|
+
When answering a color request, classify the requested operation:
|
|
351
|
+
|
|
352
|
+
- Direct API grade: CDL, LUT assignment, version, group, cache, enable/disable
|
|
353
|
+
- Opaque full grade: copy grade, apply DRX, import/export stills
|
|
354
|
+
- Asset authoring: LUT or DCTL creation/install
|
|
355
|
+
- Review only: stills, thumbnails, visual analysis, boundary reports
|
|
356
|
+
- Unsupported direct control: windows, qualifiers, curves, wheels, node-tree
|
|
357
|
+
construction, tracker controls, OFX parameter edits
|
|
358
|
+
|
|
359
|
+
Then explain the safest available route. Be explicit about limitations. A good
|
|
360
|
+
answer sounds like:
|
|
361
|
+
|
|
362
|
+
> "I can make this as a conservative CDL correction, or apply/copy a full grade
|
|
363
|
+
> from a DRX/still. I cannot construct the windowed qualifier node tree directly
|
|
364
|
+
> through the public API."
|
|
365
|
+
|
|
366
|
+
Do not invent Color page controls that are not exposed. Do not imply that a LUT,
|
|
367
|
+
DCTL, or CDL is equivalent to a full colorist pass.
|
|
368
|
+
|
|
369
|
+
## Useful MCP Calls
|
|
370
|
+
|
|
371
|
+
- `resolve_control(action="open_page", params={"page": "color"})`
|
|
372
|
+
- `timeline_item_color(action="grade_boundary_report", params={...})`
|
|
373
|
+
- `timeline_item_color(action="probe_grade_item", params={...})`
|
|
374
|
+
- `timeline_item_color(action="probe_node_graph", params={...})`
|
|
375
|
+
- `timeline_item_color(action="grade_version_snapshot", params={...})`
|
|
376
|
+
- `timeline_item_color(action="safe_set_cdl", params={...})`
|
|
377
|
+
- `timeline_item_color(action="safe_copy_grade", params={...})`
|
|
378
|
+
- `timeline_item_color(action="safe_apply_drx", params={...})`
|
|
379
|
+
- `timeline_item_color(action="safe_export_lut", params={...})`
|
|
380
|
+
- `graph(action="set_lut", params={...})`
|
|
381
|
+
- `graph(action="apply_grade_from_drx", params={...})`
|
|
382
|
+
- `gallery_stills(action="grab_and_export", params={...})`
|
|
383
|
+
- `dctl(action="install", params={...})`
|
|
384
|
+
- `project_settings(action="refresh_luts")`
|
|
385
|
+
|
|
386
|
+
Use `safe_*`, probe, snapshot, and dry-run actions before mutation whenever they
|
|
387
|
+
exist.
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Resolve Editorial Decision Guide
|
|
2
|
+
|
|
3
|
+
This guide is the project-owned editorial context for the DaVinci Resolve MCP.
|
|
4
|
+
Use it when analysis moves from "what is in the media?" to "what should the edit
|
|
5
|
+
do next?" It is deliberately self-contained so the MCP does not depend on any
|
|
6
|
+
personal or external skill library.
|
|
7
|
+
|
|
8
|
+
## Core Priorities
|
|
9
|
+
|
|
10
|
+
Editorial decisions should serve this order:
|
|
11
|
+
|
|
12
|
+
1. Emotion and story
|
|
13
|
+
2. Clarity of thought or action
|
|
14
|
+
3. Rhythm and timing
|
|
15
|
+
4. Eye trace and screen geography
|
|
16
|
+
5. Continuity and technical polish
|
|
17
|
+
6. Coverage variety
|
|
18
|
+
|
|
19
|
+
Good coverage is useful only when it helps the viewer understand, feel, or
|
|
20
|
+
anticipate something. When those goals conflict, keep the moment that carries
|
|
21
|
+
the clearest emotional or narrative charge.
|
|
22
|
+
|
|
23
|
+
## Analysis Memory
|
|
24
|
+
|
|
25
|
+
Before running new analysis or suggesting edits, inspect what the active project
|
|
26
|
+
already knows:
|
|
27
|
+
|
|
28
|
+
- `media_analysis(action="summarize")`
|
|
29
|
+
- `media_analysis(action="get_report")` for known manifests or clip reports
|
|
30
|
+
- `timeline(action="probe_timeline_structure")`
|
|
31
|
+
- `timeline(action="story_spine_report")`
|
|
32
|
+
- `timeline(action="source_range_report")`
|
|
33
|
+
- `timeline_markers(action="get_all")`
|
|
34
|
+
- `media_analysis(action="review_timeline_markers")` when marker imagery matters
|
|
35
|
+
|
|
36
|
+
Reuse existing reports unless they are stale, incomplete, or missing a modality
|
|
37
|
+
the user explicitly needs. A new request for edit advice is not automatically a
|
|
38
|
+
reason to re-run visual analysis if the prior report already has current
|
|
39
|
+
technical data, motion/keyframe evidence, and useful visual descriptions.
|
|
40
|
+
|
|
41
|
+
## Frame Choice
|
|
42
|
+
|
|
43
|
+
Find the decisive frame, not just the technically clean frame. Useful cut points
|
|
44
|
+
often occur when a face changes intention, a hand completes a thought, a gaze
|
|
45
|
+
lands, a movement resolves, or the audience has received the needed information.
|
|
46
|
+
|
|
47
|
+
For dialogue and reaction:
|
|
48
|
+
|
|
49
|
+
- Prefer the reaction when it carries the meaning.
|
|
50
|
+
- Let sound lead picture when the incoming idea needs setup.
|
|
51
|
+
- Let picture lead sound when surprise, reveal, or anticipation matters.
|
|
52
|
+
- Avoid cutting away before a thought has landed unless compression is the
|
|
53
|
+
point.
|
|
54
|
+
|
|
55
|
+
For movement:
|
|
56
|
+
|
|
57
|
+
- Cut on completed or motivated motion.
|
|
58
|
+
- Use motion peaks as candidates, then verify the frame visually.
|
|
59
|
+
- Treat scene detection and variance as guardrails, not the editor.
|
|
60
|
+
|
|
61
|
+
## Sound First
|
|
62
|
+
|
|
63
|
+
For interviews, dialogue, comedy, and short-form editorial, build the audio spine
|
|
64
|
+
before chasing visual variety:
|
|
65
|
+
|
|
66
|
+
- Premise: what the viewer needs to understand first
|
|
67
|
+
- Setup: the pressure, context, or contrast
|
|
68
|
+
- Turn: the new idea, contradiction, reveal, or escalation
|
|
69
|
+
- Button: the final image, line, beat, or release
|
|
70
|
+
|
|
71
|
+
When trimming, preserve complete thoughts and clean transitions in breath,
|
|
72
|
+
tone, and room sound. Visual cutaways can hide picture edits, but they cannot
|
|
73
|
+
fix a broken idea.
|
|
74
|
+
|
|
75
|
+
## Finished-Video Guardrails
|
|
76
|
+
|
|
77
|
+
When analyzing an already-finished video, do not treat every detected cut as an
|
|
78
|
+
edit instruction. Use black frames, flash frames, scene-change clusters, silence,
|
|
79
|
+
and motion spikes to find regions that need verification.
|
|
80
|
+
|
|
81
|
+
Finished-video analysis should produce:
|
|
82
|
+
|
|
83
|
+
- Likely scene or section boundaries
|
|
84
|
+
- Ranges to avoid because of black, flash, silence, or corrupt frames
|
|
85
|
+
- Audio-led story beats
|
|
86
|
+
- Visual evidence at markers and cut points
|
|
87
|
+
- Questions where the image contradicts the label or transcript
|
|
88
|
+
|
|
89
|
+
## Marker And Contact-Sheet Review
|
|
90
|
+
|
|
91
|
+
Markers are memory, not truth. When a marker name, note, or beat label matters,
|
|
92
|
+
verify it against a Resolve-rendered frame:
|
|
93
|
+
|
|
94
|
+
- Generate a marker contact sheet.
|
|
95
|
+
- Compare each label with the visible frame.
|
|
96
|
+
- Rename, move, or downgrade markers that do not match the image.
|
|
97
|
+
- Keep marker notes concrete enough that another editor can act on them.
|
|
98
|
+
|
|
99
|
+
Use contact sheets for orientation and review. `analyze_media` defaults to
|
|
100
|
+
chat-context vision for visual/editorial analysis when the MCP client supports
|
|
101
|
+
sampling; pass `include_visuals=false` for a no-visual run. Use direct assistant
|
|
102
|
+
inspection when the user provides or requests specific still/contact-sheet
|
|
103
|
+
review.
|
|
104
|
+
|
|
105
|
+
## Edit Variant Safety
|
|
106
|
+
|
|
107
|
+
Before making or changing a timeline variant:
|
|
108
|
+
|
|
109
|
+
- Check timeline start frame and timecode; many Resolve timelines start at
|
|
110
|
+
`01:00:00:00`, often frame `108000` at 30 fps.
|
|
111
|
+
- Prefer dry runs for range-based operations.
|
|
112
|
+
- Keep source media untouched.
|
|
113
|
+
- Use positioned appends and explicit source ranges.
|
|
114
|
+
|
|
115
|
+
After changing a variant:
|
|
116
|
+
|
|
117
|
+
- Run `timeline(action="detect_gaps_overlaps")`.
|
|
118
|
+
- Run `timeline(action="source_range_report")`.
|
|
119
|
+
- Review thumbnails at important markers and cut points.
|
|
120
|
+
- Confirm the audio spine still reads.
|
|
121
|
+
|
|
122
|
+
## Response Shape
|
|
123
|
+
|
|
124
|
+
When reporting analysis back to the user, make it editor-usable:
|
|
125
|
+
|
|
126
|
+
- What was analyzed
|
|
127
|
+
- Whether prior analysis was reused or refreshed
|
|
128
|
+
- Technical warnings that affect editing
|
|
129
|
+
- Motion and variance summary
|
|
130
|
+
- Visual content and best moments
|
|
131
|
+
- Transcript or sound notes
|
|
132
|
+
- Avoid ranges
|
|
133
|
+
- Concrete next actions
|
|
134
|
+
|
|
135
|
+
Avoid overclaiming from sparse evidence. If the tool only sampled a few frames,
|
|
136
|
+
say so and recommend the specific next verification step.
|