Video Generation (FLUX 3)
Trigger
Any request to generate, animate, or chain video clips, or to produce a short film for a contest/deadline.
Mandatory first step
Call bfl_flux3_prompting_guide before the first generation of any session. It costs no generation budget and carries the prompting rules.
Tool selection
| Need |
Tool |
| Clip from text alone |
bfl_flux3_text_to_video |
| Animate a specific still as frame 0 |
bfl_flux3_image_to_video |
| Storyboard of 1-10 pinned stills |
bfl_flux3_keyframes_to_video |
| Extend an existing clip |
bfl_flux3_video_continuation |
| Poll any job |
bfl_flux3_get_result |
Hard constraints (plan around these)
- One generation = one 5-20s clip at 24fps. A 20-40s short film = 2-4 chained segments, or one strong single take.
- video_continuation: input mp4 ≤50MB and ≤15s; the new segment also caps at 15s. Chain a second continuation for longer sequences.
- keyframes_to_video: when pinning keyframe_indices, set an explicit duration — "auto" can resolve shorter than your highest index and the job is rejected.
- Audio is generated by default; write "no music" in the prompt if unwanted.
- Generation takes MINUTES per clip and polling is normal. Budget iteration time: each retry is minutes, not seconds. For deadlines, finish with hours of buffer.
- Media fields accept local paths (auto-uploaded to temporary storage, deleted after) or URLs.
- A generate call returns a job id; nothing exists until bfl_flux3_get_result returns Ready and downloads the clip.
Companion craft skill
This skill owns MECHANICS only. Prompt-writing craft (consensus prompt anatomy, cinematography vocabulary, suspense-reveal beat sequencing, verbatim prompt library, failure-mode fixes) lives in flux3-video-directing (creative category) — installed in THIS profile 2026-07-31 (copied from the creative profile, where it was authored). Load it for any "write/improve/storyboard a prompt" work. NOTE: the copy is user-owned, not curator-managed — a verified quiet-nature 3-shot b-roll prompt (PNW, first-try success 2026-07-31) is pending addition to its prompt library once adopted (hermes curator adopt flux3-video-directing). Built 2026-07-30 from two research digests (~/flux3-video-prompting-research.md, ~/cinematography-ai-video-digest.md) via: research fan-out (2 parallel delegate_task scrapers) → senna writes a spec file deciding ONE-skill-not-a-series → file-relay to creative profile for authoring. Reuse that pattern for building craft knowledge around any new tool.
Prompt shape
Plain prose, ordered: subject → distinguishing visual specifics → action → camera → lighting → environment → audio → style. Whatever you leave unspecified gets filled in for you — research anything with a real checkable appearance (grounding=true allows a short research pass).
Timed competition workflow (see references/contest-brief-research.md)
- RESEARCH THE BRIEF BEFORE DISPATCHING ANYONE. Rules, submission format, tags, exact deadline with timezone, judging criteria. Never dispatch specialists on a rumored brief.
- Convert deadline to a work-backwards plan: post by deadline minus a multi-hour buffer (iteration is slow).
- Feasibility check against the constraints above BEFORE promising a film length.
- Specialists in parallel (concept/storyboard, post copy) → synthesize one plan → user green-light → generate.
- Deliver the exact submission artifact the rules require (e.g. file + caption + tags), not just the video.
Rate limits & multi-profile coordination (learned 2026-07-30)
- HARD LIMIT: one new generation per account at a time, with a server-enforced submit cooldown between jobs (observed ~1 min 2026-07-30, ~5 min 2026-07-30 earlier — the error names the exact wait; trust it, not a fixed number) Submitting early returns a cooldown error naming the wait; submitting while a job runs returns "You already have a BFL video generation running."
- The quota is ACCOUNT-WIDE, not per-Hermes-profile. If another profile (e.g. creative) is generating, YOUR submit fails with the "already running" error — and you don't have their job id to poll. Coordinate out-of-band: only one profile submits at a time.
- When another profile owns the generation slot, hand off work as a prompt FILE (both segment prompts + iteration rules in one .txt) rather than competing for the slot. The user relays between profile sessions.
- A job survives client restarts: re-poll the same job id, never resubmit — resubmitting spends duplicate budget.
Behaviors worth knowing (from bfl_flux3_prompting_guide)
- Multi-shot works INSIDE one generation: "SHOT ONE ... HARD CUT. SHOT TWO ..." produces real cuts; "one continuous unbroken shot" gets an uncut take. Consecutive shots must contrast in scale, location, or colour or they blend back into one take.
- Audio lands as separate layers — name ambient, music, and speech separately. Leaving audio unspecified gets invented sound, not silence.
- A quoted line becomes speech ONLY with a visible speaker on camera; otherwise it tends to burn in as on-screen text. Add "no on-screen text, no subtitles" when text is unwanted.
Serialized multi-segment film pipeline (verified 2026-07-30, 5 films × 2 segments)
For a >20s multi-shot short (e.g. a 30s three-shot b-roll film):
- text_to_video 15s carrying SHOT ONE ... HARD CUT ... SHOT TWO (~7-8s each).
- video_continuation 15s from that file carrying the final shot (open with "Continue this video from its final frames:", re-state the character description verbatim).
- Stitch losslessly:
printf "file 'seg1.mp4'\nfile 'seg2.mp4'\n" > list.txt && ffmpeg -y -f concat -safe 0 -i list.txt -c copy film.mp4
Verify with ffprobe -v error -show_entries format=duration -of csv=p=0 film.mp4 (15+15 lands at exactly 30.1s).
- RHYTHM: one job at a time means the blocking get_result poll IS your cooldown — the moment a segment returns Ready, submit the next one, and run the ffmpeg stitch in the same batch (they're independent). Never batch multiple submits; all but the first fail.
- Lock the character description + style prefix verbatim across every segment; the continuation inherits motion but not identity.
Pitfalls
- Don't chain generations speculatively: each costs minutes and budget. Lock the storyboard first.
- Don't promise a clip length the tools can't make in one pass (>20s needs chaining — say so up front).
- Contests on X: scan what other entrants post so the submission doesn't blend in.
- User taste (suspense/creature trailers): restraint with ONE clear glimpse of the subject (e.g. face held for a beat, then gone) — not pure implication, not full reveal. Confirm the glimpse level before locking a storyboard.
1---2name: video-generation3description: Use when generating video with FLUX 3 tools or contests.4---5
6# Video Generation (FLUX 3)
7
8## Trigger
9Any request to generate, animate, or chain video clips, or to produce a short film for a contest/deadline.
10
11## Mandatory first step
12Call `bfl_flux3_prompting_guide` before the first generation of any session. It costs no generation budget and carries the prompting rules.
13
14## Tool selection
15| Need | Tool |
16|---|---|
17| Clip from text alone | bfl_flux3_text_to_video |
18| Animate a specific still as frame 0 | bfl_flux3_image_to_video |
19| Storyboard of 1-10 pinned stills | bfl_flux3_keyframes_to_video |
20| Extend an existing clip | bfl_flux3_video_continuation |
21| Poll any job | bfl_flux3_get_result |
22
23## Hard constraints (plan around these)
24- One generation = one 5-20s clip at 24fps. A 20-40s short film = 2-4 chained segments, or one strong single take.
25- video_continuation: input mp4 ≤50MB and ≤15s; the new segment also caps at 15s. Chain a second continuation for longer sequences.
26- keyframes_to_video: when pinning keyframe_indices, set an explicit duration — "auto" can resolve shorter than your highest index and the job is rejected.
27- Audio is generated by default; write "no music" in the prompt if unwanted.
28- Generation takes MINUTES per clip and polling is normal. Budget iteration time: each retry is minutes, not seconds. For deadlines, finish with hours of buffer.
29- Media fields accept local paths (auto-uploaded to temporary storage, deleted after) or URLs.
30- A generate call returns a job id; nothing exists until bfl_flux3_get_result returns Ready and downloads the clip.
31
32## Companion craft skill
33This skill owns MECHANICS only. Prompt-writing craft (consensus prompt anatomy, cinematography vocabulary, suspense-reveal beat sequencing, verbatim prompt library, failure-mode fixes) lives in `flux3-video-directing` (creative category) — installed in THIS profile 2026-07-31 (copied from the creative profile, where it was authored). Load it for any "write/improve/storyboard a prompt" work. NOTE: the copy is user-owned, not curator-managed — a verified quiet-nature 3-shot b-roll prompt (PNW, first-try success 2026-07-31) is pending addition to its prompt library once adopted (`hermes curator adopt flux3-video-directing`). Built 2026-07-30 from two research digests (~/flux3-video-prompting-research.md, ~/cinematography-ai-video-digest.md) via: research fan-out (2 parallel delegate_task scrapers) → senna writes a spec file deciding ONE-skill-not-a-series → file-relay to creative profile for authoring. Reuse that pattern for building craft knowledge around any new tool.
34
35## Prompt shape
36Plain prose, ordered: subject → distinguishing visual specifics → action → camera → lighting → environment → audio → style. Whatever you leave unspecified gets filled in for you — research anything with a real checkable appearance (grounding=true allows a short research pass).
37
38## Timed competition workflow (see references/contest-brief-research.md)
391. RESEARCH THE BRIEF BEFORE DISPATCHING ANYONE. Rules, submission format, tags, exact deadline with timezone, judging criteria. Never dispatch specialists on a rumored brief.
402. Convert deadline to a work-backwards plan: post by deadline minus a multi-hour buffer (iteration is slow).
413. Feasibility check against the constraints above BEFORE promising a film length.
424. Specialists in parallel (concept/storyboard, post copy) → synthesize one plan → user green-light → generate.
435. Deliver the exact submission artifact the rules require (e.g. file + caption + tags), not just the video.
44
45## Rate limits & multi-profile coordination (learned 2026-07-30)
46- HARD LIMIT: one new generation per account at a time, with a server-enforced submit cooldown between jobs (observed ~1 min 2026-07-30, ~5 min 2026-07-30 earlier — the error names the exact wait; trust it, not a fixed number) Submitting early returns a cooldown error naming the wait; submitting while a job runs returns "You already have a BFL video generation running."
47- The quota is ACCOUNT-WIDE, not per-Hermes-profile. If another profile (e.g. creative) is generating, YOUR submit fails with the "already running" error — and you don't have their job id to poll. Coordinate out-of-band: only one profile submits at a time.
48- When another profile owns the generation slot, hand off work as a prompt FILE (both segment prompts + iteration rules in one .txt) rather than competing for the slot. The user relays between profile sessions.
49- A job survives client restarts: re-poll the same job id, never resubmit — resubmitting spends duplicate budget.
50
51## Behaviors worth knowing (from bfl_flux3_prompting_guide)
52- Multi-shot works INSIDE one generation: "SHOT ONE ... HARD CUT. SHOT TWO ..." produces real cuts; "one continuous unbroken shot" gets an uncut take. Consecutive shots must contrast in scale, location, or colour or they blend back into one take.
53- Audio lands as separate layers — name ambient, music, and speech separately. Leaving audio unspecified gets invented sound, not silence.
54- A quoted line becomes speech ONLY with a visible speaker on camera; otherwise it tends to burn in as on-screen text. Add "no on-screen text, no subtitles" when text is unwanted.
55
56## Serialized multi-segment film pipeline (verified 2026-07-30, 5 films × 2 segments)
57For a >20s multi-shot short (e.g. a 30s three-shot b-roll film):
581. text_to_video 15s carrying SHOT ONE ... HARD CUT ... SHOT TWO (~7-8s each).
592. video_continuation 15s from that file carrying the final shot (open with "Continue this video from its final frames:", re-state the character description verbatim).
603. Stitch losslessly:
61 `printf "file 'seg1.mp4'\nfile 'seg2.mp4'\n" > list.txt && ffmpeg -y -f concat -safe 0 -i list.txt -c copy film.mp4`
62 Verify with `ffprobe -v error -show_entries format=duration -of csv=p=0 film.mp4` (15+15 lands at exactly 30.1s).
634. RHYTHM: one job at a time means the blocking get_result poll IS your cooldown — the moment a segment returns Ready, submit the next one, and run the ffmpeg stitch in the same batch (they're independent). Never batch multiple submits; all but the first fail.
645. Lock the character description + style prefix verbatim across every segment; the continuation inherits motion but not identity.
65
66## Pitfalls
67- Don't chain generations speculatively: each costs minutes and budget. Lock the storyboard first.
68- Don't promise a clip length the tools can't make in one pass (>20s needs chaining — say so up front).
69- Contests on X: scan what other entrants post so the submission doesn't blend in.
70- User taste (suspense/creature trailers): restraint with ONE clear glimpse of the subject (e.g. face held for a beat, then gone) — not pure implication, not full reveal. Confirm the glimpse level before locking a storyboard.