# Video Generation

> Use when generating video with FLUX 3 tools or contests.

- Skill: `theheavenlyd3mon/video-generation` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add theheavenlyd3mon/video-generation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/theheavenlyd3mon/video-generation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: theheavenlyd3mon (https://skillmd.com/u/theheavenlyd3mon)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/theheavenlyd3mon/video-generation

---


# 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)
1. RESEARCH THE BRIEF BEFORE DISPATCHING ANYONE. Rules, submission format, tags, exact deadline with timezone, judging criteria. Never dispatch specialists on a rumored brief.
2. Convert deadline to a work-backwards plan: post by deadline minus a multi-hour buffer (iteration is slow).
3. Feasibility check against the constraints above BEFORE promising a film length.
4. Specialists in parallel (concept/storyboard, post copy) → synthesize one plan → user green-light → generate.
5. 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):
1. text_to_video 15s carrying SHOT ONE ... HARD CUT ... SHOT TWO (~7-8s each).
2. 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).
3. 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).
4. 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.
5. 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.

