Communitygithub.com

ia-content-maker

動畫解說影片(扁平向量、2D、全程式碼)的生產機器,從腳本到 MP4,長度 1–10 分鐘,具備隨機生成的頻道識別(DNA)與直式(Reels/TikTok/Shorts)或 16:9(YouTube)格式。當使用者要求「做一支關於 X 的影片」、「make a video: [主題], [長度]」、一支動畫短片/Reels、解說影片、新 AI 影片頻道,或想建立/調整頻道 DNA 時使用。

ia-content-maker 是什麼?

此技能將 AI 代理轉變為一個完整的解說影片製作團隊,涵蓋腳本、美術、角色切割與骨架、配音、動畫、音效、渲染、縮圖及字幕。所有動畫效果均以程式碼生成(逐幀渲染於 canvas),完全不依賴 AI 影片生成。它最獨特之處在於「白牌」設計:每次建立新頻道時,系統會隨機抽選一組完整的視覺 DNA(包含色板、字體、筆觸、卡片、轉場、節奏及敘述者風格),並儲存在 `dna.json` 中,確保兩個使用相同技能的頻道能產生截然不同的視覺風格。該技能支援任何具備終端命令執行能力的 AI 代理(如 Claude Code、Codex、Gemini CLI、Cursor 等),並提供垂直格式(適用於 Reels/TikTok/Shorts)與 16:9 格式(適用於 YouTube)的完整製作流程,內建品質檢查與自動化工作流程,讓每次影片產出都穩定且專業。

相容平台✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/GMendes18/ia-content-maker/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

IA Content Maker — 白牌影片生產機器

此技能將代理轉變為整個解說影片頻道的製作團隊:腳本、美術、角色切割與骨架、配音、動畫、音效、渲染、縮圖及字幕。所有動畫效果均以程式碼生成(逐幀渲染於 canvas);沒有任何 AI 生成的影片。

白牌: 頻道識別(色板、字體、筆觸、卡片、轉場、節奏、敘述者)透過程式碼隨機抽選一次,並儲存在 dna.json 中。兩個使用相同技能的頻道會產生不同的結果。引擎中沒有任何部分依賴特定的色板、字體或主題。

此功能適用於任何能執行終端命令的代理(Claude Code、Codex、Gemini CLI、Cursor…)。原始的完整規格位於 referencia/especificacao-original.md;此檔案記錄了經過驗證的流程以及實踐中變更的部分。如有衝突,以此檔案為準。

0. 首先:尋找或建立工作區

程式碼在一個 workspace(包含 engine/、dna.json、videos/、library/ 的資料夾)中執行。

  1. 搜尋現有的工作區(一個 dna.json 位於 engine/mv.py 旁;使用者可指定位置)。
  2. 如果不存在:執行 bash <skill-folder>/scripts/setup.sh [folder](預設為 ~/ia-content-workspace)。 安裝 venv、Kokoro、faster-whisper、Playwright/Chromium、OpenCV。需要 Python ≥3.10 和 ffmpeg。
  3. 如果存在但技能版本較新:執行相同的 setup.sh <workspace> — 它只會更新 engine/ 和 templates/,絕不會改動 dna.json、videos/ 或 library/。

以下所有命令都在工作區內執行,使用 .venv/bin/python(此處簡稱 py)。

1. 頻道設定(僅一次)

  1. 詢問:頻道名稱(如果沒有,請在 DNA 抽選後建議 5 個符合其風格的名稱)、主要格式(直式或 16:9)、可用的語音(免費 Kokoro、ElevenLabs/其他,或錄製的自有語音),以及是否已有 dna.json(若有,請複製到工作區)。
  2. 執行 py engine/mv.py dna — 使用 os.urandom 的種子來抽選 DNA,解決衝突組合,驗證顏色對比度,儲存 dna.json 與備份,並下載字型。顯示識別卡(py engine/mv.py cartao)。使用者可以鎖定(--lock traco=indice)或重新抽選某個特徵(py engine/roll_dna.py --reroll <traco>)。切勿手動選擇特徵。
  3. 將名稱寫入 dna.json 的 channel.name。
  4. 無圖像模型的純程式碼美術路線:只有「Chunky rounded-square heads」這個特徵已用程式碼繪製(engine/art/characters.py)。如果抽選到其他特徵,請鎖定 --lock build=3,或按照 _head/_torso/_legs 模式在 characters.py 中實作新特徵,或使用圖像模型。
  5. 設定完成後,頻道的 DNA 即被凍結。每個影片只會重新抽選每個影片專屬的特徵。

2. 每個影片 — 工作流程

使用者起始命令:「做一支影片:[主題],[長度]」(或「make a video: …」)。

#階段命令暫停並顯示給使用者?
1資料夾 + 每支影片抽選(腳本形式、鉤子、動機、縮圖佈局、重點)py engine/mv.py novo <slug>—
2腳本於 videos/<slug>/script.txt(純文字)+ 鏡頭數據(字數、場景數、角色數)手動撰寫是:腳本 + 選擇,等待確認
3art.json + 新的 plates/tiles 於 engine/art/plates.py 和 tiles.py(若主題需要)手動撰寫—
4美術 → 切割 → 骨架py engine/mv.py arte <slug>顯示美術接觸點
5語音 + 單字時間py engine/mv.py voz <slug>告知時長與 Whisper 差異
6video.json + shots 於 videos/<slug>/shots/01_story.js(從 templates/shots_modelo.js 開始)手動撰寫—
7接觸表(每 2 秒 1 幀)→ 修正 → 重複py engine/mv.py contato <slug>—
8渲染 + 音訊 + QCpy engine/mv.py render <slug>—
9縮圖py engine/mv.py capa <slug>—
10記錄 + 交付(影片、縮圖、附主題標籤的字幕)py engine/mv.py log <slug>是:已交付

在接觸表/靜態幀/渲染中使用 --formato paisagem 會生成 1920x1080;預設為直式 1080x1920。 要檢查特定時間點:執行 py engine/mv.py stills <slug> 0,3.2,10.5。

2.1 規模(隨時長調整)

  • 字數:使用 Kokoro pt-BR 約每分鐘 ~205 字(即使速度為 1.0 也很快);使用較慢語音約 ~175 字。
  • 場景數:分鐘數 × DNA 的 pace.places_per_min;直式格式下,約每 ~3 秒切換一次(約 20 個 shots/分鐘)。 ~30% 大板(含角色),其餘為特寫瓷磚(每四分一塊 4 個)。
  • 主要角色:3 分鐘以下 1–2 個,以上 2–3 個。
  • 章節(腳本中以 ## 標示):2 分鐘以下無;5 分鐘以內 3–4 個;10 分鐘以內 5–8 個。
  • 渲染:使用 --partes 4(預設)。3 分鐘以上影片:4–6 個部分。

2.2 直式(Reels/TikTok/Shorts)— 通過驗證的預設

  • 無開場或結尾片頭: 語音從第 0 幀開始。video.json 中不包含 title 和 outro_plate。(16:9 使用 DNA 的片頭。)
  • 第 0 幀永不為空: 鉤子已在畫面上(write/number 的 t0 = sh.start - 0.4)。
  • 每個 shot 都呼叫 sh.vert({ vw, vf }) — 請參閱 referencia/motor.md。
  • 僅在直式影片中內嵌字幕(1–3 個單詞,當前朗讀的單詞突出顯示)。16:9 無字幕。
  • 安全區域:重要元素不可位於畫面右側高度 50%–80% 之間(應用程式按鈕區)及底部 15%;HUD 位於左側;動機計數器位於右上角。
  • 鉤子與結構:請遵循 referencia/retencao.md(已通過留存率驗證)。

3. 風格規則(不可協商)

  • 扁平向量,無外框線,最多一個陰影(使用相同的深色),無漸層、無紋理、無表情符號、無頻道標誌、無真人照片。
  • 顏色:僅使用色板中的 5 種顏色加上 dna.json 中的 11 種程式碼顏色。在 shots 中使用 ENGINE.C.<color>、ENGINE.font(px) 和 ENGINE.rgba(hex, alpha) — 切勿使用固定的十六進位碼或字型名稱。在程式碼美術中使用 ROLE["ice"|"stone"|"pine"|"coal"|"berry"](從任何色板計算出的角色)。
  • 文字僅出現在世界中的物體上(黑板、招牌、船殼、卡片、螢幕)— 當場景足以承載訊息時,切勿使用懸浮卡片。請在 plate 的空白處(blanks)書寫。
  • 任何物體靜止超過 1 秒;每個角色都應呼吸、眨眼,並配合自己的台詞表演(指、展示、聳肩、慶祝)。每間隔 DNA 的 pace.new_thing_every_s 秒出現新事物。
  • 連續兩個 shots 絕不使用相同場景。縮放 ≤ 1.33 倍(相對於原始像素)。
  • 入場效果使用彈簧/彈跳/ puff,絕不使用簡單淡入。錯誤的想法上要打個大紅叉。

4. 美術

程式碼路線(預設,免費): plates 和 tiles 是 engine/art/plates.py 和 tiles.py 中回傳 (svg, meta) 的函式。Plates:1920x1080 世界座標,空白,中央自由地面,meta 包含 floor_y、blanks(程式碼可寫入的位置)、portals(≥ 400 px,用於轉場縮放)、anchors。Tiles:物體特寫,每四分一塊 4 個(make_art.py 組合 2x2 格並加上白色溝槽,裁剪並轉換 meta)。地圖:經緯度輪廓投影(參見 pacific_map、brazil_map)。角色:每個角色在 art.json 中有一個字典(使用色板顏色,不同角色之間膚色有所變化)。

圖像模型路線(可選): 使用 referencia/especificacao-original.md 中的 style core 生成圖片(請參閱 <art> 章節),儲存到 videos/<slug>/art/ 並使用相同的檔案名稱,在網格圖(*_grid.png)上測量矩形區域後撰寫 JSON meta,其餘管線(切割、骨架、動畫)完全相同。使用色鍵背景(綠色 #00B140,若色板包含綠色則使用洋紅色)且正面無手臂。

5. 語音

  • 預設:Kokoro(mv.py voz),語音來自 DNA 敘述者對照表,速度 1.0–1.1(絕不使用 atempo)。
  • 更自然:任何現成的音訊 → 執行 py engine/mv.py voz <slug> --wav arquivo.wav(自有語音、ElevenLabs、Chatterbox…)。腳本必須是朗讀的文字;Whisper 會重新對齊所有內容。
  • 減少「機關槍」效果:增加 --pausa-max 0.35 --pausa-manter 0.28。
  • 如果超過 5% 的單詞未被偵測到,voice.py 會失敗 — 請重新生成語音,不要強行過關。

6. 渲染前檢查(接觸表)

在渲染前修正:空白或溢出文字的文字板;文字遮住臉部;黑色邊框;漂浮的腳;連續兩次相同場景;超過 DNA 設定的間隔 2 倍以上無新內容;第 0 幀為空;直式影片中文字被邊緣裁切;任何不符合 DNA 的內容(字型、顏色、卡片、轉場)。 渲染後,QC 會標記未規劃的 1 幀跳躍 — 逐一調查(使用 stills)。音訊:動態閘控要求語音 ≥ 15 dB 高於音樂+音效,背景音在 < 1% 的幀中高於前景;輸出 -14 LUFS,峰值 -1 dB。

7. 交付

  • 影片:videos/<slug>/<slug>_vertical.mp4(或 16:9 的 <slug>.mp4)以及縮圖。
  • 準備好的字幕:第一行 = 鉤子;2–3 句包含主題關鍵詞的句子(搜尋會讀取字幕);問題式號召留言;最多 5 個相關主題標籤(Instagram 有限制)。
  • 提醒使用者關於簡化的事實或故事的大眾版本。
  • mv.py log <slug> — 每支影片的抽選會避免重複過去 5 支影片的形式/鉤子/動機/縮圖。

8. 引擎隨每支影片持續改進

遇到錯誤或限制?請在 engine/ 中修正(絕不僅在單一影片的檔案中),並將教訓記錄在技能資料夾的 referencia/licoes.md 中。在大型修補前請備份 shots。長時間渲染:分成可重做的部分。

參考資料

  • referencia/motor.md — shots 的 API(S、sh.*、角色、姿勢、直式鏡頭)。
  • referencia/retencao.md — 鉤子結構、結尾號召、節奏。
  • referencia/licoes.md — 所有曾出錯及解決方式的記錄。
  • referencia/especificacao-original.md — 完整規格(DNA 特徵、骨架、動畫、音效)。
  • workspace/exemplos/ — 兩個完整影片範例:el-nino(直式,神話 vs 現實)和 primeiro-cartao(16:9,按時間順序的故事)。若要研究或重建:複製到 videos/ 並執行 mv.py arte + mv.py contato(words.js 已準備就緒)。

相關技能