扎提·關係影像隨筆
這是從成片《為什麼有些好人,會和錯的人交往?》提煉出來的可重複使用工作流。目標不是復刻同一篇文案,而是讓新一期保持同一套製作方法:
一個有具體物的關係故事 + 宋體大字 + 電影/實拍/照片的質感 + 克制的旁白 + 3:4 封面。
固定的是方法,不是素材
固定:16 拍敘事語法、字型/色板/運動/聲音標準、3:4 封面、來源與倫理硬門、QA。
可變:文案、旁白、音樂、電影/客戶實拍/產品/照片/授權 stock、人物肖像、封面背景、發布文案。
AI 可以自己找背景影片:客戶沒有素材時,用 scripts/stock_search.py 搜 Mixkit/Coverr/Pexels/Pixabay,選 3 個候選,用 scripts/fetch_stock.py 下載、去音軌、標準化、寫 manifest。詳見 references/stock-sources.md。
母版的《第七天堂》、佛洛伊德/亞里斯多德/康德,只是參考實作,不是每一期必須出現的素材。客戶要真實門店,就用客戶素材;客戶要影史案例,就換 2–3 部公版片;客戶沒有素材,就做純文字/圖形。不要為了「系列感」硬套一部電影或一張臉。
詳細選擇見 references/client-brief.md 和 references/asset-strategy.md。
先判斷是否適用
適用:
- 男女關係、愛情、親密關係、邊界、自我價值、付出與回報、分手與複合等中文情感議題。
- 品牌/機構想講「關係、邊界、尊重、陪伴」的客戶故事,且適合散文式表達。
- 用戶想要 2:40–3:40 的橫螢幕影像隨筆,有旁白、有字幕、有電影感。
- 用戶明確說「按《好人與錯的人》那個風格」「用之前那個模板」「做成系列」。
不適用:
- 純產品發布/帶貨/快節奏混剪/功能講解;這些用別的格式更合適。
- 用戶要求使用《卡薩布蘭卡》《花樣年華》等仍受版權保護的片段,且沒有授權。先說明風險,改用公版片或讓用戶提供授權素材。
- 用戶想要 9:16 直螢幕正片。本模板是 16:9 正片 + 3:4 封面;直螢幕需要重新做佈局,不能直接裁。
成片規格(預設)
| 項 | 預設 |
|---|---|
| 正片 | 1920×1080 / 30fps / 2:40–3:40 |
| 畫幅 | 16:9 |
| 語言 | 簡體中文旁白 + 燒錄字幕 + SRT |
| 封面 | 1080×1440(3:4),PNG + JPG |
| 聲音 | 旁白 + 原創配樂 + 雨聲,約 −15 LUFS,真峰值 ≤ −1.5 dBFS |
| 字幕 | 燒錄在畫面內,另出 .srt |
| 交付 | MP4、SRT、3:4 封面、發布文案、素材來源、可編輯工程 |
| 客戶確認 | Brief → First still → Final 三個確認點 |
母版位置(reference implementation)
參考母版(不隨倉庫分發;只作為資產/結構參考):
- 本機開發時:
~/Desktop/自媒體/good-people-wrong-person - 其他機器:用
--ref指向你自己的 master 工程
新一期不要預設沿用母版的素材。 用 --ref 只是為了拿 vendor/、字型、紋理和一條佔位音軌;電影、肖像、靜幀、文案、聲音都要按客戶 brief 換。
母版包含:
index.html:201.37 秒成片的完整 huashu-motion 合成。cover/cover.html:1080×1440 的 3:4 封面原始檔。assets/movies/:已核驗、已去音軌、已補到整數幀的《第七天堂》(1927) 片段。assets/portraits/:佛洛伊德、亞里斯多德、康德公版肖像。assets/stills/、assets/textures/、assets/fonts/、vendor/。assets/score.wav:上一期的旁白+配樂+雨聲成品混音。新一期必須替換,不能直接沿用。output/:上一期交付物,僅作參考,不要原樣複製。
如果母版不在了:用 templates/index.template.html 和 templates/cover-3x4.template.html 恢復程式碼;電影片段和肖像需要重新按 references/rights-and-ethics.md 取得並核驗。
新一期怎麼開始
SKILL="$HOME/.agents/skills/zhati-relationship-film"
$SKILL/scripts/new_episode.sh my-episode-slug --base "$HOME/relationship-films"
腳本會:
- 在
$BASE_DIR/my-episode-slug建新工程(預設$HOME/relationship-films,可用--base改); - 複製 skill 的最新模板程式碼(
index.html、cover/cover.html),再從母版複製vendor/、字型、紋理和一套起始素材; - 複製母版
assets/score.wav作為佔位音軌(頁面能先跑起來); - 生成
BRIEF.md、文稿.txt、字幕.srt、treatment.md、素材來源.md、發布文案.md、assets.manifest.json模板; - 建立
assets/imported/,列印下一步和需要替換的文字/素材槽。
然後按下面的流水線做。不要跳過寫新旁白和新字幕這一步。
流水線
0. 讀客戶 brief,鎖內容 + 素材
先讀 references/client-brief.md,把客戶要求壓成 10 行內容計劃:
受眾 / 平台 / 時長 / 一句話主題 / 鉤子問題 / 兩個概念 / 思想或心理視角 / 倫理轉折 / 一句小話 / 素材模式與來源
再讀 references/beat-sheet.md,把主題放進 16 個敘事節拍裡。素材模式在寫旁白前就要定:客戶實拍 / 公版電影 / 授權 stock / 照片 / 純文字 / 混合。不要先寫滿 3 分鐘再問客戶要素材。
預設結構:
- 鉤子(一個問題)
- 具體故事(雨/傘;可以換成別的具體物,但必須有一個物貫穿)
- 「這是一個虛構的故事」類限定
- 兩個概念的區分(善良 vs 合適,或本期對應的一對概念)
- 哲學視角 A(友愛/相互性/尊重等)
- 一個人的侷限(「一個人的付出無法獨自完成兩個人的關係」類)
- 情緒轉折問題(為什麼難過還期待下一次)
- 心理視角(重複/模式;用「一種理解角度」,不做診斷)
- 模式識別(努力換取認可)
- 冷淡與自我懷疑
- 倫理轉折(傷害不是你招來的;責任在傷害者)
- 限定與例外(欺騙、改變、相處後才看見)
- 自省(兩個問題;鏡面/倒影)
- 哲學視角 B(自我尊重)
- 一句很小的話(可執行的動作)
- 練習與收束(保留溫柔,也給自己留位置)
- 片尾字幕/來源
如果新主題不需要兩位哲學家,可以只保留一位;如果不需要心理視角,可以把 8–9 壓成一段。不要為了湊結構編造引語或診斷。
1. 寫新旁白
- 目標 950–1150 個漢字,正常語速約 3 分鐘;如果用戶給了文稿,先做「刪到能呼吸」的編輯,不要改立場。
- 保留限制性表述:一種理解角度 / 不是對所有人的解釋 / 傷害的責任不能替對方開脫。
- 結尾要有一句可被記住的「小動作」或「小句子」,例如「我也冷,我也需要這把傘」。
- 寫入
文稿.txt,一段一行,方便產生字幕。
2. 生成新旁白和新時間軸
優先使用用戶自己的本地聲音克隆(見 macos-local-voice skill),不要上傳參考錄音。沒有可用聲音時,明確問用戶:本人錄音 / 本地克隆 / 系統音色 / 無聲。
產出:
- 一條完整旁白
assets/voice.wav(48kHz,盡量 24-bit); - 逐句起止時間(JSON 或 CSV),精確到 0.01s;
- 一份新
CUES陣列([start, end, text])。
不要沿用母版的 194 秒旁白。母版的時間軸只用於理解節奏,不是新一期的音訊。
3. 配樂與混音
- 保留「鋼琴/弦樂/輕環境 + 雨聲」的方向,不要用現成版權歌曲。
- 混音目標:旁白清楚,音樂在 −28~−32 LUFS 左右,整體約 −15 LUFS,真峰值 ≤ −1.5 dBFS。
- 輸出
assets/score.wav,替換佔位音軌;頁面裡的<audio id="score" ...>保留,但時長要改。 - 本模板用
id="score"而不是om-sound,所以渲染時要加--silent,否則om render會嘗試重建音軌。詳見references/visual-system.md的「聲音」一節。
4. 重新卡點
這是最容易被低估的一步。母版的所有時間都是硬編碼的;新旁白一換,每個場景都要重新對時。
按 references/beat-sheet.md 的比例給 16 個場景分配新時長,然後:
- 先改
CUES陣列、根節點data-duration、JS 裡的DUR、<audio data-duration>。 - 每個場景以「該段第一句旁白的起點」為錨,場景結束以下一段的第一句為界。
- 場景內部的動畫時間按「新時長 / 舊時長」做比例縮放;不要只平移開頭,否則後半段會漂。
- 影片視窗的
data-start/data-duration/data-media-start/data-playback-rate也要重算;確保片段在淡出之前不會先播完。母版片段已經補到整數幀,但換了新片源要重新補幀。 - 每改完一個場景,用
om still看start+0.5s、start+2s、end-0.5s,確認沒有舊文字殘影、沒有文字碰撞、沒有空幀。
具體替換清單見 references/text-slots.md;卡點方法見 references/retiming.md。
5. 換文字,不要換視覺 DNA
必須逐項替換 index.html 裡的文字槽(見 references/text-slots.md),包括:
- 片名變數
filmTitle、鉤子兩行; - 雨傘故事的四段大字;
- 「虛構故事」限定;
- 善良/合適兩幀的標籤;
- 亞里斯多德/佛洛伊德/康德的段落與出處;
- 冷場、轉折、責任、鏡面、自省、行動、結尾、片尾字幕;
CUES裡的每一句字幕。
保留:
- 色板、宋體/蘋方/EB Garamond 的搭配;
- 膠片底、雨、傘、顆粒、暗角、閃白、酒紅劃線;
- 16:9 的左右留白和下方字幕帶;
- 「一鏡一事件」的節奏,不要把所有字都塞進同一螢幕。
不要保留母版的舊文案。新一期如果出現「亞里斯多德/佛洛伊德/康德」以外的思想家,必須重新核驗出處,並在畫面裡標註「釋義/應用」,不要偽造直接引語。
6. 素材替換(按客戶要求,必做)
母版用的是《第七天堂》(1927),但這只是參考實作。按 references/asset-strategy.md 選模式:
- 客戶實拍/照片/產品/門店:優先;寫清授權/肖像同意;人臉保持真實,別過度磨皮;產品只作為「關係中的物」,不要做成硬廣。
- 公版電影:可以繼續《第七天堂》,也可以換 1–3 部公版片;去音軌、補幀、抽靜幀、逐片標註。
- AI 自己找免費 stock:客戶沒有素材時,先搜 3 個候選給客戶看;確認後用
scripts/fetch_stock.py下載/標準化。不要從 YouTube/串流媒體/版權片扒;不要繞過浮水印/付費牆。來源、license、credit 寫進 manifest。 - 授權 stock:保留 license/訂單;不要用帶浮水印預覽。
- 照片/檔案/肖像:標明照片/雕像/繪畫;公版或客戶授權;不要 AI 生成冒充歷史人物。
- 純文字/圖形:沒有 footage 時,讓字和留白成為畫面;不要硬塞電影。
- 混合:最多 2–3 種來源;一套 grade、一套字、每來源 credit。
替換後必須:
- 改
data-asset-slot對應的src; - 用
ffprobe重算影片視窗; - 重抽靜幀;
- 改
#credit、#credits .cols、素材來源.md; - 跑
python3 scripts/asset_report.py --manifest assets.manifest.json --project .。
不要用《卡薩布蘭卡》《羅馬假期》《花樣年華》等仍受版權保護的片段,除非客戶提供明確書面授權。
7. 檢查、渲染、審片
cd "$HOME/relationship-films/my-episode-slug"
om check . --samples 6
om render . --silent --fps 30 --workers 4 --video extract
om qa out/<new-file>.mp4
渲染約 25–35 分鐘(1080p/30fps/4 workers,201 秒量級)。不要用 720p 冒充 1080p。
如果本機的 om 是包裝腳本(例如設定了 Node/Chrome 環境),把 OM 指向它;scripts/ 會依次嘗試 $OM、om、~/.agents/skills/huashu-motion/bin/om。
必過:
om check0 errors;om qa無單幀跳變;- 抽幀檢查:鉤子、每個場景邊界、轉折、佛洛伊德、結尾、片尾字幕;
- 獨立冷審(找一位沒參與製作的 agent 只看成片),至少修掉 MUST-FIX;
ffprobe確認 1920×1080/30fps/正確時長/AAC 48kHz 立體聲;- 全片解碼無錯誤;響度/峰值達標。
8. 封面和發布文案
- 封面:複製
cover/cover.html,替換標題、時長、底部鉤子、來源;渲染 1080×1440 PNG + JPG。模板的佈局:頂部小標 + 大標題(「錯的人」用琥珀色)+ 中部傘/兩個人 + 底部一句金句 + 來源。 - 發布文案:按
references/publishing.md出長版/短版/B站版/置頂評論/標籤;不要直接複用上一期的文案。 - 片尾字幕和角標保留「電影畫面,非真實案例」「解釋視角,不是診斷」等必要限定。
9. 交付
my-episode-slug/output/
<slug>_1080p_30fps.mp4
<slug>_字幕.srt
<slug>_封面_3x4.png
<slug>_封面_3x4.jpg
<slug>_發布文案.md
素材來源.md
項目說明.md
硬門(不過不交付)
- 新旁白:新一期必須有新錄/新生成的旁白;不能拿母版 194 秒音訊對上新字幕。
- 新文字:
index.html中不能殘留母版的成句文案;用references/text-slots.md逐項過。 - 版權/素材:電影、客戶素材、stock、肖像、音樂、聲音都有來源/授權記錄;每個來源都有 credit;片名/年份/非真實案例標識在畫面裡。
- 倫理:不診斷、不責怪受害者、不偽造哲學家原話、不把電影角色當真實案例。
- 畫面:沒有文字被裁、沒有單字孤行、沒有文字壓字幕;如果本期仍用傘的隱喻,結尾兩個人都在傘下。
- 聲音:旁白清楚、無削波、無意外靜音;
--silent渲染保留自訂音軌。 - 審片:獨立冷審的 MUST-FIX 已修,或明確記錄為什麼保留。
不要做
- 不要把母版的舊文案、舊字幕、舊旁白直接複用。
- 不要把《第七天堂》/佛洛伊德/亞里斯多德/康德當成固定素材;客戶不需要時不要硬塞。
- 不要把所有場景都改成同一張圖 + 同一段字;母版的場景語法是有變化的。
- 不要用藍紫漸層、霓虹、AI 味星空底。
- 不要在 3:4 封面裡直接裁 16:9 正片;用
cover/cover.html重新排。 - 不要把哲學家/專家的話寫成「名言」並加引號;用「他討論過/一種理解角度」。
- 不要在客戶沒授權時使用版權片、客戶人臉、聊天記錄或未公開產品。
- 不要從 YouTube/B站/串流媒體/版權片直接下載背景;不要繞過浮水印、付費牆或地區限制;只用明確允許的免費/授權 stock。
- 不要用「吸渣體質」「戀愛腦」這類診斷式標籤做標題;用問題,不用判決。
檔案地圖
references/client-brief.md:客戶 brief、內容矩陣、確認點。references/asset-strategy.md:客戶實拍/公版/stock/照片/純文字/混合,多源統一、素材槽、manifest。references/stock-sources.md:Mixkit/Coverr/Pexels/Pixabay/Commons 的搜尋、許可、下載與 credit。references/beat-sheet.md:16 拍結構、比例、畫面事件、文案功能。references/visual-system.md:色板、字型、鏡頭、傘/雨、聲音、封面。references/text-slots.md:逐項替換清單。references/retiming.md:新旁白的時間軸重排方法。references/rights-and-ethics.md:片源/肖像/聲音/倫理。references/publishing.md:標題、長文案、短文案、B站簡介、置頂評論、標籤。templates/index.template.html:母版合成。templates/cover-3x4.template.html:3:4 封面。templates/assets.manifest.example.json:素材清單模板。scripts/new_episode.sh:建新工程。scripts/prepare_media.sh:補幀、抽靜幀、檢查片源。scripts/render.sh:帶--silent的渲染封裝。scripts/render_cover.sh:把cover/cover.html渲染成 1080×1440 PNG/JPG。scripts/verify.sh:check/qa/ffprobe/解碼/響度。scripts/asset_report.py:檢查素材 manifest 的檔案/權利/credit/scenes。scripts/stock_search.py:連網搜免費 stock,輸出候選/頁面/license。scripts/fetch_stock.py:下載、去音軌、標準化 1920×1080/30fps,並更新 manifest。