fmode-mv各步骤实际使用的提示词模板,以及手工调优时可参考的写法。 代码侧的构建器在lib/prompts.mjs;本文件是给人读、给人改的版本。
scripts/lyrics.mjs)你是资深华语流行音乐制作人兼作词人,为 AI 音乐生成模型(Suno 类)撰写可直接投喂的素材。
硬性要求:
1. 歌词必须自带结构标记,每段用方括号起头:[Intro] [Verse 1] [Pre-Chorus] [Chorus] [Bridge] [Outro]。
2. Chorus 要朗朗上口、有记忆点,副歌句尾押韵。
3. 只输出 JSON,不要任何解释文字、不要 markdown 代码围栏。
4. stylePrompt 用英文逗号短语描述曲风/编曲/情绪,供音乐模型直接使用。
5. 歌词内容必须为原创,不得抄袭任何已有歌曲的句子。
为什么强制原创:AI 音乐模型会因为训练数据里高度雷同的句子而"撞词", 一旦与已有歌曲雷同,商业发布有版权风险。这一条不能去掉。
【主题】<用户输入>
【指定曲风】<genre>
【情绪基调】<mood>
【补充要求】<style>
要求:
- 歌词长度适合 2.5~3.5 分钟,段落完整(主歌2段、副歌2-3次、可含桥段)
- 副歌必须有记忆点,句尾尽量押韵
- 给出英文 stylePrompt(含曲风、乐器、速度、人声类型、混音质感)
| 维度 | 可用词 |
|---|---|
| 曲风 | city pop / mandarin indie rock / chinese folk / synthwave / lo-fi hiphop |
| 速度 | 92 bpm / mid-tempo / slow ballad 68 bpm |
| 乐器 | warm analog synth pads / electric piano / acoustic guitar arpeggio / guqin and strings |
| 人声 | female vocal, breathy intimate delivery / male vocal, raspy and warm / instrumental |
| 混音 | lush reverb / tape saturation / punchy modern mix / subtle vinyl noise |
示例(实测产出的好例子):
city pop, 92 bpm, warm analog synth pads, electric piano chords, soft muted brass accents,
clean funky guitar, mellow round bass groove, laid-back brushed drums, female vocal,
breathy intimate delivery, lush reverb, tape saturation, subtle vinyl noise,
night city ambience, nostalgic yet comforting, melancholic but warm
【镜头数量】N 个(必须控制在 N±2 个,这是硬性约束)
【单镜时长】每镜 6 秒左右,必须在 4~8 秒之间。
注意:AI 图生视频单段现实上限约 8 秒,不要生成 20 秒、30 秒的镜头。
为什么要写死:实测中模型会按「歌长 180 秒 ÷ 想法数」自由发挥, 给出 30 个 36 秒的镜头 —— 这在图生视频里物理上不可生成。 约束写在提示词里 +
normalizeStoryboard二次夹取,双保险。
imagePrompt 的黄金结构[主体] + [动作/状态] + [环境] + [光线] + [镜头语言(焦段/景别/角度)] + [风格] + [画质词]
含人物时:必须把 appearanceAnchor 的英文版原样复述在主体位置。
实例(本仓实测产出):
A 27-year-old East Asian man with slightly tousled medium-length black hair falling over his forehead,
thin silver-rimmed glasses, an unbuttoned charcoal-grey wool suit jacket over a wrinkled light-blue
dress shirt with a loosened dark navy tie, black slacks and scuffed leather shoes, a beige canvas tote
bag on his shoulder; quiet, gentle, worn-out but warm presence, calm cinematic stillness, face softly
lit by practical light
— sitting alone in an almost empty late-night subway carriage, temple resting against the cold window
glass, city lights streaking across his face in long horizontal smears, tie loosened, singing softly
— close-up to medium close-up, 85mm anamorphic lens, side profile, slightly low angle
— cyan interior carriage light against warm orange light streaks outside the glass, bokeh of empty seats
— City pop neo-noir realism, sodium orange and cyan teal palette, 35mm film grain, photoreal, 4K
注意分号分段:主体; 气质; 动作环境; 镜头语言; 光线氛围; 风格画质 ——
这个写法比逗号长串更稳定,模型不会把「气质」误读成「动作」。
videoPrompt 的写法只写「怎么动」,不写「画的是什么」(内容来自关键帧):
Slow orbit around his head resting against the carriage window, city light streaks sliding across
his face, then a slight push-in as he turns his eyes to camera; barely-there handheld,
lips in sync at 92 BPM, complete within 6 seconds
常用运镜词:slow push-in / pull back / pan left / orbit / handheld drift /
crane up / rack focus / dolly zoom。
必须写时长(complete within 6 seconds)——否则模型会设计出 6 秒内做不完的动作。
锚点不是「参考」,是「每镜头复述」。
appearanceAnchor 会被 buildKeyframePrompt() 拼进每个含人物镜头的 prompt。
不要指望模型「记得上一张图长什么样」——文生图是无状态的。
| 必写 | 作用 |
|---|---|
| 性别 + 大致年龄 | 最基础的身份 |
| 发型(长度/颜色/形态) | 识别度最高的特征 |
| 服装(颜色 + 材质 + 款式,含配饰) | 跨镜头的视觉锚 |
| 气质/神态 | 决定表演基调 |
| (可选)标志性道具 | 如「米色帆布托特包」,强化连续性 |
✅ 好(具体、可视觉化、无歧义):
A 27-year-old East Asian man with slightly tousled medium-length black hair falling over his forehead,
thin silver-rimmed glasses, an unbuttoned charcoal-grey wool suit jacket over a wrinkled light-blue
dress shirt with a loosened dark navy tie, black slacks and scuffed leather shoes, a beige canvas tote
bag on his shoulder; quiet, gentle, worn-out but warm presence
❌ 坏(抽象、模型每次理解都不同):
一个疲惫的都市男性 ← 没有发型/服装/年龄,每张图都会换人
medium shot, eye level,
景别固定后模型更难"重新想象"这个人。generateImage 支持 refImage 参数,
传第一张已确认的人物图,能显著提升一致性(需通道支持)。styleKeywords 里写死色调与质感
(sodium orange and cyan teal palette, 35mm film grain),
风格稳定会连带人物观感稳定。seen from behind as a small distant figure)。Extremely quiet 1AM subway platform still life, a lone glowing vending machine casting cold cyan light
on empty tiled floor, an abandoned folded newspaper lying on a vacant metal bench seat,
close-up of smudged fingerprints and dried sweat on a brushed stainless-steel handrail,
a fluorescent ceiling tube flickering once, distant dark tunnel mouth
— macro and detail shots, 85mm macro lens and 35mm wide, low eye-level angle
— high contrast cold cyan practical light with one warm sodium spill
— City pop neo-noir realism, 35mm film grain, photoreal, 4K
"still life"(静物)这个词很有用:它会让模型聚焦在物件与光影上, 而不是自作主张往画面里塞人。
在意画面干净就加上:
no people, no text, no signage, no watermark
实测:不写
no text时,模型会往招牌/海报上写满乱码文字。 城市夜景类镜头尤其明显。
[0-3s] 钩子:提问 / 反常识 / 利益点
[3-15s] 问题:为什么这事值得听
[15-70s] 正文:2~4 个要点,每个要点配一个小结句
[70-85s] 落地:给具体建议(不要空泛)
[85-90s] CTA:一句行动号召
【目标时长】约 90 秒(约 324 字,中文口播语速约 3.6 字/秒)
3.6 字/秒 是实测的中文 TTS 舒适语速(edge-tts 默认语速下)。 按这个估算:60s≈216字、90s≈324字、180s≈648字。
| 写法 | 原因 |
|---|---|
| 短句为主(≤ 20 字) | 长句 TTS 会断气、换气点奇怪 |
| 数字用中文读法 | 「30%」→「百分之三十」;「API」→「接口」 |
| 少用括号、引号、破折号 | TTS 会念出来或停顿异常 |
| 避免中英混排 | 英文词读音不可控 |
| 段落之间留自然停顿 | 分镜按段落切画面更自然 |
直接追加到任何 imagePrompt 末尾:
cinematic still frame, high detail, film grain, color graded, 4k
按用途追加:
| 场景 | 追加词 |
|---|---|
| 电影感 | cinematic, anamorphic lens flare, shallow depth of field |
| 纪录片感 | documentary photography, natural light, candid |
| 概念图/图表 | clean minimal infographic style, flat design, no text, white background |
| 特写 | macro shot, extreme detail, soft bokeh |
| 竖屏短视频 | (用 --aspect 9:16,并在 prompt 加 vertical composition, subject centered) |
--dry-run:fmode-mv keyframe --from work/storyboard.json --dry-run
看技能准备发出去的完整 prompt。work/storyboard.json 里某一镜的 imagePrompt,
然后 fmode-mv keyframe --from work/storyboard.json --shot N 单独重生成。styleKeywords 或锚点,
重跑全部分镜与关键帧。work/frames/keyframes.json 存了每张图用的完整 prompt,
好的写法从那里捞回来复用。