Communitygithub.com

zappurenfuro/movie-recap

從使用者提供的本地影片或影集,製作完整的旁白版電影回顧與短版 Instagram Reels,包含字幕、縮圖與上傳文案。

movie-recap 是什麼?

這是一個專為 AI 代理(如 Claude Code、Codex)設計的電影回顧技能,能自動從使用者指定的本地影片檔案(MKV、MP4 等)分析內容、撰寫旁白腳本、合成語音,並輸出兩種成品:一部完整的旁白版電影回顧(Full Recap)與一部簡短的 Instagram Reels 格式影片。每個成品都會附帶對應的 TTS 字幕、顯示用字幕、縮圖以及上傳用文案。技能會優先使用本地安裝的 Kokoro TTS 引擎與 faster-whisper 語音辨識模型,並透過 FFmpeg 進行影片渲染。它會自動排除重複的輸出檔案,避免覆寫先前的工作,且每次執行都會重新分析來源影片以確保內容原創性。支援 GPU 加速,但預設以 CPU 為主要運算單元。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/zappurenfuro/movie-recap/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

電影回顧

呼叫方式與預設範圍

Claude Code: /movie-recap Lucky。 Codex: $movie-recap Lucky(或從主機的技能選取器中選取此技能)。 引號內的影片路徑或資料夾也可用作參數。從呼叫訊息中讀取標題/路徑與可選的範圍。Claude Code 參數:$ARGUMENTS。如果主機未展開該 token,請使用使用者的實際訊息,而非 literal token 作為檔名。

預設:完成完整回顧與Reels兩者,包含下列檔案。將此視為執行工作的指令,而非只是撰寫腳本、大綱或編輯計畫。僅在使用者明確要求時,才只進行完整回顧或只進行 Reels。不要因為有人要求檢查、安裝、說明或修改此技能就開始渲染。

此檔案包含目前合併的兩個回顧範本,已移除過時的偏好記錄。完整回顧的編輯規則絕不能洩漏到 Reels 中。明確的使用者當前指示會覆蓋這些預設值。在一般執行過程中,請勿變更來源範本或其他影片專案。

解析輸入

  1. 從使用者選定的專案資料夾開始。搜尋提供的本地影片檔案(mkv、mp4、mov、m4v、webm、avi)與附帶的字幕。偏好明確提供的路徑。對於像是 Lucky 的標題,比對檔名與相關子資料夾,忽略標點符號/大小寫與常見的釋出後綴。
  2. 從來源選取中排除先前的回顧匯出、預告片、樣本、縮圖與暫存工作。在選擇前先探查候選媒體;不要僅因為檔案最長就選取。從鏡頭、片尾字幕與字幕驗證身分。
  3. 如果要求的標題只有一個合理的來源,則直接進行,無需詢問。如果 Lucky 符合多個影集,或兩個不同的電影仍屬合理,則提出一個簡潔的問題來識別候選項目。不要默默地合併影集或任意選擇一個。如果沒有標題,則使用唯一明確的來源;否則詢問。如果沒有來源,則回報查詢位置並請求其路徑。不要自動下載電影。
  4. 保持來源不變。在來源旁建立新的 <Title>-Full-Recap 與 <Title>-Reel-Recap 資料夾。如果任一已存在,則選擇一致的未使用 -Edit-2、-Edit-3 等配對,而非覆寫先前的工作。在適用時,名稱中使用影集識別碼。
  5. 在最終資料夾外建立一個範圍限定的任務工作資料夾。讀取適用的專案指示,但保持兩個模式合約分開。不要覆寫不相關的現有 AGENTS.md。如果需要保留專案指示,則將其保留在來源根目錄或獨立的任務工作空間中,而不是放在精簡的最終輸出中。

工具、語音與實際執行

自動安裝的執行環境

在搜尋全域工具之前,請先讀取此已安裝 SKILL.md 旁的 runtime.json。遵循其 manifest_path 並重新讀取共享 manifest;要求 status: ready。使用其絕對路徑的 python、ffmpeg、kokoro_model、kokoro_voices、source_whisper_model(多語言來源影片辨識)與 whisper_model(英文旁白對齊)。這些路徑消除了使用者需啟動虛擬環境或手動定位模型的需求。使用此 Python 環境中的 PyAV 進行探查;安裝程式不提供單獨的 ffprobe 執行檔。預設優先使用 CPU,僅在驗證正常後才使用可用的 GPU。

如果指標不存在,也檢查 ~/.movie-recap/runtime-v1/runtime.json,然後執行以下可攜式發現流程。如果共享 manifest 不存在、過時或未就緒,請說明實際的設定錯誤,並引導使用者執行此儲存庫的 python install.py --target claude 或 --target codex(在取代技能時使用 --update)。如果使用者要求您設定相依性且儲存庫可用,請自行執行安裝程式。不要僅因為 manifest 檔案存在就報告設定成功;請檢查引用的執行檔/模型。切勿將 runtime.json 包含在公開儲存庫中,因為它包含機器特定的路徑。

這是一種代理工作流程,而非獨立的影片渲染程式。在撰寫遺失的編輯邏輯之前,請先檢查並重複使用相容的生產輔助工具。發現 FFmpeg/ffprobe(或 PyAV 探查)、Python、TTS 引擎與 ASR/對齊工具。在投入長時間渲染前,先對簡短編碼進行探查。如果 NVENC 不可用,則使用相容的 CPU 編碼。切勿在僅產出文字指令時就宣稱已完成影片。

預設旁白:本地 Kokoro am_michael,英文,以 1.00x 速度合成。完整回顧:應用恰好一次 atempo=1.10 調整。Reels:偏好 1.00x,在考慮提升至 1.30x 之前先縮短腳本。不要在不同的輸出之間默默地切換語音或聲稱擁有確切的 Instagram 語音。重複使用已安裝的模型;在使用付費服務前先詢問。如果所需的本地執行或可用的語音不可用,請報告具體的阻礙,不要假裝一個獨立的 SKILL.md 就能安裝這些功能。儲存庫安裝程式會提供自動設定。

可攜式相依性發現:

  • 從活躍環境或使用者提供的路徑中找到 Python 與 FFmpeg/ffprobe。如果已安裝,imageio_ffmpeg.get_ffmpeg_exe() 可以定位 FFmpeg 二進位檔。
  • 從使用者已安裝的 TTS 環境中找到 Kokoro ONNX 模型與語音資料。不要假設特定的使用者名稱、下載資料夾或作業系統。如果檔案遺失,請報告所需的資源並請求其路徑或根據需要設定權限。
  • 在當前使用者的 Hugging Face 快取或使用者指定的模型目錄中尋找快取的 faster-whisper 模型。探測 CUDA 支援,必要時回退到 CPU。
  • 在每台機器上發現等效的本地工具。不要將模型權重、API 憑證或影片片段與此技能打包在一起。

重複使用、全新內容與重疊工作

  • 在撰寫替代方案之前,先重複使用可運行的通用程式碼、已安裝的工具/模型、schema、渲染/濾鏡建構器、字幕工具、驗證與封裝邏輯。首先檢查相容性;僅改寫缺少的行為。將程式碼與電影特定的資料分開。切勿將舊的影片路徑、情節、腳本、來源時間對應、旁白、品牌或憑證帶入新的工作或公開輔助工具中。
  • 每個新的回顧製作都需要對提供的來源進行新的分析、新撰寫的完整/Reels 腳本,以及新合成的旁白。不要為了捷徑而讀取或重複使用先前的回顧分析、產生的逐字稿、腳本、鏡頭選擇或語音。來源提供的字幕是有效的輸入。在完整回顧與 Reels 之間共享當前執行的新分析,同時保持其腳本與編輯合約分開。明確的修訂版本(例如“相同影片,改變裁切”)可以保留未受影響的內容;請勿不必要地重新產生。
  • 相同執行的重試可以重複使用已驗證且未變更的結果。記錄來源身分、腳本修訂版、語音/模型/速率、轉換、編碼器設定與輔助工具版本及其中間產物。當輸入變更時,使受影響的工作及其相依的時序、字幕、圖片與章節失效。僅檔案存在並非快取驗證。新的全新執行不得繼承舊的內容快取。
  • 重疊獨立工作:轉錄與視覺取樣;合成已核准的自然段落與鏡頭檢查;縮圖與草稿上傳文案與渲染。在當前執行分析後,完整回顧與 Reels 可以獨立進行。僅在相關語音被測量/對齊後,才最終確定圖片持續時間與字幕,並在時間軸鎖定後才確定章節。不要為了讓工人保持忙碌而合成未審查的草稿。
  • 在幫助時,對 shell 階段使用可重複使用的工作執行器;閱讀其 manifest 與工作流程指南。它提供了相依性、有限並行、獨佔資源與階段時序。它不會分析電影或建立編輯。重複使用相容的本地生產輔助工具,而非重新建立;僅撰寫遺失的邏輯。將編輯審查保留給代理。在支援的情況下,使用長時間運作的 TTS 程序以在段落之間保留已載入的模型。
  • 從每個受限資源的兩個獨立工作與一個繁重工作開始。在採用之前對 GPU TTS 或額外工作人員進行基準測試;保留發音、暫停、語音與編碼品質。如果記憶體或 CPU/GPU 競爭導致工作變慢,則減少並行。重疊程序並不代表可以產生代理或使用付費服務。
  • 測量從來源檢查到最終驗證的經過時間,包括設定、修正與失敗。分別記錄階段時序;切勿加總重疊的持續時間或將快取重新渲染等同於全新製作。不要為了速度目標而縮短故事、超過旁白速度限制、降低匯出品質或跳過檢查。

共享生產工作流程

  1. 探查來源串流、持續時間、有效尺寸、幀率、音訊語言與字幕。閱讀對白並取樣整個故事,包括其結尾。如果可用的字幕遺失,則使用本地 ASR;視覺驗證重要動作,而非依賴 ASR 猜測。區分夢境、倒敘、傳說與不確定的結果與實際事件。網路研究可以佐證影片身分/年份;切勿用情節猜測取代鏡頭分析。
  2. 撰寫簡潔、特定的英文旁白,並具有準確的因果關係。避免 AI 口號、堆疊的戲劇片段、虛構的對白與重複的填充內容。為每個敘述的事件建立一個包含確切段落的來源時間對應。完整回顧涵蓋完整故事。Reels 建立背景並在高潮開始時停止,具有自己的腳本與劇透截止點。
  3. 合成完整的段落或自然的句子,而非簡短的顯示字幕片段。將它們組合成連續的旁白,並帶有自然的呼吸暫停。測量實際調整後的語音,然後建立圖片時間軸。保留音節,不要為了適應任意的鏡頭持續時間而拉伸音訊。
  4. 將單詞對齊到產生的語音。審計遺漏、專有名稱與意外的語音。使用 faster-whisper 時,避免提供整個預期腳本作為 initial_prompt;它可能會產生幻覺的單詞或跳過開頭。如果由於 PyAV API 不匹配而導致音訊解碼失敗,則使用 FFmpeg 解碼為單聲道 16 kHz PCM 並將 NumPy 陣列傳遞給 Whisper。檢查低置信度的結果,而不是接受偽造的單詞時間戳。
  5. 保留一個包含來源進/出、輸出開始/結束、旁白短語錨點、凍結點與轉換的臨時編輯 manifest。將命名的動作放置在其口語短語處或稍早。檢查中間動作幀與渲染的鏡頭邊界。切勿在 '他們接吻' 時覆蓋凍結的擁抱,或在 '搜尋 CCTV' 幾秒鐘後才使用不相關的鏡頭。
  6. 使用 A 部分渲染完整回顧,使用 B 部分渲染 Reels;獨立工作可以在機器限制內重疊。僅重複使用當前執行中新鮮的來源分析,而非完整回顧中轉換後的圖片。保持幀準確的時序,使用一致的 CFR、明確的幀計數與 concat 持續時間。檢查相同執行的快取渲染與當前腳本、來源選擇與設定;使變更的剪輯失效,而不是重複使用過時的檔案。在可能的情況下,對相容的圖片批次進行一次編碼並串流複製其組合;對其兩個混音重複使用 Reels 圖片串流。當修正允許時,僅重新渲染受影響的批次,然後重新檢查最終組裝的匯出。
  7. 將清晰的旁白與安靜的、分離的適當背景音樂混合。可接受克制的原始合成配樂。不要自動添加 Undertow。明確的音訊對映必須從完整匯出中排除所有電影音訊。對兩種模式使用 H.264 High、yuv420p、CFR、方形像素、AAC-LC 立體聲(48 kHz 為合適)與 MP4 faststart。
  8. 從相同的旁白單詞與測量的時序中獨立產生自然短語 TTS SRT 與簡短顯示 SRT。對兩者使用 A 部分的共享字幕規則;其無原始音訊/僅完整匯出的限制不會覆蓋 B 部分。保留每個單詞、標點符號與順序。按指定提供上傳文案與縮圖。
  9. 驗證完整的解碼、預期的幀計數/持續時間、尺寸、編解碼器設定檔、音訊淨空、非重疊的 SRT 時序與精確的腳本重構。審計每個完整剪輯的總持續時間與非連續的來源選擇。比較兩個 Reels 圖片串流/時序。檢查縮圖與選定的旁白動作。在可用時,使用音訊審查具代表性的運動;僅靠靜態圖片與中繼資料無法證明流暢播放。如實報告任何無法進行的正常速度聽/看檢查。
  10. 僅在驗證後,使用任務專案中明確驗證的路徑清理任務產生的暫存檔案。保留來源、先前的編輯、共享工具/模型、指示與 deliverables。不要移除共享快取。如果主機阻止清理,請不要透過另一個 shell 或語言重試以繞過封鎖;報告保留的位置與原因。未經明確授權,切勿發布、上傳或對主張提出異議。

最終套件合約

將 <Title> 替換為已驗證的電影/影集標籤。預設交付包含三個 MP4 檔案:一個完整版與兩個 Reels 版本。

<Title>-Full-Recap/
  <Title>-recap-with-narration.mp4
  <Title>-narration-TTS.srt
  <Title>-captions-display.srt
  youtube-upload.txt
  thumbnails/
    thumbnail-01.png
    thumbnail-02.png
    thumbnail-03.png
<Title>-Reel-Recap/
  <Title>-recap-with-narration.mp4
  <Title>-recap-without-narration.mp4
  narration.txt
  <Title>-narration-TTS.srt
  <Title>-captions-display.srt
  instagram-copy.txt

不要建立無旁白的完整回顧影片或空白的原始音訊 SRT。在此合併工作流程中,完整的 YT 上傳文案是強制性的,而非可選的。除非使用者要求,否則不要添加標誌、浮水印或頻道品牌。如果要求編輯或刪除先前製作的內容,請先取得確認,不要假設已獲得授權。在此套件合約完成且檔案經過驗證之前,請勿開始清理。

相關技能