一句話影片 是做什麼的?
使用者給一句話,你先做設計:定風格,定每一場畫面上看到什麼。然後寫一份 video.json,題材裡看得見的東西由你寫畫面程式碼畫出來。腳本負責排時間、配樂、字幕、編碼、自檢。
下文命令裡的 SKILL 要換成本檔案所在目錄的絕對路徑(例如 /home/me/skills/one-prompt-video)。所有命令在使用者的當前工作目錄裡跑,檔案路徑都相對它。
五步
1. 準備環境(每個工作目錄跑一次)
node "SKILL/scripts/setup.mjs"
它檢查 Node、畫圖庫、ffmpeg、中文字體,缺的會裝或告訴你怎麼裝。全部 [通過] 再往下走。有 [缺少] 時把那幾行原樣告訴使用者。
2. 設計(不反問使用者,自己定,最後告訴使用者你定了什麼)
在當前工作目錄新建一個資料夾(用片名,下面叫 片名/),先把設計寫進 片名/方案.md,十幾行就夠。寫完方案再寫別的。只有文字卡片的片子觀眾看不下去,這一步決定片子好不好看。
補齊使用者沒說的
| 使用者沒說的 | 預設 |
|---|---|
| 多長 | 30 秒左右,5 到 8 場 |
| 橫屏豎屏 | 橫屏 16:9;提到手機、豎屏、抖音、小紅書、影片號用 9:16 |
| 語言 | 和使用者說話的語言一致 |
| 人聲 | 不要。預設是字幕加配樂。本技能不帶配音服務:使用者要人聲時,先告訴他配音要自己準備(一個能從命令列出聲的 TTS,或自己的錄音),再照 references/voice.md 接 |
定風格
- 使用者要的是氛圍、故事、場景、角色,或者說了「不要解說」「要畫面感」「像電影」:這支片子不用版式,整支由你畫。改讀
references/film.md,照它做。 - 其餘的片子從下面的風格包表裡選一個。風格包自帶場景、道具、角色、轉場和音效,畫面比內置主題豐富得多。按題材選:先看「適合」一欄;對得上不止一個時,選和題材裡的實物最近的(手作、食物、生活小事選
papercraft或clay,設備和流程選isometric,帳目和業績選dashboard)。使用者點名了一種樣子(「像打遊戲」「做成聊天記錄」「新聞播報那種」)就用對應的風格包。 - 內置主題只在兩種情況用:使用者明說要簡潔、克制、商務;或者內容嚴肅,裝飾會妨礙閱讀。用內置主題的片子,自己畫的場要佔到一半。
- 定一樣貫穿全片的東西:題材裡的一件實物(機翼、咖啡豆、月亮、店鋪的門臉)。它在片頭出現,在後面幾場裡再出現,片子才連得起來。
定每一場
方案裡列一張表,每場一行,按這個順序想:
| 這一場要讓觀眾明白的一件事 | 畫面上看到什麼 | 怎麼做(哪種版式,或自己畫) | 旁白 |
|---|
「畫面上看到什麼」寫的是圖:一樣東西、一個過程、一張圖表、一個結構。先想圖,再想字。照下面八條定:
- 遮字看。 把這一場的字全部遮掉,剩下的畫面還看得出在講什麼,這一場才成立。講機翼,畫面上要有機翼和氣流;講咖啡訂閱,畫面上要有盒子、豆袋和沖煮卡片。
- 看得見的東西自己畫。 題材裡的實物、過程、結構,用
layout: "custom"寫畫面程式碼畫出來,寫法見references/custom-scenes.md。全片最要緊的那一場必須是自己畫的;一支片子至少兩場自己畫,三分之一以上更好。 - 版式按資訊的形狀選,讓版式自己說明關係。 比大小用
bars,先後順序用steps,兩方對照用compare,一個真實的量用number(序號、鐘點、編號不是量,不用number)。statement全片最多一場,bullets最多一場,quote只放真實的引語。 - 不寫次要的標籤和說明。
kicker、subtitle、note、label、cta和每一場的title預設都不寫。只有去掉它觀眾就看不懂這一場時才寫。版式已經表達的關係不用文字再說一遍:長條圖不用起「四個季度對比」這樣的標題,步驟不用寫「第一步」,對比卡不用寫「對比」。 - 畫面與旁白分工。 旁白(
say)講完整的句子,講的是畫面上正在出現的東西;畫面上只留圖、關鍵詞和數字。同一句話不既排成大字又放進字幕。 - 相鄰兩場不一樣。 同一種版式不連用兩場;上一場是居中大字,下一場就換成圖或圖表。
- 重點省著用。 大數字、金句全片各一次。
- 頭尾。 第一場用
title,開頭兩場內說清這支片子講什麼。最後一場用end,落在一句結論或一個行動上;結尾比開頭小、比開頭短:一句話,加上那樣貫穿全片的東西。
你看不了圖、也寫不了畫面程式碼時,第 2 條做不到:照常用風格包和版式做,回報時如實告訴使用者這支片子以文字版式為主。
3. 寫 video.json 和畫面程式碼
照方案寫 片名/video.json:
{
"title": "一句話,出一支片",
"theme": "papercraft",
"aspect": "16:9",
"seconds": 30,
"scenes": [
{ "layout": "title", "title": "一句話,出一支片", "say": "說一句話,就能拿到一支短影片。" },
{ "layout": "custom", "module": "scenes/pipeline.mjs", "seconds": 7, "cues": 3, "say": "你說一句話,模型做設計、填表,腳本把它變成片子。" },
{ "layout": "bars", "unit": "秒", "items": [{ "label": "第 1 次", "value": 68 }, { "label": "第 2 次", "value": 51 }, { "label": "第 3 次", "value": 57 }], "say": "小模型測了三次,每次一分鐘左右。" },
{ "layout": "custom", "module": "scenes/laptop.mjs", "seconds": 6, "say": "一台普通的筆記型電腦就能出片。" },
{ "layout": "end", "title": "現在試試", "say": "現在就試一次吧。" }
]
}
seconds是全片的目標時長,腳本會按它分配每一場的時間,成片和它差三秒以內是正常的(每場要湊成整數拍,片尾還有一秒多淡出)。不寫就按字數自動估。say是這一場的字幕(有配音時也是配音稿)。每場一句,30 個漢字以內(英文 12 個詞以內)。- 自己畫的場,畫面程式碼放在
片名/scenes/裡。每寫完一場先出靜幀看(--still),認得出畫的是什麼再寫下一場。 - 畫面上的字是給人掃一眼的,要短。寫不下就拆成兩場,不要把一場塞滿。
- 不編事實。使用者沒給的數字、引語、人名、公司名不要寫成真的;要舉例的數字,在旁白裡說明是示意。產品的功能和效果只用使用者給的說法;你自己補的解釋,在最後回報時逐條列出來請使用者核對。
只用版式的完整例子在 SKILL/assets/example.video.json。
4. 校驗,出片
node "SKILL/scripts/make.mjs" 片名/video.json --check # 先校驗,幾秒鐘
node "SKILL/scripts/make.mjs" 片名/video.json --sheet # 出總覽圖,看過再出片
node "SKILL/scripts/make.mjs" 片名/video.json # 出片
--check報[出錯]時,每一條都寫了第幾場、哪個欄位、正確的寫法。照著改,再跑,直到通過。- 你能看圖的話,打開
片名/out/sheet.jpg逐格看。每場兩格:第一格是入場到一半,第二格是全部到齊,以第二格為準。每一格問四件事:遮掉字還看得出在講什麼嗎;主體夠不夠大(佔畫面寬或高的六成以上);有沒有一大片空著;有沒有字擠在一起或一個詞被折成兩行。有一條不過就改,改完重出總覽圖。 - 出片後讀它列印的報告(也存在
片名/out/report.txt)。有[問題]或[注意]就改了重跑;最常見的是「字太多」,把那段字縮短。
5. 告訴使用者
說清四件事:成片在哪(報告裡「成片:」那一行的路徑,檔名是 title 加 .mp4);你替使用者定了什麼(時長、畫幅、風格、哪幾場是自己畫的);片子裡哪些內容是你補的;畫面好不好看、配樂好不好聽你沒法判斷,請使用者看一遍。成片沒有人聲時順帶提一句:想加配音,要他自己找一個 TTS 接進來。
風格包
每個風格包是一整套畫面:九種版式各按自己的樣子重畫,帶自己的場景、道具、轉場、字幕和音效。theme 寫它的名字就行。
| theme | 樣子 | 適合 |
|---|---|---|
papercraft | 多層卡紙的景箱、紙片小人、定格抖動 | 輕鬆的科普、產品介紹、小故事、生活類 |
clay | 暖色黏土定格,圓潤的小角色 | 入門講解、習慣和健康、給孩子看的內容 |
collage | 牛皮紙、撕紙、膠帶、剪下來的字 | 輕鬆的科普、盤點、欄目開場 |
skit | 扁平插畫的辦公室,兩個小人對內容有反應 | 給非專業觀眾講道理、職場話題 |
isometric | 2.5D 的機器、傳送帶、檢查站 | 講流程、講原理、講系統怎麼運轉 |
cosmos | 深空、星雲、發光的星體和軌道 | 講全域、講層次、系列開篇 |
dashboard | 暗色數據大屏:面板依次點亮、儀表弧、長條圖 | 業績、評測、監控、成本這類帶數字的內容 |
news | 演播室、標題條、滾動字幕條 | 要點快遞、週報、數據播報 |
chat | 手機裡的一段聊天記錄,內容是一條條氣泡 | 口語化解說、案例、問答 |
comic | 黑框分格、網點、速度線、擬聲字 | 有轉折的故事、前後反差 |
detective | 軟木板、拍立得、便簽、紅線 | 排查問題、複盤一件事的來龍去脈 |
arcade | 8-bit 像素遊戲:磚塊、金幣、關卡地圖 | 講步驟、比高低、輕鬆的產品介紹 |
variety | 多層描邊花字、放射線、吉祥物、彈幕條 | 最熱鬧的短影片、吐槽、盤點 |
vhs | 錄影帶:掃描線、換台、老電視、走帶計時 | 懷舊向、系列節目的片頭和預告 |
chrome | 鍍鉻立體字、流動的液態漸變、星形閃光 | 年輕向的短句、潮流話題,不適合嚴肅內容 |
預覽圖在 SKILL/assets/styles.jpg,能看圖就先看一眼再選。風格包的裝飾多,一場裡的字要更短;news 會把內容排成新聞節目的樣子,內容不是真新聞時在回報裡提醒使用者一句。
這些只是現成的起點,風格不設上限:要一整套新的樣子(手帳、黑膠唱片、地鐵線路圖,什麼都行)照 references/style-packs.md 寫一個自己的風格包。
十二種內置主題
主題只換顏色、背景和線條,畫面裡沒有場景和道具。用它的條件見第 2 步「定風格」第 3 條。
| theme | 樣子 | 適合 |
|---|---|---|
grid | 米色網格紙、紫色、白卡片 | 講概念、講原理 |
minimal | 大面積留白、細線、一個藍點 | 安靜克制的品牌片、片頭 |
pop | 撞色、放射線、粗黑描邊 | 熱鬧、快節奏、短影片平台 |
keynote | 深色漸變、玻璃卡片、發光 | 新品、重大結論、科技話題 |
blueprint | 藍圖紙、白線、黃色標註 | 講結構、架構、怎麼組裝 |
whiteboard | 白板、麥克筆、手畫的框 | 老師邊畫邊講,講流程和因果 |
chalk | 墨綠黑板、粉筆線、木邊框 | 課堂板書,講題、講公式、講步驟 |
neon | 深紫夜色、發光線條、透視網格 | 科技、遊戲、電子音樂 |
terminal | 黑底綠字、等寬字、閃爍的游標 | 程式碼、命令列、開發工具 |
paper | 米色紙面、襯線大標題、紅色 | 評論、讀書、人文話題 |
ink | 宣紙、遠山、朱紅印章 | 傳統文化、詩詞、歷史 |
bold | 黑白粗體、硬切、一種紅色 | 觀點、口號、榜單 |
預覽圖在 SKILL/assets/themes.jpg。使用者要別的顏色用 colors 換。
版式
每一場選一種,或者自己畫。一場只講一件事。
| layout | 什麼時候用 | 必填 | 預設不寫的 | 限制 |
|---|---|---|---|---|
custom | 題材裡看得見的東西:實物、過程、結構 | module、seconds | cues、data | 見 references/custom-scenes.md |
title | 開頭 | title | subtitle、kicker | 標題 12 字以內 |
bars | 比大小 | items(2 到 6 項,每項 label 和數字 value) | title、unit(接在每個數後面)、highlight(第幾根用強調色,從 1 數;不寫是最高的那根) | label 8 字以內 |
steps | 先後步驟、流程 | items(2 到 5 步) | title | 每步 12 字以內 |
compare | 兩樣東西對照 | left、right(各有 title 和 1 到 4 條 items) | title | 每條 12 字以內 |
number | 一個真實的量,全片一次 | value | unit、label、note | value 寫成 "25"、"80%"、"1,280" |
statement | 一句要讓人記住的話,全片最多一場 | text | highlight(text 裡要上色的詞) | 24 字以內 |
bullets | 並列的幾個要點,全片最多一場 | items(2 到 5 條文字) | title | 每條 18 字以內 |
quote | 真實的引語 | text | by | 40 字以內 |
end | 結尾 | title | subtitle、cta(按鈕上的字) | 標題 14 字以內 |
unit是數字的一部分,該寫就寫。number的label只在光看數字和單位不知道它量的是什麼時才寫。- 每種版式都可以加
say(字幕)和seconds(這一場固定多少秒)。
使用者給了影片素材(實拍、錄屏、已有的片子)時,還有一種 clip:把素材裡的一段放進來,和上面的版式混著排,整支片子全是 clip 就是剪輯。寫法:{ "layout": "clip", "file": "素材/採訪.mp4", "from": 12.4, "to": 18 }。怎麼看素材、怎麼定取哪一段,見 references/editing.md。
要更多的時候
| 需要 | 讀 |
|---|---|
| 自己畫一場:實物、過程、結構(每支片子都要用到) | references/custom-scenes.md |
| 使用者要的是氛圍、故事、場景、角色,或整支片子都是自己設計的畫面 | references/film.md(你寫每一幀怎麼畫,腳本管鏡頭、配樂、出片和自檢;要能看圖) |
| 全部欄位、換顏色、換字體、固定某一場的秒數 | references/video-json.md |
| 加人聲(配音要使用者自己找 TTS 或自己錄),換成自己的配樂檔案 | references/voice.md、references/video-json.md |
| 使用者給了影片素材要剪進去,或者要剪輯已有的影片 | references/editing.md |
使用者要在 Final Cut Pro、剪映裡接著剪(出片命令加 --project) | references/editing.md |
| 現成的主題和風格包都不對,要一整套新的樣子 | references/style-packs.md(寫一個風格包,要自己寫幾百行畫面程式碼並對著圖改,先確認自己做得了) |
| 安裝失敗、字體方框、ffmpeg 報錯 | references/troubleshooting.md |
| 使用者明確要 3D 場景、全屏著色器的自然風景這類畫布畫不了的片子 | references/pipelines.md(參考生產線,要自己寫程式碼,先確認自己做得了) |
| 使用者機器上有 Blender、庫樂隊,或有豆包語音的金鑰,想要寫實渲染、真實樂器的配樂、自然的人聲 | references/external-tools.md(藉助外部工具,給能力強的模型,先確認自己做得了) |
這個技能做不了的:憑空生成真人或實拍的畫面(實拍只能用使用者給的素材)、對素材做調色去背這類精修(匯出工程交給剪輯軟體做)。遇到這類需求如實告訴使用者。