發現影片
產品是發現,不是網站。影片展示證明發現的真實素材,素材要大且清晰,保持一個常數不變讓觀眾看到變化,並以一個問題結尾讓人們在留言區回答。網站僅在片尾作為來源出現。
這個想法源自於克盧日衛星短片(同一個地點,1968 → 2025,全畫面影像,一個年份標籤,兩行字,沒有網站),效果遠比展示網站操作好。
交付內容
- 兩個剪輯版本,1080×1920,30 fps,H.264 + AAC,15–25 秒:A 版以問題或首張圖片開始並循環;B 版直接從重點開始。兩者皆有封面。
post.txt:檔案和規格、發文備註、宣稱表格(螢幕上每個數字和文字行 → 其來源檔案或 URL)、圖片來源、聲音來源。不包含貼文文字,除非使用者要求(代理人不會撰寫貼文)。- 影片存放在儲存庫外的資料夾中(
~/Videos/<專案>-finding-<日期>/);分鏡圖、腳本和素材裁切在專案的reports/finding-<日期>/中,並附有 README:內容說明、媒體位置、腳本所需項目。 - 發布是使用者的工作:切勿代為發布。
工作流程:三次快速審批,然後進行長時間渲染
- 發現。 從專案自己的數據中列出 2–4 個候選發現,每個發現包含其張力及其比較基準。選擇最具吸引力的一個(涉及金錢、城市、共同的困擾)。根據數據驗證每個數字,而非根據總結數據的頁面。
- 素材。 針對選定的發現,尋找最能證明它的真實素材:儲存的選單截圖、衛星影像、文件、照片、數據本身的圖表。記錄每個素材的版權(參見
references/craft.md,素材)。裁切必須保持原始擷取狀態:不得修飾、不得添加價格。 - 故事審批(審批 1)。 一個節奏表:時間、畫面內容、字幕、聲音,以及每個節奏的宣稱及其來源。命名常數(過程中保持不變的部分)和手法(能用一句話說明的核心想法)。等待使用者的同意或修改要求。
- 視覺審批(審批 2)。 使用頁面當前的設計:每次從網站原始碼讀取其顏色、字型和圖表樣式,因為頁面可能會重新設計(2026-11-06)。渲染 2–3 個全尺寸幀(
frames.py --stills或seek_capture.mjs ... stills)並展示。每個幀都需要使用者按讚。 - 分鏡審批(審批 3)。 使用
scripts/storyboard.py繪製:每個節奏一個關鍵幀,按實際尺寸比例顯示,包含時間、聲音和下一個節奏的轉場。展示並等待同意。使用者要求此檢查:在此之前不得渲染影片(2026-11-06)。 - 建構。 渲染,然後執行以下檢查並親自檢查每個工作表。
- 交付。 提供
post.txt、分鏡圖,並告知使用者你無法檢查的項目(至少用耳朵檢查聲音),以及最終的判斷標準是 2 秒停留、觀看時間和留言。
僅在使用者為此影片特別要求時,才可跳過某個審批步驟。
渲染工具
根據素材選擇;所有工具輸出 1080×1920 PNG 幀,並使用 tv-range BT.709 yuv420p 編碼。
| 素材 | 渲染工具 | 方法 |
|---|---|---|
| 照片、掃描檔、衛星影像、文件裁切 | scripts/frames.py(來自衛星短片) | 一個 Python frame_fn(t) 函數,合成全畫面圖片、在字幕後方添加 shade_top、使用 overlay/text 加入字幕;使用 synth 處理聲音事件;render() 進行編碼 |
| 圖表或會動的數字 | 一個包含 window.seek(t)(下方圖表方法)的 HTML 頁面 + scripts/seek_capture.mjs | 使用 node seek_capture.mjs <page.html> <out> stills 產生檢查幀,然後產生影片幀;使用 ffmpeg 編碼,如同 frames.encode |
| 插畫場景(氛圍、隱喻) | 可選:cth9191/animate(MIT 授權),一個第三方技能 | 安裝前先詢問 |
圖表方法(來自 charlie947/motion-graphics-skills animated-chart,MIT 授權):四個狀態 — 開始、一個變化(沒有淡出和替換)、停滯並標註重點值、返回以使循環無跳躍。每個幀僅根據 t 計算。標題、標籤和軸線永不移動。絕不四捨五入、重新格式化或添加數字。建構完成後,在 0、1、2、4 和 7 秒處捕捉幀,檢查文字是否重疊或截斷。
需要 numpy 和 Pillow 給 frames.py,Playwright 給 seek_capture.mjs(設定 PLAYWRIGHT= 指向其 node_modules/playwright 目錄,如果無法解析),以及 ffmpeg。
檢查
python3 ../demo-video/scripts/check.py <輸出目錄> --name <名稱>(從此技能的資料夾執行)(命名剪輯為<名稱>-A.mp4/<名稱>-B.mp4):檢查大小、幀率、色彩、響度、循環 SSIM、安全區域和聯絡表。它會報告而不會失敗:請逐行閱讀,並親自檢查每個數字是否達到目標。- 查看安全區域工作表:確保沒有字幕、數字或來源行在紅色區域下。
- 在聯絡表上以手機尺寸(360 像素寬)閱讀每條字幕。
- 為每個主要節奏命名主角,並檢查其高度至少佔畫面高度的 40%,然後命名轉折(
references/craft.md)。說明哪些節奏不符合。 - 宣稱表格:每個螢幕上的數字都要追溯到一個檔案;每個比較都要說明其基礎(哪些披薩、哪個日期、多少數量)。
- 逐個節奏測量聲音,包括全頻率和 250 Hz 以上(手機喇叭播放的範圍)。重點部分必須在兩者中都最大聲,而接近靜音的部分必須安靜。然後如果可能,聽一次;否則說明你沒聽過。使用
frames.mix為重點部分設定其自己的音量,然後使用frames.level;在披薩試點項目中,舊的壓縮器讓嗡嗡聲比重擊聲還大。
注意事項
-
字幕如果緊鄰數字,會繼承其單位。 "the biggest gap" 放在 "4 lei" 下方會被解讀為雷伊;應說 "în procente" 或刪除它。(Treponti 在百分比上是最大的,La Crosta 在雷伊上是最大的。)
-
不要重複使用應用程式的產品照片或 UI(Wolt 和 Glovo 的條款保留圖片權利)。將列表轉錄成你自己的中性卡片,標註日期,或者只裁切你需要的文字作為證據並說明來源。
-
關於真實地點或真實價格的影片中,不得使用 AI 生成的素材;這會顯得做作。氛圍來自使用者自己的素材、公共領域檔案(檢查每項的版權)或清晰的插畫風格。
-
ElevenLabs 的 "Chris" 語音在羅馬尼亞數字上會出錯,即使是數字也一樣(披薩影片中的 49 和 67,許可證影片中的 88,2026-11-06)。轉錄無法發現這個問題。請聽過每個說出的數字,並讓使用者在混音前先聽過。
-
發布前,頁面必須已上線,並且如果數據有變更,必須重新檢查數字。
-
合成語音會錯誤朗讀數字,且轉錄無法發現。 拼寫出來的「optzeci」變成了「opt zece」,轉錄仍顯示「Optzeci」,而使用數字的版本則是對的。同一個數字的下一次錄製又會出錯,因此生成結果不穩定:一旦使用者核准某次錄製,就拼接該音頻,不要重新生成。只有人耳才能檢查發音(2026-11-06)。
規則來源
references/craft.md 包含工藝:發現節奏表、故事規則、字幕、素材和版權、聲音。來源:克盧日-納波卡的衛星影像短片(2026-11-03)、demo-video 的工藝筆記、cth9191/animate 的故事語法(MIT 授權)、charlie947 的動態圖表規則和 vox-explain 規則(MIT 授權)、StewdioAI/blank-page 的畫面與轉折規則(MIT 授權),以及一次 Codex 諮詢(2026-11-04)。