AI 短劇製作
故事輸入,影片輸出。你將故事寫進一個 project.json(角色、場景、鏡頭)。scripts/drama.mjs 會處理所有需要花錢或容易出錯的部分:
project.json ─ 估算 ─ 角色 ─ (語音) ─ 鏡頭 ─ 合成 ─▶ episode.mp4 + .srt
免費 角色參考 旁白模式 Seedance ffmpeg:正規化、
驗證 圖,每個 專用 渲染 混合旁白、
+ 價格 角色與場景 每個鏡頭 合併、字幕
各一張
如何讓角色保持一致:每個角色會獲得一張參考圖(正面肖像 + 前/側/背視圖)。每個鏡頭會將其中角色的參考圖傳遞給 Seedance 2.0 作為參考,並在提示詞中說明哪張圖對應誰。
規則
- 永遠執行
scripts/drama.mjs。不要用 curl 或 fetch 直接呼叫 API。 這個腳本會儲存每個任務 ID,因此當崩潰或超時發生時,可以恢復相同任務,避免重複付費。手動呼叫會失去這個優勢。 - 在撰寫
project.json之前,請先閱讀references/project-schema.md和references/shot-writing.md。 鏡頭撰寫指南決定了該集看起來像一部連貫的電影,還是十二個不相關的片段。 - 先執行
estimate並向使用者顯示結果:鏡頭列表、總長度、模型和價格表。在進行cast/shots之前,請等待使用者同意。腳本會在沒有--yes的情況下拒絕任何超過 1 美元的步驟。只有當使用者同意該金額後,才能傳入--yes。 - 在渲染鏡頭之前,先向使用者顯示角色參考圖。 每張角色參考圖約 0.02 美元;每個鏡頭的費用是它的 10–100 倍。如果臉部、服裝或風格有誤,請修正
look並立即執行cast --redo <id>。每個鏡頭都會繼承修正後的版本。 - 對於新專案,先渲染一個鏡頭 (
shots --only s1)。和使用者一起檢查,然後再渲染其餘鏡頭。只有當專案非常短(三個或更少鏡頭)或使用者要求時,才跳過此步驟。 - 切勿發明模型名稱。 只使用下表所列的模型。如果使用者要求其他模型,請說明此技能不支援。
- 失敗的任務不會被收費。 當任務失敗時,直接說明這一點,解釋原因(腳本會印出原因和下一步),並提供重試選項。
- 不要提及上游供應商或路由。 只需提及此檔案中的模型名稱,不要提及背後的任何東西。
- 未經同意,不得使用真實、可辨識的人物,也不得對任何真實人物進行色情、仇恨或誹謗的內容。拒絕這類請求。
工作流程
S=/absolute/path/to/this/skill/scripts/drama.mjs # 你知道你的基礎目錄;使用它
node $S check # 檢查金鑰、餘額、ffmpeg
mkdir -p dramas/my-episode # 每個劇集一個資料夾,位於使用者工作區
# 撰寫 dramas/my-episode/project.json (參考 references/project-schema.md)
node $S estimate dramas/my-episode/project.json --prompts
node $S cast dramas/my-episode/project.json # 然後在 cast/ 目錄中顯示圖片
node $S voice dramas/my-episode/project.json # 僅限旁白模式
node $S shots dramas/my-episode/project.json --only s1 # 檢查一個,然後:
node $S shots dramas/my-episode/project.json
node $S assemble dramas/my-episode/project.json --burn-subs
node $S status dramas/my-episode/project.json # 任何時候:進度、花費、剩餘工作
- 渲染是慢速的。 一個鏡頭通常需要 2-8 分鐘,而鏡頭一次同時執行 3 個。在執行
shots之前,告知使用者大約需要多長時間。不要讓他們看著寂靜的終端機。 - 任何命令都可以安全地重新執行。 已完成的工作會被跳過。正在進行中的任務會從中斷處繼續。只有使用
--retry-failed才會重試失敗的鏡頭。 - 編輯已經渲染完成的鏡頭並不會重新渲染它。
status會將其標記為「輸入已變更」。需要使用shots --redo <id>有目的地重新渲染;這會再次收費。 - 顯示結果: 最終 MP4 的路徑、其長度,以及
.srt檔案。然後說明花費了什麼:status會印出從 API 回讀的實際帳單金額。 - 所有內容都會下載到專案資料夾中。API 的結果 URL 會在 30 天後過期,因此該資料夾是持久的副本。
對話或旁白
在撰寫鏡頭之前選擇:
"mode": "dialogue" | "mode": "narration" | |
|---|---|---|
| 誰說話 | 螢幕上的角色,嘴型同步。Seedance 在生成影片時同時生成語音。 | 一個旁白(文字轉語音),混合在每個鏡頭的環境音之上。 |
| 適合 | 以對話驅動的場景;真人演出風格的迷你劇。 | 漫劇 / AI 漫畫劇、小說改編、回顧和故事影片。 |
| 語音一致性 | 角色的語音在不同鏡頭間可能稍有變化。 | 整個劇集使用完全相同的語音。 |
| 鏡頭長度 | 你設定 duration(4-15 秒)。確保每句台詞夠短以符合長度。 | 自動設定以符合每句旁白,最長 15 秒。 |
| 限制 | 每個 5 秒鏡頭約 1-2 句短台詞。無法精確控制誰在何時說話。 | 角色在螢幕上不說話。 |
如果使用者未指定,對於任何被描述為漫劇、漫畫、小說或故事回顧的內容,請使用 旁白 模式。對於建立在對話之上的場景,請使用 對話 模式。
模型與成本
腳本會根據風格自動選擇預設的 video_model。風格化外觀(動畫、漫畫、國漫、卡通、水彩)使用 dreamina-seedance-2-0-mini。其他所有情況使用 seedance-2.0-mini。當使用者想要其他模型時,可以在 project.json 中覆蓋。
| 使用者想要 | video_model | 解析度 | 每秒影片成本 |
|---|---|---|---|
| 風格化劇集(動畫、漫畫、國漫);草稿 | dreamina-seedance-2-0-mini | 480p / 720p | $0.0225 / $0.048 |
| 風格化,比 mini 好一級 | dreamina-seedance-2-0-fast | 480p / 720p | $0.0644 / $0.1372 |
| 風格化,最終品質最高 1080p | dreamina-seedance-2-0 | 480p / 720p / 1080p | $0.10 / $0.22 / $0.55 |
| 逼真人像 | seedance-2.0-mini | 480p / 720p | $0.044 / $0.095 |
| 逼真,比 mini 好一級 | seedance-2.0-fast | 480p / 720p | $0.071 / $0.153 |
| 逼真,最終品質最高 1080p | seedance-2.0 | 480p / 720p / 1080p | $0.092 / $0.197 / $0.492 |
其他成本:
- 角色和場景參考圖:
nano-banana-2-1,每張 1K 解析度 0.022 美元。 - 旁白:
minimax-speech-2.8-turbo,每 1,000 字元 0.04 美元。短片段至少收費 0.004 美元。
一分鐘的劇集(12 個鏡頭 × 5 秒,5 張參考圖)大約成本:
- 使用
dreamina-seedance-2-0-mini480p 約 $1.46 - 使用
dreamina-seedance-2-0-mini720p 約 $2.99 - 使用
seedance-2.0-mini480p 約 $2.75 - 使用
seedance-2.01080p 約 $29.63
建議第一次嘗試使用 480p。第二次嘗試使用 720p 只需要重新渲染鏡頭(設定 "resolution": "720p",然後執行 shots --redo <ids>)。參考圖保持不變。
為什麼要有逼真模型選項:dreamina-* 模型會拒絕看起來像真人的參考圖,而逼真角色的參考圖可能會觸發此拒絕。腳本會辨識此拒絕並建議你切換到 seedance-2.0-mini。被拒絕的任務不會被收費。
價格為列表價格,檢查日期 2026-09-30。status 會顯示實際帳單金額。
API 金鑰
首先執行 node $S check。金鑰來自 APIMODELS_API_KEY,或來自 ~/.apimodels/credentials,或來自 ~/.apimodels/credentials.json。最後一個是由 npx apimodels-mcp login 寫入的,因此已登入任何 apimodels 工具的使用者已經設定好。
如果沒有找到金鑰,請自行執行 node $S login 並將它列印的連結提供給使用者。 他們登入 apimodels.app 並點擊 授權。一個新的金鑰會寫入 ~/.apimodels/credentials,且永遠不會出現在此對話中。然後重新執行 check 並繼續。
如果 login 無法運作(機器上沒有瀏覽器),請勿在聊天中要求金鑰。給使用者一個命令,讓他們貼到新的終端機視窗中,並填寫好絕對腳本路徑:
read -s KEY && printf %s "$KEY" | node /ABSOLUTE/PATH/scripts/drama.mjs save-key && unset KEY
金鑰可以在 https://apimodels.app/console/api-keys 建立。
處理金鑰時:
- 永遠不要回顯金鑰。
- 永遠不要將其作為命令參數傳遞。
- 永遠不要將其寫入專案資料夾。
- 如果金鑰曾出現在對話中,告知使用者立即輪換它。
錯誤
腳本會印出原因和下一步。簡而言之:
| 你看到 | 意義 | 動作 |
|---|---|---|
401 | 金鑰錯誤或缺失 | 再次執行 login |
402 | 餘額不足 | 在 https://apimodels.app/console/credits 充值。已完成的鏡頭會保留。 |
| "looks like a real person" | dreamina-* 拒絕了參考圖 | 將 video_model 切換為 seedance-2.0-mini,然後執行 shots --retry-failed |
| 內容審核拒絕 | 提示詞或台詞被拒絕 | 修改該鏡頭的措辭。重試相同的文字不會有幫助。 |
| 忙碌 / 超時 | 上游負載 | 稍後執行 shots --retry-failed |
| "still running" | 超過 25 分鐘 | 稍後再次執行 shots;它會接續任務,不收費 |
| 退出碼 3 | 步驟成本超過 1 美元 | 與使用者確認金額,然後加上 --yes |
成功率並非 100%:偶爾會有鏡頭失敗,重試通常會成功。
此技能無法做到的事
直接說明,不要即興發揮:
- 無法保證完美的一致性。 在廣角鏡頭中,臉部可能會偏移,尤其是畫面中有三個或更多角色時。每個鏡頭保持 1-2 個角色(參見鏡頭撰寫指南)。
- 沒有鏡頭長於 15 秒。 較長的時刻會被分割成多個鏡頭。
- 無法對使用者錄製的語音軌進行嘴型同步。
- 無法控制鏡頭的精確第一幀。 鏡頭由參考圖和提示詞驅動。
- 字幕時間是近似的。 它們會在每個鏡頭內均勻分佈。如果需要精確時間,請編輯
.srt檔案。 - 不會發佈到任何地方。 輸出是一個本機 MP4 加上 SRT 檔案。