Communitygithub.com

Jenesyx/reel-split

當使用者輸入 /reel-split 或要求分割畫面解說影片時使用——上半部約 45% 為動態面板,下方全程顯示講者,無字幕、無音效;典型用於「我發現這個工具 / 這裡有 5 個技巧」類型的 talking-head 原始影片。

reel-split 是什麼?

這是一個專為 AI 代理(如 Claude Code、Cursor 等)設計的技能,用於自動化產生「分割畫面解說影片」。其核心功能是在原始 talking-head 影片的上半部(預設 45% 高度)疊加一個奶油色面板,內部包含卡片、儀表、切換開關、終端機、標籤等 UI 風格元件,即時圖解講者所述的內容。技能支援完整的自動化管線:從解析輸入參數、辨識講者臉部位置、逐句轉錄與提示詞校對,到根據語音時間軸生成場景腳本、建置 HTML/JS 動畫、快速預覽與最終渲染。輸出的影片不含字幕或音效,結尾固定顯示留言關鍵字與追蹤卡片。此技能特別適合製作工具教學、產品技巧這類需要視覺化輔助的短影片,支援 Windows/macOS/Linux,並會自動處理 HDR 色調映射與 RTL 文字等邊緣案例。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Jenesyx/arta-edit-studio/tree/main/.claude/skills/reel-split

在你喜歡的 AI 中提問

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

說明文件

Reel — 分割畫面編輯(講者上方 45% 面板)

一個固定的奶油色面板填滿畫面上半部(1080 × split.panel_height,預設 864 = 45%),內部包含 UI 風格的元件——卡片、儀表、切換開關、終端機、標籤——精確圖解正在說的內容。講者位於下方,比例為 1,且從不移動。結尾:先以大字顯示留言關鍵字,再接追蹤卡片。實作範例:examples/split/(一個真實 100 秒影片的計畫稿 + 場景模組,內容關於五個 Claude 技能)。

引數:$ARGUMENTS

預設值(僅在使用者要求時修改)

優先讀取 reel.config.json(若無則回退至 reel.config.example.json)。

項目預設值
分割"split": split.panel_height(864 → 面板 45%,講者 55%;960 = 50/50)
講者比例 1,無縮放、無移動;臉部居中於講者區域(speaker_y)
安全框"safe": split.safe = [64, 160, 64, 32] → 場景內容位於 952 × 672 區域,從頂部向下 160 px 開始(Instagram 標題 / 手機狀態列會遮蓋頂部)
字幕 / 音效 / 音樂無。音訊 = 原始錄音的混音,由 finish.py 重新混流
原始片段假設已剪輯、調色、加入音樂 → 直接使用。未剪輯原始檔 → 先詢問
CTA留言關鍵字(單字或數字)以大型對話框卡片呈現;追蹤卡片 "handle": creator.handle,純文字,不使用人臉裁切
調色盤split_palette:奶油色面板、墨色文字、強調色填充;奶油色上的文字使用 accent_deep(對比色)

輸入

從引數取得原始片段名稱與主題。僅在缺少以下資訊時,一次性地在單一訊息中詢問:原始片段是否已剪輯/調色/加入音樂、留言關鍵字、以及 Whisper 可能聽錯的名稱或術語(工具名與產品名)。

管線

PY = .venv/Scripts/python.exe -X utf8(Windows)或 .venv/bin/python -X utf8(macOS/Linux)。長時間步驟在背景執行。

#步驟指令 / 動作檢查點
1檢視ffprobe;聯絡表 ffmpeg -i raw/<take> -vf fps=1/5,scale=216:384,tile=9x2 -frames:v 1 work/<take>/sheet.jpg 並檢視頭頂上方是否為空白牆面?是否已剪輯?
2轉錄$PY tools/transcribe.py <take> --prompt "<names, jargon>"校對工具名稱;間隔 > 3 秒 → 重新轉錄該視窗
3人臉$PY tools/face_track.py <take> --split <panel_height>輸出 speaker_y
4節奏規劃每段想法一個場景,通常 3–7 秒,每個元件固定於一個口說單字(提示點 = 單字開始)。場景改變內容,不改變佈局
5計畫檔work/<take>/showcase.json 來自 examples/split/showcase.json:video("../../raw/<file>")、split、speaker_y、safe、scenes_module、scenes[] {kind, start, end, cue{...}}、追蹤場景的 handle;_note 紀錄人臉編號
6場景tools/scenes_<slug>.py 來自 examples/split/scenes_5skills.py:每種 kind 對應一個 sc_<kind>(i, s) -> (html, js)、RENDER 字典、可選 CSS/JS。座標位於安全框內(寬 952);id 為 s{i}-*;提示點時間為絕對時間。sc_comment、sc_follow 是 CTA
7建置$PY tools/showcase_build.py <take>;在 work/<take>/sc 中:npx hyperframes lint public → 0 錯誤;npx hyperframes snapshot public -o ../snaps --no-end --describe false --at <每個場景的中間時間>;讀取快照表、修正文字位於面板內,不得超出標題
8快速渲染$PY tools/finish.py <take> --seconds 12;讀取 work/<take>/sc/quick_sheet.jpg
9完整渲染$PY tools/finish.py <take>(背景)→ final/<take>/,驗證,qa/sheet.jpg讀取快照表
10報告路徑、長度、場景數、驗證結果。若學到新事項,則加入本技能

面板規則

  • 元件圖解「正在說」的句子:當提到儲存庫時顯示儲存庫卡片,比較時顯示儀表,說「不是這個」時顯示刪除線。
  • 每個場景在下一場景開始前 0.25 秒淡出(建置器自動處理);場景內,元件在其提示點單字出現時入場。
  • 畫面中的數字必須是原始片段中的實際計數。
  • showcase_build.py 內建的場景種類(hook、repo、cta……)早於 45% 安全框,可能溢出;請改用 tools/scenes_<slug>.py 基於 examples/split/scenes_5skills.py 來撰寫種類。
  • 波斯語 / 阿拉伯語文字:使用 .fa 類別(在元素上設定 RTL,絕不在 <html> 上設定 dir="rtl")、letter-spacing: 0、透過 fa() 顯示數字、大型零使用拉丁字母 0。
  • 同一個屬性上不得有重疊的補間動畫,不得使用 Math.random / from:"random",滑入效果的起始狀態需包含 autoAlpha:0。
  • 若任何來源片段為 HDR(HLG),需先進行色調映射(tools/story_assets.py 中的 TONEMAP)——finish.py 遇到「HDR auto-promotion」會停止。
  • hyperframes snapshot 不能證明渲染結果——步驟 8 才是。

Individual skills in this repo

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

相關技能