Communitygithub.com

VisroliyaHimanshu/jsxreel

用於製作、修改、縮短、重新定時或為任何應用程式或項目(例如應用指南、教學、示範、解說影片、公告、宣傳片、廣告、Reels 或短劇)重新配音的影片工具(基於 Remotion 和 ElevenLabs)。

jsxreel 是什麼?

jsxreel 是一個專業的 AI 輔助影片製作工具,專為開發者設計,用於建立基於 React 的動畫影片。它結合了 Remotion(用於 React 場景動畫)和 ElevenLabs(用於語音合成),實現影片節奏與旁白的精確同步。此技能的核心優勢在於:所有應用程式和供應商 UI 均以程式碼重建,絕不採用螢幕截圖或螢幕錄製,確保每個畫面都是可維護的 React 組件。它支援多種影片類型(應用指南、故事板公告、宣傳短劇),並提供完整的腳本管理、語音合成、時間軸校準和品質保證工作流程。每個產品擁有獨立的影片專案和視覺風格,技能目錄下的 `scripts/` 資料夾存放了所有自動化工具(如 TTS 生成、幀提取、時間軸壓縮)。該技能主要用於 Claude Code 環境,但也可在 Cursor 或 Codex 中使用,並支援在雲端會話中透過網路密鑰訪問 ElevenLabs API。

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/VisroliyaHimanshu/jsxreel/tree/main/skills/jsxreel

在你喜歡的 AI 中提問

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

說明文件

jsxreel 是做什麼的?

概述

這裡的影片,是透過 Remotion 將 React 場景製作成動畫,並使用 ElevenLabs 進行配音,每個節拍都與口語詞語精確同步。應用程式和供應商的 UI 始終以程式碼重建,絕不顯示為螢幕截圖、螢幕錄製或故事板的幻燈片。如果提供的圖片本身即是內容(例如簽名、標誌、產品照片),則可以作為圖片顯示。每個產品都維護自己的影片專案和視覺風格;此技能包含流程和 scripts/ 目錄中的工具,該目錄位於此技能的基本目錄(在技能載入時顯示)。

專案

如果 ~/.claude/jsxreel/projects.md 存在,請先讀取它(使用者私人列表,存放在技能外部,因此更新不會影響它:包含資料夾、要閱讀的筆記、語音命令、慣例)。然後讀取該專案自己的筆記。未列出的專案:詢問使用者它所在的位置,然後在該處新增一行。

新專案:一個位於產品儲存庫中的 Remotion 專案,包含從此技能複製的 scripts/tts.mjs 和 scripts/stills.mjs(stills.mjs 放在 qa/ 目錄中)。切勿使用其他產品的視覺素材。

工作流程

  1. 類型: 應用指南、故事板公告或宣傳短劇。閱讀其在 kinds.md 中的章節。
  2. 提問 使用 AskUserQuestion(建議優先使用,最多 4 個):格式、目標長度、結尾,以及僅限於素材和專案筆記無法回答的問題。
  3. 撰寫前檢查素材: 故事板副本(錯誤的技術主張、破折號、文字過長無法配音);每個螢幕上的指示(選單路徑、標籤)需與供應商當前文件或應用程式程式碼核對;已提供素材中的個人資料。使用使用者提供的內容,標記問題,並提出詢問。切勿悄悄替換。機密(如真實 QR 碼、令牌、密碼)絕不顯示在螢幕上;應繪製一個範例。
  4. 腳本 scripts/<video>.json:每個場景一行,marks 標記每個節拍(精確、區分大小寫的短語,在其行中唯一),say 用於口語形式(數字、網址)。預算約為每秒 2.6 個單詞,加上每個場景 0.5 秒。以表格形式顯示整個腳本;僅在批准後才花費積分。
  5. 語音: 每個語音一次錄製,透過對齊剪輯(對一個旁白者執行 node scripts/tts.mjs <video>)。轉錄這些剪輯(使用 ElevenLabs 語音轉文字,POST /v1/speech-to-text,模型 scribe_v1,或專案自己的工具)以確認每個片段包含其自己的單詞;每次錄製花費幾美分。然後調整時間:python3 -I <skill dir>/scripts/tighten.py "$PWD" <video> <prefix>(原始檔案保留在 .voice-orig/ 中,請參閱 --help)。短劇則保留其喜劇性停頓。在雲端會話中,ElevenLabs 金鑰來自網路密鑰(ELEVENLABS_API_KEY=proxy,請參閱 README 的瀏覽器部分);切勿要求使用者將金鑰貼入聊天中。
  6. 建置: data.ts、timeline.ts、場景,以及使用新的類別前綴的獨立 CSS 檔案。場景長度 = max(MIN, LEAD + clip + TAIL),LEAD 約為 0.15,TAIL 約為 0.2;MIN 涵蓋場景的最後事件加 0.6 秒;點擊示範會獲得較長的 LEAD,以便在第一次點擊前 UI 可見。在 Root.tsx 中註冊,新增 voice:/render: 腳本,並在專案筆記(README 或計劃)中記錄影片資訊。
  7. 品質保證(如下),然後報告:絕對的 mp4 路徑、與目標長度的比較、需要確認的假設(範例資料、重建的 UI 標籤、任何已批准但你修改過的行,新舊並列顯示)、需要透過聽覺檢查的內容。僅在要求時才提交。

品質保證

  • npx tsc --noEmit;node qa/stills.mjs <Comp> <frames…>(如果編輯後的第一次呼叫崩潰,請重新執行)。
  • 每次點擊或點擊動作在其按下影格上,堆疊在一張連絡人表中:手指或游標位於目標上。
  • 每個轉場之間有 4 到 5 個影格。
  • ffprobe 長度;每個專案的響度(指南:平均約 -21 dB;社群媒體:約 -14 LUFS,峰值最多 -0.8 dB);使用 silencedetect 檢測超過約 1.3 秒且非故意喜劇節拍的間隙。
  • 更改了共享檔案:渲染較舊影片的影格,PSNR 必須為 inf。
  • 刪除 QA 生成的 PNG 檔案。

常見錯誤

錯誤修正方式
ElevenLabs 自然節奏使用者覺得太慢。在首次渲染前調整時間。
在檢查 UI 標籤前錄製先檢查供應商文件或應用程式程式碼;重新錄製會花費積分。
每行發送一個 TTS 請求語音在行與行之間會改變。每個語音一次錄製。
硬編碼的節拍時間使用 Marks;新的錄製會重新調整所有時間。
盲目信任對齊eleven_v3 對話可能漂移約 0.75 秒。轉錄剪輯。
使用另一個專案的外觀每個產品有自己的套件;故事板保持其自身外觀。
呼叫者的 style 傳播到設定 transform 的包裝器上呼叫者的 transform 會勝出,導致縮放丟失。將呼叫者的樣式放在一個外層 div 上。
zsh:$LIST 不會進行單詞分割,==== 是錯誤使用內聯列表;在 Python 中建構 ffmpeg 過濾器。
port 3000 已被佔用使用一個空閒的 --port。
機器上沒有 Chrome任何 Chromium 瀏覽器都可以使用(Chromium、Edge、Brave,透過 --browser-executable);如果沒有,省略該標誌,Remotion 會下載自己的無頭 Chrome。stills.mjs 會自行選擇。Firefox 和 Safari 無法渲染。
報告中手動輸入的 URL僅使用本地路徑。

相關技能