SuperAPI AI Directory

h3-storyboard

Design & creation

View repository

Updated 10-20 16:12

About this skill

H3 Storyboarding and Performance

minimax-h3 That skill teaches youhow to write something you've already figured out in H3 format. This one teaches youhow to think— how to break a script into shots, how to turn emotion into actions the model can actually perform.

The official and community skills all stop at the translation layer; nobody does this part (instann/minimax-h3-director "automatic shot breakdown" is listed on the roadmap but not done yet). Everything below is generalized from actual shoots, and each item is tagged with its verification status.


0.2, ⭐⭐⭐ Before writing each shot: first ask [what should this shot convey], then decide the composition, and only then write the content

Composition is not "something you casually decide after the content is written." It's the first decision, because it determines whether everything else can be performed at all.

✗ 常見的寫法(也是最容易失敗的)
  內容 → 表演 → 對白 → ……最後順手填一個景別
  結果:景別永遠是最中性的那個(置中、平視、正面),
        而中性構圖 = 訪談感、證件照感 —— 它不會傳達任何情緒強度

✅ 正確的順序
  ① 這一顆在戲裡要達成什麼?(一句話,用觀眾的感受寫,不是用動作寫)
     「讓人覺得這是他這輩子最高的一刻」而不是「他抬頭看大家」
  ② 什麼構圖能達成它?   ← 機位高度、景別、人在畫面裡的位置、前景、視線方向
  ③ 然後才寫表演、光、對白、道具

Why this order can't be reversed

表演   臉佔畫面 1/7 時,「下眼瞼微抬」無處可畫 → 先有景別,表情才有地方發生
特徵   體格、骨相在遠景會被抹平 → 先有景別,幾何描述才守得住
情緒   「高光時刻」「被排除在外」「他一個人」這些都是【構圖講的】,不是表情講的:
       仰角=主導 俯角=被壓 置中=中性 偏置+前方留空=有去向
       前景有人=被包圍 背景空曠=孤立
光     先知道機位在哪,才知道光從哪來;反過來寫一定會打架

⭐ In one sentence: first decide what the audience should "feel", then decide "where they look from", and only then decide "what happens" in the frame.

⚠️ The way you check must change too: when accepting a shot,first ask "did it achieve its purpose in the scene",   then ask "was it shot according to the storyboard". The latter is a checklist; the former is directing.   A shot can be shot exactly according to the storyboard and completely fail to achieve its purpose — in that case, what needs changing is the composition, not the details of the prompt.


1, 🔴 First law: one shot can't hold too many beats

Stuff too many expression beats into one shot and the model converges toward "average motion", flattening them all out. You write eye-opening, eyebrow-raising, lip-biting, and nothing happens on screen—and there's no error report at all.

A three-version comparison experiment, the same shock scene, the same seed, the same facial beats:

Shot structure Dialogue PSNR at emotional peak Result
A One 7-second close-up, 9 beats None 37–42 dB Face didn't move at all
B Split into three 2–3 second shots, one main beat each None 22–23 dB All expressions landed
C Same as B Add <d> 19 dB Performance amplitude a bit larger

(Lower PSNR means larger frame changes. 42 dB equals a frozen frame.)

A → B is the main cause: splitting the shot. From 40 down to 23, the vast majority of the effect is in this step. B → C is a bonus: dialogue. From 23 to 19, it helps but it's not the mechanism.

So what to do

① 先數節拍。 一顆鏡頭超過兩三個表情節拍就要拆。
② 拆成 2–3 秒的短鏡頭,每顆一個主節拍。
③ 有台詞就寫進去(見下),沒有也能成立。

Cutting itself is performance—the audience automatically re-reads the character's state at the cut point, so splitting isn't just so the model can execute it, it's also so the audience can see it.

Verification: 2026-08-26, Ref2VA 243 frames, three-version comparison, fixed seed. This isisolated: A→B changes only the shot structure, B→C changes only one line of dialogue.

Corroborating evidence: a purely local test on Bilibili is "unified first frame · 10 emotions · one emotion per 6-second clip", the same conclusion—one clip holds only one emotion.

⚠️ This rule governs [faces] — the beat density ceiling for large body movements is much higher (2026-10-03, wuxia test)

徒手武打,雙人中遠景(兩人從頭到鞋入鏡)、107 幀、無剪點
一顆約 3 秒寫了 8–9 拍:直拳 → 閃 → 低踢 → 抬腿避 → 再一拳 → 格擋 → 側踢 → 被踢退三步 → 逼近
→ 4 份提示詞 × 2 seed,8 顆都照順序打出來,真速度、不是慢動作;動態量在整段動作期間一直維持高檔

⭐ What gets averaged out is the small-amplitude, pixel-level beats of the 【facial expression】 kind; punches and kicks, weight shifts, being knocked back — these kinds offull-body displacementwon't. → When breaking down fight scenes, don't apply "split every two or three beats" — stuffing a 3-second shot full of moves is feasible; change the reason for splitting shots to 【change of angle】 instead of 【too many beats】. ⚠️ partly: one project, one scene, 2 seeds per prompt; contact (punches and kicks actually landing) was not verified frame by frame.

<d> characters: it steals time

Shots with dialogue have a larger performance range, but the mechanism is not "dialogue makes the face move" — it's that H3 redistributes the time of the whole video, giving more to the shot with dialogue.

Same 243-frame, four-shot video, differing only by one line of VO dialogue (everything else identical: same seed, same reference image, same ref_image_size=max):

              Shot 1   Shot 2   Shot 3(有台詞)   Shot 4
提示詞規格       77 幀    48 幀       74 幀          44 幀
無台詞           89       43         55 ❌          56
有台詞           88       29         84             42

The no-dialogue version compressed the emotional-peak shot to 55 frames, 19 frames short of spec, cutting away halfway through the performance. The dialogue version gave it 84 frames, with a maximum facial change of 28.5 dB (30.2 dB without dialogue).

The cost lands on the other shots. After Shot 4 was compressed to 42 frames:

無台詞:配角在落地窗外還在走動,陽台雨遮、欄杆都保留
有台詞:配角完全不存在,落地窗退化成一扇普通窗戶

The scene elements established in Shot 1 were not carried through to Shot 4 in the dialogue version.

So:

  • Shots that need performance → write dialogue (inner monologue counts too; write it as a narration version)
  • Shots that need background continuity → don't put them in the same video as dialogue, or run both versions and edit

How to write inner monologue:

the young woman, in a small unsteady voice that catches once partway through (S1),
says in an off-screen voiceover: <d>[Chinese]……</d>
while her lips remain completely closed.

Emotion goes in the delivery field, not inside <d> . Official spec: the identifier, ID, action, and delivery are all outside <d> ,<d> only the language tag and verbatim dialogue go inside.

But don't force in dialogue just for performance. For characters designed not to speak (listening, avoiding, sulking), splitting into shorter shots is enough — Group B proved the performance works without dialogue.

⚠️ Confidence on the background-collapse point is one notch lower: both dialogue versions dropped supporting characters, while only one no-dialogue version did. The direction is consistent but n is too small to rule out generation variance.

⚠️ Not documented officially. MiniMax's H3 prompt guides (both base and ref) have no expression section at all. Most online claims that "H3 is good at micro-expressions" refer to Hailuo 02/2.3 — different models on the hosted API, and the hosted version has a prompt rewriter in front of it; the open-source weights path doesn't.

Silent characters

For characters with no dialogue,facial beats can still be written(verified in Group B), butlarge body movements are safer:

Face (higher risk) Large body movements (very stable)
Masseter muscle bulges once Long exhale through the nose, shoulders drop with it
Blink, gaze drops to the floor Wipes hands on trousers → grabs the back of the neck → head droops forward
Upper eyelids fully open Head pulls back three centimeters
Lower lip tucks inward Whatever is being held loosens and tilts downward

locomotion (sitting up, standing, walking somewhere) has almost never failed, making it the most reliable category.


II. ⛔ Don't write "nothing changes"

❌  From 00:04.800 to 00:05.300 nothing about her changes:
    her eyes stay where they are, her mouth stays where it is, her head does not move.

This is a very strong "don't move" instruction,It will spill over onto the entire lens— and the result is that the parts that should move also stop moving.

That "hasn't reacted yet" gap should be kept, but it becomes a cut point:

Shot A 收在「動作停止」
── 剪接點 ──          ← 停頓在這裡,後製定格要多久有多久
Shot B 從「反應開始」

Pauses are the job of editing, not generation. Leave it to post-production for 100% control.

⚠️ This onewas not isolated: the version with that line also had the "nine beats crammed into one shot" problem (see §1), so the two variables were not tested separately. So "don't write it" is the safe approach, but whether it is the main cause is still uncertain. Anyway,leaving pauses to editing is inherently more controllable, so there is no reason to take this risk.

⭐ But you need to distinguish three kinds of "not moving" — their rules are different

物件的不動   ✅ 要寫,而且寫成【正面狀態】
            「筆保持與桌面接觸,筆與資料夾的距離從第一格到最後一格都一樣」
            (寫「筆不要動」沒用 —— H3 沒有否定通道)
人的不動     ⚠️ 不要寫成「什麼都不變」(本節),改成寫【他在做的小事】:
            呼吸、眨眼、重心微沉(見 §六之二③)
攝影機的不動 ⚠️ 只需要一句 static, on a tripod, with no camera movement whatsoever
            🛑 多寫會【反過來】:我為了確保硬切,加寫了 no push in/no zoom/
              no dissolve/no intermediate framing,結果剪點連兩次漂到 3.5 秒以後
              (見 §七之二③)

⭐ Criterion:Describing "what is in the frame" can be detailed; describing "how to shoot it" can only be one sentence.


1b. If you want to add real human voiceover, dialogue length is a hard constraint

When H3 does its own voiceover, it will speak faster on its own to fit the dialogue in. Once you plan to discard its audio track and replace it with a real human recording, time becomes a hard constraint— you can't change a real person's speaking rate (atempo if you compress it by more than 5%, it becomes noticeable).

First measure your voice actor's speaking rate. Method: take a finished episode's subtitles, total character count ÷ total seconds. (The voice actor on this project is 4.30 characters/second, including intra-sentence pauses.)

Dialogue character count ÷ speaking rate = required seconds. Compare that with "the length of the shot the dialogue is in."

⚠️ This only applies to dialogue where "the mouth has to match." Narration (VO) shots are not constrained by it — for shots where the mouth is closed the whole time, the voiceover is layered on in post, and the shot length should be determined bythe shot itself. I stepped into this pitfall on a VO shot: in order to make a certain face "fill the 3.2 seconds of narration," I gave 1.4 extra seconds of a person barely moving — the director chose the 1.8-second version (see §6b⑤). It only takes 1.5–2 seconds for a face to be read; narration length is not a reason.

⚠️ It is not compared with "the distance to the next beat." Actual shooting confirmed: dialogue marked at 3.400, next beat at 4.000, but the mouth starts moving at 2.17s and keeps moving until the video ends at 5.12s. H3 treats the entire shot as that person talking, and will not close the mouth at the next beat.

So what actually goes wrong is this

Putting beats that conflict with talking in the same shot:

❌ At 00:03.200  台詞開始
   At 00:04.600  she finishes speaking   ← 逼 H3 在這裡收嘴
   At 00:05.200  眨眼
   At 00:05.800  吞嚥                     ← 不可能發生在句子中間

Beats after the talking is done should go into the next shot. That shot is only "he is talking" from beginning to end, so the mouth shapes will fill the whole shot, and there will naturally be enough time.

Voice-over (VO) is not restricted — post-production can make it as long as needed, and it can span shots or even videos.


2a. ⛔ Do not shoot collisions, and do not shoot the amount of liquid

H3 cannot docontact-driven causality, nor can it maintainliquid volume. Actual shooting evidence: asking it to shoot "a hand knocks over a coffee cup, and the coffee spreads and floods the small objects on the table" resulted in—

手全程沒碰到杯子      杯子懸空自己轉倒,沒有任何一幀是接觸的
咖啡量超過一杯        兩秒鋪滿大半張桌子,倒完了還在繼續流
液體不像液體          邊緣是硬的扇貝狀,像貼紙,不順著木紋流
關鍵拍沒發生          液體從頭到尾沒碰到那個小物件

Writing the prompt in more detail does not help — it is not that it didn't understand, it's that it can't do it.

Solution: don't shoot that moment

Shot 1  手臂從畫面邊緣掃過鏡頭,貼近到蓋滿整個畫面
Shot 2  切 —— 事情已經發生了,杯子倒著,水漬已經漫開並且停住
        H3 只要「延續一個已經存在的狀態」,不用「發動一次碰撞」
撞擊聲掛音軌,觀眾自己補因果

An arm sweeping across the lens is itself a natural cut point, and that is locomotion — the most reliable category.

The amount of liquid must have hard boundaries written in

✅ spread about as far as the width of a hand and no further, its leading edge
   a few centimetres short of the base
❌ runs out across the wood in a widening dark sheet

Words like "widening" and "spreading" have no endpoint, so H3 will just keep growing. Same principle as the size one:Talk about observable boundaries, not abstract processes.

An object "being cut in half" also doesn't shoot well — a flash of light + the object leaving (2026-09-26, wuxia test)

Same family:a complete object splitting in front of the camera, H3 can't do it. Two compositions, five seeds:

近拍斗笠、塞滿畫面   光線切開 → 兩半像翅膀往上張開、切口留著霓虹光(導演:「看起來怪」)
越肩、斗笠只佔一角   整頂滑下、套在脖子上像衣領 ×1;光一閃、前緣錯位、碎片從肩上滑落 ✅ ×1
另一顆:「半頂斗笠」躺在沙上 → 兩輪都被畫成完整的一頂或缺角的一頂

✅ What works isa flash of light (fleeting, don't leave it on the cut) + the object leaving the frame, not "the two halves separating" itself. ✅ When it's unreadable, pushing in at the edit stage (digital zoom) is cheaper than reshooting. ⚠️ Small n, one project; phrasings like "fleeting" and "falling downward with weight" help, but the two halves separating is still unreliable.


2-2. For actions, make the 【body part performing the action】 the subject

Director's note: "The folder closing needs to have a hand, otherwise it looks like it closes by itself." In the first version I added astate("the hand must grip the cover, in frame the whole time") — ran it again, the hand still didn't move with it. The reason is that the subject of the sentence is still the prop:the hand takes the cover and swings it over, what H3 executes is "the cover flips over," and the hand is just an object that exists at the same time.

🛑 手抓著封面把它翻過去(+「手全程可見」)
✅ ⓐ 先宣告主詞:「這顆鏡頭裡【動的是手】,資料夾只是手帶著的東西」
   ⓑ 寫手的關節路徑:手腕轉 → 指節抬起往前越過折線 → 前臂翻 → 指尖最後落下
   ⓒ 補【距離恆為零】:掌心與卡紙的距離在 0.8→2.0 秒之間是零,
     封面的邊緣從不離開拇指與其他指頭之間的皺摺
   ⓓ 補一句反例:「沒有任何一格是封面動了而手沒動,也沒有任何一格封面自己立在空中」

⭐ The hand must already be touching the prop in the first frame of the shot, don't bring it in from off-screen — one less chance to "spawn a hand."

Two hands are more reliable than one, but they need to divide the work

The director's second note was "you can use two hands." The result was steadier than one hand, because the two hands serve as anchors for each other:

左手=【按住的那隻】  平放在近側那半、按住紙,「闔的過程中它不在桌上移動」
右手=【闔的那隻】    拇指扣住遠側封面的外緣,手指攤在封面上
⭐ 讓開的動作才是賣物理性的關鍵:
  「封面壓過來時,左手往桌子近緣【滑開】,全程貼著卡紙,直到手指離開封面的落點
    —— 封面落在紙上,不是落在左手上」
+ 收尾也要交代:兩隻手一起把資料夾【推正對齊】→ 壓平一次 → 兩手退出畫面,
  之後「資料夾獨自躺在桌上,完全靜止」

⭐ General rule:"A moves B" should be written as how A's joints move, plus a line saying the distance between A and B is always zero. If you only describe B's displacement, H3 will give you a world where B moves on its own.


3. Size: talk about cropping relationships, not fractions

Fractions get ignored. Tested:

寫 about two thirds as tall as the frame   →  生出來 45–52%

Change it to describingthe composition itself, the model can't dodge it:

✅  耳尖離畫面頂端只剩一個手掌寬
✅  底座往左右兩邊都溢出畫面,兩側都看不到完整的底
✅  畫面下緣從底座前緣下方切過
✅  它是畫面裡遠遠最大的東西,其他都只是周邊的小細節

Tested went from 45% → 52% → 69%(target two-thirds) in one shot.

To control the size of a supporting character, "limiting the range in frame" is more reliable than "specifying a size":

❌  her open palm is about as wide as the distance between its two ears   → 實際 1.66 倍
✅  只有手指和手掌前緣進畫面,手腕和手掌後半留在框外

The less is shown, the bigger the subject naturally is.

Size in vertical format has a geometric ceiling

Awidth ≈ heightcharacter, in 9:16 vertical format,fully in frame:

寬度填滿畫面 → 高度 = 768 ÷ (寬高比) ≈ 畫面高的 50–60%

Tested three times: 52%, 61%, 61%.This isn't bad prompt writing, it's the ceiling of the aspect ratio.

To go bigger youmust crop off a portion. What gets cropped is usually the bottom (base, lower body), because the upper part is narrower and can stand taller in the frame:

✅ only its upper part is in the picture: its cheeks reach out past both the left
   and the right edge of the frame, the tips of its ears sit just under the top edge,
   and the bottom edge of the frame cuts straight across its glowing belly so that
   its base is entirely out of shot below

The same trick hit 69–70% in another episode."The whole thing must be in frame" and "must be very big" are mutually exclusive in vertical format.

Distance is the same, don't write units

Fractions get ignored,distances with units get ignored just the same. Real test: wrote its leading edge a hand's width short of the base, the generated liquid flooded right up next to the base.

Change it tousing something in the frame as a ruler:

❌ a hand's width short of its base
❌ stops about five centimetres away
✅ between the near edge of the pool and its base there is a band of bare dry wood
   as wide as the figurine is tall

Same principle: the model can't compute abstract quantities, but it understands "there's a gap between A and B that's about as wide as a C."

A top-down angle will dismantle the character

Shot from directly above, the character's face, ears, and silhouette all disappear, leaving only a blob of color; andwith no depth reference, the size relationships between objects go haywire— in an actual shoot, a mug was drawn larger than a 16-centimeter figure.

To shoot things on a tabletop,put the lens at tabletop height and look forward, don't look down. The face is preserved, the liquid's extent gets flattened by foreshortening (it won't look like a lake), and proportions have a reference.

The three size tricks must all three be written

  1. Compare with a known object——about the same size as a woman's hand from wrist to fingertips
  2. Absolute size——roughly 16 centimetres tall
  3. How much of the frame it occupies— write it using cropping relationships, see above

The first two tricks governphysical correctness, the third trick governsperceived appearance. Write only the first two, and things will be "correctly proportioned but look small."


4. Leave shape and proportion to reference images

Writing proportions in text failed three versions in a row (wanted 1.75:1, produced a 0.96 square). Feed one reference image, solved in one go.

需要特定形狀的元素(光板、螢幕、看板)
  → 做一張「空白版」參考圖:形狀、圓角、邊緣光暈都對,裡面是空的
  → 內容後製合成

The advantage of a blank version: what the model gets ispure geometry, with no content it can draw wrong。

⛔ Don't directly feed images that have content(such as tarot cards, UI screenshots) — symbols and text will definitely be drawn as gibberish.


⚠️ As many faces as there are, that's how many people you must write — headcount is also a hard constraint

One character given two faces (front + three-quarter), in a shot with camera movement, was generated astwo people: an extra person wearing the same shirt appeared behind and to the left of the protagonist, along with an extra chair.

✅ 共用段固定加一段 people_count:
   「這個房間整支片只有兩個人 —— A 和 B —— 沒有別人。
     沒有第三個人出現:沒有人坐著、沒有人站著、沒有人走進來、
     沒有人坐在他們後面或旁邊,也沒有人影出現在 B 的肩膀後面。
     ⭐ <Picture 3> 和 <Picture 4> 是【同一個人】的兩個角度 —— 是一個人,不是兩個,
       B 絕不可以被複製成畫面裡的第二個人。
     B 的左後方是空的:只有淡色牆與擦過的白板,前面沒有別的東西。」

⭐ This one and "as many people as there are in the scene image, that's how many chairs to place" are a set: an empty seat = a candidate seat, an extra face = a candidate character. ⚠️ Space vacated by camera movement also counts as an empty slot: when the camera pushes in and pushes another person out of frame → that space must be refilled → the way H3 fills space is by generating people (see §7, part 2, ②).

⭐ Costume reference images should not include a face — use an "invisible mannequin" (2026-09-25, wuxia test + external corroboration)

When a costume needs to occupy a reference slot, the face of the person in that image is [an extra face]. ✅ Use an image-generation model to make an "invisible mannequin": the clothes hold a three-dimensional shape as if worn by someone, the collar and cuffs are empty, and there is no one inside.   The prompt explicitly states "shows the costume alone on an invisible mannequin; in this video it is worn by <Subject 1>".   Wuxia test: face, costume (mannequin), and blade as three separate images, 21 generations, and there was always only one person in frame, and no empty garment grew out either. 📎 External corroboration: in the three panels of the character design sheet for Higgsfield's《HELL GRIND》, [the front panel does not include a head],   for the same reason — "the model keeps taking the face from the small full-body image." ⚠️ We do not have a control group for "costume image with face" (partly).


4-1. ⛔ Brand characters must not be dirty, torn, or deformed

Shooting a shot of "a ceramic figure flooded by spilled coffee," the prompt wrote coffee glistening around its base、the amber light glowing through the wet film. H3 did as told, andit spread upward across the entire face— turning into the figure crying mud tears.

If that character is a product/brand asset, this kind of shot cannot be used, no exceptions.

The problem is not the model, it is the prompt. As long as the sentence links the liquid and the character's surface together (on、around、through、soaks into、film), it will paint it on, and it will overdo it.

Fix: keep the tension, cut the contact

❌ coffee glistening around its base, the light glowing through the wet film
✅ a dark pool lies on the wood behind it, a hand's width back from its base,
   holding the amber light as a long reflection across its surface
   (再加一句正面敘述:its cream-white surface is dry and matte all over)

The liquid is still in the frame, the tension of the approach is still there, the character is clean, and the reflection looks better than a wet film.

General rule: do not use a preposition to bind "the thing that will make a mess" and "the surface that cannot get dirty" into the same noun phrase. Give them a clear spatial distance.


4-1-2, ⭐⭐ Whether the performance reads or not depends first on whether the shot is [close enough]

This is the most common root of all performance problems, and it is most easily misdiagnosed as three separate problems.

If a scene comes out like this ——

角色的表情節拍沒有被執行(寫了「2.0 秒低頭、4.5 秒抬頭」,他卻從頭到尾同一個表情)
角色的體格/特徵被抹平(寫了「壯」「寬下顎」,生出來卻是一般身材)
畫面看起來很雜,人物和環境搶

—— the instinct is to fix them separately: write the expression in more detail, write the physique as geometry, write the background as dark. But these three things often have only one cause: the shot is too far away.

Control group (2026-09-19, same shot, same set of reference images, only the shot size changed)

遠景版   兩人從膝上入鏡、頭佔畫面高 1/7
         → 表情節拍沒出來、體格被生瘦、前景一排背影擋住主體
近景版   兩人從胸以上入鏡、頭佔畫面高 1/3
         → 同一段表情描述【自己演出來了】、體格守住了、畫面乾淨

Between the two versions, only the shot size number and the sentence "the crowd is behind the camera" were changed; not a single word of the expression and physique text was touched.

Why

For something that occupies only a few pixels in the frame, the model has no reason to spend compute on it. A face that occupies 1/7 of the frame height has nowhere to draw an action like "lower eyelids slightly raised"; a body that occupies 1/8 of the frame height cannot support the ratio of jaw width to neck width either. No matter how detailed you write it, it is the same —— details need space to grow.

Performance and features are a function of [space], not a function of [text]. Text only determines what to perform; shot size determines whether it can be performed.

How to use it

1. 一顆鏡頭如果有【指定的表情節拍】,臉至少要佔畫面高的 1/3
2. 一顆鏡頭如果要守住【體格或外型特徵】,那個部位要佔得夠大 ——
   遠景就不要指望,改用剪影、輪廓、站位去區分人
3. 情緒的落點(「他低頭」「他抬頭看這一屋子的人」)一律給近景。
   落點的戲是靠景別給的,不是靠演的
4. 覺得「表情不夠」時,先問【鏡頭能不能再近一點】,再考慮改文字

⚠️ The reverse also holds: for a long shot of a group scene, [do not write expressions]; just write large body movements (clapping, raising a glass, patting a shoulder). Putting acting requirements into a shot size that cannot perform them will only make the model move randomly somewhere else.

⭐⭐ But writing "want it close" in the prompt is useless —— the frame is stretched open by [what must fit in the frame]

Writing the number one level tighter (if you want above the chest, write above the shoulders) works in many shots, but some shots cannot be pulled closer no matter how you write it. The difference is not in the number, but inwhat this shot simultaneously requires to be in frame。

同一場、同一組參考圖、同一句「數字故意寫緊」的提醒:

✅ 有效   兩人並肩講話,畫面裡除了他們什麼都不需要 → 確實縮到胸以上
✗ 無效   同一個人,但提示詞(含共用段)要求看得到他手上的杯子、手上的道具、
          以及兩個杯緣相碰 → 那些東西都在腰的高度,框一定被撐回腰以上

The model's choice is correct:the action must hold. It was I who wrote mutually exclusive requirements into the same shot.

Shot size is not determined by adjectives, nor by scores, but by [contents].   To be close, you must first drive unnecessary things out of the frame.

How to do it

1. 寫每一顆之前先列:這一顆【非在畫面裡不可】的東西有哪些?
2. 那張清單裡最低(或最外側)的那一樣,就決定了這顆的景別下限
3. 想要更近 → 把清單上的東西移到別顆去,或明寫它在畫面外
   「他手上的東西在畫面下緣之外;這一顆畫面裡除了他的頭與肩膀,不需要容納任何東西 ——
    這就是它能這麼近的原因」
4. ⚠️ 特別注意【共用段】裡的道具描述:它會套用到每一顆,
   包含那些其實不需要看到道具的鏡頭,於是整場的景別都被撐開
5. 一顆鏡頭一件事:互動用中景、道具用 INS、情緒落點用特寫。不要一顆全包
6. ⭐⭐ **接線也算內容物**:接了某個道具的參考圖,模型就一定要把它放進畫面。
   文字裡把它趕出去沒有用 —— 要連那張參考圖一起拿掉,否則圖會贏過文字
7. ⭐ **道具的【狀態】也是圖決定的**:參考圖裡刀身是裸的(刀與鞘分開並排),
   文字寫「整顆都在鞘裡」→ 刀從第一格就拔出三分之一。換成「完整入鞘」的參考圖 → 六顆都乖乖在鞘裡
   → 同一件道具的不同狀態做成不同的參考圖,每一顆接它【在這一顆的狀態】(武俠測試 2026-09-25,partly)
   ⭐ 狀態也包括【翻開到哪一頁】:掛曆往後翻到五月那顆,只給十一月那頁 → 掀開露出的還是一頁「十一月」;
   多給一張五月那頁 → 掀起、露出五月、放手落回,一次就對(矽谷之戀 H413 c→d,2026-09-26,partly)

The lower bound of the frame = the sum of what this shot "must contain", and that sum includes [every reference image you attach].  If you want a close-up, the text must be clean, and the attachments must be clean too.


📎 External corroboration: a long shot cannot carry identity; this is [a limitation of the model], not a problem with how you write it

The earlier rule "do not expect anything from a long shot" is stated even more absolutely externally.

A small, distant subject will definitely be blurry; the MiniMax team has confirmed this is asystem-levelproblem —— not just VAE compression, nor caused by some particular training stage.Today, no prompt can fix it.

⭐ It gave one extra thing we didn't write:Adding steps or increasing resolution won't help; don't burn a long render on this.

So there is only one correct use for a wide shot:Do space, not identity. If the viewer needs to recognize who it is, cut to a medium shot or close-up; if the composition must stay in a wide shot, reduce the person to a silhouette or a color block, and let the wide shot do what it's good at.

⚠️ We don't have our own control group for this one; it adopts an external claim (see SOURCES.md"External Sources").


⭐⭐ Identity in a wide shot must be tied to [screen position], not to a name

Since a wide shot can't carry identity (see above), "which person does which thing" can't be assigned by name — the model can't read who is who; it can only judge fromsilhouetteandwhich side of the framethey are on.

實測(2026-09-20,同一顆廣角,兩人相距幾十個像素):
✗ 「<Subject 1>(老闆)是舉著香檳的那一個」
   → 瓶子跑到另一個人手上,而且那個人穿著另一位的衣服
✅ 「左邊那個是【矮而寬】的,右邊那個是【高而窄】的、高一整顆頭;
    舉著瓶子的手臂屬於【左邊那個】,而且這面牆前【恰好只有一隻舉起的手臂】」
   → 一次就對

Three usable anchors, ranked by reliability:

① 在畫面的哪一側(左/右)—— 最可靠
② 剪影(高/矮、寬/窄、頭的相對高度)—— 可靠,而且順便把身高差講出來
③ 衣服的【品類】而不是顏色 —— 「素面 button-down 只屬於那兩個人,
   其他人一律針織、刷毛、格紋法蘭絨」比「他們是唯一的淺色」可靠得多
   (比較級的宣告要模型自己比對全畫面,品類是逐個決定的)
④ ⭐ 再加一個【可以數的】約束收尾:「那裡恰好只有一隻舉起的手臂」

⭐⭐ A group scene's [number of people and blocking] is decided by the image; text can't change it

This is the most expensive special case of "what's in the frame is decided by the image," because it looks like something text should control.

實測(2026-09-20,同一顆群戲廣角,場景圖是一間【空房間】):
  ① 寫數字   「大約十五人,不是密集的一群」            → 生出 20+
  ② 寫數頭   「除了被切掉的兩個,畫面裡約十三顆頭」      → 生出 25 左右,兩三排深
  ③ 寫面積   「中央空地超過一半是空的,比所有人加起來還大」→ 生出 25–30
  ④ 寫幾何   「馬蹄形恰好一人深,人與人之間空一個人寬,
              每個人從肩膀到鞋子都完整露出來」           → 仍是 25–30、兩三排深
  ⑤ ⭐ 換成一張【人群已經站好】的場景圖,提示詞只留動作 → 一次就對

⭐ After switching boards, that shot's prompt shrank from 16,000 characters to 6,900 — fewer characters isn't a side effect, it's evidence: those original ten thousand characters were all doing the image's job.

✅ 提示詞該寫的:他們【做什麼】(鼓掌、舉杯、拍肩、往前半步)
✅ 提示詞該寫的:什麼【不准變】(人數不變、沒有人換位置、不排出第二排、沒有人坐下)
🛑 提示詞不該寫的:有幾個人、站成什麼形狀、誰站哪裡、間隔多寬 —— 那些放進圖裡

⭐⭐ Sequel: even [characters] are decided by the image — reference images must be fed to the step that "decides they exist"

After putting the crowd into the scene image, the next problem follows immediately: the two people being celebrated in that image clearly aren't our characters. Cutting to their faces in that shot is completely useless.

✗ 在鏡頭的提示詞裡接 兩張臉 + 那張滿板
   → 沒用。滿板上站的是誰,模型就動誰;而且那個距離臉本來就讀不到(§四之一之二)
✅ 在【生成那張滿板】的時候,就把兩張臉一起餵給生圖模型
   → 剪影、身高差、體型、髮量一次到位

⭐ Reference images must be fed to the step that "decides that thing exists," not to the step that "makes it move."

場景圖決定「畫面裡有誰、在哪裡」→ 角色要在【生場景圖】時就放進去
鏡頭的參考圖只在那個人【夠大】的時候才有效(中景、近景)

⚠️ Even if you feed a photo, at that distance the face still can't be recognized — what you're buying isnot looking like someone else:   height difference, build, hair volume, clothing color. If those four things read, the audience accepts it.

⚠️ One easy thing to miss:furniture also gets pushed back by text. In the same batch of failed versions,   the long table against the wall ran back to the center of the frame every time — because in the empty-room image it was already there.   Once the image with the table in the right place comes in, this no longer needs to be written.


Four, part two: ⭐ Decide the camera position first, then write the expression

When what a character should be looking at isn't in the frame, H3 makes them look at the camera.

This is the most common form of the same disease, and it has two symptoms:

沒寫視線方向    →  角色直視鏡頭說話,像在演舞台劇
寫了視線方向    →  但那個方向跟「要看得到臉」互相牴觸,模型只能挑一個

Three examples, one solution

角色低頭看桌上的小東西
  ❌ 加「抬起頭讓臉朝向鏡頭」 —— 跟「看那個東西」互斥,抬頭就看不到它
  ✅ 把鏡頭放到桌面高度、那個東西旁邊,往上仰拍
     她低頭看它 = 看向鏡頭方向,低頭和露臉不再互斥

角色對蹲在地上的人說話
  ❌ 什麼都不寫 —— 她正對鏡頭講話,舞台劇感
  ✅ 鏡頭放低到蹲著那人的位置,往上拍
     他在近景背對鏡頭,她在他後方低頭看他

角色在看側面的電視
  ❌ 特寫鏡頭裡沒有電視、也沒寫看哪裡 —— 直視鏡頭
  ✅ 鏡頭放在電視【旁邊】,她看螢幕 = 看向稍微偏鏡頭一側
     這是訪談的標準機位

All three times the solution was the same: move the camera to where the character is looking.

Why "adding an action" fails

To get the face seen, the instinct is to tell the character to turn their head, look up, or face the camera. Buta character's pose is usually already locked by the story — she has to look at that thing; that's what this scene means. Adding an opposite action only creates a contradiction, and when the model faces a contradiction it picks one to do, usually the story one (which is correct).

When a character's pose is locked by the story, what should move is the camera, not the character.

⚠️ The flip side of the same rule:What a character is looking at cannot simultaneously appear behind him

🛑 症狀   一群人在為他鼓掌,但他們出現在【他的背後】
          → 觀眾讀到的不是「大家在為他喝采」,而是「有一群人在為別的事鼓掌,他剛好站在前面」
          (導演原話:「為他喝采的人還在他後面,好像和他無關」)
⭐ 原因   他在看他們 → 他們就只能在【鏡頭這一側】。出現在背後,視線邏輯就矛盾了
✅ 解法   讓他們留在鏡頭後面:畫面裡只有他,他們活在【聲音】裡

The more common version is: this shot doesn't need them at all. Once a setting has been established in some wide shot, the audience always has that group of people in their heads. Cramming people into the background of an emotional close-up only eats up frame area, and it also creates the contradiction above.

Establish the crowd once. After that they live in the sound, not in the frame.

The order when writing

1. 這一鏡裡角色在看什麼?
2. 那個東西在畫面裡嗎?
     在   →  照常寫
     不在 →  先決定機位(把鏡頭放到那個方向),寫進鏡頭描述裡
3. 然後才寫表情

If step 2 is skipped, no matter how detailed the rest is, it will be ruined by "she's looking at the camera."

⚠️ By the way: once the camera position is written clearly, you also have to state explicitlyno looking directly at the camera. "Looking beside the camera" and "looking at the camera" are very close things to the model, so the latter has to be blocked.


4-2-2, ⭐⭐ What a scene image pins down is [where they stand], not [how high they stand]

The reference scene image determines the camera position — everyone knows this. But it doesn't pin down the entire camera position: Height can be changed, left-right position cannot.

Control group (2026-09-20, same scene image, same prompt, same seed, only the camera section changed)

A  「站在門口那一端,平視,看向對面那道牆」            → 平視廣角,前景一整排背影擋住主體
B  「鏡頭抬到所有人頭上(離地約 2.5 公尺),俯角 20 度,
    移到房間的【左上角】,對角線看過去,主牆因此偏【右】」

B 的結果:
  ✅ 高度    聽懂了 —— 明顯抬到所有人頭上,看得到地板、看得到人群站成什麼形狀
  ✅ 俯角    有,約 10–15 度(寫 20 度)
  🛑 左右    沒聽 —— 鏡頭還在原來的中軸上
  🛑 對角線  沒聽 —— 主牆還在畫面正中央,不是偏右
  ✅ 房間    完全保持:材質、窗在哪一側、家具位置全部沒動

How to use it

1. 想換【高度/俯仰】→ 寫文字就好,不必重做場景圖
2. 想換【左右位置/軸線/對角線】→ 只能重做場景圖。寫多用力都沒有用
3. ⭐ 抬高鏡頭是解決【前景擋住主體】最便宜的一招 ——
   鏡頭在所有人頭上,就沒有人擋得住,不必再跟群眾的站位角力
4. ⚠️ 但俯角會壓低主體(§零之二)。用在【交代空間】的廣角可以,
   用在情緒落點就要想清楚

⚠️ This corrects an earlier claim that "H3's compliance with camera height and left-right position is both low" —   that was conflating two things. Left-right is indeed very low, but height is actually not low.

🛑 But when the image is switched to a [composition anchor] (people already standing on the board), height can't be changed either, and camera movement won't appear(2026-10-03, wuxia test):

錨點:兩人在沙地對峙、腰高平視
文字寫「camera tracks right」+(另一份)「camera is lower, at knee height, looking slightly up」
→ 8 顆(4 份提示詞 × 2 seed)全部是錨點的固定機位:沒有橫移、沒有降低

→ The above "just write height in text" only holds for [empty scene images]. An anchor pins down the entire camera position; to change height, angle, or camera movement you have to change the board. ⚠️ partly: the above item is an empty room + group scene, this one is an anchor with people; the difference between them is the type of image, and there is no control using the same image.

The scene image also pins down [the intensity of the environment] (2026-09-26, wuxia test)

場景圖是薄沙霧 + 文字寫「猛烈沙暴、濃到遮住地平線」  → 薄沙霧(文字完全沒生效)
同構圖、用 Gemini 只把天氣改成沙暴的場景圖(同一顆 seed)→ 濃密沙暴 ✅

→ The [intensity] of wind, rain, sand, and fog, like left-right position, can't be written; you have to change the image. How to change it: use the original scene image as reference and tell the image generation model to [change only the weather], and the composition won't drift. ⚠️ Between the two runs the scene description sentence was also changed along with it, so it's not a completely clean single variable (partly).


4-2-3, ⭐⭐ Space must be fixed at the [board generation] step: floor plan → 3D gray model → image model (2026-09-26)

§4-2-2 says the scene image determines left-right position — thenwhen a scene needs several camera positions, the several scene images must also be the same space. Boards generated separately (crop one, generate a reverse one from pure text, crop another) have no shared 3D truth, and H3 will then shoot mutually contradictory spaces.

症狀(矽谷之戀 S4 廚房,導演逐條指出)
  電話跟電鍋平行、還在牆後 月曆掛在柱子的窄邊 角色接電話時穿過吧台 下一顆的電話又換到另一面牆
做法
  ① 平面圖:一個座標檔(牆、門窗、家具、道具、每個人的站位、每個機位的位置與朝向)→ 畫成俯視圖給導演確認
  ② 3D 灰模:同一個座標檔用 Blender 背景腳本搭出方塊模型,每個機位算一張灰模圖
  ③ 圖像模型(Gemini)把灰模轉成寫實照片 → 圖像模型「死守餵進去的構圖」,在這裡正好是保證
  ④ 局部修:換道具的樣子、補漏掉的東西
結果
  第三輪起 H3 在各機位的空間一致(電話、月曆、電鍋、吧台的相對位置每顆都對)

Rules for converting a gray model to photoreal (each one has a counterexample from that day):

① 不要同時餵舊板當「材質參考」→ 它照抄舊板的【配置】。材質改用文字寫
② 文字只寫【這個機位看得到的東西】→ 寫了「白色冰箱」就長一台冰箱(同 §五)
③ 灰模裡【幾乎看不到】的東西(側看只剩一條邊)不要泛泛地提 → 會被搬到看得見的地方;
   要它在,就明寫「斜看、壓成窄窄一條、在 X 的右邊」
④ 灰模要有參照物:只拍到一面空白牆 → 圖像模型自己編一個角落。轉一點讓兩面牆、門窗入鏡
⑤ 局部修換圖案要寫「位置不動、只換圖案」→ 否則換海報會連位置一起搬
⑥ 道具在各板長得不一樣 → 從【一張】板裁出來做道具圖,再局部修換到其他板
⑦ 圖像模型修小區域(拿掉一個櫃子)常留一塊 → 沒跟物件重疊的區域用程式補像素;
   跟物件重疊的回圖像模型,範圍寫到「只有 X 右邊那一條」

📎 Control group: 《HELL GRIND》's GEO SPATIAL LAYOUT (writing the space as a text map and pasting it into every shot) [cannot override] the scene image on H3 —   same seed A/B, the shot with the map added had the same left-right arrangement as the one without (see SOURCES.md)。Space can only be fixed in the image. ⚠️ One project, one scene (two rooms: apartment, church); the apartment was verified on the H3 side, the church is pending verification.

4-2-4, ⭐⭐ Multi-person scenes: same-frame shots only convey relationships, all dialogue is single-person shot-reverse-shot (2026-10-02)

When there are many people, every face, every person's position, and who is speaking to whom will each go wrong on their own, and the failure rates compound. This is not a matter of the writing not being polished enough; it is the current state of the model. AI dramas that are done well mostly use shot breakdowns to work around it, not to solve it head-on.

實例(矽谷之戀 S5,教會裡四五個人互相介紹;v7→v9 三輪導演回饋)
  導演挑出來的問題幾乎都在多人鏡頭:別人跑到主角背後傻笑、前景多一個小孩的頭、
  左邊冒出「不知道是誰」的人、兩個女主角的相對位置跟上一顆對不上、介紹時沒有那個人的特寫
  每一次真正修好的做法都一樣:拆成單人、從另一個人的視線拍

✅ How to break it down

① 同框只留一兩顆中景,用來交代「這是一群人、誰站在誰旁邊」;不在同框裡放台詞以外的戲
② 每句台詞、每個反應都是單人鏡頭,正反打輪流切;台詞的聲音用 L-cut 延到反應鏡頭上
③ 單人鏡頭的機位放在【聽的那個人】的視線上:在灰模(§四之二之三)加一個機位、生自己的板
   🛑 不要從群戲板硬切近 —— 切出來的錨點保留了群戲的空間,H3 會把旁邊的人擺到主角背後、
      或補出跟平面圖對不上的背景(窗跑到錯的牆)
④ 檢查視線:說話對象離鏡頭軸線 25–40° = 自然的四分之三;小於 15° = 像在看觀眾
   (實例:從矮個子的位置仰拍高個子,他往下看她 = 視線貼著鏡頭 →「反應有點怪」)
⑤ 單人鏡頭的前景不放人:路人的肩、別人的頭髮或袖子 → 觀眾問「那是誰」
   越肩的前景如果是主角 = 讀成「是他在看」(主觀鏡頭要放路人或不放)
   ⚠️ 生板寫「前景沒有人」擋不住,圖像模型愛加越肩 → 生完再拿掉

⚠️ One project, one scene (three rounds of viewing); the direction is consistent with external observations of AI dramas (correct multi-person same-frame shots into shot-reverse-shot; in the same frame, only use wide shots to establish relationships).

Four, Part Three, 📎 The "same person" across shots: declaring it is useless, every single shot must be supplied again

Every shot is an independent conditioning pass — the model is 【rebuilding this person from text】 in every single shot.

So the following ways of writing it are as good as not written:

✗ 「同一個女人」
✗ 「跟第 1 顆一樣的衣服」
✗ 「與 Shot 1 完全相同」

Theydeclarecontinuity, but do notsupplythe information needed for reconstruction. The face drifts.

How to do it

① 每一顆都把 6–8 個具體特徵【整段重寫一遍】:
   眼睛顏色、頭髮顏色+長度+造型、可辨識的記號(雀斑、疤)、
   配件(眼鏡、耳環)、那件衣服本身與它的顏色
② ⚠️ 逐字一樣 —— **換句話說(paraphrase)就會重骰一次臉**
③ 聲音同理:一句具體的描述(「一個清亮溫暖的年輕女聲,語氣隨意」),每顆照抄

⭐ This also explainsshared segmentswhy they work, and their boundary: Shared segments work not because they "declare consistency," but because they let every shot getthe exact same few sentences. As long as someone polishes one of the shots for fluency, that shot will drift.

⚠️ External source, we did not run a control group (see SOURCES.md)。


Five, do not let object names that should not appear in frame appear in the prompt

Whatever H3 mentions tends to grow (phantom objects).

❌  a tall upright rectangle with the proportions of a phone screen held vertically
                                              ^^^^^^^^^^^^ 可能真的長出一支手機
✅  用畫面邊界把長寬都框死,完全不提物件
✅  或直接餵參考圖(見上)

Likewise, be careful with metaphors and references — "like the proportions of a tarot card" will induce the model to draw card-face symbols.


🔴🔴 Shared segments, costume segments, and light descriptions all count as "mentioning" (2026-09-26)

Whatever is mentioned grows — this also holds for 【shared segments that every shot will include】, and is even more dangerous, because when you write a shared segment you are not thinking about "this shot":

共用段的服裝段寫了主角的衣服 → 一顆只有室友的廣角,走廊口多了一個穿那件衣服的主角
光的段落寫「電視在鏡頭旁」「落地燈的暖光」→ 廚房的中景多出一台電視、一盞燈;電話的特寫整顆變成有電視的客廳
(矽谷之戀 S4,同一天六顆壞在這裡;拆成「只有 A」「只有 B」「只有手(INS)」三份共用段後全部修好)

✅ Shared segments should only contain things that 【hold true for every shot】 (era, texture, direction and color temperature of light); people, costumes, and objects that glow or will be seen,   should only be written into the shot where they actually appear. Light should be written as "warm light comes from one side," not as "the light of the floor lamp."

📎 But there is one exception: the 【silence】 of sound must be written explicitly

"Saying no equals writing it in" is repeated externally, but with one exception we did not write:

Sound is the exception — silence must be stated, it cannot be left out. It must be written as a positive fact about this track.

The rule for the image is "write what is there, do not write what you do not want";the audio track is the opposite: to have silence you must explicitly say silence, if you do not write it, H3 will add a track on its own.


⭐⭐ Rule spillover does not only happen in shared segments, it also happens 【within the same prompt】

A universal rule will apply to every object in the image that matches the description,including the one you did not account for。

實測(2026-09-20):
  構圖段寫「⭐ 房間裡【每一個人】的身體都朝向那個匯聚點」
  而被慶祝的主角就站在【那個匯聚點上】
  → 他也轉過去了,變成背對鏡頭,儘管另一段明寫他面對鏡頭

When two segments contradict each other, the model picked the universal sentence.

✗ 加一句更用力的反向指令去覆蓋
✅ 把規則的【適用範圍】縮小,讓那個對象讀不到它:
   「站在【馬蹄形裡】的每一個人 —— 也就是除了匯聚點那兩人以外的所有人 —— 身體朝向它」
✅ 再補一句正面的例外說明:「那條規則是講馬蹄形的;這兩個人【就是】匯聚點,他們朝相反方向」
   → 一次就對

⭐ After writing a universal rule, ask yourself once:Is there any character in the image to whom I actually do not want this rule to apply?

The third form: the 【range】 of the rule itself is wider than you think

The first two are rules applying to objects they should not apply to. The third is the ruleYou did the right thing, but at the same time killed something else you wanted。

實測(2026-09-20,一顆高速公路的空景):
  原意:不要有車急煞或切線,那會搶走注意力(這是一顆空景,不該有東西跳出來)
  寫法:「車流以均速前進,**間隔平均**,沒有人煞車、沒有人切線,車流不會變稀也不會塞住」
  結果:全部照做了 —— 車子排成一個【圖案】,不像車流。
        真實的車流是成團的:三四台擠在一起,然後一大段空著,而且各線道不同步

⭐ "Average spacing" is a positive description, so it was followed very faithfully.   This reminds us of one thing: positive descriptions are more reliable than negative sentences — the cost isa wrongly written positive description will also be faithfully executed。

✅ 改法:把「不要有干擾」和「要有不規則」分開寫,不要用一句話同時處理
   「車流是【成團】的,不是平均分布的:某些地方三四台幾乎車尾接車頭,
     中間隔著好幾個車身長的空檔。各線道彼此【不同步】,也跑不同的速度。
     ⚠️ 沒有人急煞、沒有人切線切得很急。」

⭐ Method of checking: every time you write a suppressive rule, ask once   "Besides blocking what I don't want, what else will this sentence block?"


Five-B, 🔴🔴 Before changing the spec, grep the entire prompt first — old text won't disappear on its own

This is the most costly one in practice, and it isn't a prompt technique, it's operational discipline.

A prompt is accumulated day by day. You add a new spec to fix one thing, the old passage is still there, and the model will faithfully execute [both passages].

實測(2026-09-20,同一天之內三次):
① 構圖段寫「房間裡【每一個人】的身體朝向匯聚點」,另一段寫「那兩人面對鏡頭」
   → 站在匯聚點上的主角背對鏡頭
② 為了做出「老闆把他往前送」,加了一段站位幾何(一隻手繞到遠側肩膀、另一隻垂著)。
   但 summary 還寫著「手放在他【上臂】」,detailed_description 還寫著
   「右手放在上臂,全程不動」+「另一隻手做小幅度的開放手勢」
   → 老闆兩隻手都在他身上,像架著他。連改兩版都沒解決,因為我每次只改一處
③ 服裝段寫「兩側各一片失焦背影」,另一段已經改成「只剩右邊一片」

⭐⭐ Not a single one of them is the model disobeying. It executed all the instructions every time — it's just that those instructions contradict each other.

Operating rules

1. 改任何一項規格之前,先在【整份提示詞】裡搜那個東西的所有說法
   手 → grep hand / arm / shoulder / hold / touch
   位置 → grep left / right / behind / in front / nearer
   朝向 → grep face / turn / toward / look
   景別 → grep frame / framed / edge / above the / below the
2. ⚠️ 別忘了 summary 與 retention_analysis —— 它們讀起來像「摘要」,
   但模型一視同仁,它們和 detailed_description 一樣有效
3. ⚠️ 也別忘了 include 進來的共用段
4. 全部改成同一種說法,不要留下「比較舊但還算對」的版本

⭐ Sequel: when the shot size changes, originally harmless sentences will [come alive]

005 的 detailed_description 是為一個【更緊】的景別寫的:
  「兩人從鎖骨以下入鏡 —— 胸、腰、手都在畫面下緣之外,看不見」
在那個景別下,寫「老闆的手放在他上臂」是無害的(反正看不到)。
🛑 但實際輸出一向比寫的鬆(提示詞自己也警告過),手就進了畫面 —— 那句就生效了。

Whether a description is harmless depends on the shot size at the time. When the shot size changes, you have to go back and reread every sentence.


Five-C, 📖 Banned-word comparison table: phrasings the model will execute literally, or will misread

This section is only an index — the evidence for each entry is in the section in parentheses.When writing prompts, revise accordingly; when doing acceptance checks, grep accordingly. 📎 This approach is borrowed from the ban dictionary in Higgsfield's "HELL GRIND": every time a misread word is found during production, note it down; don't rely on memory.

❌ Phrasing What the model does ✅ Change to Source
nothing about her changes、completely still、his face is doing nothing Freezes the whole thing; what should move doesn't move either Write the small things he's doing: breathing, blinking, weight settling slightly §2, §6-B③
no push in, no zoom, no dissolve…(to ensure a hard cut) The cut point drifts far back, and it turns into camera movement instead Write only one sentence static, on a tripod, with no camera movement whatsoever §2, §7-B③
widening、spreading(liquid) Keeps expanding endlessly with no endpoint Write the boundary:as far as X and no further §2-1
about two thirds as tall as the frame(fraction) Ignored Write the cropping relationship: top of head one palm from the upper edge, lower edge cuts through… §3
a hand's width short of、five centimetres(distance with units) Ignored Use something in the frame as a ruler: "a gap in the middle as wide as an X" §3
glistening around、through the wet film(liquid + character's surface) Gets the character dirty Give the spatial distance, then add a sentence: "the surface is dry" §4-1
the proportions of a phone screen, and "like a tarot card" (metaphor) Actually grows that object Define it by the frame's boundary, without mentioning the object §5
evenly spaced(want traffic flow, not interference) Lines up into a regular pattern "In clusters, not synchronized" + write another sentence: "no sudden braking" §5
its eyelids come down again(the reference image has half-closed eyes) Pulled into half-closed Write the shape of closed eyes: "each eye is a smooth arc" §6-1
continuing、says the rest of it, dialogue begins with And Opening Fake start: first add a preceding passage Remove the continuation wording; in the summary write "he says two lines: ..." §6-2④-2
unhurried、slow、measured(conflicts with the shared segment's speech rate) Execute both speech rates Use one consistent phrasing throughout the whole film §6-2④-2
In the narration, say、sentence、word、line(shots with <d> ) Is read aloud Outside of dialogue, do not write speech; to express "unspoken" write the body §6-2④-2
lips parted as if about to speak Actually opens mouth and speaks for 2 seconds Lips pressed tight, swallows once §6-2④-2
knees bent, weight sunk low, like a drawn bow(needs a slight squat) Deep horse stance, like sitting on an invisible chair Write the contrast relationship: "hips above the knees" (wuxia test, n=1) §6-2①
she holds the camera The camera is drawn as a prop Use official camera-movement terms for the camera movement, and start a separate sentence for the arm minimax-h3 skill
In the shared segment write "the warm light of the floor lamp" and "the TV beside the camera"; in the costume segment write someone else's clothes Every single shot grows that lamp, that TV, that person Only write the direction and color temperature of the light; write people and objects only into the shot where they enter frame §5
📎 motion blur、particle trails(needs a sense of speed) External suggestion: avoid special-effects terminology Write causality: the sleeve is flung straight, the sand is swept flat by the blade's wind ayase0307/h3-video-prompting (not self-tested)

Generating reference images (Gemini/Qwen, not H3) has the same kind of problem:

「圓形護手+纏繩握柄」             → 被畫成日本脇差(要中國刀:環首+盤形護手+麻繩螺旋纏柄)
「deep-set eyes, strong straight nose」且沒寫族裔 → 西方臉孔
「沙暴」寫在文字、但參考的場景圖是薄沙霧        → 圖贏(§四之二之二)

6. The physiological order of emotions

Once the beat density is right, facial beats become meaningful. Writing the order wrong turns it into a fake expression:

真心的笑     眼睛先笑(下眼瞼上推、眼尾細紋)→ 嘴角才跟上
社交假笑     嘴先笑、眼睛沒動          ← 寫反了就是這個
釋然         眉頭鬆開 → 吐氣 → 肩膀落下 → 眼神聚焦 → 嘴角上揚
壓抑         眉和眼已經洩漏,嘴還在維持(把嘴的反應延遲 0.3–0.5 秒)

The three-layer order of micro-expressions: brow (first, smallest amplitude) → eyes → mouth (last, easiest to control).

Filmable actions corresponding to each emotion

Emotion ⛔ Do not write ✅ Write
Confusion confused Inner ends of the brows draw together and press down, head tilts about ten degrees to one side, gaze travels back and forth once between two points
Vague unease uneasy Blinks become slower and heavier, swallows once (with movement below the chin), shoulders rise one centimeter then drop
Shock shocked Head pulls back three centimeters, upper eyelids fully open, inhaling holds the shoulders high
Forcing it down holding back tears Lower lip tucks inward, blinks speed up, gaze drifts upward away from the other person's face
Struggle conflicted Gaze jumps among three fixed points with a different dwell time each time, fingers open and close repeatedly, breathing switches from nose to mouth
Relief relieved Shoulders drop once, held breath is exhaled from the corner of the mouth
Tenderness tender The eyes smile first, the corners of the mouth slowly follow
Irritation irritated Exhaling through the nose drops the shoulders, palm wipes once on the pants, grabs the back of the neck

Breathing is the underlying rhythm of emotion. Every emotion should have one visible breath— andholding the breath (shoulders stopped high and motionless) conveys tension better than any expression, and the model is also most likely to get it right; it is simply "not moving."

Hands are more honest than the face, but write only the action and contact, not the detailed shape of the fingers (hands are a high-risk area and tend to grow extra fingers).


Six, Part One: ⛔ Emotional transitions: do not let them happen continuously in front of the camera

Writing sentences like "the brow relaxes" or "the smile fades" thatchange from state A to state Bis equivalent to giving the model a starting point and an ending point, and it cross-fades in between— the face will continuously deform like rubber. This is the most common source of "unnatural expressions."

① Hide the change inside an occlusion

Closing the eyes, lowering the head, blocking with a hand, or cutting the camera all count. The change happens during the unseen interval, and when it is seen again it is already the new state, so the model has no chance to interpolate.

❌ At 00:03.000 the crease between her eyebrows smooths out and releases.

✅ At 00:02.900 her eyes close and stay closed, and her head tips forward
   about five degrees.
   At 00:03.500, with her eyes still closed, her eyebrows come apart and the
   skin between them goes flat.
   [切鏡頭]
   At 00:04.300 her eyes open, and they open onto a face that is already loose.

This is also what real actors do.

Even the "design" can be swapped, not just the expression

The original understanding was: the character'sdesign naturechanges (the eyes switching to a different way of being drawn, the appearance pinned down by a different reference image) cannot be written into the same shot; the model will pick one and lock it, so it must be changed by cutting shots.

Live-action shooting overturned this. In the same shot:

2.25s  眼皮闔上,每隻眼睛變成一條平滑的弧線
3.75s  睜開 —— 已經是另一張參考圖釘的眼睛設計
       中間沒有切鏡頭

So the rule should be changed to:it is not that it cannot be changed within the same shot, but that it cannot be allowed to "visibly deform." If enough occlusion is provided, the design can be swapped too. This saves a lot of shot count compared with "must cut shots."

⚠️ Butthe wording for closed eyes must be careful. If the reference image has that "half-closed eyes" version, writing its eyelids come down again will be pulled toward half-closed rather than fully closed. You must directly describe theshape:

❌ its eyelids come down again, slowly this time, and close all the way
✅ its eyes narrow slowly and evenly until each one is a single smooth curved
   line with no part of the eye showing behind it

② First do one reverse beat

Before relaxing, tighten more first; before shedding tears, hold them back first.A turn without resistance looks like a switch being pressed once.

✅ At 00:02.300 her chin pulls in toward her throat and her lower lip presses up
   hard against the upper one, so that the whole lower half of her face tightens
   further than it already was.

That reverse beat has another benefit: it is anaction, not a state change, and the model handles it more stably.

③ The trigger point must be in the same shot as the turn or in an immediately adjacent shot

The character should turn because of something seen/heard. If the trigger is in Shot 1 and the turn is already completed at the beginning of Shot 2, with no beat in between for her to "receive" it, the audience will feel that the emotion appeared out of nowhere.

Leave one beat for digestion—usually that is the closed eyes or lowered head from ①.


Six, Part Two: Amplitude is additive; time must be filled with events

① Expression components add up — list the "parts that must not move"

The director's note "a bit more amplitude, it needs to be comedic" was written by me as five components stacked: the corners of the mouth pulled back and raised greatly + nasolabial folds deepened + cheek muscles lifted + lower eyelids raised and eyes narrowed + shoulders raised. The result was "a broad smile," and the director's comment wasfrivolous, and "although the previous version was also frivolous, it was funnier."

✅ Restrained version = one component + a series of parts that must not move:

出來  嘴角上揚幾毫米(近鏡頭側多一點,所以略歪)+ 一口無聲鼻息
🛑    頰肌不提、法令紋不加深、眼睛不瞇不起皺、眉不抬、下巴不上抬、頭不後仰、肩膀不抬
      「身體保持和一秒前一樣禮貌、一樣端正 —— 只有嘴出賣他」
🛑    反例也要寫:不是開心、不是得意、不是俏皮、不是在笑、從不露齒
撐住  N 秒【原尺寸不變】:不擴大、不蔓延到臉的其他部位

⭐ Why this works: H3 has a strong prior for "a face that is smiling"; if you supply only one component, it willautomatically fill in the other components。 Listing the parts that are not allowed to move is what stops it from auto-filling. ⭐ The dramatic reason is the same: the punchline is in "the half that doesn't leak out." The body stays polite and only the corner of the mouth betrays him; that gap is the punchline. If the whole person laughs together, the gap disappears and it stops being funny.

② "Retracting" must be written as an action, and after retracting there must be a tail left behind

Writing the retraction as a clause or description (the smile fades) =stop, and H3 has no obligation to arrive at a state without a timestamp (measured: before→present 20.7 dB, before→after 19.5 dB, worse than present = it did not come back).

✅ Write it as amotivated action:

「X 秒他把它收回去,而收回去【本身是一個動作,不是淡掉】:
  他被叫回房間裡(對方就要再開口)→ 頭正回來、目光回到對方、頰肌下降、
  法令紋完全攤平、下眼瞼回到正常高度、嘴角一路回到完全水平。」
+ ⭐「把這顆的最後一格和(切點後的)第一格對照:兩格的臉必須長得一樣。」

⚠️ After retracting, leave at least 1.5 seconds, otherwise it won't have time to happen: the same wording, with 1.7 seconds left after the retraction → success; with only 0.46 seconds left → the last frame is still smiling. ⭐ The most effective thing is actually the last sentence — write the acceptance method (first/last frame comparison) directly as an instruction。

③ Baseline motion: between beats, explicitly state "he is alive"

If you only write "what happens at second X," H3 will freeze the person the rest of the time → the result looks likea photo with a moving mouth(director's term: unnatural). ✅ Add a sentencecovering the full length:

「他在節拍之間是活的,不是雕像。這顆鏡頭的每一秒,不論那一刻有沒有寫東西,
  胸口都隨緩慢平穩的呼吸起伏、眼睛有細微的不自主移動、重心在椅子上微微下沉;
  他在 2.4 秒與 5.0 秒各慢慢眨一次眼,4.8 秒手指在大腿上移動一公分後停住。
  這顆鏡頭裡【沒有任何一格是凍住的】。」

⚠️ Write it beforethe major beat, so the major beat doesn't get averaged out.

④ If you want H3 to sustain something for a period of time, give it countable events

Time in which "nothing happens" gets compressed. Example: the spec gave a certain face a 3.2-second hold, but the result only got 1.8 seconds, and the shot panned away early. Fill those 3.2 seconds withseven small timestamped events (mouth corner reaches position, blink, gaze moves down to the prop, nostril breath + shoulders sink, gaze returns + chin lifts slightly, blink again), and the timing proportions come out right in one pass.

⭐ The same trick also solves "stuttering when speaking immediately after a cut": after the cut, first give a stretch of silence (breathing + blinking + "mouth closed and completely still; this second or so belongs to this shot and must exist"), then start speaking. Dialogue pressed right against the cut makes the mouth shapes oscillate around the cut — because <d> spreads the frame time to both sides of the cut (see §1). ⭐ The opening line must also be written as countable: "Say this line only once, at a steady pace, and close the mouth when done without moving it again;   before speaking, the mouth must not open and close first; after speaking, do not repeat, do not stutter, do not start over."

④-bis 🔴 Dialogue will [repeat, false-start] — three causes, all in the prompt (2026-09-22)

For an entire scene (S2, seven shots with dialogue), using whisper large-v3-turbo for word-by-word transcription, the boss's dialogue had three kinds of failures: first saying a vague stretch and then saying the correct one(false start),saying the same line twice、after finishing, adding one more sentence that doesn't exist. This rule (the previous paragraph) is written in the skill, but that scene [did not apply it to a single shot].

同一顆(H201b)、同一顆 seed 的三版:
舊版   And there's the next generally your chip and there's no next generation plan for your chip. The company…
A 版   There's no next generation plan for your chip. The new generation for your chip, the company…
       ← 只拿掉「接續」的暗示:假起頭沒了,但重講【搬到句子中間】
B 版   There's no next generation for your chip. The company has to let some people go.
       ← 再加兩項:乾淨,各講一次

Cause one: the prompt implies "he is already halfway through speaking." The summary says continuing、says the rest of it, and the dialogue also uses And Opening → the model first fills in a "preceding passage" for it. ✅ Remove the continuation wording; rewrite the summary as "He says two sentences: ...". ⚠️ The same applies when the script's original text starts with And (continuing from the previous shot's line) — the generated version removes it, and it still sounds smooth when edited.

Cause two: the speech rate is written in opposite ways in two places. The shared section writes BRISK WORKING PACE … NOBODY SPEAKS SLOWLY, but each shot's speaker_identities writes an even unhurried pace. Both sentences get executed (§5-2). ✅ Unify them all into the same wording (a brisk even pace)。grep unhurried|slow|measured|deliberate。

Cause three: not writing "say it only once". The sentence from the previous section, written in English and placed after </d> :

⭐ HE SAYS THESE TWO SENTENCES ONCE, AT ONE EVEN SPEED, FROM THE FIRST WORD TO THE LAST:
his lips stay together until the first word, and the first word is the first sound he makes;
he does not start, stop and start again, he does not repeat a word or a sentence,
he does not stumble, and when the last word ends he does not say it again.

⚠️ Version B adds causes two and three [together], without testing them separately — we know the two combined are effective, but not how much each contributes. 🛑 2026-09-24: this passage itself gets spoken aloud. In the two-person medium shot H206, the time the seed was changed, Whisper heard "still one sentence on once" — that is this passage's SAYS THIS ONE SENTENCE ONCE. On the same day, most of its single-person shots were clean, so it isn't necessarily broken, butdon't treat it as a panacea; writing the time after the line as one thing (below) is more reliable. See cause five.

📎 What the community says: when the dialogue is much shorter than the clip length, the model fills the remaining time with padding and repetition(Seedance blog; HF MiniMax-H3 thread #76 records mumbled speech in the first 0.5 seconds). Our data roughly matches (an 8.7-second clip, 2.7 seconds of dialogue → the whole line spoken twice),but there is one counterexample: the shot that had 2.5 seconds left after the line, yet wrote that stretch as "he is waiting, says nothing more, silence is all that remains of this shot" — it did not repeat the line. ⭐ So the time after the line should bewritten as one thing(waiting, turning a page, tidying papers), not just "the dialogue should not extend".

⚠️ Still unsolved: in the four-shot test, speech started 1.4–1.9 seconds later than specified, and very consistently. The cause has not been investigated.

Cause four (2026-09-24): ⭐⭐ the rhythm of speech is tied to the seed, not to the prompt.

證據  H201:兩份提示詞(動作與走位都不同)、同一顆 seed → Whisper 逐字時間【一模一樣】,到小數點後兩位
      H207:三個版本的提示詞、同一顆 seed → 老闆都在 3.2 秒與 5.0 秒把同一句講兩次,You too 都在 7.64 秒
      H201(twenty percent 被吞掉)、H203a(storage room 含糊):提示詞一字不改,只換 seed → 兩顆都乾淨

If the voice is bad, change the seed first, don't change the prompt first. Changing the prompt and rerolling changes the visuals; the rhythm of speech stays where it is.  "Change only one variable at a time" still holds — it's just that for voice, that variable is the seed.  For shots with dialogue, run two or three seeds at once and pick the one with clean voice.

⚠️ What changing the seed can't fix: two-person medium shot (head 1/8) + both people talking + actions like standing up to shake hands + dialogue much shorter than the clip length —   H206/H207 each had two seeds changed and all were a mess. That's a [structural] problem: split it into a shot where only one person talks, with clip length close to the dialogue (shot split in progress on 09-24, results to be added).

Cause five (2026-09-24): ⭐⭐ sentences in the prompt that "talk about speaking" get spoken aloud.

H202b  意圖句 "THE POINT OF THIS SHOT IS A SENTENCE HE DOES NOT SAY"
       → 兩顆 seed 都把它唸出來("the point of the shot is a sentence he does say")
H206   成因三那段防重講 → "still one sentence on once"

⭐ For shots with <d> ,don't use words like say/sentence/word/line in the narration outside the dialogue。   (S1) … says: <d>[English]…</d> The format itself is fine; what leaks out is [the commentary around it that talks about speaking]. ✅ To express "he has words he didn't say" → write the body: lips pressed tight, one swallow of the throat, eyes dropping to the table. 🛑 "Lips part, as if about to say something" = he actually opens his mouth and speaks for 2 seconds (H202b first version). A silent beat should be written asmouth closedactions.

⑤ A face only needs 1.5–2 seconds to be read

Two versions of the same shot: version A gives a certain face 1.8 seconds, version B gives it a full 3.2 seconds (to match the narration length). The director chose the 1.8-second version. The extra 1.4 seconds is not "more sufficient," it is dead footage. (The reason version B was "correct" is that I used the narration length as a constraint — and the narration is added in post, see §1.2.)


7. Shot Breakdown Workflow

劇本
 ↓  ⓪ 先問要不要生成  ⭐ 這一拍在【已經定稿的素材】裡有沒有現成的?(見下)
 ↓  ① 情緒骨架      列出所有轉折,標出哪一個是峰值、哪一個是谷底
 ↓  ② 分段          一段 = 一個場景 or 一個情緒單元,5–13 秒
 ↓  ③ 節拍表        每段列時間軸,一拍一件事
 ↓  ④ 檢查節拍密度  ⭐ 一顆鏡頭超過兩三個表情節拍就要拆,有台詞順手寫進去
 ↓  ⑤ 幀數          節拍加總 + 尾巴餘裕 1.3–1.5 秒 → 查 17n+5 格點
 ↓  ⑥ 寫提示詞

Step ④ is the core of this skill; do not skip it. A shot stuffed with too many beats will flatten out no matter how detailed the expression you write.

⓪ First ask "does this shot need to be generated" — this is the most economical step

A two-and-a-half-second shot (the character answers "okay" for the third time) — I couldn't get it right even after eight versions: the independent generation position drifted, using a freeze-frame as a reference image was wrong, the dolly generated a fake person, negation ate the cut point, and dialogue pressed against the cut point caused stuttering. The director ended it with one sentence:"Actually, you don't need to shoot it; just cut the tail of the previous shot."

八次生成 ≈ 40 分鐘機器時間 + 八輪看片  vs  一行 ffmpeg trim

⭐ There is more ready-made material than you'd think:  ・Repeated actions(the same reply appears three times → use the same segment of footage, and "exactly identical" is precisely the joke)  ・Reaction shots(nothing happens on the listener's face → the middle of any shot can be used)  ・Insert shots(objects on the table look the same in every shot) ⚠️ The cost is thatthe source shot has to give up its material(the same segment should not appear twice in the same scene),   so mark it down at the storyboard stage; don't wait until the finished product is out to discover it. 📎 What doesn't count as repetition:cross-cutting. Two continuous pieces of material (e.g., a POV close-up and a two-shot medium shot) cut into four blocks alternating A→B→A→B,   each block is a continuation, not a replay, and the audience won't read it as repetition — 4 seconds and four shots cost only two generations.   (Observation from an external reference video, 2026-09-30, not self-tested; see SOURCES.md) 🔧 Engineering-wise, the pipeline needs to know this (our manifest has a reuse field, and batch runs print ♻️ 不生成),   otherwise the next batch run will overwrite the edited finished product.

How to assign frame counts

Scenario Frames Seconds
One action, static shot 124 5.17
One action + one camera move 158 6.58
Entrance, walking closer, walking into frame 192 8.00
Action → reaction → settling 209 8.71
Has a cut 243+ 10.13+
Three segments in one shot, two cut points 362 15.08

⚠️ Always leave 1.3–1.5 seconds of margin at the tail. H3 often collapses into noise blocks 1.2–1.7 seconds before the end of the clip, and in dark scenes it's hard to notice when fast-forwarding by eye.After every shoot, extract frames from the final segment to check.

⚠️ Fill Duration with "one decimal place slightly below the target seconds", so it snaps to the target grid point. Filling in "the seconds you want" will get you extra frames, and that extra segment has no prompt → the tail collapses.

⚠️ Don't write "the longest shot we've run" as "the model's upper limit." I wrote 209 frames into a tool comment as H3's ceiling, and even calculated how many lines of narration to cut for it; in reality, 362 frames (15.08 seconds) succeeded on the first tryIn the notes, write "actually ran to N", not "limit N", and mark the values you've tried — "ran 209" and "209 is the limit" are two completely different statements.

The number of cuts is a risk factor

A single shot with one camera move is the most stable. The more cuts, the higher the probability of tail collapse. Butperformance requires cuts(see §1), so it's a trade-off — emotional scenes trade cuts for performance precision, while empty scenes and transitions should be single shots whenever possible.

⚠️ And the risk isn't just collapse:H3 will add or remove cut points on its own, and decide on its own which second the cut points land on. When you put multiple shots in one generation, the editing structure itself must be written as countable constraints — see §7-2.


📎 Before a long computation, verify the structure (blocking) at low resolution first

① 同一份提示詞,先用 832×480、124 幀(短的那一階)跑一次
② 只看三件事:鏡頭結構對不對、節奏對不對、音軌有沒有出來
③ 過了才一階一階往上升

"A prompt that turns into a slideshow at 832×480 will only turn into amore expensiveslideshow at 1344×768."

⭐ The most cost-effective use iswhen changing the design. The "intent" and "composition" in §0-2 are meant to be rejected in the first place — whether a composition holds up can be seen at 832×480; there's no need to ask that question at the resolution of the final product.


7-2. Editing and camera moves within one generation

Putting multiple shots in one generation is the approach with the highest performance precision (see §1), butthe editing structure itself must be written as countable constraints, otherwise H3 will add or remove cut points on its own, and decide on its own which second the cut points land on.

① The number of cut points, their timing, and who is in the last frame — all three must be written

A 15-second shot with four segments (two-person intro → tabletop INS → A's face → B's face): the first three segments are all correct, the fourth segment only lasts 2.5 seconds beforeit cuts back to A on its own, and stays on A's face until the end of the clip — a fifth segment and a fourth cut point appear out of nowhere. The narration is A's throughout; presumably H3 tends toreturn to the source of the voice。

✅ Reduced the number of segments to three and added these three sentences; it worked on the first try:

「這支片恰好有兩個剪點,在 4.9 秒和 9.2 秒,沒有別的。」
「鏡頭不會回到它已經離開過的鏡頭。」
「9.2 秒之後 B 不再出現 —— 他的聲音繼續,但他的臉不再出現,
  因為那是他的想法,不是他的臉。影片的最後一格是 A 的臉。」
+ 把要守住的那一段放成三段裡最長的

② Camera moves are [global] and cannot be specified per segment

"Lock the intro, and only slowly push in on the segment after the cut" failed twice: the drift applied to the whole clip, andthe cut point was interpolated away (two-person → single-person became one continuous push-in, and the hard cut disappeared). ⚠️ And the drift pushes the cut pointlater: all three data points drifted from the specified 1.5 seconds to 3.5–3.8 seconds. This is fatal for a "intro + cut" structure — the intro eats up three times the time, and the main scene after the cut gets compressed.

要切鏡   → 整顆靜止
要運鏡   → 整顆運鏡,裡面不要放剪點
⭐ 例外:兩段的【被攝物與景別完全不同】時,切點反而穩
        (桌面插入鏡頭 → 人臉中景:H3 內插不出中間值,只能切)

③ ⛔ Don't use negative sentences to prevent camera moves — that's exactly why the camera move happens

This is an extension of §2, and it was learned the most expensive way. To ensure a "hard cut", I wrote no push in, no zoom, no dissolve, no blur, no intermediate framing, and added "the image changes within a single frame" and "there are no frames of any intermediate size" — the result was that the cut point drifted past 3.5 seconds twice in a row.Removing those sentencesand keeping only the two sentences from the one shot in the same scene that cut successfully, the cut point immediately returned to 1.96 seconds.

✅ 有效的全部內容就這兩句:
   Both shots are static, on a tripod, with no camera movement whatsoever.
   The shot cuts in closer along the same axis to <Subject 1> alone: ...

⭐ You need to distinguish two things; their rules are opposite: the stillness of objectsshould be written as a positive state ("the distance between the pen and the folder is the same from the first frame to the last frame") → effective; the stillness of the cameraJust one sentence is enough; writing more will backfire. The difference is that the former describeswhat is in the frame, while the latter describeshow it is shot。

④ Shot/reverse shot needs a [lead-in]; a text description cannot replace it

A clean single-variable test: B's reverse angle wrote out the complete geometry (declaring the reverse angle + the head's geometry + background falsification objects), but the preceding shot was A's single-person shot,with no two-person lead-in → it was shot as a frontal two-person wide shot, and the medium close-up never happened. Same angle, same text, with a 1.5-second two-person lead-in added in front → right on the first try.

⭐ The sentence "the camera crosses the table to the other side" needs avisual factfor "where the other side is", and that fact can only be provided by the previous frame in the same generation.The cost of shot/reverse shot is the lead-in; don't skimp on it. (The lead-in is discarded in post, so that shot's length needs 1.5 seconds added.)

③-2 🛑 When changing camera position/performance, [the old text still being there] is the most common cause of failure (2026-09-21・six times in one day)

When changing the prompt, it's easy to change only the "declaration sentence" (the one for camera position, shot size, expression), while leaving the latersentences describing detailsin place — those sentences were written for the old design, so the two sides conflict, andthe later ones usually win。

實例(同一天):
① 機位  首句改成「FRONT ON, 鏡頭轉了 90 度」,但下面還留著
        「from the same side of the table, in three-quarter profile still facing frame right,
          behind him the whiteboard」→ 輸出照【後面】做:側面、白板在背後
② 表演  首句改成「Michael 一開始就坐著」,但 subject_definitions 還留著
        「眼鏡摺著在他【空著的那隻手】上」→ 眼鏡跑到另一個人手上
③ 表演  「兩個人都站著」的舊句子殘留三處 → 坐下的動作外溢到另一個人身上
④ 刪錯  拆共用段時把「參考圖帶著淺笑,那不是它們的用途」當成不適用【刪掉】
        → 角色在被裁員的鏡頭裡咧嘴大笑
⑤ 時間  引子讓整段後移 1.5 秒,但台詞窗口還是舊的「From 1.8 to 5.5 seconds」
⑥ 缺漏  以為某顆「本來就有引子」,其實提示詞裡 `[Shot 1]` 只是格式說明、沒有內容
        → 模型不知道切點前該是什麼,自己用【推鏡】補過渡

✅ Three things you must do after changing (faster than rewriting):

① grep 舊設計的關鍵詞:舊機位(same side/profile/背景物件)、舊姿勢(standing/in his hand)、
   舊時間碼(From X to Y seconds)。一個都不能留。
② 檢查【段落本身存不存在】:`[Shot 1]` 這四個字可能只出現在格式說明裡。
   要找的是 `[Shot 1] Live-action…` 這種有內容的開頭。
③ 時間碼整段對帳:加了引子=所有後續時間碼要一起位移。
⭐ 這三件都可以用一行 script 做完,比拍壞一顆再重拍便宜太多。

④-2 ⭐⭐ The lead-in is also used to break through [a scene image having only one viewpoint] (2026-09-20)

④ is about shot/reverse shot. The same mechanism can also solve another thing:you only have one scene image, yet you need to shoot an angle it doesn't have.

狀況:辦公室的場景圖是從桌子長邊側拍的;要拍「坐在訪客椅上看老闆」的 POV。
      板子裡沒有那個視角。直接寫 POV → 模型自己造了一個房間。
解法:[Shot 1] 就用【場景圖自己的視角】當引子 → 切 → [Shot 2] 才是要的角度。
結果:房間完全正確(白板、書櫃、相框、玻璃隔間、窗、CRT、電話全部在對的位置)。
⭐ 為什麼有效:板子錨定的不是「這一顆的構圖」,是【這個房間長什麼樣、東西在哪】。
  引子把那份事實放進同一次生成裡,之後的任何角度都從那份事實推出去。
⭐ 所以引子的內容不是隨便一個廣角 —— 要【盡量就是那張場景圖本身的畫面】。

⚠️ The lead-in only solves the room for "this one shot"; it cannot solve consistency "between several consecutive shots". Each shot derives its POV from the side-shot board, and what gets derived is different every time (2026-09-22 side-by-side comparison of five frontal shots in the same scene): one shot grew two extra phones and a stack of folders, and the person retreated twice as far; one was too close, had an extra keyboard, and couldn't see the whiteboard; one had the person shifted left. → When you need to shoot several consecutive shots from the same viewpoint, switch to ④-5.

④-5 ⭐⭐ Consecutive shots from the same viewpoint: use [the frame already shot] as the composition anchor, don't re-derive for each shot (2026-09-22)

狀況:S2 有五顆都是「Richard 坐在訪客椅上看老闆」的 POV 正打,每顆都用 ④之二 的
      引子+切。五顆的房間、距離、桌上物件各不相同,剪在一起就穿幫。
做法:從【已經收的那一顆】截一格乾淨的 POV 畫面當母版 → 取代原本的場景圖,
      同時拿掉引子與切點,整顆就是一個 POV 單鏡。
      參考圖:BO-21F(臉)+ BO-21(臉)+ 母版格  ← 三張,跟原本一樣多
結果(兩顆,同 seed,各一次):
  ✅ 機位、景別、窗、書櫃、白板、相框、光與母版一模一樣
  ✅ 原本會自己長出來的鍵盤、電話都沒出現;畫面裡恰好一個人
  ✅ 沒有剪點(場景偵測零)—— 連帶拿掉了「台詞貼著剪點」這個口吃來源(§六之二④)
  ✅ 每顆省下引子+漂移餘裕:226 → 192 幀、175 → 141 幀

Three key points of the writing method:

① 母版標成【構圖錨點】,不是首幀
   <Picture 3> is the composition anchor of [Shot 1]: a still of this exact camera set-up …
   ⭐ The camera position, the shot size, the room, the furniture and the light are exactly as in <Picture 3>.
   ⚠️ <Picture 3> sets WHERE THE CAMERA IS AND WHAT THE ROOM LOOKS LIKE — not his pose,
      his gaze or his expression, which are written in the shot below.
② 母版裡有那個人,又接了他兩張臉 → 要明寫三張是同一個人
   「<Picture 1>, <Picture 2> AND THE MAN IN <Picture 3> ARE ONE AND THE SAME MAN」
   +「恰好一個人,坐在 <Picture 3> 裡那個人坐的地方」
③ 共用段裡描述房間物件的句子【刪掉】,改成「exactly as in <Picture 3>」
   原本那段寫了 CRT、鍵盤、電話 —— 那正是各顆多長出來的東西(§五:提到什麼就長什麼)

Rules for choosing the master:

✅ 嘴閉著、沒有動態模糊、手是靜止的
✅ 從【最具代表性的那一顆】截,而且之後固定不換 —— 所有同視角的鏡頭共用同一張
🛑 不要串接(A 的末格當 B 的母版、B 的末格當 C 的母版):生成圖每接一次就掉一次品質
⚠️ 避開片尾 1.3 秒的崩解區;截在那裡要放大檢查
⚠️⚠️ 母版的【視線與表情】會壓過文字 —— 圖壓過文字的又一例:
   母版的眼睛直視鏡頭 → 規格寫「抬眼 0.8 秒後回到紙上」,成品抬了就沒回去
   → 母版要挑【這場戲的預設狀態】(例如眼睛在紙上),不是某個節拍的瞬間

⚠️ Why not use I2VA: a comparison was done on the same project's foot-shooting line (2026-09-13) — with the same still image, I2VA gets the pixels but the face isn't that character, and you still have to switch to the fl2va checkpoint; Ref2VA gets the composition, and the face is connected back from the face reference image.When you have the still image in hand, Ref2VA ≥ I2VA.

⚠️ Confidence: two shots, one time each, same seed, same scene. Reverse shot (another viewpoint) hasn't been tested yet.

⭐ Second project confirmed (wuxia test 2026-09-26): one over-the-shoulder standoff shot was done well, then the next two shots both used one of its frames as the anchor →   camera position, shot size, the two people's positions, the sandstorm, and the light were consistent across all three shots, like the same stage. ⭐ New trick: things that shouldn't appear in the anchor are first removed from the anchor using an image generation model.   The latter one happened after the bamboo hat was chopped off → use Gemini to change only one thing (remove the bamboo hat, hair spread out) and then use it as the anchor → neither of the two seed frames has the bamboo hat.   This is the reverse use of "draw whatever is in the image":If you want it to disappear, make it disappear from the image first.

🛑 Same anchor + same seed → the opening converges into the same set of actions, no matter what is written afterward(2026-10-03, wuxia test):

三份招式完全不同的提示詞(F1 直拳低踢側踢/F2 肩撞膝撞旋踢/F3 截路低踢掌擊),共用一張「兩人擺架勢」的錨點
→ 同 seed 的三顆,前 1 秒幾乎是同一套直拳+低踢,之後才各走各的

→ For continuous action scenes, the anchor for each shot should be [the starting point of this shot] (the last frame of the previous shot, or a board with a different staging), not one neutral starting point shared by the whole scene. → When editing, the first 1 second of the opening can only be discarded. ⚠️ partly: 2 seeds; no comparison of "change anchor, same seed".

④-3 ⭐⭐ To make the camera "turn 90 degrees", write [observable consequences], not angles (2026-09-20)

Writing "the camera is at the visitor's seat, 115cm eye height, looking across the desk"—— the model merelycuts in along the original axis, and the spatial relationship does not change by a single frame. Rewrite it as a consequence, and it is right the first time:

⭐ 第一句就寫【同一個人從側面變成正面】:
  「在開頭那顆廣角裡他是三分之四側面、面向畫右。⚠️ 這裡他不再是側面:
    鏡頭已經繞到另一個人坐的位置,所以他【正面對著鏡頭】,肩膀正對、臉朝鏡頭。
    那就是你判斷鏡頭有沒有移動的依據 —— 他從側視圖變成正視圖。」
⭐ 再給兩個跟著轉的幾何:
  ① 桌子不再橫過畫面,改成【朝鏡頭縱深】、近端貼著畫面下緣
  ② 他背後換成【另一面牆】(原本背後的白板書櫃退到畫面邊緣、側面看)
⭐ 最後配 ⑤ 的背景否證物(正反兩邊各一個):
  正打:「玻璃隔間現在在鏡頭背後,不在畫面裡 —— 看得到它就是站錯邊」
  反打:「白板與書櫃現在在鏡頭背後 —— 看得到它就是站錯邊」
🛑 不要寫「鏡頭轉了 90 度」或公分/角度數字。模型認的是【畫面該長什麼樣】,不是機位座標。

④-4 ⭐ In POV, block out "your own body": use the frame, not a prohibition (2026-09-20)

🛑 失敗:「no second man, no shoulder in the foreground, no arm, no hand, no part of him」
   → Richard 的手與袖口還是出現在畫面右下角。(沒有 negative channel,禁令只是把詞餵進去)
✅ 成功:把畫框的下緣定義成一個【實體】,身體就沒地方待 ——
   「⭐ 畫面的【下緣就是桌面的近端邊緣】:桌子橫過畫面最下方,畫面到那裡為止,
     所以桌面以下、桌子這一側的東西完全不在畫面裡 —— 整個下邊界都是木頭。
     ⭐ 他自己的手放在膝蓋上,在桌面以下,也就是在畫面下緣以下。」
⭐ 通則:POV 的「看不到自己」不是靠排除,是靠【畫框剛好切在他身體上方】。
  找一個場景裡現成的水平面(桌面、吧台、車窗、欄杆)當下緣。

⑤ ⭐ Background falsifier: give an object whose "appearance means it is wrong"

To judge that the camera position is on the wrong side, the fastest criterion is not the angle of the face, but whether that thing is in the background:

「白板在對手背後的牆上 —— 這一顆只要看得到白板的任何一部分,就代表機位站錯邊。」

Translate a direction error into anobject findable in the image, and the verification cost changes from "feels weird" to "findable / not findable". The same trick can be applied to all spatial errors: wrong seat → which corner of the frame the desk edge is in; wrong axis → which side the window light comes from; wrong shot size → whether the desktop is in frame.

⑥ ⭐⭐ Cut points are reproducible → multi-segment shots can be rerun segment by segment and then edited

Same prompt (only changing the text of one segment), same seed, same segment structure, the two generations'cut points land on the same frame(4.041667s = frame 97, both times). So the earlier segment and the later segment can each be finished separately, then connected with ffmpeg :

ffmpeg -i A.mp4 -i B.mp4 -filter_complex "\
[0:v]trim=start_frame=0:end_frame=97,setpts=PTS-STARTPTS[v0];\
[1:v]trim=start_frame=97,setpts=PTS-STARTPTS[v1];[v0][v1]concat=n=2:v=1:a=0[vout];\
[0:a]atrim=end=4.041667,asetpts=PTS-STARTPTS[a0];\
[1:a]atrim=start=4.041667,asetpts=PTS-STARTPTS[a1];[a0][a1]concat=n=2:v=0:a=1[aout]" \
-map "[vout]" -map "[aout]" -c:v libx264 -crf 16 -c:a aac -y out.mp4

⭐ This changes the iteration strategy:do not pursue "all segments in place at the same time in one generation" —— that is a requirement for n conditions to hold simultaneously, and the number of iterations rises exponentially. Example: the physicality of the inserted shot and the amplitude of the facial expression each hold in two separate versions, and once edited together it is final. ⚠️ Premise: between the two runs,do not change the segment structure and length(changing text is fine, changing the timeline is not).


⑥ 📎 POV and one-take: as long as a second shot appears, it is a defect

As long as the requirement contains the meaning of "first person / subjective camera / one-take / no cuts", any [Shot 2] in the output is a defect, no matter how well that shot itself is filmed.

The reason is that prompt expansion itselftends to add cut points(multiple shots usually score better)—— here that tendency will exactly destroy the effect you want.

✅ 編成【恰好一顆】:沒有 [Shot 2]、沒有反角、沒有插入鏡頭、不換視點
✅ 動作節拍與運鏡都在那一顆裡面連續推進
✅ 變化用運鏡的文法帶(推、弧繞、跟隨、搖),而且起點、路徑、終點三件都要寫

⚠️ External source. ⭐ But it and §7-2② are two sides of the same mechanism: camera movement and editing are bothglobaldecisions; you can only decide "how many cut points this shot has", and cannot negotiate segment by segment.


⑦ ⭐⭐ Instant effects should be tied to [events], not to [timestamps]

An effect that lasts only an instant (a flash, the visual corresponding to a loud bang, something popping out), writing "it happens at 2.6 seconds" makes it easy to get shifted; writing "it happens at [the moment a certain action completes]" will follow that action.

A  「2.6 秒閃一次,3.7 秒再閃一次」
   → 實測:只閃了一次,而且被挪到 4.17 秒(全長 4.46 秒,落在尾巴崩解區)
B  「牌子停在臉旁的【那一刻】閃一次,整支只有這一次」
   → 實測:切點從規格的 2.0 秒漂到 3.21 秒,閃光跟著漂到 4.71 秒 ——
     但「切點之後 1.5 秒」對上了規格的「切點之後 1.4 秒」

⭐ The whole segment can drift, but the relative beats within the segment are accurate. So attach the effect to its cause, not to the clock.

⑧ A cut point within a single generation will [shift back as a whole], but the beats within the segment are accurate

規格:2.0 秒切 實測:3.21 秒切(+1.2 秒)

So:

1. 引子要寫得比你需要的長 —— 它會被吃掉一部分
2. ⭐ 引子本來就是【要剪掉】的(它的作用是錨定空間),所以後移通常吸收得掉
3. 但要確認【切之後那一段】還剩夠長:全長 − 實際切點 = 可用長度
   (上例:5.87 − 3.21 = 2.66 秒)
4. ⚠️ 如果切之後的戲需要 N 秒,總長至少要給 N + 引子 + 1.5 秒漂移餘裕

⑨ ⚠️ [Exposure will jump] across cut points; two segments within the same generation do not share exposure

實測(同一顆生成、同一個房間、同一組參考圖):
  Shot 1 雙人中景   平均亮度 YAVG ≈ 77
  Shot 2 單人近景   平均亮度 YAVG ≈ 112     ← 跨切點跳了約 45%

Suspected reason: the close-up segment picked up lighting descriptions like "close-ups should be bright, low contrast," while the medium shot did not.

🛑 **在提示詞裡寫「兩段曝光一致」沒有用 —— 已實測失敗。**
   整整一段的正面描述(「這是同一個房間、同一組燈、同一個連續的瞬間;切近不會改變畫面有多亮,
   只會改變畫面裡有多少房間」)加進去之後,跳幅和沒加以前一樣:76 → 108(+43%)。
   ⭐ 同一個道理:模型聽得懂東西長什麼樣,**聽不懂階調**。曝光和高光壓不壓得住、暗部死不死黑
   一樣,不在文字的控制範圍內。
✅ **唯一可靠的解法是剪接前逐段套曲線。** 拍的時候只要知道它會跳、把它列進剪接的待辦就好

7-3. 🔴 Before saying "the model can't do it," exhaust the possibilities

"The instruction is greatly increased, yet the output doesn't move at all" looks like the model's limit, but often it isn't. A large portion of generation failures are probabilistic; changing only one dimension (usually text) and declaring it impossible is wrong.

實例(同一個專案,三次誤判):
2026-08-21 早上   四次失敗 → 判定「H3 不畫插入鏡頭」     → 換一顆 seed 就成功了
2026-08-21 晚上   一支片   → 判定「H3 的微表情弱」       → 長度從 362 改成 192 就成功了
2026-09-18        把跑過最長的 209 幀寫成「單顆上限 8.7 秒」 → 362 幀當天實跑成功

⚠️ The cost isn't just those few generations: a wrong "can't do it" willdirectly change the workflow design (that day, "insert shots rely on framing and editing cues" had already been written into the storyboard conventions).

✅ 下結論前至少:換三顆 seed,再各換一次長度、checkpoint、解析度
✅ 做不到就說「這個配置下做不到」,不要說「模型做不到」
✅ 筆記裡寫「實跑到 N(試過 a、b、c)」,不要寫「上限 N」
✅ 先確認數據乾不乾淨,再推結論(例:一筆含模型載入時間的耗時被拿去算成本指數,算出 1.65,實際約 1.4)

⚠️ This doesn't conflict with "change only one variable at a time":iterateby changing one at a time;conclude "impossible"only after changing several.

8. Acceptance: use numbers, not your eyes

The naked eye is deceived by expectations. Extract frames and compute PSNR; it's fast and objective.

# 表情有沒有發生:抽「該動之前」和「該動之後」各一幀
ffmpeg -ss 5.2 -i out.mp4 -frames:v 1 a.png
ffmpeg -ss 5.9 -i out.mp4 -frames:v 1 b.png
ffmpeg -i a.png -i b.png -lavfi "[0:v][1:v]psnr" -f null -
PSNR Meaning
> 45 dB Completely still (frozen frame 60–65 dB)
30–40 dB Only breathing-level micro-movement ← this appearing where there should be emotion is a failure
18–28 dB Clear movement
< 15 dB Cut or drastic change

Scan the PSNR of adjacent 0.2-second intervals and see where the low points of the curve fall. The low points should fall on the emotional beats; if the emotional beats are instead the high points (the stillest), then that take is a failure.

Verify dialogue with [word-by-word timing], not just your ears (2026-09-24)

mlx_whisper clip.mp4 --model mlx-community/whisper-large-v3-turbo \
  --word-timestamps True --output-format json --output-dir out/
# 中文加 --initial-prompt "以下是繁體中文的句子。"

Read the word-by-word list; all four kinds of defects become visible words:repetition(the same string of words appears twice),false start(an extra section before the actual sentence), late onset(the timing of the first word),the prompt being read aloud(those words are ones you wrote yourself). ⭐ If the word-by-word timing of two versions is exactly the same = the seed is determining the rhythm (§6-2④-2, cause four).

⚠️ Whisper 會在片尾的安靜處幻聽一句短的(通常是 "Thank you.")—— 片子裡沒有這句
⚠️ 聽寫到人聲 ≠ 嘴在動:模型也會生畫外音。先逐格看嘴 ——
   嘴閉著的那段聲音,剪接時換成環境音就好,那一顆不必丟
   (H201c 無聲鏡頭有人聲、H202b 前段在唸提示詞,兩顆嘴都閉著,都救回來了)
⚠️ 反過來,嘴在動、聲音被你靜音或挪走 —— 頭再小導演也看得出來(H207,Ray 一眼就抓到)

🛑 When comparing multiple seeds, every single one must be zoomed in frame by frame before drawing conclusions (2026-09-26)

實例:同一顆鏡頭兩顆 seed。我只放大檢查了其中一顆(失敗:斗笠套在脖子上),
      另一顆只看了縮圖就一起判成失敗。導演問「為什麼不用這顆」→ 逐格放大才發現它是可用的那一顆

⭐ Thumbnails show the composition, but not [the process of the action]. The value of running more seeds is in selecting; before selecting, every single one must be viewed at the same depth.

🛑 Don't judge the quality of [actions] using a single still frame

Frame-extraction acceptance is very useful, but it can only answer "what is in the frame," not "what action that is."

實測(2026-09-20):
  一顆雙人中景,我從第 80 格的靜幀判定「老闆兩隻手都在他身上,像架著他」,
  據此推了【兩次重跑】。
  導演看完整支影片:「這版沒什麼大問題。」
  ⭐ 動起來那兩隻手是「扶著、把他送出去」—— 一個有起點有終點的動作,
    靜幀只截到它的中間,看起來就變成了一個【姿勢】。

Poses can be judged with still frames; actions cannot. Gestures, weight shifts, rhythm, the intent of a single movement,  all exist only within a few dozen frames before and after.

✅ 靜幀適合驗:景別、構圖、誰在畫面裡、服裝、場景、光的方向、背景有沒有穿幫
🛑 靜幀不適合驗:手在做什麼、重心、動作的意圖、表演自不自然、節奏
   → 這些要看完整支,或至少抽一段連續的幀
⚠️ 特別危險的是【接觸】:一隻手碰在另一個人身上,靜幀看起來永遠像是靜止的姿勢

Check displacement (for shots that need to be matched in post)

ffmpeg -i a.png -i b.png -filter_complex \
  "[0:v][1:v]blend=all_mode=difference,eq=contrast=7" diff.png
# 該區域全黑 = 完全沒動,可以安心貼合

To measure coordinates, print a profile; don't rely on automatic detection

When there are other glowing elements around the subject, both fixed thresholds and gradient detection will misjudge,and they won't tell you they're wrong。

cx = 383                              # 目標的水平中心
for y in range(0, 800, 10):
    print(y, px[cx, y])

The feature is easy to recognize:the body itself is a long, flat plateau with a steep drop at each end; a glow is a gradual slope; other glowing elements are isolated narrow peaks.


9. Audio reference (ref_audio_0) what it can do

H3 can take an audio clip as a reference, the tag is <Audio 1>, to keep the marker write reference:

<Audio 1> is the voice-timbre reference for <Subject 1> (S1).
<Audio 1>: reference - only the timbre, pitch and delivery are referenced;
           none of its original wording is carried across.

⚠️ Audio does not go into the text encoder at all, only the <Audio 1>: tag goes in, and the waveform is sent directly to the DiT. Sodescribing that audio in the prompt is useless, it's just an indicator. Emotion still has to be written in the delivery field.

Tested: it can drive a performance, but it can't be the sound source

Take a 6-second real-person voice reference to generate a new line:

有生出人聲 ✅    嘴型、呼吸、頭部節奏都對
參考有被吃到 ✅   接線正確時,音高會往參考音移動(242.4 → 222.2 Hz)
音高仍偏高 ❌    參考 192.8 Hz,生成 222.2 Hz,差約兩個半音
音域仍偏窄 ❌    參考跨 175 Hz,生成只有 117 Hz
口音漂移 ❌      台灣腔的參考音,生出的仍帶大陸腔
音質 ❌          聽得出電子合成感

⚠️ The wiring is easy to get wrong: a standalone audio file should be connected to ref_audio_0, not ref_video_audio_0(that one is for the reference video's own audio track). If you connect it wrong, the timbre won't transfer at all, andit won't report an error—the first test run was wasted exactly like that.

So the positioning is "scaffolding for the performance": it makes lip sync and breathing rhythm more accurate,and the final audio track is still dubbed separately as usual。

⚠️ Accent drift is a common problem with generated speech, not limited to H3—the same project was encountered on ElevenLabs Voice Design and Alibaba Cloud DashScope's instructions parameter. As long as the model has room to improvise, the accent will drift back to the majority accent in the training data. If you want a specific accent, use a real-person recording, or use a real-person recording for voice cloning.


10. ⭐ The last mile of a performance relies on editing, don't keep changing the prompt

Eventually you'll run into a situation: the beats, the occlusion, the reverse beat are all done right, and the character really does perform accordingly,but it still looks fake。

At this point, don't change the prompt again. Change the edit.

Why the prompt can't save it

H3 treats each timestamp as a state to "arrive" at. It will honestly put the character in a "startled" state at the moment 1.700— but a real person's startle isanticipation(the body is 0.2 seconds faster than consciousness), and the turn of emotion is abreak(a sudden letting go at some moment), not smooth interpolation.

These two things are exactly what a performance needs most, and H3 structurally doesn't do them.

Two symptoms, two editing approaches

Symptom one: reaction is half a beat slow

The stimulus appears, and the character takes a second to react. That one second of blankness is the "fake".

剪法:把空白剪掉,用插入鏡頭蓋過去

  A  平靜,刺激剛出現
  B  ★ 切到插入鏡頭(那個刺激的特寫)
  C  切回來,角色【已經在反應】了

觀眾沒看到「開始反應」的那一刻,大腦自己補 ——
而且補出來的一定比演出來的快、比演出來的真。
這是處理反應鏡頭的標準做法,原因就是反應的前 0.2 秒很難演對。

Symptom two: the turn is too smooth

Both ends of the emotion are actually performed, but the middle is a continuous gradual change, the audiencehas no baseline for comparison, and only feels that "the expression slowly changed".

剪法:把兩端拉近,中間插一刀

  A  情緒的一端(緊繃的頂點)
  B  ★ 一個短插入鏡頭
  C  情緒的另一端(已經放下)

原本隔 3.7 秒的漸變,剪完只隔 1 秒的插入鏡頭。
同一段素材,讀起來完全不同。

What to leave in when shooting

✅ 拍長一點             留給後製剪掉空白的餘裕
✅ 一定要有插入鏡頭      那是剪接的材料,沒有它就沒得剪
✅ 情緒的兩端要拍足      中間的過渡可以丟掉,兩端不能省
❌ 不要為了節奏一直改提示詞

Insert shots need to be filmed anyway (to establish space and give the audience a breather), so "leaving room for editing" costs almost nothing extra.

⚠️ Real example: two shots in a certain scene each went through four revisions of the prompt without being solved, and on the same day, cutting each of them once using the two methods above solved both. The cost of four revisions is far higher than cutting once.


11. Division of Labor in Post-Production

Some thingsshould never be handed to H3:

Item Why
Screen content (phone, TV, tablet) UI text will definitely be garbled
Brand assets (cards, logo, packaging) Symbols will be drawn badly
Any text that needs to be precise Same as above
Pauses and freeze frames Generation is uncontrollable; editing is 100% controllable

For screens, always "give only brightness, not content"— write "uniform cool white light" and composite the content in post.

⚠️ When doing an alpha fade on a still image with ffmpeg, you must -loop 1, otherwise the PTS of a single image stays at 0, the alpha is always the starting value,the entire image is fully transparent and no error is reported. This kind of silent failure is the hardest to track down.

# ❌ 疊圖完全不出現,也不報錯
ffmpeg -i base.mp4 -i card.jpg -filter_complex \
  "[1:v]scale=W:H,format=rgba,fade=t=in:st=2:d=0.7:alpha=1[c];[0:v][c]overlay=X:Y"

# ✅
ffmpeg -i base.mp4 -loop 1 -framerate 24 -t <長度> -i card.jpg -filter_complex \
  "[1:v]scale=W:H,format=rgba,fade=t=in:st=2:d=0.7:alpha=1[c];[0:v][c]overlay=X:Y"

12. Reuse Across Episodes

For series with fixed rituals or transitions,film them as reusable assets:

不綁任何一集專屬的東西(道具、牌面、台詞)
不露主角的正臉(只拍手)
留白給後製合成

Shoot once, then reuse them directly in every subsequent episode. What you save is not just compute, it'sconsistency— the same ritual looking exactly the same in every episode is itself branding.