Communitygithub.com

robertomanfroi/videos-opus

將直式錄影(人物對鏡頭說話)轉換成「手機編輯感」Reels——逐字字幕、原始截圖置於頭頂、小標題、硬剪輯、無停頓無重複、最長90秒。

videos-opus 是什麼?

此技能專為將直式 talking-head 錄影剪輯成「手機自編」風格的 Reels 而設計,目標是讓觀眾感覺影片是由創作者本人在 Instagram 編輯器中剪輯完成,而非專業團隊或 AI 所為。它支援透過 `$K` 啟動器執行完整工作流程,從專案建立(`novo-projeto.mjs`)、快速轉錄、硬剪輯去除停頓與重複(`cortar.mjs`)、精確轉錄校對(`transcrever.mjs`)、原始截圖處理與佈局(`src/index.template.html`)到最終渲染與交付(`renderizar.mjs`)。關鍵視覺規範包括:原始截圖必須為直角無邊框無陰影、字幕一次顯示一個詞(54px 白色帶柔和陰影)、靜態元素僅以硬剪輯進入/退出、禁止動畫與過渡效果。技能內建效能提示(如批次轉錄、使用快照而非完整渲染進行檢查),並要求每次剪輯後重新轉錄以確保乾淨輸出。最終交付時需以葡萄牙語簡短回覆影片位置、被剪掉的內容、使用的截圖及任何疑問。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/robertomanfroi/videos-opus/tree/HEAD/kit/.claude/skills/estilo-celular

在你喜歡的 AI 中提問

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

說明文件

手機編輯風格

唯一規則: 觀看者必須感受到是創作者本人在手機上、用 Instagram 編輯器剪輯的。絕對不能看起來像專業團隊或 AI 做的。有疑慮時:少一點、更原始、更小。這裡精美的動態圖形是錯誤。

開始之前,請閱讀 ../perfil-criadora.md 並載入(或建立)根目錄下的 perfil.json。

視覺 — 不可妥協

元素規則
截圖使用創作者 我的截圖 資料夾中的真實截圖(個人資料頁首、洞察、按讚/留言/儲存、觀看次數、私訊、留言、貼文)。原始裁剪:直角、無邊框、無陰影、無框線、無圓角卡片。置於頭頂上方。
頭頂上方文字使用標題字型 (.tit)、白色、小字型 — 標題 48–70 px,標籤 40–48 px(以 1080 寬度為基準)。與截圖左邊緣對齊。 強調色 (.y) 僅用於偶爾的單字。無襯線字體 (.sans) 只用於「差 / 好 / 爆紅」等標籤。
陰影僅當背景牆面為淺色時使用 (.sh)。絕不能使用方塊、背景或玻璃效果於文字後方。
動作無。 元素以硬剪輯方式進入/退出 (show()/hide())。禁止淡入淡出、滑動、縮放、彈跳。
Emoji在範本中使用真實字元(✅ ❌ 🔥 ❤️ 👇 🚨 …);montar.mjs 會將其替換為 Twemoji 圖案。絕不自行繪製圖示。
字幕逐字顯示,54 px,白色加柔和陰影(不得使用外框)。居中於胸口位置、下巴正下方(reel.json 中的 capTop)。逐字硬剪輯切換。
持續標題一個主題標題可以在螢幕上長時間停留,同時上方的截圖不斷更換。
清單使用 emoji + 文字的核取清單(✅ 字幕 / ❌ 標題),隨著口語逐項顯示。
模擬圖避免使用。請使用真實截圖。僅在沒有截圖且創作者要求時才繪製模擬圖。

剪輯規則

  • 無呼吸聲也無停頓:所有低於 −30 dB 且持續 ≥ 0.15 秒的內容皆被移除(cortar.mjs 會自動處理)。
  • 移除所有重複、錯誤開頭及重新表述的句子。保留最後一個、最乾淨的版本。
  • 轉錄工具會隱藏重複並搞錯時間點。 剪輯後,務必重新轉錄 clean.mp4 並從頭到尾檢查是否有重複句子、被切斷的單字或缺少的動詞。持續修剪直到乾淨為止。
  • 最長 90 秒,除非創作者另有要求。交付時說明哪些內容被捨棄。
  • J/L 剪輯 預設啟用(--jl 6 較柔和,--no-jl 關閉)。

速度規則(創作者的電腦可能較慢 — 優先於下列步驟)

  • novo-projeto.mjs 的轉錄已是 --rapido(輕量模型,僅用於選擇剪輯點)。 clean.mp4 的重新轉錄(字幕用)使用精確模型 — 每個剪輯版本執行一次,而不是每次調整都執行。
  • 在一次呼叫中檢查所有拼接點(一次模型載入): $K --em video-projects/<slug> node ../../$M/transcrever.mjs assets/clean.mp4 --janelas t1,t2,…(時間點以 clean 的時間軸為準)。絕不一次只處理一個時間窗。
  • 不要為了查看幀而渲染整個草稿。使用 $K --em video-projects/<slug> hyperframes snapshot --at t1,t2,… -o snapshots (每次元素更換執行一次)並檢查 PNG 檔案。只在快照確認無誤後才渲染影片一次。 僅當有修改要求時才重新渲染。
  • raw.mp4 / clean.mp4 的編碼器會自動選擇(NVIDIA / Intel / AMD / Apple,否則使用 CPU)。請勿更改。
  • 每個耗時步驟開始前,用一行簡短的葡萄牙語說明正在執行什麼以及可能需要幾分鐘 (「正在轉錄影片 — 在你的電腦上可能需要幾分鐘。」),避免讓等待看起來像是當機。

流程(所有指令透過啟動器 $K 執行)

M=.claude/skills/_motor · K = videos-opus 技能的啟動器:"<VO>\bin\node.exe" "<VO>\scripts\video.mjs" kit,其中 <VO> 是 videos-opus 技能資料夾(包含要求你閱讀本指南的 SKILL.md)。它會將可攜式程式加入路徑,並在套件的工作目錄中執行($K pasta 顯示目前目錄;專案位於 <pasta>\video-projects\<slug>)。$K --em <subpasta> … 在子資料夾內執行。禁止直接使用 npx、Python 或 node:全部必須透過 $K。

  1. 專案 + 快速轉錄: $K node $M/novo-projeto.mjs "<video>" <slug> .claude/skills/estilo-celular → 產生 video-projects/<slug>/,包含 assets/raw.mp4(1080×1920,30 fps)、assets/raw.json、assets/palavras.txt、 字型及 src/index.template.html。slug 應簡短、小寫、使用連字號(promo-engrene)。
  2. 取景: 為 raw 影片拍攝一張聯絡人快照($K --em video-projects/<slug> ffmpeg -i assets/raw.mp4 -vf "fps=1/4,scale=180:-1,tile=12x1" -frames:v 1 assets/contato.png) 並查看:頭頂和下巴的位置。元素位於 y≈100 到頭頂之間; 字幕位於下巴下方 → 在專案根目錄寫入 reel.json:{"capTop": <px>}(預設值 1380)。
  3. 選擇剪輯點: 閱讀 assets/palavras.txt 並寫入 assets/keeps.json ({"fps":30,"keeps":[{"from":0,"to":9.38,"why":"…"}]})。每個 why 用葡萄牙語解釋保留了什麼及原因。
  4. 剪輯: 在 assets/ 目錄內執行:$K --em video-projects/<slug>/assets node ../../../$M/cortar.mjs → 產生 clean.mp4 + edit-decisions.json。
  5. 檢查: 在專案根目錄執行:$K --em video-projects/<slug> node ../../$M/transcrever.mjs assets/clean.mp4 assets/transcript.json --nomes "<個人檔案詞彙>"。 若有重複或被切斷的單字 → 返回步驟 3。若聽錯單字 → assets/caption-fixes.json({"cloud":"Claude"})。 $K --em video-projects/<slug> ffmpeg -i assets/clean.mp4 -af silencedetect=noise=-30dB:d=0.25 -f null - → 不應殘留任何停頓。
  6. 截圖: 列出個人檔案中 pasta_prints 資料夾的圖片(最新的優先),並在使用前查看每張候選圖片。 使用 ffmpeg 裁切至 assets/prints/(-vf crop=w:h:x:y),並在 assets/prints/ORIGEM.md 中記錄來源。 若無合適截圖 → 說明哪個畫面會有幫助,並在無截圖的情況下繼續(創作者之後可要求作為調整)。絕不憑空捏造截圖。
  7. 合成: 編輯 src/index.template.html — 元素放在 ELEMENTOS 區塊,時間點放在 TEMPOS 區塊。 時間點來自 $K --em video-projects/<slug> node ../../$M/ancoras.mjs "句子" "另一句子"(專案根目錄執行),以口語單字為準。僅使用硬剪輯。
  8. 組裝 + 檢查: $K --em video-projects/<slug> node ../../$M/montar.mjs → $K --em video-projects/<slug> hyperframes lint → 對每個元素更換處拍攝快照 ($K --em video-projects/<slug> hyperframes snapshot --at …)並檢查:臉部絕不被遮擋、文字清晰可讀、截圖與標題對齊。 然後渲染並交付(透過啟動器,在套件工作目錄執行):$K node $M/renderizar.mjs <slug> — 檢查鎖定、背景渲染、驗證並自動複製到 prontos/。輸出 3 表示仍在渲染:執行 $K node $M/renderizar.mjs <slug> --esperar 直到顯示 PRONTO。絕不直接執行 $K --em video-projects/<slug> hyperframes render 或手動執行 prontos.mjs。
  9. 交付: 用葡萄牙語簡短回覆:影片位置、哪些內容被剪掉、使用了哪些截圖、哪些部分仍有疑慮。 絕不發布或發送任何內容。

交付後的調整

「去掉價格部分」→ 編輯 keeps.json,重複步驟 4–5,使用 ancoras.mjs 重新計算該片段之後所有內容的時間點,並重複步驟 8。「字幕再往下一些」→ 修改 reel.json 並重複步驟 8。「更換截圖」→ 僅執行步驟 6–8。絕不從頭重做創作者未要求修改的內容。

Individual skills in this repo

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

相關技能