Guide
Kling 4.0 Text-to-Video Prompt Recipes for Developers
Copy-paste prompt patterns for cinematic scenes, camera control, and duration
Why prompt structure matters more than prompt wording
Most teams start with prompt wording. They tweak adjectives, swap synonyms, and hope the next render looks better. That works for a single clip, but it collapses the moment you move into an API pipeline where the same prompt must produce consistent results across dozens or hundreds of requests.
Wording is a surface detail. Structure is what makes output predictable.
When you call kling-4.0/text-to-video, the model receives one string. Inside that string, it is trying to resolve several independent decisions at once: what the subject is, what the environment looks like, how the camera behaves, and how much narrative fits in the requested clip length. If those decisions are tangled in a single flowing sentence, you cannot tell which phrase caused a bad render, and you cannot tune one dimension without disturbing the others.
A structured prompt separates those decisions into stable slots. That gives you three practical benefits:
- Isolation. When the camera feels wrong, you change only the camera slot. The scene description stays fixed, so your comparison is meaningful.
- Reuse. The same scene block can be paired with different camera blocks across a batch, which is how you explore variations cheaply.
- Diagnosability. When output regresses after a model or parameter change, you can diff the prompt version rather than guess.
There is a second reason structure wins: video generation is expensive to iterate on. Every render costs time and budget, and you cannot inspect intermediate state. Because you only see the final clip, your prompt is effectively your only debugging surface. A prompt that reads like a spec gives you something to reason about; a prompt that reads like a poem does not.
Finally, structured prompts survive handoff. A recipe that a teammate can read, fill in, and version is an asset. A clever one-off prompt lives in someone's scratch file and dies there.
This is why the recipes in this guide are organized around a skeleton rather than a list of magic phrases. The phrases matter, but they only pay off when they are slotted into a shape you can control.
The core prompt skeleton
Every recipe in this guide is a filling of the same four-part template. Keep the order stable so your diffs stay readable.
[SUBJECT] + [SCENE] + [CAMERA] + [PACING]
Here is what belongs in each slot:
Subject
Who or what the clip is about, with the one or two physical details that must survive motion. Keep it concrete and visual. "A woman in a rain-soaked trench coat" beats "a mysterious person." Avoid abstract emotional labels here; the model renders bodies and objects, not intentions.
Scene
The environment, lighting, and time of day. This is where cinematic quality lives. Specify light direction and quality rather than mood words. "Low sun raking from camera left, hard shadows, dust in the air" tells the model more than "dramatic lighting."
Camera
Shot type plus movement, stated as a separate clause. Because this is its own slot, you can swap it wholesale. A locked-off wide and a slow push-in share the same subject and scene but produce entirely different clips.
Pacing
What should happen across the clip, matched to the duration you request. A short clip supports one beat; a longer clip can hold a small arc.
A filled example looks like this:
SUBJECT: a lone cyclist in a dark windbreaker, water beading on the helmet
SCENE: empty coastal road at dawn, overcast sky, wet asphalt reflecting grey light
CAMERA: wide shot, slow lateral tracking at walking pace
PACING: single continuous action, cyclist pedals steadily, no cuts
Flattened into a single request string for kling-4.0/text-to-video:
A lone cyclist in a dark windbreaker, water beading on the helmet, on an empty coastal road at dawn, overcast sky, wet asphalt reflecting grey light. Wide shot, slow lateral tracking at walking pace. Single continuous action, cyclist pedals steadily, no cuts.
Two conventions make this skeleton work in practice. First, use periods between slots, not commas. It gives the prompt a natural rhythm that separates decisions. Second, never leave a slot empty by accident. If you do not care about camera, still write an explicit choice like "static medium shot" so the model is not improvising.
Treat the skeleton as a contract. When you change it, change it deliberately and bump your prompt version.
Cinematic scene phrasing recipes
Cinematic output comes from specificity about light and space, not from cinematic-sounding adjectives. The pattern below replaces mood words with physical facts.
Recipe: directional light
SCENE: interior workshop at night, single warm lamp from upper right casting long shadows across a cluttered bench, dust visible in the light beam, dark background falling into black
Notice what is doing the work: light source, direction, quality, and what the light reveals. "Warm" and "night" set the palette; "upper right" fixes the geometry; "dust visible in the beam" adds depth. Swap the lamp for a window and the same skeleton produces a different scene without touching subject or camera.
Recipe: environmental depth
SCENE: narrow alley after rain, foreground puddles with reflections, midground fire escape and hanging cables, distant streetlight haze behind, cool blue-grey palette
Layering foreground, midground, and background explicitly gives the model a depth plan. It also reduces the mushy mid-frame that appears when a prompt describes only one plane.
Recipe: subject action with texture
SUBJECT: a chef in a white apron, flour dusting the forearms, hands working dough
PACING: continuous kneading motion, flour puffing with each press, no cuts
Describe the action as a physical loop the model can sustain. Continuous, repeatable motion holds together better across a clip than a one-time event, which the model may finish early and then idle.
Recipe: weather and atmosphere
SCENE: city rooftop at dusk, thin fog moving through the frame, wind pushing loose fabric, distant skyline softened by haze, low contrast, desaturated
Atmosphere should be described as something that moves, because video rewards motion cues. Fog, wind, rain, and drifting particles all give the frame continuous texture.
Anti-patterns to avoid
- Stacked adjectives. "Epic, stunning, cinematic, beautiful" adds no information the model can render.
- Camera words inside the scene. Keep "slow dolly" out of the scene slot so you can tune it separately.
- Contradictions. "Bright night scene" will resolve unpredictably. Pick a light plan and commit.
- Too many subjects. Each additional character or object competes for the model's attention and increases the chance one is malformed.
Camera and shot control recipes
Camera is the highest-leverage slot because it changes the clip's feel without touching content. Keep it isolated so you can swap it in a batch.
Shot type vocabulary
Start every camera clause with a shot size: extreme wide, wide, medium, close-up, extreme close-up. This single word sets how much of the subject fills the frame and how much environment is visible.
CAMERA: medium close-up, static tripod
Movement recipes
Each of these is a drop-in camera clause:
CAMERA: wide shot, slow push-in toward the subject
CAMERA: medium shot, lateral tracking left at walking pace
CAMERA: close-up, slow handheld drift with slight instability
CAMERA: wide shot, static, subject moves through frame
CAMERA: medium shot, slow tilt up from hands to face
The key discipline is one movement per clause. Combining a push-in with a tilt and a roll in the same request usually produces mush, because the model has to blend conflicting motion plans.
Speed qualifiers
Movement speed matters more than movement direction for perceived quality. Use plain qualifiers: slow, steady, walking pace, gradual. Avoid numeric speeds, since they do not translate reliably into the model's motion planning.
Handheld versus stabilized
If you want documentary realism, say so explicitly with "handheld, slight instability." If you want commercial polish, say "stabilized, smooth motion." Leaving this unspecified is one of the most common causes of a clip that feels off without an obvious reason.
Swapping camera in a batch
Because camera is its own slot, you can hold subject, scene, and pacing constant and generate a controlled comparison. Build a small array of camera clauses, loop over it, and keep everything else fixed:
cameras = [
"wide shot, static tripod",
"medium shot, slow push-in",
"close-up, handheld with slight drift",
]
for cam in cameras:
prompt = f"{subject}. {scene}. {cam}. {pacing}."
# send prompt to kling-4.0/text-to-video
The output set tells you which framing reads best for that content, and the comparison is honest because only one variable moved.
Duration and pacing recipes
Prompt detail must match clip length. A prompt that describes three beats in a short clip produces a rushed, glitchy result. A prompt with one small action in a long clip produces dead air.
Short clips: one beat
For short durations, describe a single continuous action with no narrative progression.
PACING: one continuous gesture, subject turns head slowly toward the light, nothing else changes
Strip out anything that implies sequence. Words like "then," "after," and "finally" invite the model to compress events and lose coherence.
Medium clips: one action plus environment motion
Add ambient movement rather than a second subject action.
PACING: subject stands still breathing, cloth shifting in the wind, background smoke drifting continuously
Ambient motion fills time without asking the model to stage a new event.
Longer clips: a small arc
If your duration supports it, you can describe a beginning and an end state. Keep it to two beats and make the transition physical.
PACING: subject begins facing away, slowly turns to face camera, expression settles into a neutral gaze by the end
State the start, the motion, and the end position. That gives the model a trajectory to interpolate along instead of a blank duration to fill.
Matching words to seconds
As a working rule, describe one physical action per beat and budget roughly one beat per short clip. If you find yourself writing more than two sentences of pacing, either the clip is long enough for an arc or you are over-specifying.
Common pacing mistakes
- Implied cuts. "Shot one, then shot two" rarely works; a single generation is one continuous take.
- Speaking and moving. Dialogue plus complex motion is a hard combination. Favor one.
- Time-of-day changes. Sunsets in a clip are hard to control; pick a lighting state and hold it.
- Crowd choreography. Multiple independently moving figures degrade quickly. Keep the crowd as texture, not actors.
Testing recipes in your pipeline
A prompt recipe is code. It should be versioned, tested, and logged like code.
Version prompts as assets
Store each recipe in a file with a version identifier, alongside its filled slots. Do not store them as strings buried in application logic. When you change a phrase, that is a new version, and old versions stay available for comparison and rollback.
{
"id": "cyclist_coastal_v3",
"subject": "a lone cyclist in a dark windbreaker...",
"scene": "empty coastal road at dawn...",
"camera": "wide shot, slow lateral tracking...",
"pacing": "single continuous action..."
}
Run small comparison batches
Before promoting a recipe to production, generate a small batch — a handful of variations, not hundreds. Change one slot at a time. Score outputs on the dimensions you care about: subject fidelity, motion stability, framing, and how well the clip fills the duration. Promote the winner and record the decision.
Log prompt, parameters, and output together
Every request should write a record containing the prompt version, the filled slots, the request parameters, the output identifier, and your quality score. When something regresses later, that log is the difference between a five-minute diagnosis and a day of guessing.
log = {
"prompt_id": recipe["id"],
"prompt": flattened_prompt,
"params": {"prompt": flattened_prompt},
"output": response_id,
"score": manual_score,
}
Keep a regression set
Once a recipe is in production, keep a small frozen set of prompts and their accepted outputs. After any model or parameter change, re-run the set and compare. This catches silent drift before your users do.
A simple promotion loop
Draft a recipe from the skeleton, fill the slots, run a small batch against alternatives for one slot, score, then promote the winner to a versioned asset with its log intact. Repeat as content needs change.
Treat each recipe as a testable artifact and the pipeline stops being a slot machine. You can start from the kling-4.0/text-to-video endpoint and build your own versioned library on top of it.
Related articles
View all articles →-
Guide
Getting Started with seedream-5.0-pro/image-to-image: Capabilities, Pricing, and Integration Essentials
Capability boundaries, billing model, and engineering integration practices for ByteDance's image editing model
-
Guide
seedream-5.0-pro Text-to-Image Getting Started Guide: Capability Boundaries, API Integration, and Cost Control
A hands-on developer perspective: from key parameters to a cost estimate of $0.05 per image
-
Guide
Hailuo 2.3 Fast Image-to-Video Getting Started Guide: Capability Boundaries, Pricing, and Integration Practices
MiniMax image-to-video model selection and integration key points for developers