畫面(分鏡)
這是一件事,不是流程的一段。 用戶什麼時候喊它就什麼時候做,改完剪輯可以回來再做。
前提只有兩個:賬本和字幕已經存在(圖層按字幕螢幕放、時間從賬本算)。
需要 edit-list.json、transcript.json、subtitles.json
產出 visuals.json + modules/<序號-名字>/index.html
幹完就停,不指揮用戶下一步。
先讀取並執行 業務 Skill 的階段合同。 模塊寫法的硬規矩見 模塊契約, 判斷規則見 畫面判斷。
0. 就緒
先執行 檢查更新 的「就緒檢查」——skills 是否
最新、Runtime 是否配套;插件根也在那裡定位(本文命令裡的 <插件根> 都代入
那個字面路徑)。只有「就緒」才繼續;「需新會話」或「停」按它的處置執行
(含「禁止自製替代界面」禁令),業務 Skill 不自帶環境邏輯。
若就緒結果為 runtime.kind=desktop-managed,直接複用桌面 App 已安裝的穩定 CLI 與
同一 launchd/windows-task 服務;不要解析 Electron 路徑、另裝依賴或起第二個
Runtime。
命令
node "<插件根>/scripts/ensure-running.cjs" --json
node "<插件根>/scripts/videocut-cli.cjs" visual get <project> --json
node "<插件根>/scripts/videocut-cli.cjs" visual frame <project> --cues sub-0004,sub-0005 --count 12 --out <dir> --json
node "<插件根>/scripts/videocut-cli.cjs" visual add <project> --module modules/01-xx/index.html --cues sub-0004,sub-0005 [--zoom x,y,w,h] [--id vis-0001] --json
node "<插件根>/scripts/videocut-cli.cjs" visual remove <project> --id vis-0001 --json
ensure-running 必須先證明 canonical 5190 屬於當前平台的託管服務;失敗就透傳並
停止,不回退 foreground 或自選端口。
圖層綁字幕螢幕(--cues),產品自己換算成詞 id——圖層永遠不可能綁上沒人說的詞,
剪輯變了圖層自己跟著挪。不儲存秒數。
四步,一步不跳
① 文字定任務 讀 subtitles.json,按語義分段,每段回答:
教程/演示/證明,還是概念/邏輯/過渡?
② 抽幀看畫面 visual frame 抽 8-12 幀,真的用眼睛看。
實測 12 段裡有 2 段被畫面推翻文字預判 —— 這步不是走形式
③ 量運動窗口 相鄰幀做像素差,找出滾動/切換/操作的時刻。
圖層只蓋穩定窗口,圈在畫面開始動之前退場
④ 做圖層放圖層 寫模塊 → visual add → 在預覽裡逐層核對
② 的判斷規則
畫面正是他說的東西 → 標註:圈住、說到哪個詞圈哪裡。真證據不許蓋
畫面弱相關/空白 → 小黑動畫:全螢幕白底,從風格庫做
畫面自身足夠清楚 → 不動。這是最常見的正確答案(實測 13 段裡 4 段不動)
③ 的產出物是數字,不是感覺
圈的座標 像素統計量出來(灰階掃描找文字行),不許目測 —— 目測差過 50px
互動時刻 逐幀像素差找突變(實測一次從 4 跳到 335),圈在它之前 0.2s 退完
穩定窗口 開頭常有滾動(他在找內容),圖層從停穩那屏的 cue 開始綁
推近(zoom)用之前先想
默認不推近。 960x720 的錄影放大就糊,用戶會立刻看出來
非推不可時 ≤1.6 倍、區域取 62.5% 見方居中 —— 構圖完整 > 讀清小字
字太小讀不清 用圈引導視線就夠了;真要讀清,答案是高解析度重錄,不是放大
審閱循環
模塊目錄用序號命名(01-daily-report、05-anim-task-split),
時間線軌道上顯示目錄名,用戶報號你改那一層,別的不動。
兩條改圖層紀律,各對應一次真事故:
改圖層必查模塊 圖層收窄/延長後,模塊裡寫死的相對時刻不會跟著變 ——
圈的出場時刻可能落到圖層結束之後,永遠不出現
驗收看像素 截圖看畫面,不查 DOM 屬性。「可見性翻轉正確」的 iframe
曾經物理上不在畫面裡 —— 屬性全對、螢幕全空
不許做什麼
- 不許跳過抽幀和運動窗口直接做(兩種錯各犯過一次:蓋掉真證據、圈懸在滾動上)
- 不許把每段都做點什麼——鋪滿不是目標,不動是常見答案
- 不許儲存秒數、不許目測座標、不許在白底頁面上加壓暗
- 沒有真實內容不許拿佔位圖充數
- 風格從註冊表選,不得憑空發明
- 品牌圖標用官方字形,不許手畫替身(X 用兩筆交叉線畫過,被用戶抓了)。 本地索引沒有的,從 simple-icons 取單色官方 glyph(黑白風格正好配), 原 svg 存進模塊目錄備查;同一條片裡同一品牌只能長一個樣