DaVinci Resolve のスクリプトおよびプラグイン開発用リポジトリです。 Python/Lua スクリプト群は シンボリックリンク による直接リンクでコピー不要の開発環境を提供し、高度な Workflow Integration (Electron等) プラグイン群は Vite を用いた直接デプロイシステムを提供します。
src/: 開発するソースコードScripts/: Python/Lua スクリプトUtility/,Edit/,Color/,Deliver/: 各ページごとのスクリプト配置用
Workflow_Integration/: ワークフロー統合プラグイン(Electron等)
Developer/: DaVinci Resolve 公式 SDK へのリンク(setup.ps1で作成)- API ドキュメントやサンプルコードが含まれており、LLM (AI) や開発者が参照するために利用します。
setup.ps1: 環境構築スクリプト(シンボリックリンクの作成)
- subtitle_to_textplus.lua: タイムライン上の字幕クリップを抽出し、装飾可能な
Text+クリップの形式で任意のビデオトラックに一括変換・配置するスクリプト。 - textplus_to_subtitle.lua:
Text+クリップ群からテキストとタイムコードを抽出し、SRT フォーマットでファイル出力、または字幕トラックへ書き戻すスクリプト。 - youtube_chapter.lua: タイムラインのマーカー情報を抽出し、YouTube 自動チャプター用のテキストをクリップボードにコピーするスクリプト。
- hello_world.lua: ネイティブ GUI (Fusion UI) のテスト用スクリプト。
- SubtitleMarkdownEditor: タイムラインの字幕を Markdown 形式で一覧表示・編集し、一括でタイムラインへ同期・反映できる高度なプラグイン。
install.bat をダブルクリックして実行してください。
(管理者権限の要求が表示されるので「はい」を選択してください。ドライブを跨いだリンクを作成するため、シンボリックリンクの作成に管理者権限が必要です)
コマンドラインから実行する場合は以下:
.\install.batこのスクリプトを実行すると、以下の処理が自動で行われます:
- SDK 参照の作成: 公式の
Developerフォルダをリポジトリ内にシンボリックリンクします。 - スクリプトのリンク:
src/Scripts以下の各機能フォルダ(Utility,Editなど)を Resolve の該当ページ用フォルダ内にMyScriptsという名前でそれぞれ個別にシンボリックリンクします。
※ プラグイン(Workflow Integration)について:
DaVinci Resolve の Workflow Integration ではシンボリックリンクを介したファイルロードが厳格にアクセス制限され、プラグインが正常に動作しない仕様となっています。
そのため、src/Workflow_Integration/ 内のプラグイン(例: SubtitleMarkdownEditor)はリンクを作成せず、個別の Vite ビルドシステムを用いて DaVinci Resolve の %PROGRAMDATA% ディレクトリへ直接ビルド出力します(詳しくは各プラグインの README.md をご覧ください)。
- DaVinci Resolve を起動します。
- スクリプト: メニューの
Workspace>Scripts>MyScripts内に、スクリプトが表示されます。
- ドライブ跨ぎ対応: シンボリックリンクを使用しているため、プロジェクトを D: ドライブに置き、Resolve の設定を C: ドライブに置くといった構成でも問題なく動作します。
- 即時反映: リンクを使用しているため、リポジトリ内のファイルを編集して保存するだけで、即座に Resolve 側に反映されます。
- AI 活用:
Developer/ディレクトリがリンクされているため、AI アシスタントに対して「Developer/Scripting/README.txtを参考にしてスクリプトを書いて」といった指示が容易になります。 - 【重要】CLIからの直接実行・テスト: Resolve が起動中であれば、GUIを使わずにコマンドラインから直接短いスクリプトを送り込んでテストやデバッグを実行し、結果(ログなど)を取得できます。
- 具体的なコマンド例は以下の通りです。AIエージェントに「以下のコマンド例を参考にシェルで実行してAPIの仕様を確かめて」と指示することで、確実な実装が可能になります。
- Luaの実行例 (
fuscript.exe):& "C:\Program Files\Blackmagic Design\DaVinci Resolve\fuscript.exe" -x "local resolve = Resolve(); print(resolve:GetProjectManager():GetCurrentProject():GetName())"
- Pythonの実行例:
$env:PYTHONPATH = "$env:PROGRAMDATA\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\Modules\"; python -c "import DaVinciResolveScript as dvr_script; resolve = dvr_script.scriptapp('Resolve'); print(resolve.GetProjectManager().GetCurrentProject().GetName())"
- ディレクトリ階層:
src/Scripts/Utility/に置いたスクリプトは Resolve のすべてのページで表示されます。特定のページでのみ使いたい場合は、それぞれのページ名フォルダに配置してください。
セットアップしたリンクを削除して元の状態に戻すには、uninstall.bat を実行してください。
(セットアップ時と同様、リンクの削除に管理者権限が必要です)