Communitygithub.com

Jenesyx/reel-story

當使用者執行 /reel-story 或要求全畫面、動感強烈的 Reel 編輯時使用—— speaker 全螢幕,穿插創作者自己的 B-roll 片段,貼紙和 widget 在口語詞彙上彈出,吉祥物、speaker 背後的大字,無字幕——針對原始錄製的 talking-head 片段。

reel-story 是什麼?

此技能用於將一個 talking-head 原始錄製片段(raw/)轉換成一個全畫面、動感十足的 Reel 故事編輯。它會產生一個最終影片,其中 speaker 保持全螢幕,並通過以下方式講述故事:穿插創作者自己的 B-roll 剪輯、在口語詞彙上彈出的貼紙/卡片/widget、一個反應吉祥物,以及「深度時刻」——巨大的文字或有品牌的背景出現在 speaker 身後(人物遮罩)。 使用者可以通過 /reel-story 命令或明確要求此編輯風格來觸發此技能。該技能支援 macOS 和 Windows 平台,並依賴一個結構化的 12 步驟管道,涵蓋從分析原始片段、轉錄、臉部追蹤、資產準備,到使用 Hyperframes 技術(基於 GSAP 動畫構建)進行場景構建和最終渲染的完整流程。 此技能遵循一套嚴格的節奏規則,以保持觀眾參與度:每 2-4 秒必須有變化,混合使用不同模式(speaker + 貼紙、B-roll 穿插、深度時刻、全螢幕圖形),並設定安全區域以避免 Instagram 介面元素。它還內建了對 HDR/HLG 來源、鏡像 B-roll 以及從右到左語言(如波斯語/阿拉伯語)的特定處理。使用者與工具的互動是引導式的:AI 會詢問一次關於片段狀態、評論關鍵詞和專業術語的缺失資訊,然後自動完成餘下工作。

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

在你喜歡的 AI 中提問

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

說明文件

Reel — 故事編輯(全畫面動感)

Speaker 保持全螢幕。故事透過以下方式講述:創作者自己的片段穿插、在口語詞彙上彈出的貼紙/卡片/widget、一個反應吉祥物,以及深度時刻——巨大的文字或有品牌的背景出現在 speaker 身後(人物遮罩)。工作範例:examples/story/story_stoodi_inviteraw.py。

引數:$ARGUMENTS

預設值(只有當使用者特別要求時才更改)

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

項目預設值
字幕無。 關鍵詞圖形可以;絕不顯示連續轉錄文字
音訊使用片段本身的混音,不經修改——由 finish.py 重新混流。無音效,無背景音樂
片段假設已經裁剪、調色、加入音樂→不要裁剪或調色。原始/未剪輯→先詢問
B-roll來自設定的 broll_dir;描述在 work/_catalog/<folder>/NOTES.md 中
品牌來自設定的 brand + palette。無吉祥物檔案→無吉祥物場景
CTA評論關鍵詞以大字顯示在畫面上;追蹤卡片 = 僅 @<creator.handle> 文字,絕不使用人臉裁剪
語言來自設定的 language(Whisper + 要使用的文字類別)

輸入

片段名稱 + 主題來自引數。僅在一次訊息中詢問一次缺失的資訊:片段是否已裁剪/調色/加入音樂;評論關鍵詞;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 "<名稱, 術語>"校對名稱;單詞間隔 > 3 秒→重新轉錄該視窗
3臉部$PY tools/face_track.py <take>輸出 FACE = (x, y) 和頭頂位置
4B-roll$PY tools/story_assets.py <take> catalog;讀取 NOTES.md;查看尚未描述的片段條目,並將它們的行新增到 NOTES.mdHDR / 鏡像 / VFR 標誌
5節奏表撰寫 work/<take>/beats.md:`timewords
6遮罩如果有任何深度時刻:$PY tools/story_assets.py <take> matte(80 秒片段約 8 分鐘 CPU,背景執行,無平行 ffmpeg)work/<take>/matte/fg.webm
7片段模組複製 examples/story/story_stoodi_inviteraw.py → tools/story_<slug>.py(slug:片段名稱,非字母數字字元 → _);設定 NAME、FACE、BROLL、TILES、MIRRORED、場景、SCENES(DUR 可選——會自動探測)。吉祥物名稱 = assets/mascot 中的檔案(小寫,空格 → -)
8資產$PY tools/story_assets.py <take> all(吉祥物、標誌、B-roll 剪輯、磁磚)
9建置$PY tools/story_build.py <take>;在 work/<take>/sc 中:npx hyperframes lint public → 0 個錯誤(nested_structure 警告是預期的);npx hyperframes snapshot public -o ../snaps --no-end --describe false --at <every beat>;讀取聯絡表,修正,重新建置
10快速渲染$PY tools/finish.py <take> --seconds 12;讀取 work/<take>/sc/quick_sheet.jpg疊加層進入並離開;顏色不暗淡
11完整渲染$PY tools/finish.py <take>(80 秒約 12 分鐘,背景執行)→ final/<take>/,驗證,qa/sheet.jpg逐幀讀取聯絡表
12報告路徑、長度、節奏、使用的片段、任何翻轉/色調映射的內容,驗證結果。如果學到了新東西,將其添加到這個技能中

節奏規則

  • 每 2-4 秒必須有變化;絕不能有超過約 5 秒的純 speaker。
  • 混合不同模式:speaker + 貼紙 · B-roll 穿插(約 25–30% 的運行時間)· 深度時刻(每個 Reel 4–6 次)· 全螢幕圖形且 speaker 作為 facecam 氣泡(最多 1–2 次)。
  • 提示點 = transcript.json 中口語單詞的開始時間。每個元素在下一個節奏之前離開。
  • 深度文字位於頭頂上方(來自步驟 3 的頭頂位置):一次一個大字,前一個字飛出。堆疊的行最終會隱藏在頭部後面。
  • 安全區域:在 y 150(Instagram 標題)上方或 y 1560(字幕)下方無文字;在 y 1100–1650 之間,保持 x < 960(喜歡/評論按鈕)。
  • 作為事實顯示的數字必須來自片段。說明性標籤是可以的。
  • 波斯語 / 阿拉伯語文字:.fa 類(RTL 作用域在元素內——絕不在 <html> 上使用 dir="rtl",它會渲染成黑色),letter-spacing: 0,數字透過 fa() 函式處理,大零使用拉丁文 0(波斯零是一個點)。拉丁文文字:.en;巨大的顯示文字:.blk。

引擎契約——已修復的錯誤

  • 場景 = def scene(c: Comp):c.clip(layer, id, start, end, html, track)、c.broll(name, a, b, mstart)、c.matte(n, a, b)、c.j(js...)。圖層:under(氣泡後方)、tiles、behind(片段與遮罩之間)、fw、broll、over、fx。
  • Clip div 獲得 id k-<id>;動畫化 #<id>-i 或內部 id——永遠不要動畫化 .clip 本身。
  • 任何從畫面外滑入的元素在其 from 狀態都需要 autoAlpha:0,否則會提前露出。
  • 元素的第一個 tween 會設定其初始狀態(fromTo 立即渲染);後續的 tween:使用 .to 或 immediateRender:false。
  • 永遠不要使用 from:"random" 的 stagger 或 Math.random——在 Python 中使用 random.Random(seed) 來打亂 DOM 順序。
  • 相同屬性、相同元素:一個 tween 必須在下一個開始之前結束(lint overlapping_gsap_tweens)。
  • #cam 的 scale/x/y/clipPath/borderRadius 驅動推進、氣泡和馬賽克效果。遮罩存在於 #cam 內部,因此深度時刻在任何相機縮放比例下都能保持對齊。
  • 包含可讀文字在畫面內的前置相機 B-roll → 加入到 MIRRORED。永遠不要翻轉主要片段。
  • HLG/HDR 來源由 story_assets.py 進行色調映射。如果 finish.py 停止在「HDR auto-promotion」,則表示某個來源未經此路徑處理。
  • hyperframes snapshot 並非渲染的證明——步驟 10 才是這個用途。

Individual skills in this repo

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

相關技能