長格式播客開頭(冷開場)
此風格模仿 Greg Isenberg 的長格式開頭。其吸引人的關鍵在於:
- 以最有力的台詞開場,不先顯示標誌。
- 每 3–6 秒切換一次畫面。
- 大約每隔一個片段就使用切換鏡頭: 說話者滑到左側卡片,同時右側出現一個圖形。
- 字幕保持簡短: 1–3 個字詞,關鍵字使用橘色。
- 以標題卡結尾: 一個顯示接下來內容的卡片。
流程由 pipeline/build_episode.py 驅動,設定檔為 work/<ep>/episode.json → intro。渲染使用 Remotion IntroV2 合成(pipeline/remotion/src/IntroV2.tsx);圖形來自 Graphics.tsx。
1. 從單集中挖掘片段(8–10 個候選,保留 7–9 個)
- 閱讀逐字稿(
work/<ep>/words-*.json,或 Descript.txt),列出能在 6 秒內獨立成句的台詞。 - 按以下偏好順序:
- 一個具體數字:「付錢讓 27% 的員工離職」、「900% 的收入留存率」。
- 一個大膽的主張或預測:「代幣將滲透進一切」。
- 一個心聲或 relatable 的痛苦:「我厭倦了付訂閱費」。
- 一個有趣或情緒化的反應:「我會 token maxing」。
- 一句值得引用的結語:「超級智能無法估價」。
- 分散到各主題: 每個章節大約一個片段,兩位主持人都要出現,至少一個笑點。
- 排列片段順序:
- 片段 1 是單一最強的鉤子,通常是數字或主張。
- 交替說話者和能量。
- 將最值得引用的台詞放在最後,緊接在標題卡之前。
- 跳過:
- 需要前後文的台詞(「就像我說的」、「那張圖表」);
- 超過約 6 秒的台詞;
- 有交叉對話的台詞。
- 髒話: 僅在使用者能接受明確開頭時保留,並在報告中說明。
2. 設定 episode.json → intro
"title": "FRINGE LINES",
"subtitle": "2026 年 10 月 30 日",
"intro": {
"style": "v2",
"title": "Fringe Lines",
"title_seconds": 4.5,
"topics": ["早晨循環", "微軟員工人數", "建置 vs. 購買", "代幣限制", "Google vs. AI 模式", "Anthropic 的 S-1", "AI 支出"],
"emphasis": ["27%", "leave", "900%", "retention", "sql", "agents", "tokens", "everything", "maxing"],
"clips": [
{"say": "microsoft just offered", "until": "employees to leave", "tag": "AI 與就業", "replace": {"27": "27%"},
"graphic_on": "27%", "graphic": {"type": "stat", "kicker": "微軟買斷方案", "value": 27, "suffix": "%", "label": "被提供離職補償的員工比例"}},
{"say": "tokens are going to seep", "until": "like the internet", "tag": "代幣無處不在"}
]
}
say/until: 片段的開頭和結尾幾個口語單詞,大小寫與標點符號不敏感。匹配的是單集中首次出現的內容,因此請讓say具有區別性(3–5 個單詞)。如果其他說話者壓過該句,匹配器會重試,僅使用一個說話者的詞語。pre: 可選的say之前的前導秒數。tag: 顯示在左上角的主題標籤及其編號。使用 1–3 個單詞。replace: 字幕修正,例如數字、「sequel」→「SQL」,或"a": ""以隱藏某個詞。graphic+graphic_on: 切換鏡頭約在口語單詞graphic_on之前 150 毫秒出現。- 可選的
graphic_off(後面的單詞)會恢復成全螢幕。 - 若無
graphic_off,切換鏡頭會持續到片段結束。
- 可選的
- 切換鏡頭數量: 為 3–5 個片段加入切換鏡頭。選擇那些包含數字、公司或產品名稱、或值得引用台詞的片段。反應與笑點片段保持全螢幕。
- 圖形類型(與編輯短片相同):
stat:帶有引文和標籤的計數數字;people:人物圖示網格;lines:示意趨勢線;quote:墨水卡片;headline:帶有高光掃描的新聞風格卡片;list:編號行。- 使用
*word*表示橘色斜體。
- 誠實原則: 螢幕上的數字必須與口語一致。圖表僅為示意,絕不發明數據。
topics: 5–7 個簡短章節名稱,用於標題卡,按單集順序排列。emphasis: 12–25 個關鍵字,在字幕中以橘色顯示:數字、名稱、重點詞。title_seconds: 4–5 秒。標題卡為「Fringe Lines」,使用襯線字體並以橘色斜體顯示最後一個單詞,包含日期和「本集內容」列表。
3. 在渲染前檢查計畫
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage plan
- 它會印出每個開場片段的標籤、長度和字幕文字。
- 修復任何
WARN intro clip not found警告:調整say/until的措辭以完全匹配逐字稿。 - 目標總長度: 片段 35–50 秒加上 4.5 秒的標題卡。刪除或修剪超過 6 秒的片段。
- 閱讀每一行字幕,找出聽錯的單詞並加入
replace修正。
4. 渲染
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage graphics # intro clips + IntroV2 + lower-thirds
~/.shorts-skill/bin/python pipeline/build_episode.py --ep <ep> --stage final # join intro + body, chapters, loudness
- 在兩個指令中加入
--blur以獲得背景模糊版本。它需要~/.cache/fringe-lines-video/blur/中的模糊攝影機畫面(參見pipeline/bg_blur.py),並從獨立的快取寫入<ep>-fringe-lines-blur.mp4。 - 主體部分不需要為了開場變動而重新渲染。
- 章節檔案會重新產生,所以所有時間戳記都會隨著開場長度而變動。
- 音效(嗖、啵、進入標題的長嗖聲)會生成到圖形資料夾中,並由 Remotion 混音。
5. 品質檢查
F=out/episode/<ep>-fringe-lines.mp4
ffmpeg -v error -y -i $F -t 50 -vf "fps=1,scale=320:-1,tile=8x7" -frames:v 1 /tmp/intro.png
檢查:
- 每個切換鏡頭的卡片完全顯示在畫面上,其數字與口語相符,且沒有多餘的
*。 - 字幕顯示橘色關鍵字,且沒有字幕與說話者卡片底部邊緣重疊。
- 標題卡按順序列出所有主題。
- 影片和音訊長度相符(使用
ffprobe -show_entries stream=codec_type,duration)。 - 單集音量約在 −15.5 LUFS。
- 章節檔案以
00:00 Cold open開頭,接著是開場長度,然後是 "Catching up"。
向使用者回報:
- 片段列表(標籤 + 台詞);
- 哪些片段有切換鏡頭;
- 開場長度;
- 任何明確的語言;
- 任何需要驗證的數字。