Autonomous Video Pipeline
Purpose
Produce a finished short-form video package from source material with explicit
quality gates. Treat this as a production workflow, not a prompt trick: plan the
artifact, build deterministic manifests, create media in replaceable provider
steps, render the final MP4, then verify before claiming completion.
If the requested artifact is only a browser walkthrough or screencast, prefer
browser-tutorial-video. Use this skill when narration, generated scenes,
motion graphics, avatar/TTS clips, or multi-stage video assembly are involved.
Workflow
Pin the production contract.
- Capture topic, audience, target duration, aspect ratio, language, output
directory, allowed source material, provider constraints, budget ceiling,
and whether voice/avatar likeness is explicitly authorized.
- If paid APIs, cloned voices, avatars, private accounts, or live provider
UIs are required and authorization is unclear, ask before proceeding.
- For current or factual claims, verify from primary/current sources and
keep a source ledger in the project manifest.
Create a project manifest.
- Use
scripts/build_video_manifest.py to create the starting manifest and
project folders when useful.
- Track deliverables, sources, narration chunks, media assets, scene files,
render commands, QA evidence, and residual limitations.
- Keep the manifest current as work proceeds. It is the control surface for
review, rerendering, and handoff.
Write the script as a production script.
- Use the user's voice playbook if provided; otherwise write clearly and
avoid impersonating a real person.
- Separate narration from visual direction.
- Keep factual claims traceable to the source ledger.
- Read
references/production-prompt-pattern.md when shaping a high-stakes
goal prompt or stop condition.
Chunk narration before media generation.
- Use
scripts/chunk_script.py to split narration into provider-friendly
chunks, defaulting to sub-minute estimated speech duration.
- Keep chunk IDs stable because downstream audio, avatar clips, subtitles,
and QA notes should refer to the same IDs.
Create a storyboard and scene manifest.
- Read
references/storyboard-scene-manifest.md.
- Map each narration chunk to scenes, visual intent, motion graphic needs,
asset dependencies, and QA timestamps before generating expensive media.
- Use a simple JSON or Markdown scene manifest; do not rely on memory or
chat-only timing notes.
Generate or collect media through adapters.
- Read
references/provider-adapters.md before using TTS, avatar, stock
media, browser automation, or code-rendered motion graphics.
- Prefer APIs and local tools. Use browser automation only when the user is
authorized and no stable API path exists.
- Never hardcode one provider as required. Record the chosen provider,
model/settings, input chunk ID, output path, and failure notes.
Build motion graphics and edit.
- Read
references/motion-graphics-rules.md before creating scene code.
- Keep the speaker/avatar visible when the brief asks for an avatar-led
explainer.
- Use scene manifests and explicit timings instead of visual guesswork.
- Assemble with FFmpeg or an existing repo-local render pipeline.
Verify before completion.
- Read
references/video-qa-checklist.md.
- Use
ffprobe metadata, QA frame extraction, representative visual review,
audio/subtitle timing checks, and scene-boundary checks.
- Use
scripts/extract_qa_frames.py for deterministic frame extraction.
- Use
scripts/probe_video.py to write a compact ffprobe summary.
- Use
scripts/validate_video_package.py --final before claiming upload
readiness.
- Rerender or patch until the acceptance criteria are met, or report the
exact limitation that prevents completion.
Stop Condition
Do not claim that the video is finished until these are true:
- A final MP4 exists at the declared output path.
- The manifest lists all source material, generated chunks, media assets,
render steps, and verification evidence.
ffprobe metadata matches the requested format closely enough.
validate_video_package.py --final passes for the project manifest, or each
failure is explicitly waived with a reason.
- Representative QA frames were inspected for timing, layout, clipping, blank
scenes, out-of-bounds elements, and visible avatar/speaker constraints.
- Any unverified factual claims, provider failures, watermarks, account limits,
or human-review dependencies are stated plainly.
Output
Return the final MP4 path, manifest path, QA evidence path, key render metadata,
and any residual limitations. If the work cannot safely complete, return the
best partial package with a concrete next action instead of pretending it is
ready to publish.
1---2name: autonomous-video-pipeline3description: Use when Codex needs to produce or supervise a complete short-form explainer, avatar, tutorial, or YouTube-ready video package from source material, including scripted narration, optional TTS/avatar generation, code-based motion graphics, FFmpeg assembly, QA frames, timing checks, and a verified final MP4 deliverable.4---56# Autonomous Video Pipeline78## Purpose910Produce a finished short-form video package from source material with explicit11quality gates. Treat this as a production workflow, not a prompt trick: plan the12artifact, build deterministic manifests, create media in replaceable provider13steps, render the final MP4, then verify before claiming completion.1415If the requested artifact is only a browser walkthrough or screencast, prefer16`browser-tutorial-video`. Use this skill when narration, generated scenes,17motion graphics, avatar/TTS clips, or multi-stage video assembly are involved.1819## Workflow20211. Pin the production contract.22 - Capture topic, audience, target duration, aspect ratio, language, output23 directory, allowed source material, provider constraints, budget ceiling,24 and whether voice/avatar likeness is explicitly authorized.25 - If paid APIs, cloned voices, avatars, private accounts, or live provider26 UIs are required and authorization is unclear, ask before proceeding.27 - For current or factual claims, verify from primary/current sources and28 keep a source ledger in the project manifest.29302. Create a project manifest.31 - Use `scripts/build_video_manifest.py` to create the starting manifest and32 project folders when useful.33 - Track deliverables, sources, narration chunks, media assets, scene files,34 render commands, QA evidence, and residual limitations.35 - Keep the manifest current as work proceeds. It is the control surface for36 review, rerendering, and handoff.37383. Write the script as a production script.39 - Use the user's voice playbook if provided; otherwise write clearly and40 avoid impersonating a real person.41 - Separate narration from visual direction.42 - Keep factual claims traceable to the source ledger.43 - Read `references/production-prompt-pattern.md` when shaping a high-stakes44 goal prompt or stop condition.45464. Chunk narration before media generation.47 - Use `scripts/chunk_script.py` to split narration into provider-friendly48 chunks, defaulting to sub-minute estimated speech duration.49 - Keep chunk IDs stable because downstream audio, avatar clips, subtitles,50 and QA notes should refer to the same IDs.51525. Create a storyboard and scene manifest.53 - Read `references/storyboard-scene-manifest.md`.54 - Map each narration chunk to scenes, visual intent, motion graphic needs,55 asset dependencies, and QA timestamps before generating expensive media.56 - Use a simple JSON or Markdown scene manifest; do not rely on memory or57 chat-only timing notes.58596. Generate or collect media through adapters.60 - Read `references/provider-adapters.md` before using TTS, avatar, stock61 media, browser automation, or code-rendered motion graphics.62 - Prefer APIs and local tools. Use browser automation only when the user is63 authorized and no stable API path exists.64 - Never hardcode one provider as required. Record the chosen provider,65 model/settings, input chunk ID, output path, and failure notes.66677. Build motion graphics and edit.68 - Read `references/motion-graphics-rules.md` before creating scene code.69 - Keep the speaker/avatar visible when the brief asks for an avatar-led70 explainer.71 - Use scene manifests and explicit timings instead of visual guesswork.72 - Assemble with FFmpeg or an existing repo-local render pipeline.73748. Verify before completion.75 - Read `references/video-qa-checklist.md`.76 - Use `ffprobe` metadata, QA frame extraction, representative visual review,77 audio/subtitle timing checks, and scene-boundary checks.78 - Use `scripts/extract_qa_frames.py` for deterministic frame extraction.79 - Use `scripts/probe_video.py` to write a compact `ffprobe` summary.80 - Use `scripts/validate_video_package.py --final` before claiming upload81 readiness.82 - Rerender or patch until the acceptance criteria are met, or report the83 exact limitation that prevents completion.8485## Stop Condition8687Do not claim that the video is finished until these are true:8889- A final MP4 exists at the declared output path.90- The manifest lists all source material, generated chunks, media assets,91 render steps, and verification evidence.92- `ffprobe` metadata matches the requested format closely enough.93- `validate_video_package.py --final` passes for the project manifest, or each94 failure is explicitly waived with a reason.95- Representative QA frames were inspected for timing, layout, clipping, blank96 scenes, out-of-bounds elements, and visible avatar/speaker constraints.97- Any unverified factual claims, provider failures, watermarks, account limits,98 or human-review dependencies are stated plainly.99100## Output101102Return the final MP4 path, manifest path, QA evidence path, key render metadata,103and any residual limitations. If the work cannot safely complete, return the104best partial package with a concrete next action instead of pretending it is105ready to publish.