FT FreeToolsHub

Blog / Extract a Shot List and Prompts From a Video

Extract a Shot List and Prompts From a Video

Published October 13, 2026 · 8 min read

An eight-minute video is not one shot and never will be one prompt. The useful unit is the shot — one continuous recording with one camera idea — and the work is segmentation followed by extraction. Done properly you end up with something a production team would recognise: a numbered shot list, a prompt per line, and timecodes to check them against.

Why one prompt per video never works

Two reasons, one technical and one physical. Technically, an analysis pass summarises: give it a multi-scene clip and it averages the framing, the movement and the grade into a description that matches none of the shots. Physically, a generator cannot render five camera setups in eight seconds — a prompt describes one continuous shot, so a merged description produces a morphing smear.

The fix is the opposite of the reflex: more passes, each over a smaller window. Which means you need shot boundaries before you need prompts.

Step one: find the shot boundaries

Pick whichever fits your setup:

  • Manual, for short clips. Scrub with the arrow keys and write timecodes. Twenty seconds of footage is five minutes of work.
  • Shot detection, for anything longer. Scene-change detectors find cuts automatically — the tool ecosystem includes dedicated shot detectors, and the same vendor family links one from its tools menu.
  • By file, when you have a project export. If each shot is already a separate clip, you have nothing to segment; skip to extraction.

Output of this step is a plain list: 0:00–0:04 A · 0:04–0:07 B · 0:07–0:12 C. Ignore transitions shorter than half a second — they belong to the boundary, not to a shot.

Step two: extract per shot

Now run each segment as its own job. Cut the segment to a file (ffmpeg's -ss and -t flags make this a one-liner; see the ffmpeg documentation), upload the MP4, MOV or WebM to SocialToPrompt, and take the structured prompt back. Working from files rather than the original link also skips the 1-credit extraction step, since upload goes straight to prompt generation at 3 credits per the site’s pricing.

Three habits keep the batch sane: process segments in order so the description vocabulary stays consistent; verify each camera verb against the source before accepting it (a shot list inherits every error you let through); and mark which shots are the mechanism — usually one or two of them are why you picked the video at all.

The shot list format

#  reference: competitor ad, 22s, coffee category
#  constants: warm practical light · oatmeal/amber palette · 35mm feel · 9:16 · handheld-locked hybrid

1  0:00–0:03  HOOK      macro, condensation on cold-glass side, no camera move, hard rim from right
                        → prompt: Extreme macro of water beading on a cold glass, camera locked-off,
                          hard rim light from right, dark background, 3s, no subject movement.
2  0:03–0:06  REVEAL    slow pull back to a full can on marble, one hand enters frame left
                        → prompt: Slow pull-back from the can to a full product on white marble;
                          a hand enters from frame left and stops short of touching it; 4s.
3  0:06–0:11  USE       pour in close-up, ice shifts, liquid highlights the foam
                        → prompt: Macro pour over ice, camera static at glass height, ice cubes
                          shift as liquid lands, foam builds; ends with the glass full; 5s.

The header block is the important part: it is what makes shots 1 through 3 look like the same film, because a generator has no memory between runs. Roles (HOOK, REVEAL, USE) make the list re-usable across products — you can rebuild any ad in your library by substituting role for role.

Reassembling as a buildable sequence

Generate in shot order, then check the three constants that break sequences most often: subject noun consistency, light direction, and palette wording. Where a join looks wrong, the fix is nearly always in one of the two adjacent prompts rather than in the edit — models will not hide a continuity break for you.

Transitions are a separate design problem, solved by describing a shared visual state at the boundary; that technique is in extracting video transition prompts. For long-form sources, the YouTube workflow covers timecode-based excerpting, and the free options comparison covers the batch case where credit pricing stops making sense. The general conversion logic sits in converting a video to an AI prompt.

One last thing a shot list gives you that a prompt never will: a legible answer to why this ad worked. Count the roles — most effective short-form has a macro hook, a reveal by second four, and one demonstration beat. That pattern is the asset, and it is the subject of turning viral videos into prompts.

Frequently asked questions

Can I get a shot list from an existing video?

Yes, in two passes: segment the video at its cuts — manually for short clips or with a shot detector for longer ones — then extract a prompt per segment. The result is a numbered list with timecodes, a description per shot, and a header block stating the constants that unify them.

Why can't I extract one prompt for a whole video?

Because analysis summarises across scenes and generation cannot render several camera setups in a few seconds. A multi-scene clip produces an averaged description that matches none of its shots, and a generator turns that into a morphing blur.

What should a shot list entry contain?

Timecode range, role in the edit (hook, reveal, demonstration, end card), one line of shot description, and the paste-ready prompt. Plus a header with the constants — subject noun, light direction, palette, format, aspect ratio — repeated in every entry so the sequence looks like one film.

Does uploading each shot as a file cost fewer credits?

Yes. SocialToPrompt bills extraction separately from prompt generation, so uploading a segment you cut yourself pays only the generation credits rather than the 4 credits a full link run costs on a clip up to 20 seconds.

Related reading