Communitygithub.com

howoneai/xiaolin-explainer-packaging

小Lin說風格的財經、科普講解影片包裝。包含 Remotion 版式元件庫、資料檢索規範、分鏡 API、分塊渲染、混音與逐幀品質檢查。

xiaolin-explainer-packaging 是什麼?

這是一個專為複刻「小Lin說」影片風格而設計的 AI 技能套件,適用於 Claude Code、Cursor 等開發工具。它將出鏡口播片段(A-roll)包裝成具有高度圖形化說明的講解影片,包含完整的 Remotion 版式元件庫(如巨型數字、卡片牆、白卡圖表、整頁文件螢光筆、實體卡、大公式條、白底計算器、片名與章節卡、畫中畫、轉場)以及嚴謹的資料檢索流程。技能支援 macOS(Apple Silicon)環境,依賴 Node.js、ffmpeg 與 Python3,並附有 `new_project.sh` 快速建置腳本。工作流程從準備輸入、建工程、規劃場景、查資料、寫分鏡到關鍵幀審片、整片渲染與混音,最後透過 `audit.py` 進行逐幀品質檢查,確保影片專業度。此套件特別適用於將現有口播影片重新包裝成知識型講解內容,或複刻「一口氣了解……」這類影片的圖形語言。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/howoneai/xiaolin-explainer-packaging/tree/main/xiaolin-explainer-packaging

在你喜歡的 AI 中提問

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

說明文件

小Lin說講解包裝

把一組出鏡口播片段(A-roll)和台詞,包裝成小Lin說式的講解影片。出鏡畫面由別的工具生成或拍攝。這個 skill 負責查包裝要用的資料,以及講解畫面、字幕、轉場和聲音。

如果環境裡有 design-aesthetic-standard,視覺和聲音的創作判斷同時遵循它。如果有 video-generation,出鏡片段的生成和剪輯見它。

參考文件(按需讀取)

  • references/style-bible.md:她的圖形語言、6 條硬規則、色板、字體、畫中畫、轉場統計、聲音電平。規劃場景前必須讀。
  • references/research.md:每種版式要查什麼資料、來源分級、去哪裡查、圖片權利。規劃場景時讀。
  • references/layouts.md:每個版式元件的參數、範例調用和陷阱。寫分鏡時讀。
  • references/storyboard-api.md:timeline.json 和 project.json 格式、分鏡 API、關鍵詞計時、審片和渲染命令。第一次搭工程時讀。

環境

  • Node ≥ 18、ffmpeg、python3(帶 numpy 和 Pillow)。npm install 和第一次渲染需要聯網(Remotion 會下載 Chrome)。
  • 只在 macOS(Apple Silicon)上實測過。其他系統預設用軟體渲染 swangle,可以用環境變數 REMOTION_GL 改。
  • 字體:模板帶 6 個 SIL OFL 字體,許可證見 templates/engine/public/fonts/LICENSES.txt。優設標題黑(YouShe.ttf)可能不在包裡。new_project.sh 會在 $YOUSHE_TTF 和常見字體目錄裡找;找不到時,提示使用者從 https://www.uisdc.com/uisdc-first-free-font 下載,存為 public/fonts/YouShe.ttf。缺這個字體時,標題和字幕回退到思源黑體最粗字重(900),沒有斜切,風格會明顯變弱。
  • Remotion 許可:個人、3 人以內的公司和非營利組織可以免費使用,包括商用。4 人以上的公司要買公司授權(https://www.remotion.pro/license)。

工作流

1. 準備輸入

  • 出鏡片段:每句一個 1920×1080 的 mp4,放進 public/clips/<id>.mp4。
  • 台詞:每句有朗讀文字 say(漢字寫法)和字幕文字 sub。
  • 事實檔案:從 templates/facts_template.md 複製。已有的事實和來源先寫進去,缺的在第 4 步查。
  • 可選:實拍或 AI 圖(public/broll/)、照片(public/photos/)、音樂(public/music/)、新圖示(public/icons/)。

2. 建工程

<skill>/scripts/new_project.sh <工程目錄>          # 加 --demo 會生成 4 段假出鏡和範例分鏡,用來冒煙測試

然後寫 timeline.json。轉寫每段出鏡影片,定出 tin/tout,剪掉首尾靜音;中間的口誤寫進 cuts。改 project.json 的 brand 和 music。

3. 規劃場景(先寫表,再寫程式碼)

讀 style-bible.md 和 research.md 後,列一張表:場景名 | 覆蓋哪幾句 | 版式 | 深色還是白紙 | 畫中畫方式 | 需要的資料。檢查以下 5 點:

  • 一個場景跨 2–8 句,不要一句一頁。
  • 每個場景都能指出「主體被裁切」或「主體佔畫面 60% 以上」(R1)。
  • 每 2–3 個深色場景之間有 1 個白紙場景(R2)。
  • 引用原文的地方用 docpage,而且原文是真實的逐字引用。
  • 開場鉤子、觀點句、轉折句和結尾留給全螢幕出鏡,不要全部蓋上講解畫面。

4. 查資料

按場景表的「需要的資料」一列逐條查,方法見 research.md。每條結果寫進事實檔案,帶編號、原文、來源連結和日期。照片用 scripts/commons_photo.py 搜尋和下載。

查完回改場景表:找不到逐字原文的,不用 docpage;湊不齊同口徑資料的,不用 paper。台詞裡的數字和事實檔案不一致時,先改台詞,再生成或重剪出鏡片段。

5. 寫分鏡

從 templates/scenes_example.py 複製寫法。每個場景都要:

  • 元素入場對齊關鍵詞:S.k('關鍵詞', -0.15)。
  • 目前項亮起,其餘壓暗(focus / hl / lit)。鏡頭跟到目前項(sc.cam / look)。
  • 用 KF.append((標籤, 時刻)) 登記至少 1 張審片幀。

執行 python3 story_core.py timeline.json scenes.py,確認 gaps/overlaps []。

6. 關鍵幀審片(最少 2 輪)

python3 -c "import json;print(' '.join(str(f) for _,f in json.load(open('keyframes.json'))))" | xargs node render.mjs stills stills/k1
python3 <skill>/scripts/sheet.py stills/k1 keyframes.json 6

逐張查看拼圖,按下面的審片清單修改,然後重渲染改過的幀。有她的原片時,截取同類版式的原幀並排對比。

7. 整片、混音、合成、質檢

<skill>/scripts/render_chunks.sh video.mp4
python3 <skill>/scripts/mix_audio.py timeline.json mix_raw.wav
<skill>/scripts/finalize.sh video.mp4 mix_raw.wav final.mp4
python3 <skill>/scripts/audit.py video.mp4 72        # 影片幀和靜幀逐幀對比,flagged 必須為 0

手機版:ffmpeg -i final.mp4 -c:v libx264 -crf 23 -preset medium -pix_fmt yuv420p -c:a aac -b:a 128k -movflags +faststart final_phone.mp4。

審片清單

每張關鍵幀都檢查:

  1. 主體夠大,或者被邊緣裁切。四周沒有大片空白。
  2. 目前講到的項最亮,鏡頭在它附近。
  3. 一幀最多 2 個標籤。
  4. 沒有東西被字幕(畫面 y 905–960)、畫中畫、台標和 AI 標註擋住。
  5. 沒有方框字(缺字形)、沒有換行成直排的詞、沒有溢出卡片的字。
  6. 數字、單位和原文與事實檔案一致,來源行存在,CC BY 照片有署名。
  7. 白紙場景和深色場景交替出現。

已知陷阱

  • 關鍵詞在句首時,S.k(詞, -0.3) 會早於片段起點。用 max(S.t0, …) 截住。
  • formula6 的 token 列寬等於 iw。iw 必須 ≥ 字數 × fs。
  • 畫面 x = (世界 x − 鏡頭 x) × s + 960。piprect 佔畫面 x 110–560,主體放在 ≥ 600 的位置。改鏡頭位置時,主體在畫面上的位置也跟著變。
  • ui 結果單位預設是「元/月」,用 u= 改。
  • paper 卡底邊的畫面 y 要 ≤ 900。
  • ent6 國旗只有 cl cn de fr jp us。
  • 圖片路徑不存在時,該幀渲染失敗(FAIL ... Error loading image)。先用 ls public/<路徑> 確認。
  • 靜幀正常不代表影片正常。整片之後必須跑 audit.py。
  • 漸層立體字超過 600px 會讓 Chrome 卡住。不要去掉 GText 的層數和模糊上限。

使用邊界

  • 這是風格複刻工具。成片保留 brand.label 的「AI 生成 · 非本人」標註,不要去掉。
  • brand.logo 預設為空。填使用者自己的台標;不要填「小Lin說」或其他真實創作者的台標後公開發布。
  • 不要用真實創作者的肖像或聲音生成出鏡畫面後公開發布。
  • 不要把成片當成本人作品發布,也不要用來誤導觀眾。
  • 上螢幕的資料、原文和政策條文,都要能追溯到來源。

相關技能