DaVinci Resolve MCP
Uma integração de servidor MCP para o software de edição de vídeo DaVinci Resolve.
Documentação
Servidor MCP do DaVinci Resolve
Inglês | 简体中文
Um servidor Model Context Protocol (MCP) que permite que assistentes de IA controlem o DaVinci Resolve Studio por meio da API oficial de Scripting. Ele oferece cobertura completa da API, além de auxiliares de fluxo de trabalho protegidos para edição, organização da mídia pool, configuração de renderização, marcadores de revisão, correção de cor, Fusion, Fairlight, tarefas do ciclo de vida do projeto, criação de extensões e análise de mídia segura para a fonte.
Um painel de controle local no navegador acompanha o servidor para inspecionar o estado do Resolve, executar análises seguras para a fonte, explorar clipes e planos analisados e editar a saída da análise inline. Consulte o Guia do Painel de Controle para o tour completo.
Início Rápido
npx davinci-resolve-mcp setup
Antes de conectar, abra o DaVinci Resolve Studio e defina Preferências > Geral > Scripts externos usando para Local. (Na edição gratuita, essa preferência não ajuda — consulte Edição gratuita abaixo.) O inicializador npm instala uma cópia gerenciada no diretório de dados do aplicativo do usuário e, em seguida, executa o instalador universal do Python. O instalador cria um ambiente virtual, detecta os caminhos do Resolve e pode configurar o Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, Continue, Cline, Roo Code, OpenCode, Codex CLI e IDEs JetBrains.
Para instalações a partir da fonte:
git clone https://github.com/samuelgursky/davinci-resolve-mcp.git
cd davinci-resolve-mcp
python install.py
Para caminhos de plataforma, configuração específica do cliente e configuração manual, consulte Instalação e Configuração.
O instalador e o servidor verificam a versão mais recente do GitHub para atualizações do MCP. As verificações são feitas com melhor esforço e limitadas; o servidor nunca bloqueia a inicialização do MCP por causa de um prompt. O instalador pode perguntar, adiar, ignorar uma versão, desativar verificações ou aplicar uma atualização automática segura opcional para checkouts git limpos.
Edição gratuita (ponte no aplicativo)
A Blackmagic limita os scripts externos ao Studio: na edição gratuita,
scriptapp("Resolve") recusa um processo externo, independentemente do que a preferência diga.
Até o Resolve 21.0.x, o menu Workspace ▸ Scripts não era limitado — um script
iniciado a partir dele recebe o objeto resolve ativo (medido na versão gratuita 21.0.3.7) —
então o servidor pode alcançar a edição gratuita por meio de um pequeno script que é executado dentro
do Resolve e o reexporta por meio de um listener de loopback autenticado. O Resolve 21.1
moveu os scripts Python para o Studio. Na versão gratuita 21.1, o menu Scripts não lista mais
arquivos .py (relatado no Fedora 44 na issue #203; um script Lua na mesma pasta lista
normalmente). Se o Console ainda executa Python lá não foi confirmado, então
trate a ponte como um caminho para 21.0.x até que isso seja medido.
python scripts/install_resolve_bridge.py
# restart Resolve, open a project, then: Workspace > Scripts > resolve_bridge
O instalador e o cliente MCP usam ~/.config/davinci-resolve-mcp/bridge.json
por padrão. Para manter a configuração da ponte autenticada em outro lugar, defina
DAVINCI_RESOLVE_BRIDGE_CONFIG ao executar o instalador e no ambiente do cliente
MCP; ambos os lados usarão esse caminho.
Quando esse listener estiver em execução, ele será usado automaticamente sempre que os scripts
externos estiverem indisponíveis — nenhuma variável de ambiente é necessária. Definir
DAVINCI_RESOLVE_BRIDGE=1 força a ponte: ela se torna o único
transporte tentado, então uma ponte que para de responder relata sua própria falha em vez
de cair silenciosamente em outro transporte. Use-a quando a ponte for o
caminho no qual você pretende confiar.
No macOS, o Resolve procura por Python 3 em exatamente dois lugares: a
variável de ambiente PYTHON3HOME e, em seguida, /usr/local/bin/python3. Homebrew,
pyenv, uv e conda não ficam em nenhum deles, então o script silenciosamente nunca aparece no
menu. Uma instalação do python.org funciona porque seu instalador cria
/usr/local/bin/python3 — mas você não precisa de uma: aponte o Resolve para o
interpretador que você já tem, sem necessidade de sudo.
launchctl setenv PYTHON3HOME "$(python3 -c 'import sys; print(sys.prefix)')"
Use launchctl setenv, não export — o Resolve é iniciado a partir do Dock e
nunca vê o ambiente do seu shell. Reinicie o Resolve depois. Um canário Lua é
instalado junto para que você possa distinguir "Python não detectado" de uma
pasta errada.
Duas coisas que causam problemas (#182). O prefixo deve conter ambos
lib/libpython3.X.dylib e bin/python3 sob esse nome exato sem versão —
as builds de framework do Homebrew geralmente incluem apenas bin/python3.13, que é
metade de um Python do ponto de vista do Resolve, e a verificação prévia do instalador agora
diz isso em vez de relatar um prefixo utilizável. E launchctl setenv não
sobrevive a uma reinicialização; se os scripts pararem de listar semanas depois sem erro, é
por isso. Para algo persistente, coloque um interpretador onde o Resolve já procura
(este precisa de sudo e verifique se /usr/local/bin não precede seu
Python normal em PATH):
sudo ln -s "$(command -v python3)" /usr/local/bin/python3
Validado nas versões gratuitas 21.0.3.7 e Studio 19.1.3.7, ambas no macOS. Os caminhos do Windows
adicionados na v2.70.1 (issue #106) foram enviados sem verificação; relatos nas versões gratuitas 21.0.1.11
(issue #109) e 21.0.3.7 (issue #112) desde então mostraram a ponte
instalando, listando e servindo a partir de ambos %PROGRAMDATA% e %APPDATA% no
Windows 11, então esses caminhos agora estão confirmados em vez de assumidos. O Linux também está
confirmado: um relato na versão gratuita 20.3.2.9 (issue #129, Fedora 43) mostra a
ponte instalando em ~/.local/share/DaVinciResolve/Fusion/Scripts/Utility,
listando contra o Python do sistema — o Linux não tem nenhum desses problemas de descoberta —
e servindo de ponta a ponta. Nenhuma plataforma agora depende de uma suposição: o macOS foi
validado diretamente, o Windows e o Linux com base em relatos de usuários.
Observe que a ponte mantém sua porta enquanto serve. Antes da v2.70.3, uma
ponte no Windows podia sobreviver ao Resolve e bloquear o listener da próxima sessão; se
você estiver em uma build mais antiga e uma ponte parar de responder, verifique se há um
fuscript.exe obsoleto ainda segurando a porta.
Este é o caminho documentado no aplicativo, não uma contornação de licença, mas a Blackmagic pode fechá-lo — trate-o como um nível suportado-até-não-ser-mais. Apenas loopback, requisições assinadas com HMAC, nonces de uso único.
Painel de Controle Local
Inicie o painel de controle local de usuário único a partir da raiz do repositório:
venv/bin/python -m src.control_panel
O comando inicia um servidor apenas de loopback e abre o painel de controle no seu navegador em uma URL que carrega um token de acesso por inicialização (http://127.0.0.1:8765/#token=…) — use essa URL exata; o painel recusa requisições sem ela. Para que um agente de codificação de IA faça isso, peça: "Abra o painel de controle do Resolve MCP para este repositório." Os agentes devem usar venv/bin/python -m src.control_panel a menos que seu ambiente Python já esteja ativo. Trabalhos de análise persistidos atualizam o índice de busca local automaticamente após fatias bem-sucedidas; a ação manual Build Index é para reconstruir a partir de relatórios existentes.
Modos do Servidor
| Modo | Ponto de entrada | Ferramentas | Melhor para |
|---|---|---|---|
| Composto | src/server.py | 37 | Modo padrão para a maioria dos assistentes. Operações relacionadas do Resolve são agrupadas atrás de parâmetros de ação para manter o uso de contexto baixo. |
| Completo / granular | src/server.py --full ou src/resolve_mcp_server.py | 389 | Usuários avançados que querem uma ferramenta MCP por método da API do Resolve. |
O servidor composto é recomendado, a menos que você precise especificamente da superfície granular de uma ferramenta por método.
Servidor avançado — além da API de scripting (opcional, Node)
O mesmo pacote inclui um segundo servidor MCP opcional: davinci-resolve-advanced-mcp (bin
bin/davinci-resolve-advanced-mcp.mjs). Enquanto o servidor Python controla um Resolve ao vivo por meio da
API de scripting sancionada, o servidor avançado faz o que a API não pode — ele lê e edita
arquivos do Resolve (.drp / .drt / .drx) e aplica mudanças em nível de DB/XML sem o Resolve em execução, então ele
roda na nuvem ou localmente. 18 ferramentas: drp, drt, drx (codec de grade por clipe mais um catálogo determinístico e offline de correção/QC — correspondência de pele dentro da câmera + entre câmeras (métrica de linha de pele v2) + b-roll + correspondência de WB com patch neutro, correspondência com referência, equilíbrio de saturação/preto, normalização de contraste, importação ASC CDL, transferência de grade sem perdas + criação de visual de temporada, anexo de LUT nomeado, leituras de escopo + tags de intenção, verificação de grade, extração de frames com referência de exibição, QC de legalidade de transmissão), offline_ref,
conform (conformidade/relink QC com frame-oracle + linhagem), color_trace (carregar grades em uma re-conformidade),
fusion, audio_plan, fairlight (roteamento de barramento), audio, project_read, project_db, pipeline
(um pipeline de DB-como-verdade: compilar especificações de projeto YAML em um banco SQLite canônico e, em seguida, executar estágios com
portões, proveniência e detecção de desvio intenção↔real), capabilities, deliverable (QC de entregáveis /
conformidade), media (front-end de mídia / ingestão AE), editorial (integridade editorial / changelist),
provenance (proveniência / auditoria / relatório de episódio). Ele também pode ser consumido como uma
biblioteca (API de engine importável), não apenas iniciado como um servidor.
As gravações de grade DRX são calibradas ao vivo contra o Resolve Studio: os parâmetros de grade usam as
unidades do painel na tela do Resolve por padrão (space: 'ui' | 'drx'), e as gravações estruturais (power windows,
qualificadores, zonas HDR, curvas HSL, ColorSlice, efeitos de blur/key/motion) são verificadas por leitura do painel —
status por controle em resolve-advanced/vendor/drx-parameters/CALIBRATION-STATUS.md. Ele também fecha
uma lacuna apenas de UI: "Cleanup Node Graph" programático (drx relayout para um clipe, project_db
relayout_node_graphs para um projeto inteiro) — layout de nós organizado, conteúdo de grade preservado em bytes.
Adicione-o junto ao servidor ao vivo (ambos vêm em um único npm install):
{
"mcpServers": {
"davinci-resolve": { "command": "<python>", "args": ["<path>/src/server.py"] },
"davinci-resolve-advanced": { "command": "node", "args": ["<path>/bin/davinci-resolve-advanced-mcp.mjs"] }
}
}
install.py imprime ambas as entradas. O núcleo é puro JS/MIT sem módulos nativos obrigatórios; alguns recursos
precisam de ferramentas instaladas pelo usuário (ffmpeg para audio, sharp/better-sqlite3 para alguns caminhos) — chame a
ferramenta capabilities para status ao vivo e dicas de instalação.
Ao contrário do servidor Python, este tem dependências Node. npx davinci-resolve-mcp setup as instala
na instalação gerenciada (npm install --omit=dev --omit=optional sob resolve-advanced/) e só
então registra o bin. Se essa instalação não puder ser executada — offline ou npm indisponível — a configuração registra
um comando npx para o servidor avançado, então a entrada que ele escreve sempre inicia. Para reparar uma
instalação existente sem reexecutar a configuração: npx davinci-resolve-mcp sync.
Bradford Post Assistant — aplicativo gerenciado (beta fechado)
Os mantenedores também criam o Bradford Post Assistant, um aplicativo de desktop sobre esta fundação aberta. Enquanto os servidores MCP dão mãos a um agente, o Post Assistant é o copiloto de trabalho ao redor deles — um assistente de IA no dispositivo para pós-produção onde o material do cliente nunca sai da estação de trabalho:
- Um copiloto de pós-produção — um aplicativo de desktop que acompanha o DaVinci Resolve e monitora a sessão ao vivo (linha do tempo, correções de cor e quadros — não apenas chamadas de API), com um assistente de IA integrado e runtime de agentes, análise local de mídia (transcrição, análise de quadros, inteligência editorial) e QC de conformação no aplicativo.
- Memória — memória persistente e criptografada do assistente no dispositivo, além de aprendizado entre episódios extraído dos fatos decodificados do seu pipeline (deriva de visual de temporada, prioridades de correção por câmera, bibliotecas de quadros de referência, reutilização do mapa de caminhos de conformação), com acúmulo gerenciado para você e um fluxo de trabalho de insights revisados.
- Autocontido por design — o Post Assistant conecta tudo sozinho: este MCP para controle do Resolve, a API Bradford para seus serviços estendidos e sua escolha de provedor de LLM. Nada para configurar manualmente, sem clientes separados para gerenciar, e o aplicativo mantém a si mesmo (e seu MCP integrado) atualizado com atualizações automáticas assinadas.
- Um conjunto de ferramentas profissionais estendido — cirurgia de correção de cor em projetos ao vivo, mais de 22 famílias de correção adaptativas, uma biblioteca de looks selecionada, validação de especificações de entrega, análise de ritmo/limpeza editorial, direção de cor em linguagem natural e autoria de composições Fusion — entregues por meio da API Bradford gerenciada.
- Fluxos de trabalho de produção — as ferramentas brutas compostas em fluxos reais e finalizados (entrega → conformação → QC → entrega, continuidade de visual de temporada, relatórios de episódios) com as proteções e aprovações que um estúdio voltado ao cliente espera.
Atualmente está em beta fechado — você pode solicitar acesso em bradfordoperations.com/software/post-assistant. Os servidores de código aberto estão completos e totalmente funcionais por conta própria.
O Que Você Pode Fazer
"List all projects and open the one called 'My Film'"
"Create a timeline called 'Assembly Cut' from all clips in the current bin"
"Build a multicam prep timeline from selected camera angles and preserve source media"
"Detect 2-pops or slate claps and suggest record offsets for sync prep"
"Publish analysis summaries, keywords, people, and slate hints into Resolve clip metadata"
"Probe this timeline for gaps, overlaps, missing media, and source frame ranges"
"Safely import this image sequence, organize it into bins, and normalize clip metadata"
"Build a ProRes 422 HQ render plan, validate the settings, and queue the job"
"Copy review markers from the timeline to the selected clip and export a review report"
"Snapshot this clip's grade, validate a CDL update, and export a temp LUT"
"Create a Fusion TextPlus overlay on the selected clip and verify graph connections"
"Report audio channel mappings, voice isolation availability, and subtitle support"
"Install this MCP-marked DCTL or script, classify refresh/restart needs, then remove it"
Capacidades Principais
| Área | O que o servidor composto suporta |
|---|---|
| Controle de aplicativo e projeto | Iniciar/reconectar, alternância de páginas, CRUD de projetos, pastas de projetos, bancos de dados, wrappers de projetos em nuvem, configurações, predefinições, arquivos |
| Media pool e ingestão | Importação segura, sequências de imagens, linhas do tempo de preparação multicâmera, organização de bins, normalização de metadados, inventário de campos de metadados, marcas, anotações, proteções de relink/proxy/resolução total |
| Análise de mídia | Análise segura de arquivos/clipes/bins/projetos, detecção de eventos de sincronização 2-pop/slate-clap, metadados padrão do Resolve e writeback de marcadores do Media Pool, artefatos de análise persistidos, reutilização de relatórios existentes, análise visual de host_chat_paths (finalizada por clipe com commit_vision, funciona com qualquer cliente MCP com capacidade de visão) com opção de exclusão, transcrição com opção de exclusão |
| Edição de linha do tempo e conformação | Sondagem de faixas/itens, leituras/gravações de chaves de texto de títulos, auxiliares de copiar/mover/duplicar, inserção ripple, operações de intervalo, lacunas/sobreposições, intervalos de origem, exportações/importações de intercâmbio verificadas |
| Anotações de revisão | Marcadores de linha do tempo/item/clipe, dados personalizados, sinalizadores, cor de clipe, limpeza de copiar/mover/sincronizar, relatórios de revisão, revisão de miniaturas de marcadores |
| Cor e correção de cor | Sondagem de gráfico de nós, validação de CDL, cópia de correção, auxiliares de DRX/LUT, versões, stills da Galeria, grupos de cor |
| Fusion | Composições de itens de linha do tempo, criação segura de ferramentas, gravações de entradas, inspeção de portas, conexões validadas, gravações em lote com escopo |
| Áudio e Fairlight | Sondagens de faixas/itens, mapeamento de origem, gravações protegidas de propriedades de áudio, isolamento de voz, planejamento de auto-sincronização, sondagens de transcrição/legendas |
| Renderização e entrega | Sondagem de matriz de formatos/codecs, validação de configurações de renderização, verificações de ciclo de vida de trabalhos na fila, Quick Export protegido |
| Autoria de extensões | Auxiliares de ciclo de vida de scripts Fuse, DCTL, ACES DCTL e Lua/Python da página Resolve com instalação/remoção segura marcada por MCP |
| Orientação de ofício | A orientação editorial, de cor, áudio e fluxo de trabalho incluída, fornecida como prosa via MCP — indexada, pesquisável e legível por qualquer cliente, não apenas por aqueles com este repositório em disco |
Envelope de operação
Todo retorno de ferramenta composta carrega um bloco _operation ao lado de sua carga útil, para que
um agente leia uma única estrutura em vez de uma chave diferente por ferramenta: status
(success / partial / blocked / failed), verification (com
contradiction mantido distinto — o Resolve relatou sucesso e a leitura de retorno
discordou), changes (o delta semântico), warnings e um execution_id.
Duas ausências são significativas e deliberadas. verification.status: "unverified"
significa nenhuma evidência foi relatada, não "verificado e limpo". Um changes ausente
significa que a ação não relatou um delta, não que nada mudou — um {} vazio
ali seria uma resposta confiante e errada sobre uma edição que simplesmente nunca
declarou um.
O envelope é namespaced em vez de mesclado no nível superior porque
status, operation, warnings, result e changes já são todas chaves de domínio
aqui; achatar reescreveria o status: "done" de um trabalho em segundo plano e o
status: "confirmation_required" de uma porta de confirmação. setup(action="set_defaults", params={"result_envelope": "pure" | "legacy"}) altera a forma, por chamada via
params={"envelope": ...}, por processo via RESOLVE_MCP_RESULT_ENVELOPE.
Rastros de execução de agentes ("Por que o editor fez isso?")
Operações de IA de várias etapas correlacionam chamadas de ferramentas em rastros de execução
unificados. Cada rastro agrega durações de ferramentas (duration_ms), contagens de chamadas, deltas
semânticos cumulativos (items_deleted, items_added) e verificações de leitura de retorno.
Agentes e editores podem inspecionar fluxos de trabalho via resolve_control:
get_execution_trace(execution_id?), list_recent_executions() ou abrir uma
execução com escopo com begin_execution(request="...") / end_execution().
export_execution_report(execution_id?, format="markdown"|"json") grava um
artefato de auditoria revisável com o mesmo resumo, padronizando para
logs/execution-reports/<execution_id>.md. path o grava em qualquer lugar que você quiser
— ao lado de uma conformação em uma pasta TransferFiles datada, por exemplo — e
cria os diretórios para chegar lá, então verifique o caminho antes de enviá-lo.
Um arquivo existente nunca é substituído sem overwrite: true.
inspect_operation(tool?, target_action?, target_params?) avalia o nível de risco
pré-execução (low, medium, high, critical), potencial destrutivo e raio de
impacto (item, track, timeline, project, system) antes de agir, enquanto
list_lifecycle_hooks() inspeciona interceptadores de execução ativos.
É uma heurística sobre nomes de ações, não uma simulação — nunca toca no
projeto e não valida seus parâmetros, então recognised: false significa que os
níveis são padrões em vez de uma descoberta, e snapshot_available: null significa que
a disponibilidade de rollback não foi determinada em vez de ausente. Cada hook enviado observa;
nenhum substitui o resultado de uma ferramenta, então dry_run sempre alcança o
handler real e nada sintetiza uma pré-visualização para uma ação que não tem nenhuma.
Um relatório para uma execução onde nada foi verificado diz "não estabelecido — nenhuma verificação registrada", não "aprovado". Ausência de evidência é uma questão ainda em aberto, e um documento de auditoria é o último lugar para deixar um leitor interpretá-lo como um sinal de tudo limpo.
Os rastros vivem em um anel de memória de 100 entradas e são anexados a
logs/execution-traces.jsonl ao lado de server.log — RESOLVE_MCP_TRACE_FILE
o move, e RESOLVE_MCP_LOG_FILE move o próprio server.log (um caminho, ou vazio
para nenhum arquivo; o conjunto de testes offline o aponta para um arquivo temporário para que nunca
grave no log do operador). list_recent_executions relata esse caminho e se ele é
gravável, para que "o log está vazio" e "nada está sendo gravado" sejam
distinguíveis sem ler o código-fonte. O que é registrado é nome da ferramenta,
ação, tempo, status, deltas semânticos e verificação — sem parâmetros e sem
caminhos de arquivo. O único campo de texto livre é o request que você passa para
begin_execution, então trate-o como trataria uma mensagem de commit em um projeto
de cliente.
Proteção de Armadilha Verificada
src/utils/api_truth.py registra comportamentos da API do Resolve que foram medidos
contra uma build ao vivo em vez de lidos de uma assinatura — chamadas que retornam True
sem ter feito nada, chaves de configurações rejeitadas silenciosamente, métodos que não existem
de forma alguma. Esse registro costumava ser somente leitura: respondia a
resolve_control(action="api_truth") e, fora isso, era um arquivo que ninguém consulta no meio de
um trabalho.
Agora ele alcança o chamador no local da chamada. Uma ação mapeada para um símbolo com um
fato registrado carrega um known_limitation compacto em seu resultado — símbolo,
realidade, recomendação e nada mais, porque o peso da resposta é um custo real
em uma longa sessão de correção de cor e a entrada completa está a uma consulta de distância.
Um fato só é anexado quando o mapeamento nomeia exatamente aquele símbolo. Nada é inferido de um nome semelhante: uma explicação não relacionada anexada a uma falha parece um diagnóstico, e um diagnóstico errado é pior do que nenhum.
Um comportamento recusa em vez de avisar. TimelineItem.CopyGrades substitui
a correção do alvo por completo — medido assando cada estado em um LUT de 33 pontos
e comparando bytes — retorna True enquanto faz isso e não cria versão para
voltar. Aplicado a clipes com trabalho manual, isso é perda irrecuperável relatada
como sucesso. Então, ações que o chamam recusam até que o chamador passe
acknowledge_trap: true:
{
"success": false,
"error": "'timeline_item_color.copy_grades' is refused: its verified behaviour destroys existing work that cannot be recovered afterwards.",
"known_limitation": [{"symbol": "TimelineItem.CopyGrades", "reality": "...", "recommended": "..."}],
"retry_with": {"acknowledge_trap": true}
}
A intenção não é proibir a operação — é fazer o chamador dizer em voz alta que sabe o que ela faz. Execuções de teste estão isentas: uma pré-visualização não destrói nada.
Defina RESOLVE_MCP_DISABLE_TRAP_GUARD=1 para desativar tanto a recusa quanto o push de aviso.
Isso é uma mudança de comportamento para chamadores que anteriormente recebiam um
{"success": true} simples de uma cópia destrutiva.
Fatos que alimentam uma recusa devem permanecer re-mensuráveis, então uma sonda ao vivo re-deriva
cada um e registra drifted quando o Resolve deixa de concordar; um teste falha se uma
entrada destroys_prior_work não tiver sonda.
Extras Opcionais
A instalação principal é deliberadamente pequena: Python, ffmpeg e a API de script do Resolve. Alguns recursos precisam de mais, e cada um recusa honestamente com sua própria linha de instalação em vez de degradar em uma suposição — um tempo fabricado ou um nível inventado produz saída confiante e errada, o que é pior do que nenhum recurso.
Execute python scripts/doctor.py para ver quais destes você tem.
| Extra | Desbloqueia | Licença |
|---|---|---|
| ffmpeg no PATH | Detecção de silêncio, marcadores de espaço morto, medição de nível, análise de áudio. A coisa mais útil de instalar. | LGPL/GPL — invocado como subprocesso, nunca empacotado |
pip install numpy | Pré-balanceamento de cor, correspondência de stills de referência, auditoria de densidade sonora | BSD |
pip install librosa | Detecção de batida, compasso e frase para corte guiado por música | ISC |
pip install -U openai-whisper | Transcrição e tudo em nível de palavra construído sobre ela | MIT |
pip install open_clip_torch | Similaridade visual e find_similar | MIT |
pip install transformers | Embeddings de áudio CLAP | Apache-2.0 |
pip install opencv-python | Análise adicional de quadros | Apache-2.0 |
A ação media_analysis capabilities relata a pilha de análise em detalhes e
informa o que cada peça ausente habilitaria.
Nada aqui é empacotado. Pesos de modelos carregam suas próprias licenças separadas do código que os carrega; verifique-os antes do uso comercial.
O Que Isso Não Faz
Saber onde uma ferramenta para vale tanto quanto saber o que ela faz, e é mais barato ler aqui do que descobrir no meio do projeto.
| Não suportado | Por que, e o que você obtém em vez disso |
|---|---|
| Escolher a melhor take | Performance é o que mais define se uma take é a certa, e nada disso é mensurável a partir de uma forma de onda ou transcrição. rank_takes classifica fluência — preenchimentos, reinícios, cobertura do roteiro — e informa isso em cada resposta. A take que é reproduzida frequentemente é a menos fluente, porque a hesitação muitas vezes é a atuação. Use isso para encontrar a take de segurança limpa, não para escolher a leitura. |
| Edição automática de música | O suporte opcional a librosa fornece detecção de batida e planos de pontos de corte de batida/compasso/frase, não uma montagem finalizada. Os tempos fortes são inferidos a partir da primeira batida; use beat_offset para anacruses. Ferramentas de silêncio de fala não são adequadas para encontrar pontos de edição musical. |
| Julgar um corte | Nada aqui tem opinião sobre se uma edição é boa. Toda ação destrutiva é plano → revisão → confirmação por esse motivo. |
| Substituir um editor | A saída é uma montagem de primeira passada, no sentido de assistente de edição: ingestão, sincronização, organização, sequenciamento, sinalização de problemas. É um ponto de partida que você corta, não um corte finalizado. Os padrões são deliberadamente generosos — uma primeira montagem deve ficar longa, porque aparar é rápido e visível, enquanto recuperar material descartado é lento e invisível. |
| Modificar sua mídia de origem | Por design e sem exceção — veja abaixo. |
Qualquer coisa analisada, mas não verificável, é relatada como não verificada, nunca incorporada a "ok". Um resultado vazio significa "nada encontrado", nunca "nada a encontrar".
Segurança da Mídia de Origem
Este projeto trata originais de câmera e mídia de origem como imutáveis. As ferramentas de análise leem arquivos de origem e escrevem relatórios apenas em diretórios sidecar, temporários ou de análise do projeto; a publicação de metadados confirmados escreve apenas no banco de dados do projeto do Resolve. O servidor não deve modificar, transcodificar, criar proxies ou derivados da mídia de origem, a menos que o usuário peça explicitamente. Consulte Guia de Análise de Mídia para o fluxo de trabalho detalhado seguro para a origem.
Postura de Segurança
O servidor padrão é um processo stdio local iniciado pelo seu cliente MCP; ele não expõe um listener de rede ou superfície de autenticação multiusuário integrada. As duas superfícies HTTP locais opcionais — o painel de controle e o transporte MCP em rede — fazem bind apenas em loopback e exigem um token bearer por inicialização em cada requisição, com verificações de Host/Origin contra DNS rebinding e CSRF. Os metadados das ferramentas incluem dicas de segurança do cliente MCP para operações somente leitura, destrutivas, idempotentes e de recursos externos. Escritas destrutivas em ambos os servidores honram destructive.safe_mode e o log de auditoria de segurança; apenas o servidor composto arquiva uma timeline antes de mutá-la — escritas granulares são recusadas ou registradas, nunca recuperadas. Consulte Política de Segurança para limites operacionais, orientação de confirmação e relato de vulnerabilidades.
Estatísticas Principais
| Métrica | Valor |
|---|---|
| Ferramentas MCP | 37 compostas / 389 granulares (servidor ativo) |
| Ferramentas avançadas (offline) | 18 — .drp/.drt/.drx + autoria de banco de dados, sem Resolve em execução |
| Ações de Kernel | 136 ações de fluxo de trabalho protegidas em 9 ferramentas compostas |
| Métodos de API Cobertos | 361/361 (100%) |
| Métodos Testados ao Vivo | 338/361 (93,6%) |
| Taxa de Aprovação em Testes ao Vivo | 338/338 (100%) |
| Testado Contra | DaVinci Resolve 19.1.3 Studio + Resolve 20.3.2 Studio + Resolve 21.0.2 Studio + Resolve 21.0.3 gratuito (via bridge no aplicativo) |
Para status método a método, consulte Cobertura de API e Resultados de Testes. Para suporte atual de fluxo de trabalho, consulte Cobertura de Ações de Kernel.
analyze_media executa diretamente por padrão, persiste relatórios/artefatos inspecionáveis sob a raiz de análise, solicita análise visual do chat do host via protocolo host_chat_paths (analyze retorna caminhos absolutos de frames + um esquema JSON; o chat do host lê cada frame como imagem e chama media_analysis(action="commit_vision", ...) para finalizar), executa transcrição através do backend local configurado e escreve resumos de análise e marcadores de clipes da Media Pool com tempo de origem de volta ao projeto do Resolve. Passe include_visuals=false, include_transcription=false, publish_metadata=false, timed_markers=no ou dry_run=true apenas quando quiser optar por não participar desses comportamentos padrão. Pular commit_vision deixa a execução em pending_host_vision_analysis — exibido como um modo de falha, não rebaixado silenciosamente.
Documentação
| Documento | Use para |
|---|---|
| Instalação e Configuração | Requisitos, opções de instalador, clientes suportados, modos de servidor, configuração manual |
| Cobertura de API e Resultados de Testes | Estatísticas principais, tabela de cobertura de API, status de testes ao vivo, referência completa de métodos |
| Cobertura de Ações de Kernel | Mapa atual de ações de fluxo de trabalho protegidas |
| Referência de Habilidades de IA | Contexto operacional para assistentes de IA usando o servidor composto |
| Guia do Painel de Controle | Tour do painel do navegador local: Visão Geral, Revisão (bin/clipe/plano), Análise, Configuração, Preferências |
| Guia de Análise de Mídia | Fluxos de trabalho seguros para a origem com FFprobe, FFmpeg, Whisper, sidecar e raiz de análise |
| Guia do Auxiliar de Configuração Multicâmera | Preparação de timeline empilhada, limite auxiliar/API e etapas de conversão na interface do Resolve |
| Guia de Decisão Editorial | Orientação de ofício editorial de propriedade do projeto para análise e decisões de timeline |
| Conformando um AAF do Avid | Por que todas as três rotas nativas do Resolve falham em uma entrega consolidada, e qual delas é perigosa |
| Autoria Nativa de .drt | Autoria offline de timeline com emenda de modelos: cortes, retimes, transições, fades, marcadores, compostos — e as leis medidas por trás deles |
| Loop de Edição Headless | Dirigir o Resolve pela linha de comando: quais formatos de intercâmbio religam e fazem round-trip, medidos em GUI e -nogui |
| Guia de Decisão de Cor | Orientação de correção de cor de propriedade do projeto e limites da API de cor do Resolve |
| Contribuindo e Layout do Projeto | Fluxo de contribuição, suporte de plataforma, notas de segurança, estrutura do repositório |
| Política de Segurança | Limite de confiança stdio local, metadados de ferramentas, orientação de confirmação, relato |
| Processo de Lançamento | Checklist de lançamento para mantenedores, superfícies de versão, validação, tags e notas de lançamento |
| Changelog | Notas de lançamento históricas |
Referências de autoria de extensões estão em docs/authoring. Notas do pacote de desenvolvedor do Resolve estão em docs/notes e docs/integrations. Receitas de prompt estão em examples.
Requisitos
- DaVinci Resolve 18.5+ em macOS, Windows ou Linux. Studio suporta script externo diretamente. A edição gratuita não — a Blackmagic restringe script externo ao Studio — mas ainda é acessível através do bridge no aplicativo, que roda dentro do Resolve a partir do menu não restrito Workspace ▸ Scripts.
- Python 3.10+ (3.10-3.12 é a faixa de menor risco). Python 3.13/3.14 também funcionam em builds recentes do Resolve (verificado no Studio 20.3.2); builds mais antigos podem falhar ao conectar em 3.13+, nesse caso use 3.10-3.12.
- Script externo do Resolve definido como Local (Studio). Na edição gratuita, essa preferência não tem efeito — use o bridge no aplicativo em vez disso.
Resolve 19.1.3 permanece como a linha de base de compatibilidade. Chamadas de script do Resolve 20.x são aditivas, protegidas por versão e testadas ao vivo em 20.3.2. Adições de script do Resolve 21.0 (classificação de áudio, transcrição com detecção de falante, IntelliSearch, análise de slate, desfoque de movimento, geração de fala, controle de tarefas em segundo plano de sessão) são expostas atrás de detecção de capacidade em tempo de execução, então permanecem inertes em builds mais antigos e ativam automaticamente no Resolve 21+. São testadas ao vivo no Studio 21.0.2.4 — veja o delta do Resolve 21. Note que AnalyzeForIntellisearch, AnalyzeForSlate e GenerateSpeech cada um requer um pacote de Extras de IA baixado separadamente, e o Resolve relata um pacote ausente de forma inconsistente (alguns retornam False, outros uma string de erro), então essas ações relatam success: false com o motivo fornecido pelo Resolve em vez de adivinhar.
Relatando Bugs e Solicitando Recursos
Diga ao seu assistente "envie isso como um bug" ou "envie isso como uma solicitação de recurso". Ele redige uma issue do GitHub a partir da conversa, incluindo a chamada com falha e seu erro, e anexa a versão do servidor, o build do Resolve, o modo de conexão e o SO. Caminhos locais, seu nome de usuário e qualquer coisa que pareça um segredo são redigidos. Nada é registrado por você: você recebe um link pré-preenchido, revisa o rascunho e o envia no GitHub você mesmo. Você também pode abrir uma issue diretamente.
Desenvolvimento
python src/server.py # Compound server
python src/server.py --full # Granular server
venv/bin/python tests/test_import.py
venv/bin/python scripts/audit_api_parity.py
Regras de lançamento e validação estão em docs/process/release-process.md. Agentes de IA trabalhando neste repositório devem começar com AGENTS.md; usuários do Claude Code também podem ler CLAUDE.md, que aponta para as mesmas instruções canônicas.
Licença
MIT
Autor
Samuel Gursky (samgursky@gmail.com)
- GitHub: github.com/samuelgursky
Agradecimentos
- Blackmagic Design pelo DaVinci Resolve e sua API de script
- A equipe do Model Context Protocol por permitir a integração com assistentes de IA
