APIMODELSAPIMODELS

MiniMax H3 提示词怎么写

TL;DR 一句话:把 H3 提示词写成按镜头排的时间线——风格和构图、发生了什么、镜头怎么动、谁说了哪句台词——再单独写一段环境音、一段背景音乐。这是 MiniMax 官方给 H3 定的提示词结构。

模型页:MiniMax H3 API —— 价格、规格与在线体验

MiniMax H3 并不是直接读一段随手写的描述。在 MiniMax 自己的流程里,有一步叫 H3-Context-IR:先把你写的文字和参考图、参考视频、参考音频一起理解,改写成一份结构化描述,视频模型再照着它生成。MiniMax 说这一步「对最终质量至关重要」,并公开了这份结构,方便开发者自己照着写。

自己照着写,换来的是可控:什么时候切镜头、哪个角色说哪句台词、观众听到什么,都由你定,而不是交给自动改写去猜。一句话的普通描述照样能出片;当时间点、台词和声音必须准确落位时,这份结构才真正起作用。

下面的规则都来自 MiniMax 在 GitHub 仓库 MiniMax-AI/MiniMax-H3 里公开的 H3 提示词写作指南;示例提示词是我们按这套结构自己写的。

H3 提示词的三个字段

纯文字生成的 H3 提示词只有三个字段,顺序固定。画面里看得见、听得见的东西都写进第一个;后两个只管声音。

字段写什么要点
integrated_multimodal_description时间线:风格和构图、人物、动作、镜头运动、切镜、说话人和台词、跟动作同步的声音以 [Shot 1] 开头,先写整体风格,如 Live-action, cinematic
overall_soundscape整条片子的环境音、动作声、呼吸笑声这类非语言人声1–4 句写成一段;台词不要在这里重复
non_diegetic_music只有观众听得到的背景音乐1–3 句写乐器、速度和强弱变化;没有就写 N/A

镜头、切镜时间和运镜

镜头按顺序编号。第一个镜头不写时间;之后每个镜头开头写切镜时间(分:秒),时间严格递增、不能超出片长:「[Shot 2] At 00:05.000, the camera cuts to …」。切镜要带来新东西,新主体、新地点、新视角或新时刻;只是想推近一点、换个小角度,就用运镜,不要切。

运镜最多写三件事:怎么动、动多大、动多快,而且要写成镜头里的一句完整英文,不要在句末堆标签:「The camera pushes in with small amplitude at slow speed toward the letter in her hands.」想要中等幅度、正常速度时,幅度和速度可以省略不写。

英文写法镜头实际怎么动
Push In / Pull Out机位往前推、往后拉
Zoom In / Zoom Out机位不动,只改焦距
Pan Left / Right、Tilt Up / Down原地左右摇、上下摇
Truck Left / Right、Pedestal Up / Down整机横移、整机升降
Arc Shot、Tracking Shot绕着主体转、跟着运动的主体走
Static Shot、POV固定机位、主观视角
Shake Slightly / Strongly、Roll Clockwise / Counterclockwise轻微或强烈晃动、绕镜头轴旋转
with small / large amplitude、at slow / fast speed幅度小或大、速度慢或快

台词、旁白和画面里的字

每个开口说话或唱歌的角色都给一个固定编号 (S1)、(S2),跨镜头保持不变;不出声的角色不编号。说话人的特征(年龄、嗓音、语气)写在台词标记外面,标记 <d> 里只放语言和原话:The baker with a raspy voice (S1) says: <d>[English] First batch of the morning.</d>。方括号里写台词的语言,MiniMax 官方示例用的是 [English];台词一律保留原文,不要翻译。

旁白要用固定说法「says in an off-screen voiceover」,并在台词后面紧跟一句画面中这个角色的嘴唇保持闭合。画面里要出现的招牌、标签、字幕、霓虹字,原文放进英文双引号里:A neon sign reading "营业中" glows above the door.

完整示例:8 秒、两个镜头、一句台词

下面是一条按官方结构写的纯文字提示词:深夜拉面店的厨师、一个慢推镜头、一句中文台词、第 5 秒切镜,墙上还有一张手写告示。调用时把 duration 设成 8,切镜时间才落在片长之内。

integrated_multimodal_description: [Shot 1] Live-action, cinematic, a medium shot frames a narrow late-night ramen bar where a cook in his fifties wipes the wooden counter as steam rises from the pots behind him. The camera pushes in with small amplitude at slow speed as the cook, a man with a low, gravelly voice (S1), looks up toward the door and says: <d>[Chinese] 最后一碗,给你留着呢。</d> [Shot 2] At 00:05.000, the camera cuts to a close-up of a bowl of ramen set down on the counter, chopsticks resting across the rim, with a handwritten sign reading "营业到两点" on the wall behind it. overall_soundscape: Broth bubbles in the pots under a low kitchen hum. The ceramic bowl clinks against the wood, and rain patters faintly outside the door. non_diegetic_music: N/A

实际请求里,三个字段之间各空一行,见下方调用示例。

同时传图片、视频或音频时怎么写

H3 有五种输入模式,提示词的第一行随模式变化。给首帧时,开头是一句固定的话,把 Picture 1 钉在第 0.00 秒,然后从这张图往后写接下来发生什么。给首尾帧时,写的是两帧之间的过渡路径,通常用一个镜头。给参考素材(人物、产品、要模仿的运镜、音色)时,官方指南把每份素材标成 <Subject N>、<Picture N>、<Video N> 或 <Audio N>,同一个标签在整条提示词里意思不变,并写清楚每份参考在时间线的哪个点出现。

在 apimodels.app 上,每种模式对应不同的模型名和字段。数组里的素材按你传入的顺序交给模型,提示词里就按这个顺序指代。

你手上有什么官方模式用哪个模型名、传哪些字段
只有文字T2VAminimax-h3、minimax-h3-lite、minimax-h3-max-turbo、minimax-h3-rh-enhanced 都可以
一张首帧I2VAminimax-h3-max-turbo 或 minimax-h3-rh-enhanced,传 first_frame_url
首帧和尾帧FL2VAminimax-h3-max-turbo、minimax-h3-rh-enhanced 或 minimax-h3-lite,传 first_frame_url + last_frame_url
参考图、参考视频或参考音频Ref2VAminimax-h3:images(最多 9 张)、video_list(最多 3 段)、audio_list(最多 3 段);minimax-h3-rh-enhanced:reference_image_urls(最多 9 张)、reference_video_urls(最多 3 段);minimax-h3-lite:images + audio_list

最容易把 H3 片子写坏的几个错误

写剧情梗概,不写镜头。「孤独的厨师重新找到希望」没有给模型任何可拍的东西;要写镜头里看得见、听得见的内容,一个镜头一个镜头地写。

切镜时间超出片长。6 秒的视频写了 00:09.000 切镜,或者切镜时间前后颠倒。先定 duration(minimax-h3 是 5 到 15 整秒),再把切镜时间放进去。

声音放错字段。台词属于时间线,不要写进 overall_soundscape;房间里收音机放的歌是场景的一部分,只有角色听不到的配乐才放进 non_diegetic_music。

把台词翻译了。台词是中文就在 <d> 里保留中文;其余部分用英文写。

参考标签前后不一致。<Subject 1> 一开始指第一张图里的女人,整条提示词里就一直是她。

什么时候不必这么写

只是试试想法时,一句自然语言就够了;minimax-h3-max-turbo 还可以把 prompt_expansion_mode 设成 quality,让它替你把短提示词扩写开。想直接拿现成的,先去 MiniMax H3 提示词库挑一条,再改动作、运镜和台词。

调用示例

cURL

# 8 seconds, 768p, text only. In JSON the blank line between fields is \n\n.
curl -X POST https://api.apimodels.app/v1/video/generations \
  -H "Authorization: Bearer $APIMODELS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "minimax-h3",
    "duration": 8,
    "resolution": "768p",
    "ratio": "16:9",
    "prompt": "integrated_multimodal_description: [Shot 1] Live-action, cinematic, a medium shot frames a narrow late-night ramen bar where a cook in his fifties wipes the wooden counter as steam rises from the pots behind him. The camera pushes in with small amplitude at slow speed as the cook, a man with a low, gravelly voice (S1), looks up toward the door and says: <d>[Chinese] 最后一碗,给你留着呢。</d> [Shot 2] At 00:05.000, the camera cuts to a close-up of a bowl of ramen set down on the counter, chopsticks resting across the rim, with a handwritten sign reading \"营业到两点\" on the wall behind it.\n\noverall_soundscape: Broth bubbles in the pots under a low kitchen hum. The ceramic bowl clinks against the wood, and rain patters faintly outside the door.\n\nnon_diegetic_music: N/A"
  }'
# → { "code": 200, "data": { "taskId": "...", "state": "pending" } }; poll GET /v1/video/generations?task_id=...

Python

import os, requests

prompt = """integrated_multimodal_description: [Shot 1] Live-action, cinematic, a medium shot frames a narrow late-night ramen bar where a cook in his fifties wipes the wooden counter as steam rises from the pots behind him. The camera pushes in with small amplitude at slow speed as the cook, a man with a low, gravelly voice (S1), looks up toward the door and says: <d>[Chinese] 最后一碗,给你留着呢。</d> [Shot 2] At 00:05.000, the camera cuts to a close-up of a bowl of ramen set down on the counter, chopsticks resting across the rim, with a handwritten sign reading "营业到两点" on the wall behind it.

overall_soundscape: Broth bubbles in the pots under a low kitchen hum. The ceramic bowl clinks against the wood, and rain patters faintly outside the door.

non_diegetic_music: N/A"""

r = requests.post(
    "https://api.apimodels.app/v1/video/generations",
    headers={"Authorization": f"Bearer {os.environ['APIMODELS_API_KEY']}"},
    json={"model": "minimax-h3", "duration": 8, "resolution": "768p", "ratio": "16:9", "prompt": prompt},
)
print(r.json())  # then poll GET /v1/video/generations?task_id=...

常见问题

MiniMax H3 提示词要用英文写吗?

MiniMax 官方指南里,结构化提示词用英文写,但台词、歌词和画面里出现的文字保留原文。所以中文台词在 <d> 里照写中文,中文招牌在双引号里照写中文。

H3 怎么控制第几秒切镜头?

从第二个镜头开始,在开头写切镜时间,例如「[Shot 2] At 00:05.000, the camera cuts to …」。第一个镜头不写时间,切镜时间要递增,而且都要落在你请求的 duration 之内。

怎么让 H3 里的角色说指定的台词?

给角色一个说话人编号,<d> 里只放语言标签和原话:The woman (S1) says: <d>[English] I get off at the next station.</d>。嗓音和语气写在标记外面,同一个角色在每个镜头里都用同一个编号。

在 apimodels.app 上调用必须写成这种结构吗?

不必须。普通描述在每个 H3 模型名上都能用,这套结构是在需要精确控制时间点、台词和声音时用的。想让短提示词被自动扩写,可以用 minimax-h3-max-turbo 的 prompt_expansion_mode。

MiniMax 官方的 H3 提示词指南在哪?

在 GitHub 仓库 MiniMax-AI/MiniMax-H3 的 h3-prompt-writing 技能里,有两份:一份讲文字和关键帧模式,一份讲全参考模式。本页把两份的要点整理出来,并对应到 apimodels.app 上的模型名和字段。

相关阅读

收录于
APIMODELS on Product HuntAPIMODELS featured on ToolifyAPIMODELS featured on There's An AI For That