LLMSkillHub
mirroredCopied from edenfunf/reelmimic under MIT. edenfunf has not claimed this page, and is not affiliated with LLM SkillHub.

edenfunf / video-clone

參考影片風格克隆器 — 使用者給一支參考影片(本機檔案、螢幕錄影或 YouTube/網址)加上一句需求(「做一支類似風格的影片,主軸是…」),就拆解它的剪法與視覺風格、判斷屬於哪種風格、交給對應的製作 skill,寫分鏡、做動畫、逐格自我審查,最後輸出 MP4 並依回饋修改。Use whenever the user supplies a reference video or link and asks for a video "like this", "in this style", "clone/模仿/參考這支的風格/剪法", or asks to add a new video style to the registry.

0
SKILL.md
14.0 KB

video-clone:參考影片 → 風格拆解 → 生成新影片

這個 skill 是總指揮。所有產出都照 CONTRACT.md 的檔名與欄位寫(App 前端直接讀那些檔案畫畫面;CLI 使用時也照寫,方便之後接到 App)。
在 App 裡時,每一輪只做被指定的階段(拆解 / 企劃 / 修改企劃 / 生成 / 修改成片);前製企劃被使用者核准之前,不准開始正式生成。
使用者沒有素材時,先用 scripts/fetch_assets.py 從授權安全的來源(Openverse CC0/CC BY、Pixabay、Freesound)找;不夠可以自己上網搜尋。每個素材都把來源、作者、授權記進 assets/ASSETS.md,授權不明的標「授權未確認」並告訴使用者。

它自己不畫任何東西,負責的是:拆解參考片、選出正確的製作 skill、把關品質、跟使用者對焦。

目標是驚艷、讓人起雞皮疙瘩,不是「沒有錯」。 驚艷來自高潮設計:找出參考片打動人的那 1–2 刻,設計我們的對應高潮
(鋪陳 → 屏息 → 落在重拍的爆發 → 停住),把力氣集中在那幾鏡,並且一律用連續影格和參考片並排比,不看單張。
流程照這份文件走;每個階段做完都用一兩句話告訴使用者現在做到哪。

0. 收件

使用者會給:

  • 參考影片:本機檔案、螢幕錄影,或網址(YouTube 等)。網址用 analyze.py 內建的 yt-dlp 下載,僅供分析風格。
  • 需求:主題 / 主軸 / 情感方向 / 長度 / 比例。沒說的用預設(30 秒、16:9),不要一次追問一大串。
  • (選配)配樂音檔與 LRC 歌詞檔。

在 projects/<短代號>/ 開新專案;分析結果放 projects/<代號>/analysis/。

1. 拆解參考片

python .claude/skills/video-clone/scripts/analyze.py "<檔案或網址>" --out projects/<代號>/analysis

它會自動處理:手機螢幕錄影的 UI 裁切、黑邊、切點偵測、平均鏡頭長度、BPM 與拍點、左右聲道相位相反(錄音常見)、音量正規化、最熱鬧的 30 秒段落,
以及每個鏡頭的運鏡(shot_details:推近/拉遠/平移/環繞/靜止 + 快慢)與畫面數據(亮度、對比、暗部比例、飽和度、主色),look_summary 是整支的摘要。

然後用 Read 打開 sheet_1fps.jpg 和 sheet_scenes.jpg 實際看,搭配 report.json 寫 analysis/STYLE.md:

  • 媒材(必填、放第一行):2d-painted(水彩/墨線)· 2d-crayon(蠟筆/色鉛筆繪本)· 2d-vector(扁平向量、動態圖像)· 2d-pixel(像素)·
    2d-paper(剪紙/定格)· 2d-lineart(白板/手繪線稿解說)· 2d-cel(日式動畫賽璐璐)· 3d-stylized · 3d-photoreal · live-action。這是選 skill 的硬條件

  • 鏡頭清單:把 shot_details 整理成表(編號、秒數、內容、運鏡與快慢、亮暗),企劃會逐鏡對照這張表
  • 配色與色彩弧線、角色造型語言
  • 剪接:鏡頭數、平均鏡頭長度(秒與拍)、切點是否對拍、轉場種類
  • 敘事結構:有沒有故事、開頭結尾是否呼應、有沒有反覆出現的符號(motif)、笑點怎麼設計
  • 字幕 / 文字的用法
  • 畫面裡若出現製作工具或開源專案連結,記下來(可能直接就是對應的 skill)

找高潮:report.json 的 audio.peak_candidates(音樂蓄力後爆發)與 flashes(閃白格)是線索。每個候選用
scripts/clip_strip.py analysis/source.mp4 --range a:b --out analysis/peak_<n>.jpg 抽 12fps 連續影格實際看,
確認真正的爆點,寫 analysis/peaks.json(格式見 CONTRACT.md):怎麼鋪陳、有沒有屏息、爆點那一格發生什麼、停多久、聲音、用了哪些手法、為什麼打得到人。

把拆解結果精簡回報給使用者(一張表 + 3–5 個「這支好看的關鍵」+ 高潮在哪裡、靠什麼)。

2. 選風格 → 選製作 skill

讀 styles/ 底下所有 *.md(_TEMPLATE.md 除外)。每個檔案的 frontmatter 有 engine(交給哪個 skill)、medium 與 priority,內文有「辨識特徵」。
engine 對應的 .claude/skills/<engine>/ 資料夾不存在的風格直接跳過(使用者沒有安裝那個引擎,例如開源版不附的 Remotion skills)。

  • 先過濾媒材:只考慮 medium 與參考片媒材相同的風格;沒有同媒材的風格時,選畫面最接近的媒材並在 why 說明(live-action 參考片 → 用最接近的 2D 媒材重現,並告訴使用者)。
    目前只做 2D(3D 賽道暫停,styles/_disabled/ 裡的風格不參與選擇)。參考片是 3D/擬真時,選最接近的 2D 風格,
    重現它的節奏、運鏡、構圖、光影氣氛與字卡手法(例如黑底+光暈、慢推、灰白兩階標語),並在 route.json 的 why 與回報裡明說
    「參考片是 3D,這支用 2D 重現」——不要默默降級。

  • 在同媒材的風格裡,拿 STYLE.md 對辨識特徵打分,選最符合的;平手看 priority。
  • 使用者明確指定風格或工具時,以使用者為準。
  • 都不符合:挑最接近的 engine 做,並在做完後依 _TEMPLATE.md 新增一個風格檔,讓下次能直接對應(告訴使用者新增了什麼)。
  • 告訴使用者:判斷成哪個風格、用哪個 skill、為什麼。

然後載入該 engine skill(Skill 工具),接下來的製作細節以它的指示為準,並遵守該風格檔的「製作預設」與「已知的坑」。

3. 配樂(有音樂的風格才需要)

  • 用使用者提供的音檔。沒有的話請使用者提供(可以是他自己合法取得的檔案或螢幕錄音);不要自行下載商業歌曲。
  • 再跑一次 analyze.py 分析那個音檔(--out projects/<代號>/analysis/song),拿到 BPM、拍點、最熱鬧的段落。
  • 報告有 silent: true → 請使用者重錄(Windows 剪取工具要打開「系統音訊」);phase_inverted: true 或底噪 > -45 dB → 可以先用,但告訴使用者音質上限,建議換正式音檔。
  • 從小節線切段:ffmpeg -ss <start> -t <len> -i audio.wav -af "loudnorm=I=-14:TP=-1.5,afade=t=in:d=0.08,afade=t=out:st=<len-2>:d=2" -c:a aac -b:a 192k assets/clip.m4a,讓第 0 秒落在拍點上(offset = 0)。
  • 所有鏡頭時間用「拍」寫,換音檔只需改 BPM/offset。

4. 分鏡

寫 projects/<代號>/STORYBOARD.md:Logline、世界觀與色彩弧線、motif、主角情緒弧線、鏡頭表(拍數 · 轉場進 · 事件 · 反應 · 鏡頭運動)。
學參考片的手法(節奏、轉場、構圖、motif、呼應結構、笑點設計),內容與角色全部原創。

逐鏡對照(克隆風格的核心):先把參考片的鏡頭清單分成段落(開場、每個賣點、謝幕…),我們的每個鏡頭都要對應到一個參考鏡頭:
plan.json 每個 shot 填 ref_shot(參考片鏡頭編號)、ref_what(那個鏡頭用了什麼手法),以及具體的 camera(engine 能直接用的規格:
運鏡種類、鏡頭焦段、主體佔畫面比例 fill、拍哪個部位 region、景深、起訖角度)。運鏡種類與快慢要跟參考鏡頭一致(參考是慢推,我們就慢推;
參考幾乎每鏡都在動,我們也不能有死的靜止鏡頭)。純字卡的比例、明暗比例、平均鏡頭長度要跟參考片接近(誤差 ±30%)。
寫完自己檢查:把 plan 的鏡頭和 shot_details 逐列對一次,不一致的要改,或在 notes 寫理由。

高潮先設計:plan.json 的 peaks 對應 analysis/peaks.json,寫清楚鋪陳、屏息、爆點(hit_s 對拍)、停住、聲音與手法(參考用的一個都不少);
peaks 裡的鏡頭標 hero: true。核准前先把每個爆點那一格做到成片品質,和參考片同一格並排成 out/check/key_<n>_vs_ref.jpg,
放在 style_frames 最前面給使用者看;比參考片弱就繼續改,不要交出去。

變化:同一場景+同一機位不超過片長 40%,高潮之間換場景或視角;鋪陳段每 1–1.5 秒畫面要有新東西,不要一個構圖停著等爆點。
要有情緒弧線(想要什麼 → 等待或阻礙 → 高潮時得到),不只是能量往上。

給使用者看分鏡並簡短說明;使用者說過「你自己決定」就直接開做。

5. 製作:一關一關過,不要堆到最後才審

缺陷在哪裡產生就在哪裡攔下,後面才不會一直疊在壞掉的東西上。App 會照這個順序派 agent(CLI 單獨跑時也照這個順序自己做):

  1. 企劃核准前:plan.json 的 required_inputs 列出只有使用者能給的東西(歌詞文字、自家角色設計圖、產品照、Logo)。
    沒提供也沒略過就不能核准,生產中不會再卡在「缺歌詞」。

  2. 導演建置:共用素材、角色定義、分段(build/production.json,每段 2–5 鏡)。
  3. 角色關:先出角色設定圖(正面、表情 8+、本片會用到的姿勢 6+)→ 全新對話的審查員用人眼清單看全解析度裁切 → 不過就修,過了才開始做鏡頭。
    2D 向量角色一律用 assets/vector_rig/(骨架+一體輪廓;見它的 README),不准用圓形、長方形另外拼頭、身體、手臂。

  4. 分段製作+即時審查:多個製作 agent 平行做不同段;每段一做完,就由一個全新的審查員看那一段的每鏡 sheet、strip 與角色裁切,
    不過就退回同一個製作 agent 修(最多 3 輪)。
    hero 鏡頭可以用特製姿勢、誇張變形、衝擊格、smear、光芒、粒子、鏡頭震動;做完用 clip_strip.py --vs 和參考高潮逐格並排比。
    不准用閃白或轉場蓋掉做不到的動作或該被看見的那一刻。 動作一律看 12fps 連續影格判斷(跳格、瞬移、該動不動、僵硬整塊旋轉)。

  5. 組裝(跑 motion_check.py 抓黑格、片尾硬切黑、意外靜止;確認有音軌)→ 最後評審:先做高潮對決(我們的高潮 vs 參考片高潮,連續影格並排),
    輸給參考片就不能交件;分數以參考片為尺(4 = 和參考片並排不顯得陽春),每項附證據、逐鏡打分;再看接縫、連戲、節奏、字幕,並核對之前每一個「已修正」。

人眼清單(每一關都用):四肢都接在身上、有脖子、沒有接縫或雙層描邊、跟角色設定圖一致、線寬一致、沒有穿模、主體夠大、字看得清楚、
沒有色帶或閃爍、動作有預備與跟隨。看不清楚就裁切放大再看。

修正要附證據:每個「已修正」都寫進 fixes.json,附修改前後的全解析度裁切;審查員先核對,說修好但沒修好會原樣退回。
needs_user:只有使用者能提供的東西(歌詞、設計圖…)不算缺陷,寫進 needs_user,系統會暫停並請使用者提供或略過,不會一直重修。

輸出後回報:路徑、長度、解析度、每鏡一句話內容,並誠實列出還沒做好或暫代的部分。

歌詞字幕

使用者在 App 貼上歌詞文字(或放 inputs/lyrics.txt / .lrc),用他提供的音檔自動對時:
python .claude/skills/video-clone/scripts/align_lyrics.py <音檔> inputs/lyrics.txt --out analysis/lyrics/subs.lrc [--start s --end s]
(faster-whisper 的字詞時間只當量尺,文字一律用使用者貼的;輸出 .lrc 與 .json,每句附匹配度,匹配度低的句子用前後插值)。
字幕只能來自這些檔案,不自行聽寫或補寫歌詞。

6. 依回饋修改

使用者會用「第幾秒哪裡怪」回饋。只改對應鏡頭,重渲染那段影格(painted-animation:刪掉 out/frames 對應範圍再 --frames),重新編碼。

規則

  • 角色:

    • 使用者自己擁有的角色可以直接用:使用者提供自家角色/吉祥物的設計圖(放在 inputs/),就照它製作並保持造型一致,不必換成原創。
      設計圖就是規格:比例、眼睛、手腳、配色照圖量(不要拿引擎內建的同名角色改),配件綁在臉的錨點上;角色關、鏡頭審查、評審都要把設計圖和畫面並排比。

    • 使用者點名要用的角色可以直接用:自己上網找它的造型(衣服、髮型、配件、配色)照著做,不要拒絕或換成「神似原創」。
    • 使用者沒指定角色時用原創角色。
  • 歌詞:只使用使用者提供的 LRC / 歌詞文字,不自行寫出歌詞;分鏡與回報中也不要引用歌詞內容。
  • 參考片:只學風格與手法,不複製它的畫面、角色、Logo 或素材。
  • 媒材:目前只做 2D(3D 賽道暫停,見第 2 步);不做的是生成真人實拍影像或真實人物的臉。
  • 使用者自己的產品:使用者提供產品照片時,用它重建產品(blender-product-film 的 prep_product.py)。標語與賣點只用產品上印的資訊或使用者給的資料,不自編規格或數字;其他品牌的名稱與 Logo 不放進片裡。
  • 有疑問但不影響方向的細節,用合理預設先做,完成後再列出來讓使用者調。

擴充新風格

使用者要加風格時:複製 styles/_TEMPLATE.md 成 styles/<name>.md,填 engine(必須是 .claude/skills/ 下已安裝的 skill;沒有的話先幫使用者找並安裝可信的開源 skill,裝前掃過腳本),填辨識特徵、製作預設、已知的坑。每次製作中踩到新坑,都回頭補進對應風格檔的「已知的坑」。