Communitygithub.com

MusicProWorkshop/resolve-screen-tutorial

將軟體教學、產品導覽或螢幕演示,透過螢幕截圖構建成可編輯的 DaVinci Resolve 時間軸,包含真實的 Inspector 關鍵幀攝影機運鏡、動態游標、點擊波紋、元素高亮、附有角色或步驟標籤的說明列,以及帶有 Inspector 控制項的品牌化 Fusion 標題卡片。

resolve-screen-tutorial 是什麼?

此技能可讓 AI 代理根據一系列螢幕截圖和描述(`film.json`),自動在 DaVinci Resolve 中建立一個完整的教學影片時間軸。它模擬了專業編輯師的工作流程:生成帶有真實 Inspector 關鍵幀的攝影機運鏡(平移、縮放)、插入具備 Inspector 控制項的 Fusion 標題(開場、結尾卡),並在時間軸上加入動態游標、點擊波紋和元素高亮效果。支援的平台為 DaVinci Resolve Studio 21.2 或更新版本,並透過 Python 和 ffmpeg 處理圖片與外部運算。其核心機制是先將所有視覺元素與動畫參數寫入一個時間軸檔案,再匯入 Resolve,繞過 API 無法設定關鍵幀或標題長度的限制。此工具特別適合需要將產品操作流程或軟體教學快速轉化為可後續編輯的高品質影片素材的開發者與內容創作者。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/MusicProWorkshop/davinci-resolve-skills/tree/HEAD/plugins/davinci-resolve-timelines/skills/resolve-screen-tutorial

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

在 Resolve 時間軸上製作螢幕教學影片

將教學描述(film.json)及其螢幕截圖轉換成時間軸,讓編輯人員可以繼續加工。片段帶有一般的 Inspector 關鍵幀,標題是 Fusion 標題並在 Inspector 中帶有控制項,場景也已標記。它不會加入音訊,因此旁白和音樂可以在之後加入。

Resolve API 無法設定關鍵幀或標題的長度,因此建置過程會將它們寫入時間軸檔案再匯入。references/how-it-works.md 說明了這點並列出了已知問題。如果某個步驟失敗或 Resolve 版本比 21.2 新,請先閱讀該文件。

開始之前

  • Resolve Studio 正在執行中,且已開啟一個專案。使用 get_resolve_status 檢查,並在專案伺服器請求時,使用 since 參數設為 21.0 呼叫 get_whats_new 一次。
  • Resolve 之外:需安裝 Python 及 pillow 套件,且 ffmpeg 需在 PATH 環境變數中。
  • 專案的時間軸格式必須是 1920x1080。preflight 會檢查此項。

與使用者共同決定

如果可能,請從對話中確定以下事項,僅詢問缺少的部分:

  1. 專案。 時間軸會建立在已開啟的專案中。請向使用者確認專案名稱。切換專案可能會導致未儲存的變更遺失,因此如果是錯誤的專案,請要求使用者自行切換。
  2. 螢幕截圖。 它們來自使用者,或由您自行擷取。使用 Playwright 時,請採用 1920x1080 的視窗大小搭配 deviceScaleFactor: 2:產生的圖片為 3840x2160,且 getBoundingClientRect 給出的座標已可直接用於 film.json。檢視每張提供的圖片,選用適合觀眾的圖片,並告知使用者您排除了哪些。
  3. 品牌。 顏色、字型、標誌以及任何標籤(例如「主機」或「管理員」)。請優先在使用者的程式碼或先前建立的標題中尋找。Text+ 只能看到已安裝的字型,未經詢問請勿安裝新字型。
  4. 時間軸的名稱。 選擇一個未被使用的名稱。切勿取代不是您建立的時間軸。

撰寫 film

建立一個資料夾來存放影片,並在其中寫入 film.json。references/film-format.md 說明了格式。現在就閱讀它。

一些閱讀體驗良好的時間設定:

  • 每個場景顯示 6 到 10 秒,說明列維持足夠閱讀兩次的時間,大約每 8 個字元 1 秒。
  • 攝影機移動約需 1 秒,並在游標移動或高亮顯示前留出穩定時間。
  • 游標移動約需 0.8 秒,點擊後約 0.3 秒產生效果。
  • 如果點擊後的新畫面佈局與目前縮放比例一致,則直接在點擊後接續新鏡頭;如果頁面完全改變,則在點擊後立即結束場景,讓溶解轉場過渡到下一場景。
  • 為了讓游標在溶解轉場中保持靜止,請將下一場景的游標起始位置設在畫面上的相同位置,使用公式 x' = tx + x * zoom。
  • 在影片的開頭和結尾各使用一個約 3 秒的卡片。

說明列應僅表述螢幕截圖所顯示或使用者告知的內容,任何您推測的資訊都應放在您的報告中。

高亮框偏離按鈕是此格式最明顯的錯誤,因此請測量而非估計。圖片的顯示比例可能與其實際尺寸不同,請勿直接從圖片上讀取座標:

python "<SKILL>/scripts/measure.py" grid shot.png grid.png

開啟 grid.png(上面標有畫面座標),以找到按鈕填充區域的粗略位置。然後取得其精確的矩形範圍並檢查結果:

python "<SKILL>/scripts/measure.py" at shot.png 1250 470
python "<SKILL>/scripts/measure.py" show shot.png check.png 1200,450,180,40

邊框與附近顏色相近的按鈕可能會發生溢出,請留意警告,如果矩形看起來太大,請降低容差值。

建置

SKILL 是此技能的資料夾,WORK 是影片的資料夾。Shell 步驟可在任何地方執行。Resolve 步驟需透過 run_script_unsafe 執行。每次呼叫請傳入 timeout: 60,因為該工具的預設超時時間為 10 秒,而這些步驟可能需要更長時間。每個步驟都以以下程式碼開頭:

SKILL = r'<此技能資料夾路徑>'; WORK = r'<影片資料夾路徑>'
exec(open(SKILL + r'\scripts\resolve_steps.py', encoding='utf8').read())

在 film.json 存在之前,project_format(project) 會提供專案的尺寸、幀率和時間軸列表,fonts_available('Lato', ...) 則會回傳已安裝的字型及其樣式。除非有特殊原因,否則將 fps 設為專案的幀率。

1. 檢查專案。 在繼續之前修正 problems 中的所有問題,當需要使用者決定時請詢問使用者,並傳遞所有 notes。此步驟不會更改任何內容。

result = preflight(project, WORK)

2. 規劃,並安裝標題。 閱讀警告並修正 film.json 中的重要問題。這會將標題安裝到 Resolve 的範本資料夾中對應的品牌目錄,並會取代相同名稱的檔案,因此請告知使用者。

python "<SKILL>/scripts/plan.py" "<WORK>"
python "<SKILL>/scripts/templates.py" "<WORK>" --install

3. 建置時間軸。 此步驟會匯出建置區塊、寫入時間軸檔案、匯入時間軸、套用 API 可以設定的設定、檢查結果,並移除本次建置產生的兩個暫存時間軸。它只會取代由此資料夾建立的時間軸,因此如果使用者可能已編輯過該時間軸,請先詢問,因為編輯內容將會遺失。

result = build_film(project, WORK)

verify.problems 應為空。如果 done 為 false,請重複執行 result = finish_batch(project, WORK) 直到其為 true,然後執行 result = dict(verify=verify(project, WORK), cleanup=cleanup(project, WORK))。Resolve 可能需要幾秒鐘才能看到新安裝的標題,因此 build_film 會等待它們。如果仍然無法插入標題,請要求使用者在儲存工作後重新啟動 Resolve。

請勿刪除媒體夾(bin),無論是在此處還是後續清理時:片段可能從一個媒體夾連結到其他時間軸(請參閱 references/how-it-works.md)。

4. 檢視結果。 此步驟會直接從時間軸匯出帶有標籤的畫面圖表:每個場景、每個高亮的中間畫面,以及每次點擊後的畫面。這需要幾秒鐘,且無需渲染,因此不會更改渲染設定。在 build/review/ 資料夾中開啟這些圖表。

result = review_frames(project, WORK)

檢查高亮是否位於其元素上、游標是否落在預期位置、波紋是否可見、說明列是否合適,以及畫面是否沒有全黑。如需更詳細的檢視,可以使用 review_frames(project, WORK, seconds=[10.5, 20.2]) 以全尺寸輸出這些時間點(以時間軸秒為單位)。plan.py 會列印每個場景的開始時間,以便從場景時間進行轉換。

這些畫格與同一幀的渲染結果相符,已在 Resolve 21.2 上測試通過。review_frames 需要 21.2 版本才有的幀匯出 API。在較舊的 Resolve 上它會引發錯誤,此時可以使用下方的渲染方法:在沒有參考圖片的情況下對渲染結果執行 review.py,以獲得相同的圖表。

5. 渲染,當您需要一個檔案時。 為了提供影片給使用者,或供 remotion-to-resolve 進行比較,請進行渲染。start_render 會變更專案的渲染設定,請告知使用者。

result = start_render(project, WORK, 'review')
result = wait_render(project, '<job id>', 50)   # 重複直到狀態變為 Complete
python "<SKILL>/scripts/review.py" "<WORK>" "<WORK>/build/render/review.mp4"

移除您的渲染任務,且僅移除您自己的,因為佇列中可能包含使用者的其他任務:

result = remove_job(project, '<job id>')

若要修改內容,請編輯 film.json,重新執行 plan.py,然後再次呼叫 build_film,接著重新檢視。如果您已渲染,請先移除該任務。如果品牌或 fps 有變更,也請重新執行 templates.py。如果使用者已手動編輯時間軸,請在重建前先詢問,或直接在時間軸上手動修改。

完成

除非使用者要求,否則將儲存操作留給使用者,因為儲存也會提交他們已開啟的其他未儲存編輯。回報以下事項:

  • 時間軸、媒體夾及軌道
  • 標題安裝的位置
  • 新的時間軸現在是目前使用中的時間軸,需指出 preflight 找到的原本開啟的時間軸名稱,如果您已渲染,也需告知渲染設定已變更
  • 任何您推測的說明列措辭,以及螢幕截圖中與簡報衝突的內容
  • 您檢查了什麼,以及您未檢查什麼。畫格顯示了畫面,但無法顯示動態效果或在 Resolve 中 Inspector 和時間軸的呈現方式
  • 任何近似處理的內容,以及以下限制:無音訊、僅靜態圖片,以及高亮在攝影機移動期間停留在畫面上

片段來自磁碟上的檔案,因此移動影片的資料夾或螢幕截圖會導致片段離線。請同時保留 build/assets/ 目錄,因為游標和背景板存放在那裡。

若要從效果庫移除某個品牌的標題,請執行 templates.py "<WORK>" --uninstall。它只會移除該品牌的四個檔案。已建立的時間軸會保留自己的副本:移除後進行的渲染結果仍是相同的。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能