Author every shot on its own; generate them together. The unit of generation is the run: as much of the film as fits one generation at the model's ceiling, scenes included. The model makes the cuts inside it, and the take is split back into shots at the cuts it actually made. Read these before the step:
| File | Read it before you… |
|---|---|
references/seams.md |
write how one shot meets the next, or where one run meets the next |
references/camera.md |
choose or write a shot's camera move |
references/realism.md |
write a shot's action, sound and what persists through a run |
references/scene-pictures.md |
make a scene's wide, scene picture or room map |
references/references.md |
put a run's reference images together |
references/takes.md |
split a take, or judge one |
references/repairs.md |
act on a note about a take |
The model
One video model shoots the whole film, and the runs are packed against its ceiling, so choose it before the shots are planned.
- Narrow the video models with
picsart_model_catalog:mode: "video",purpose: "generate",acceptsImage: true,concise: false. Keep the rows whosesupportedAspectRatioshold the film's ratio. Edits, extends and upscalers are out. - Read
picsart_model_paramson each model that survives. Keep only those that hold several cuts inside one generation at the finish resolution and take enough reference images for a run. - For each one kept, find its edit and extend siblings: the
picsart_model_catalogrows (concise: false) from the same provider withpurpose: "edit"that edit or extend a clip. Repairs use them.
Runs
Packing. Read the model's ceiling and accepted durations with picsart_model_params; never
from memory. Pack the ordered shots into the fewest runs that fit. A scene change, a climax, a
close-up or a hunch that a shot works better alone is not a reason to start a run. Merge adjacent
runs that fit together, and say which you merged.
Durations. A shot's sec is its length in the cut. A run's generation length is the sum of its
shots' sec, plus one handle at each end of the run (not between its shots), snapped up to a
duration the model accepts. That is the run's genSec. Inside a run, the
silence after a line and a designed tail hold are the only trim room at a shot boundary.
- The ceiling is a packing limit, not a shot length. Never merge several short actions into one long shot to fill a run.
- Dramatic shots run three to eight seconds, action shorter. A shot over 8 s carries its reason; over 12 s it is a deliberate long take.
- A scene of more than 12 s held in one shot gets a recommendation of two to four shots of coverage, with what is lost without it written on its card.
The cut-by-cut pass. Walk each scene's neighbouring shots as pairs and write the pair's rule into
both blocks (references/seams.md). Then four checks on the cards, fixed on the card before
anything generates:
- Two shots of the same subject in a row are two sizes apart.
- Where a look answers something, the gaze and the thing are on opposite sides of frame.
- Screen direction holds through the scene, unless a shot toward or away from camera turns it.
- No three shots in a row share both their size and their camera move.
The run pass. Give every shot its run and every run its ordered shots, planned cut times (running
sums of sec from zero), generation length, join sentence and ordered references. Planned cuts are
requests: the model cuts near them, not on them. If the cards stop fitting the approved plan, or an
edge falls on a rest, propose the fix; never move an approved edge in silence.
A run that changes a place or a person's state makes later runs wait for its accepted take: their frames of the change replace the clean pictures they contradict.
Key frames
Any video that buys footage, a film or a single generated shot in another kind of video, is first
seen as stills at its key points, as picsart-video-rules says. Run scripts/keyframes.py on the plan's
beats: it names each key point (the hook, the turn, the payoff, and the opening of every generated
beat), says which of them the user's own footage already shows, and how the video reuses each
still. Run it again with the stills before the video is quoted; ready stays false until every
generated beat has an approved still.
- A film's scene pictures are its key frames (
references/scene-pictures.md). - Outside a film, make a key frame the way a scene picture is made: at the video's frame, from full-size references. A crop of a screen recording is a low-resolution frame, never a reference.
- An approved key frame is used, not thrown away: it opens its generation as picture 1 of
imageUrls, or travels as aFRAME REFERENCE(references/references.md). A still nothing in the video will use is not a key frame.
Compile and verify
Every prompt is compiled on the server and passed to picsart_generate verbatim. The camera,
lighting and acting language, the house lines and the templates are the compiler's; a paraphrase
renders worse. This holds for one shot made for another use case too, such as a screen video's
generated opening: it goes through these steps like a run.
-
Compile with
picsart_film_compile_prompt:kind(runfor a video,stillorscene-picturefor a picture,map,edit), the world'slookids (withlook.schemeandlook.huewhen the setup has them), and what only you can write:scene,geography(one line, identical in every prompt of the scene), andspace: foreground, midground and background, all three named;cast, each with atelland the savedvoice; andcastPresencewhenever someone incastis not in the opening frame: where they are and when and how they enter ("Tobin is outside; he walks in through the garage door, frame-left, in shot 3"). The prompt counts every cast member from the first frame, and only this line keeps a latecomer out of it;images: every reference numbered, each with its job;shots[]:sec,subject, size, arrangement, angle,fov,focus,composition,move;performancesfor every person in frame (action,emotionwith the intensity film-story-writing's peak rule sets,gazeon a named target); the shot's ownspeech, besideperformancesrather than inside one (name,line,delivery); and the pair's cut rule in itsextra;- anything more in
extraorfilmConstraints, in your own words.
Pin what the model would re-infer. It guesses every unstated fact frame by frame, and the glitches come from those guesses. In
extraand the performances:- a moving mechanism states its fixed geometry once (the hinge side and swing of a door, the grip and stroke of a tool) and every action names its instrument: water pours from the kettle, never "she pours" from a bag of beans;
- list what may move (people, tools, the camera) and pin the rest still; every spark, smoke or sound has an owner on frame or a cause off it, or the model invents one, usually the nearest person;
- one primary action per person per shot; a change of tool is its own written step.
Every shot passes its
fov,focusandcomposition, whether the card's value was seeded or changed: the setup carries no focal length, so a skipped lens leaves the model choosing one. Anautofocus or composition writes nothing. A card from an older board may carry an f-stop asapertureinstead; pass it as it came. A light writes a line only when the user changed it, and then every shot of its scene carries the scene's colour temperature and dark side in itsextra, as film-story-writing sets them; a palette other thanautoalways does. -
Verify with
picsart_film_verify_prompton the literal arguments you are about to send: the prompt, the images, the model settings, the audio flag, and thepromptToken. Its table checks what is string matching and arithmetic. It does not judge the writing: read every character's action, emotion and gaze, the entrances and exits, the props, the cut motivation and the joins yourself.kinddecides which house lines are required and which are forbidden (a still with a shutter angle or a soundtrack is as wrong as a run without them);resolvedKindnames the rules that ran (stillruns asscene-picture,portraitandprofileassheet).- The approved
castis everyone who appears at any point, latecomers included: counting only shot 1 is the usual mistake. A silent shot carriesdialogue: [], never an omitted field. - It also checks each approved line reproduced exactly and in order, each speaker's saved voice in full, a line against its shot's seconds, quotation marks around anything but the approved line (the model speaks them aloud), the reference budget with every named character's views among them, the banned performance adjectives, and blocks that describe another shot.
- An
extraobject merges over the top-level keys as a host merges it; a key given twice with two different values is refused. Withoutapproved, the prompt-level checks still run andskippednames the rest. It never flags text for being unrecognised.
-
A palette warning stops the dispatch. When the compiler's
notessay a shot's palette argues with the film's scheme, nothing is generated from that prompt. Flag the shot with its three options: keep the palette, drop it toauto, or swap it for one inside the scheme. -
A failure is fixed at the source: the inputs corrected, compiled again, verified again. A finding on a user-owned value (a shot's seconds, a line, a lens, a light) goes back to the user, never quietly changed. A prompt changed after compiling is compiled again; an old token never covers new text.
Never paste a descriptor into a run prompt: the references carry identity, and the prompt names them by number. Prompts describe what is there, not a list of negatives; a video takes no negative prompt.
Voice
- The film keeps the voice its takes are born with. Native audio is on for any run with a line, off for a run without one.
- Every speaking block carries the speaker's saved voice line verbatim, repairs and extends included. Emotion and loudness go in the delivery.
- Every line has a beat of silence after it inside its shot. A line running into the cut fails.
- A shared run and a voice line do not guarantee one timbre across takes. Listen for it in review.
Dispatch and follow
picsart_generateis asynchronous, and a batch of runs goes out as picsart-video-rules says: one call with oneitemsentry per run, sent before you follow any. The call passes the model, thefolderUidthe shots are filed in and the sharedaspectRatio; each entry passes its run's compiled prompt,imageUrls,duration, and model-specific settings inextraaspicsart_model_paramsnames them. Every reference travels inimageUrls, and no other image parameter is set: a frame travels as picture 1 ofimageUrls.- Runs are shot as drafts: the lowest
resolution, or the draft switch, thatpicsart_model_paramsoffers for the model, never its finish settings. A run keeps itsgenSec. The finish settings are bought once, in film-finishing's final-resolution pass, after the user calls the cut final. A model with no setting below its finish has no draft: say so in the forecast, and its takes are final. - The batch's own card follows its jobs and reports back, as picsart-video-rules says. Label each run's entry with the run's shots.
- A dropped or timed-out call is not a failed generation. The job is usually still running and
charging. Check it with
picsart_job_statuson its handle as picsart-video-rules says, passing thefolderUidagain; never submit it again. Once it is COMPLETED, save the take into the Shots folder withpicsart_drive_upload: polling never files it. - A job still running at the end of a turn: say what is running and that you will pick it up. A
batch that lands is split, judged and put up for review in that turn (
references/takes.md).
Traps
- A run sent at the finish settings before the user calls the cut final.
- Shooting shot by shot, or splitting runs for emphasis when the same shots fit fewer runs.
- Treating the model's ceiling as a reason to make one long shot.
- A prompt typed by hand, or a compiled one edited without compiling again.
- A verification pass read as approval of the footage.
- A panel pointer, a contact-sheet thumbnail or a low-resolution frame sent as a reference.
- A reference passed outside
imageUrls; an identity or wardrobe view left out; references reordered without compiling again. - The geography line dropped, so people swap sides between shots.
- Readable text asked of a video or a still. Signs and screens are added in the edit.
- Resubmitting after a dropped call instead of checking its job.