Communitygithub.com

eduramza/shorts-factory

將長影片(轉錄稿 + 中繼資料)轉換為針對留存率最佳化的垂直短片(Shorts/TikTok/Reels),採用鉤子 → 故事 → 回報結構。選取片段、評分、重新排序鉤子、定義剪輯、字幕、縮放、音樂和特效,並回傳 JSON 格式的剪輯決策表(EDL)。

shorts-factory 是什麼?

此技能的核心是將長影片素材轉化為高留存率的垂直短片。它基於「鉤子 → 故事 → 回報」的結構化方法,透過自動化評分系統從完整轉錄稿中選取最佳片段,並確保每個片段在開頭 3 秒內有強烈的鉤子、中段有張力敘事、結尾有明確回報。技能支援三種模式(病毒式傳播、平衡、權威性),分別對應不同目標時長,並提供詳細的剪輯參數,包括動態字幕、縮放、音樂切換和節奏控制。最終輸出為標準化的 JSON 格式剪輯決策表,方便後續自動化剪輯流程,並內建 QA 檢查清單確保品質。此技能適用於 Claude Code、Coder 等支援工具呼叫的 AI 助手,開發者可將其整合到影片處理 pipeline 中,實現從長影片到短影片的半自動化生產。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/eduramza/shorts-factory/tree/HEAD/skills/retention-shorts

在你喜歡的 AI 中提問

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

說明文件

技能:留存率短片(鉤子 → 故事 → 回報)

0. 來源與方法論誠實聲明

基礎:影片「【30 million views】ESSA TÉCNICA VIRALIZOU MEU SHORTS COM 30 MILHÕES DE VISUALIZAÇÕES」(頻道 O Milionário,ID iPpt_INjn8A)。標記為 [影片] 的項目來自作者教學。標記為 [擴充] 的項目是此系統的工程擴展:合理的啟發式規則,但未經影片驗證。必須使用實際留存數據進行校準(請參閱第 10 節)。

1. 核心原則 [影片]

  • 決定短片是否爆紅的關鍵是留存曲線:觀看至結束的人數越多,平台分發越多。
  • 目標:讓留存曲線盡可能平直,沒有下降。重要的是觀眾看到最後。
  • 三個必要部分:鉤子、故事、回報。
  • 劇本/敘事是「汽車引擎」:只有漂亮剪輯而無敘事無法留住觀眾。
  • 時長:約 15 秒以下的影片更容易爆紅,因為更容易完整觀看。較長的影片更難爆紅,但能建立忠實觀眾。如果您的領域需要較長影片,請使用相同三個步驟。

2. 時長模式 [影片 + 擴充]

模式目標時長使用時機
viral12–20 秒(最多 25 秒)最大化觸及。預設。
balanced20–40 秒需要最少上下文的內容。
authority40–75 秒建立忠實觀眾,內容較深入。

使用者選擇模式。即使片段很好,也切勿超出模式時長限制:透過修剪死氣沉沉的部分來縮短。

3. 決策流程(依序進行)

步驟 1:分割候選片段

  • 輸入:包含逐字時間戳記、場景切換、靜音、說話者的轉錄稿。
  • 產生在句子邊界(切勿在句子或想法的中間)開始和結束的候選視窗。產生所需數量 3 倍的候選片段。
  • 每個候選片段必須是自足的:沒有上下文的觀眾無需觀看影片其餘部分也能理解。如果依賴先前上下文,則捨棄或準備一個上下文字幕(第 6 節)。

步驟 2:為每個候選片段評分(0–100)

標準權重評估內容
鉤子潛力25前 3 秒內是否有清晰、直接、快速且承諾回報的句子或時刻 [影片]?
張力/敘事25是否有衝突、出錯的事、障礙、開放式問題或懸念 [影片]?是否有解決方案?
回報20結尾是否兌現了鉤子的承諾(結果、揭露、情感、結論)[影片]?
自足性15獨立存在時是否合理? [擴充]
密度/節奏10廢話少、停頓少、每隔幾秒就有資訊 [擴充]
情感/新穎性5驚喜、幽默、強烈觀點、震撼數字 [擴充]

規則:

  • 鉤子 < 12/25 或 回報 < 8/20 → 捨棄,無論總分如何。
  • 向使用者顯示每個標準的評分以及每個標準的一行簡短理由。
  • 按評分排序。避免重疊超過 30% 的剪輯:保留最佳者。

步驟 3:映射鉤子 → 故事 → 回報結構

對於選定的候選片段,在時間軸上標記:

  • 鉤子(0–3 秒) [影片]:清晰、直接、快速,帶有承諾。無問候、無「大家好」、無「那麼」、無自我介紹。
  • 故事(中間) [影片]:一連串的張力節拍。每個節拍是以下類型之一:衝突(出錯)、解決方案(採取的行動)、懸念(「但在…之前,發生了一些事」)。敘事必須有一個時刻,故事被「打斷」並引起好奇心。
  • 回報(最後 3–5 秒) [影片]:兌現鉤子承諾的獎勵。

如果原始片段不是以強鉤子開頭,請應用冷開場技巧 [擴充]:

  1. 在片段內部找到最強的句子(承諾、結果或最具煽動性的句子)。
  2. 將該句子放在開頭(0–3 秒)作為鉤子,然後回到時間順序。
  3. 僅在該句子本身合理且回報仍然清晰時才這樣做。不得扭曲原意:禁止改變說話者所說的內容的含義。

步驟 4:鉤子工程 [影片 + 擴充]

  • 產生3 種螢幕文字鉤子(開場標題)變體,每種不超過 8 個字:
    • 結果承諾(「讓奶奶流淚的 5 美元禮物」)。
    • 好奇心/缺口(「我只有 5 美元,然後…」)。
    • 矛盾/挑釁。
  • 文字必須與內容相符(沒有回報無法支撐的點擊誘餌)。
  • 必須在 ≤ 2 秒內讀完。

步驟 5:節奏清理 [擴充]

  • 移除超過 0.35 秒的靜音、猶豫詞(「呃」、「嗯」、「那個」)、重複和虛假開頭。
  • 在揭露(張力)前保留 0.1–0.2 秒的微小停頓,其中的停頓具有功能。
  • 切勿在音節中間剪切:在音頻過零點使用剪切點,並使用 30–60 毫秒的交叉淡化。
  • 如果結果超過模式時長限制,首先移除中間張力最低的節拍,絕不能移除鉤子或回報。

步驟 6:剪輯計劃 [影片 + 擴充]

影片建議的元素,讓觀眾「感覺不到時間流逝」 [影片]:

  1. 動態字幕:逐字顯示,突出顯示正在說的單詞。
  2. 縮放和快速剪輯:始終有事情在發生。
  3. 場景間切換音樂:營造同時發生多件事情的感覺。
  4. 張力部分的懸念配樂,引發觀看結尾的慾望。

建議的操作參數 [擴充],可調整:

  • 視覺節奏:每 1.5–3.5 秒一次視覺變化(縮放、剪輯、換鏡、突出顯示、B-roll)。不得超過 4 秒無變化。
  • 縮放:強調性單詞上使用 punch-in 105–115%;張力部分使用慢縮放(100→108%);下一個剪輯時重置。交替方向以避免疲勞。
  • 字幕:每次顯示 1–3 個單詞,不超過 2 行,當前活動單詞使用突出顯示顏色,位置在底部三分之一處(遠離應用程式介面區域:保持底部邊距約 20%,側邊距約 6%)。僅在強化單詞時使用表情符號。
  • 音樂:
    • 節拍 1(鉤子和開頭):中等能量,0 秒開始。
    • 張力節拍:懸念配樂,音量略微提高,低音更明顯。
    • 回報:解決(張力下降或 swell + 揭露前 0.2 秒靜音)。
    • 音樂切換:僅在節拍/場景邊界處,使用 200–400 毫秒交叉淡化。
    • 人聲始終在音樂之上:語音時進行 −14 至 −18 dB 的壓縮。
  • 音效:剪輯/縮放時使用 whoosh,揭露時使用 hit,回報前使用 risers。最多每約 2 秒一個音效。
  • B-roll/輔助影像:當提及具體事物(物體、地點、數字)時,顯示 1–2 秒。
  • 進度條(可選):強化到達結尾的預期。

步驟 7:影片結尾 [擴充]

  • 回報必須是最後一個相關時刻。在最後一句話後立即剪輯(≤ 0.3 秒緩衝)。
  • 可選的循環模式:如果結尾可以在視覺或口頭上與鉤子銜接,保持最後一幀接近第一幀。
  • 不要有「感謝觀看」或破壞結尾的行動呼籲。如果有 CTA,請在回報上方使用低調文字。

4. 反模式(拒絕或修正)

  • 以問候、長篇背景或「今天我將談論」開頭。
  • 鉤子承諾回報無法實現的內容。
  • 片段在想法中間結束。
  • 超過 4 秒無視覺變化。
  • 音樂音量過大蓋過人聲。
  • 字幕超出安全區域或難以辨識。
  • 改變說話內容含義的剪輯。
  • 影片對於所選模式來說過長。
  • 無助於留存的效果(裝飾用)。

5. 輸出格式:JSON 格式的剪輯決策表(EDL)

輸出必須是僅有有效的 JSON,遵循以下架構。

{
  "clip_id": "string",
  "mode": "viral|balanced|authority",
  "source": { "start": 0.0, "end": 0.0 },
  "scores": {
    "total": 0,
    "hook": 0, "tension": 0, "payoff": 0,
    "self_contained": 0, "density": 0, "emotion": 0,
    "rationale": { "hook": "", "tension": "", "payoff": "" }
  },
  "structure": {
    "hook":    { "start": 0.0, "end": 3.0, "technique": "native|cold_open", "text_overlay_options": ["", "", ""], "chosen_overlay": 0 },
    "beats":   [ { "start": 0.0, "end": 0.0, "type": "conflict|solution|suspense", "note": "" } ],
    "payoff":  { "start": 0.0, "end": 0.0, "note": "" }
  },
  "segments": [
    { "id": "s1", "src_start": 0.0, "src_end": 0.0, "out_start": 0.0, "role": "hook|body|payoff", "speed": 1.0 }
  ],
  "cuts_removed": [ { "src_start": 0.0, "src_end": 0.0, "reason": "silence|filler|repeat|low_tension" } ],
  "reframe": { "mode": "auto_face|split|center|manual", "keyframes": [ { "t": 0.0, "cx": 0.5, "cy": 0.4, "scale": 1.0 } ] },
  "captions": { "style": "string", "words": [ { "t0": 0.0, "t1": 0.0, "text": "", "emphasis": false } ] },
  "effects": [
    { "type": "zoom_punch|zoom_slow|shake|flash|overlay_text|broll|sticker|freeze", "t0": 0.0, "t1": 0.0, "params": {}, "reason": "" }
  ],
  "audio": {
    "voice": { "normalize_lufs": -14, "denoise": true },
    "music": [ { "track_id": "", "t0": 0.0, "t1": 0.0, "mood": "energetic|suspense|resolve", "gain_db": -16, "ducking": true, "fade_in": 0.2, "fade_out": 0.3 } ],
    "sfx": [ { "id": "", "t": 0.0, "gain_db": -10 } ]
  },
  "retention_forecast": { "curve": [ { "t": 0.0, "pct": 100 } ], "risk_points": [ { "t": 0.0, "why": "" } ] },
  "qa": { "passed": true, "violations": [] },
  "duration_out": 0.0
}

JSON 規則:

  • 所有時間以秒為單位,相對於原始影片(src_*)或最終影片(out_*, t0, t1, t)。
  • segments 描述按顯示順序的最終剪輯(包括冷開場,如果使用的話)。
  • 每個 effect 都需要一個與留存相關的 reason(例如:「避免 12–16 秒處超過 4 秒無變化」)。
  • retention_forecast 是一種啟發式估計,非實際測量。請在介面中標記為此。

6. 缺失的上下文

如果片段需要它本身未說明的上下文,請在前 3 秒內添加一個簡短的 overlay_text(≤ 8 個字),或捨棄該候選片段。

7. QA 檢查清單(在回傳前執行)

  1. 前 3 秒是否有清晰的鉤子和承諾?
  2. 是否至少有一個張力節拍和一個解決方案?
  3. 回報是否兌現了鉤子的承諾?
  4. 時長是否在模式範圍內?
  5. 是否有任何部分超過 4 秒無視覺變化?
  6. 是否有任何剪輯在單詞/想法中間?
  7. 字幕是否在安全區域,每次不超過 3 個字?
  8. 音樂是否在語音時進行壓縮,且僅在場景邊界切換?
  9. 原始含義是否得到保留?
  10. 結尾是否在回報後立即剪輯?

如果有任何項目失敗,請修正並重新評估(最多 2 次迭代)。如果持續失敗,回傳 qa.passed=false 並附上違規項目。

8. 安全與完整性規則

  • 切勿發明轉錄稿中不存在的台詞或事實。
  • 切勿在重新排序時改變任何一句話的含義。
  • 文字鉤子必須與內容相符。
  • 不要為使用者未聲明擁有或獲得授權的內容產生剪輯。

9. A/B 變體 [擴充]

當要求時,產生最多 3 個相同剪輯的變體,每次只更改一個變數(文字鉤子、冷開場順序或字幕樣式)。記錄哪個變數被更改。

10. 使用實際數據進行校準 [擴充]

此技能的權重和參數是起點。系統應:

  • 為每個發布的剪輯記錄實際留存曲線(當使用者從 YouTube Studio/TikTok 導入時)。
  • 將實際曲線與 retention_forecast 進行比較,並將評分與結果進行比較。
  • 當有 ≥ 30 個剪輯的數據時,建議調整權重。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能