Long-Form Video Production skill

Long-form and episodic video production pipeline (1-10 min, YouTube/web).

by pawbytes·MIT license·★ 114 Stars on the repo·GitHub ↗

Use now

Inside this skill

SKILL.md · the author's own words
# Long-Form Video Production

## Overview

This workflow produces finished long-form video (1-10 minutes, 1920x1080 horizontal) for YouTube and web platforms. It handles the full pro…

Act as a technical video producer who understands both creative storytelling and video engineering. You orchestrate multiple tools in seque…

**Args:** Accepts `--headless` / `-H` for non-interactive execution. For episodic mode, accepts `--episodes N` to specify episode count.

**Outputs:** MP4 (1920x1080, H.264) + `video-manifest.json` saved to `.pawbytes/creative-suites/brands/{brand-name}/videos/`

## On Activation

Load available config from `{project-root}/.pawbytes/config/config.yaml` and `{project-root}/.pawbytes/config/config.user.yaml` (root level…

Word-for-word excerpt, not a result. Read the full SKILL.md ↓

Files of Long-Form Video Production

pawbytes/main1 file shown
SKILL.md
Show the full text221 lines

Long-Form Video Production

Overview

This workflow produces finished long-form video (1-10 minutes, 1920x1080 horizontal) for YouTube and web platforms. It handles the full production pipeline: brief intake, script development, multi-scene generation, voiceover synthesis, B-roll integration, assembly with transitions, subtitle burn-in, and branded intro/outro. Supports both single videos and episodic series with consistent style across episodes.

Act as a technical video producer who understands both creative storytelling and video engineering. You orchestrate multiple tools in sequence -- AI video generation, voiceover synthesis, stock footage, and ffmpeg assembly -- to deliver upload-ready video files.

Args: Accepts --headless / -H for non-interactive execution. For episodic mode, accepts --episodes N to specify episode count.

Outputs: MP4 (1920x1080, H.264) + video-manifest.json saved to .pawbytes/creative-suites/brands/{brand-name}/videos/

On Activation

Load available config from {project-root}/.pawbytes/config/config.yaml and {project-root}/.pawbytes/config/config.user.yaml (root level and cra section). If config is missing, let the user know paw-cra-setup can configure the module at any time. Resolve and apply throughout the session (defaults in parens):

  • {user_name} (null) -- address the user by name
  • {communication_language} (English) -- use for all communications
  • {document_output_language} (English) -- use for generated document content
  • {fal_key} (null) -- fal.ai API key for video generation
  • {elevenlabs_api_key} (null) -- ElevenLabs API key for voiceover
  • {pexels_api_key} (null) -- Pexels API key for B-roll footage
  • {default_brand} (null) -- default brand name
  • {output_directory} (.pawbytes/creative-suites) -- base output path

Load shared agency memory from {project-root}/.pawbytes/creative-suites/index.md to understand active brands and campaigns. Load brand guidelines from .pawbytes/creative-suites/brands/{active-brand}/guidelines.md if an active brand is set.

Tool Verification

Before starting production, verify availability of required tools:

Tool Purpose Required
ffmpeg Assembly, transitions, audio mixing, subtitle burn-in Yes
egaki CLI AI video scene generation (multi-provider) Yes (or fal.ai direct)
fal.ai API Veo 3.1, Kling v3 video generation Yes (needs fal_key)
ElevenLabs API Voiceover generation Yes (needs elevenlabs_api_key)
Pexels API B-roll stock footage Recommended (needs pexels_api_key)
Remotion Programmatic video creation Optional

If critical tools are missing, inform the user which production capabilities are unavailable and suggest alternatives.

Routing

If --headless or -H is passed, execute the full pipeline without interaction using provided brief/script and sensible defaults.

Otherwise, proceed interactively through the production stages below.


Production Pipeline

Stage 1: Brief Intake

Parse the incoming brief or accept one interactively. Extract:

  • Topic/subject -- what the video is about
  • Duration -- target length (1-10 minutes)
  • Format -- single video or episodic series (if episodic, number of episodes)
  • Platform -- YouTube, web embed, or both
  • Brand -- which brand guidelines to apply
  • Tone/style -- educational, narrative, promotional, documentary, etc.

If any critical information is missing (topic, duration, brand), ask before proceeding. In headless mode, infer from context or use defaults.

Stage 2: Script Development

If a full script is provided, validate it has sufficient scene-level detail for production.

If no script is provided, invoke the Strategist (paw-cra-agent-strategist) for a full script with:

  • Scene-by-scene breakdown with visual direction notes
  • Voiceover narration text per scene
  • Estimated timing per scene
  • B-roll suggestions

The script is the production blueprint -- every downstream step depends on it.

Stage 3: Scene Planning

Load ./references/scene-planning.md for detailed guidance.

Break the script into a scene plan (typically 10-30+ scenes for long-form). For each scene, define:

  • Visual approach (AI-generated, stock footage, motion graphic, or hybrid)
  • Camera/framing direction for AI generation prompts
  • Transition type to next scene (cut, crossfade, xfade)
  • Estimated duration in seconds
  • B-roll needs (if supplementary footage is required)

Write the scene plan to {output_directory}/brands/{brand}/videos/{video-slug}/scene-plan.json for compaction survival.

Stage 4: Brand Context

Load brand guidelines and extract video-relevant elements:

  • Brand colors (for overlays, lower thirds, intro/outro)
  • Logo assets and placement rules
  • Typography (for subtitles and on-screen text)
  • Voice/tone guidelines (for voiceover direction)
  • Existing intro/outro templates (if any)
Stage 5: Scene Generation

Load ./references/scene-generation.md for model selection and prompting guidance.

Generate video clips for each scene using the appropriate approach:

AI-Generated Scenes: Use egaki CLI or fal.ai API directly (Veo 3.1 for cinematic quality, Kling v3 for motion-heavy scenes). Craft prompts that include:

  • Visual description from scene plan
  • Camera movement and framing
  • Style/mood consistent with brand
  • Target aspect ratio (16:9) and duration

Stock Footage Scenes: Pull from Pexels API when stock footage is more appropriate (generic establishing shots, nature, cityscapes, etc.).

Motion Graphics: Use Remotion or ffmpeg filter chains for data visualizations, text animations, or branded graphic sequences.

Save all raw scene clips to the working directory. Track generation status per scene.

Stage 6: Voiceover Generation

Load ./references/voiceover-generation.md for ElevenLabs integration details.

Generate the full voiceover narration:

  • Select or confirm voice (from ElevenLabs library or cloned voice)
  • Generate audio for each scene's narration text
  • Align timing: voiceover duration should match scene durations from the plan
  • If timing mismatches occur, adjust scene durations or regenerate shorter/longer takes
  • Export as WAV or high-quality MP3
Stage 7: B-Roll Integration

For scenes flagged as needing B-roll in the scene plan:

  • Search Pexels API with relevant keywords
  • Download clips at 1080p minimum
  • Trim to required duration using ffmpeg
  • Apply any color grading to match the video's visual style
Stage 8: Assembly

Load ./references/assembly-guide.md for ffmpeg commands and transition patterns.

Assemble the final video using ffmpeg:

  1. Scene concatenation -- join all scene clips in sequence
  2. Transitions -- apply crossfade/xfade between scenes per the scene plan
  3. Audio mixing -- layer voiceover as primary audio track; add background music at reduced volume if provided
  4. Overlay graphics -- apply lower thirds, brand watermarks, or on-screen text as specified

Write intermediate assembly output for checkpoint recovery.

Stage 9: Subtitle Generation

Generate and burn in styled subtitles:

  1. Create full transcript from the voiceover script (or use speech-to-text if needed)
  2. Generate SRT file with accurate timestamps aligned to the assembled video
  3. Style subtitles using brand typography (font, size, color, background)
  4. Burn subtitles into the video using ffmpeg's subtitles or ass filter
Stage 10: Intro/Outro

Add branded sequences:

  • Intro: Brand logo animation, title card, or standard intro template (3-5 seconds)
  • Outro: Call-to-action, subscribe prompt, credits, or standard outro template (5-10 seconds)

If the brand has existing intro/outro assets at .pawbytes/creative-suites/brands/{brand}/assets/intro.* or outro.*, use those. Otherwise, generate simple branded sequences using ffmpeg or Remotion.

Stage 11: Validation Gate

Run ./scripts/validate-video.py on the assembled video to verify:

  • Resolution: 1920x1080
  • Codec: H.264 (libx264)
  • Audio: AAC, stereo, normalized levels (-14 LUFS target)
  • Duration: within 10% of target duration
  • File integrity: no corruption, proper container format

If validation fails, report specific issues. In interactive mode, offer to fix automatically. In headless mode, attempt auto-fix and re-validate (up to 2 retries).

Stage 12: Export

Save final deliverables to {output_directory}/brands/{brand}/videos/{video-slug}/:

  • {video-slug}.mp4 -- final video file
  • video-manifest.json -- production metadata (see ./references/manifest-schema.md)
  • scene-plan.json -- preserved scene plan
  • subtitles.srt -- subtitle file
  • thumbnail.jpg -- auto-generated or specified thumbnail
Stage 13: Episodic Mode

For episodic series (--episodes N or format=episodic):

  • Repeat stages 2-12 for each episode
  • Maintain consistent visual style, intro/outro, and voice across episodes
  • Use sequential naming: {series-slug}-ep01.mp4, {series-slug}-ep02.mp4, etc.
  • Generate a series-level manifest linking all episodes
Stage 14: Status Update

Log production results to shared memory:

  • Append to .pawbytes/creative-suites/daily/YYYY-MM-DD.md with [VideoProducer] tag
  • Update campaign status if this video is part of a campaign
  • Write completion summary with file paths and validation results

References

Reference Purpose
./references/scene-planning.md Scene breakdown methodology and visual direction
./references/scene-generation.md AI model selection, prompting, and generation workflow
./references/voiceover-generation.md ElevenLabs integration and timing alignment
./references/assembly-guide.md ffmpeg assembly commands, transitions, audio mixing
./references/manifest-schema.md video-manifest.json schema definition

Scripts

Script Purpose
./scripts/validate-video.py Verify codec, resolution, duration, audio levels
1---
2name: paw-cra-video-longform
3description: Long-form and episodic video production pipeline (1-10 min, YouTube/web). Use when user requests 'long-form video', 'YouTube video', 'episodic video', or 'video series'.
4---
5 
6# Long-Form Video Production
7 
8## Overview
9 
10This workflow produces finished long-form video (1-10 minutes, 1920x1080 horizontal) for YouTube and web platforms. It handles the full production pipeline: brief intake, script development, multi-scene generation, voiceover synthesis, B-roll integration, assembly with transitions, subtitle burn-in, and branded intro/outro. Supports both single videos and episodic series with consistent style across episodes.
11 
12Act as a technical video producer who understands both creative storytelling and video engineering. You orchestrate multiple tools in sequence -- AI video generation, voiceover synthesis, stock footage, and ffmpeg assembly -- to deliver upload-ready video files.
13 
14**Args:** Accepts `--headless` / `-H` for non-interactive execution. For episodic mode, accepts `--episodes N` to specify episode count.
15 
16**Outputs:** MP4 (1920x1080, H.264) + `video-manifest.json` saved to `.pawbytes/creative-suites/brands/{brand-name}/videos/`
17 
18## On Activation
19 
20Load available config from `{project-root}/.pawbytes/config/config.yaml` and `{project-root}/.pawbytes/config/config.user.yaml` (root level and `cra` section). If config is missing, let the user know `paw-cra-setup` can configure the module at any time. Resolve and apply throughout the session (defaults in parens):
21 
22- `{user_name}` (null) -- address the user by name
23- `{communication_language}` (English) -- use for all communications
24- `{document_output_language}` (English) -- use for generated document content
25- `{fal_key}` (null) -- fal.ai API key for video generation
26- `{elevenlabs_api_key}` (null) -- ElevenLabs API key for voiceover
27- `{pexels_api_key}` (null) -- Pexels API key for B-roll footage
28- `{default_brand}` (null) -- default brand name
29- `{output_directory}` (`.pawbytes/creative-suites`) -- base output path
30 
31Load shared agency memory from `{project-root}/.pawbytes/creative-suites/index.md` to understand active brands and campaigns. Load brand guidelines from `.pawbytes/creative-suites/brands/{active-brand}/guidelines.md` if an active brand is set.
32 
33### Tool Verification
34 
35Before starting production, verify availability of required tools:
36 
37| Tool | Purpose | Required |
38|------|---------|----------|
39| **ffmpeg** | Assembly, transitions, audio mixing, subtitle burn-in | Yes |
40| **egaki CLI** | AI video scene generation (multi-provider) | Yes (or fal.ai direct) |
41| **fal.ai API** | Veo 3.1, Kling v3 video generation | Yes (needs `fal_key`) |
42| **ElevenLabs API** | Voiceover generation | Yes (needs `elevenlabs_api_key`) |
43| **Pexels API** | B-roll stock footage | Recommended (needs `pexels_api_key`) |
44| **Remotion** | Programmatic video creation | Optional |
45 
46If critical tools are missing, inform the user which production capabilities are unavailable and suggest alternatives.
47 
48### Routing
49 
50If `--headless` or `-H` is passed, execute the full pipeline without interaction using provided brief/script and sensible defaults.
51 
52Otherwise, proceed interactively through the production stages below.
53 
54---
55 
56## Production Pipeline
57 
58### Stage 1: Brief Intake
59 
60Parse the incoming brief or accept one interactively. Extract:
61- **Topic/subject** -- what the video is about
62- **Duration** -- target length (1-10 minutes)
63- **Format** -- single video or episodic series (if episodic, number of episodes)
64- **Platform** -- YouTube, web embed, or both
65- **Brand** -- which brand guidelines to apply
66- **Tone/style** -- educational, narrative, promotional, documentary, etc.
67 
68If any critical information is missing (topic, duration, brand), ask before proceeding. In headless mode, infer from context or use defaults.
69 
70### Stage 2: Script Development
71 
72If a full script is provided, validate it has sufficient scene-level detail for production.
73 
74If no script is provided, invoke the Strategist (`paw-cra-agent-strategist`) for a full script with:
75- Scene-by-scene breakdown with visual direction notes
76- Voiceover narration text per scene
77- Estimated timing per scene
78- B-roll suggestions
79 
80The script is the production blueprint -- every downstream step depends on it.
81 
82### Stage 3: Scene Planning
83 
84Load `./references/scene-planning.md` for detailed guidance.
85 
86Break the script into a scene plan (typically 10-30+ scenes for long-form). For each scene, define:
87- Visual approach (AI-generated, stock footage, motion graphic, or hybrid)
88- Camera/framing direction for AI generation prompts
89- Transition type to next scene (cut, crossfade, xfade)
90- Estimated duration in seconds
91- B-roll needs (if supplementary footage is required)
92 
93Write the scene plan to `{output_directory}/brands/{brand}/videos/{video-slug}/scene-plan.json` for compaction survival.
94 
95### Stage 4: Brand Context
96 
97Load brand guidelines and extract video-relevant elements:
98- Brand colors (for overlays, lower thirds, intro/outro)
99- Logo assets and placement rules
100- Typography (for subtitles and on-screen text)
101- Voice/tone guidelines (for voiceover direction)
102- Existing intro/outro templates (if any)
103 
104### Stage 5: Scene Generation
105 
106Load `./references/scene-generation.md` for model selection and prompting guidance.
107 
108Generate video clips for each scene using the appropriate approach:
109 
110**AI-Generated Scenes:** Use egaki CLI or fal.ai API directly (Veo 3.1 for cinematic quality, Kling v3 for motion-heavy scenes). Craft prompts that include:
111- Visual description from scene plan
112- Camera movement and framing
113- Style/mood consistent with brand
114- Target aspect ratio (16:9) and duration
115 
116**Stock Footage Scenes:** Pull from Pexels API when stock footage is more appropriate (generic establishing shots, nature, cityscapes, etc.).
117 
118**Motion Graphics:** Use Remotion or ffmpeg filter chains for data visualizations, text animations, or branded graphic sequences.
119 
120Save all raw scene clips to the working directory. Track generation status per scene.
121 
122### Stage 6: Voiceover Generation
123 
124Load `./references/voiceover-generation.md` for ElevenLabs integration details.
125 
126Generate the full voiceover narration:
127- Select or confirm voice (from ElevenLabs library or cloned voice)
128- Generate audio for each scene's narration text
129- Align timing: voiceover duration should match scene durations from the plan
130- If timing mismatches occur, adjust scene durations or regenerate shorter/longer takes
131- Export as WAV or high-quality MP3
132 
133### Stage 7: B-Roll Integration
134 
135For scenes flagged as needing B-roll in the scene plan:
136- Search Pexels API with relevant keywords
137- Download clips at 1080p minimum
138- Trim to required duration using ffmpeg
139- Apply any color grading to match the video's visual style
140 
141### Stage 8: Assembly
142 
143Load `./references/assembly-guide.md` for ffmpeg commands and transition patterns.
144 
145Assemble the final video using ffmpeg:
1461. **Scene concatenation** -- join all scene clips in sequence
1472. **Transitions** -- apply crossfade/xfade between scenes per the scene plan
1483. **Audio mixing** -- layer voiceover as primary audio track; add background music at reduced volume if provided
1494. **Overlay graphics** -- apply lower thirds, brand watermarks, or on-screen text as specified
150 
151Write intermediate assembly output for checkpoint recovery.
152 
153### Stage 9: Subtitle Generation
154 
155Generate and burn in styled subtitles:
1561. Create full transcript from the voiceover script (or use speech-to-text if needed)
1572. Generate SRT file with accurate timestamps aligned to the assembled video
1583. Style subtitles using brand typography (font, size, color, background)
1594. Burn subtitles into the video using ffmpeg's `subtitles` or `ass` filter
160 
161### Stage 10: Intro/Outro
162 
163Add branded sequences:
164- **Intro:** Brand logo animation, title card, or standard intro template (3-5 seconds)
165- **Outro:** Call-to-action, subscribe prompt, credits, or standard outro template (5-10 seconds)
166 
167If the brand has existing intro/outro assets at `.pawbytes/creative-suites/brands/{brand}/assets/intro.*` or `outro.*`, use those. Otherwise, generate simple branded sequences using ffmpeg or Remotion.
168 
169### Stage 11: Validation Gate
170 
171Run `./scripts/validate-video.py` on the assembled video to verify:
172- Resolution: 1920x1080
173- Codec: H.264 (libx264)
174- Audio: AAC, stereo, normalized levels (-14 LUFS target)
175- Duration: within 10% of target duration
176- File integrity: no corruption, proper container format
177 
178If validation fails, report specific issues. In interactive mode, offer to fix automatically. In headless mode, attempt auto-fix and re-validate (up to 2 retries).
179 
180### Stage 12: Export
181 
182Save final deliverables to `{output_directory}/brands/{brand}/videos/{video-slug}/`:
183- `{video-slug}.mp4` -- final video file
184- `video-manifest.json` -- production metadata (see `./references/manifest-schema.md`)
185- `scene-plan.json` -- preserved scene plan
186- `subtitles.srt` -- subtitle file
187- `thumbnail.jpg` -- auto-generated or specified thumbnail
188 
189### Stage 13: Episodic Mode
190 
191For episodic series (`--episodes N` or format=episodic):
192- Repeat stages 2-12 for each episode
193- Maintain consistent visual style, intro/outro, and voice across episodes
194- Use sequential naming: `{series-slug}-ep01.mp4`, `{series-slug}-ep02.mp4`, etc.
195- Generate a series-level manifest linking all episodes
196 
197### Stage 14: Status Update
198 
199Log production results to shared memory:
200- Append to `.pawbytes/creative-suites/daily/YYYY-MM-DD.md` with `[VideoProducer]` tag
201- Update campaign status if this video is part of a campaign
202- Write completion summary with file paths and validation results
203 
204---
205 
206## References
207 
208| Reference | Purpose |
209|-----------|---------|
210| `./references/scene-planning.md` | Scene breakdown methodology and visual direction |
211| `./references/scene-generation.md` | AI model selection, prompting, and generation workflow |
212| `./references/voiceover-generation.md` | ElevenLabs integration and timing alignment |
213| `./references/assembly-guide.md` | ffmpeg assembly commands, transitions, audio mixing |
214| `./references/manifest-schema.md` | video-manifest.json schema definition |
215 
216## Scripts
217 
218| Script | Purpose |
219|--------|---------|
220| `./scripts/validate-video.py` | Verify codec, resolution, duration, audio levels |
221 

Discussion

Alternatives

Make a demo video with OpenScreenMake a polished video of an app or a feature with OpenScreen's MCP tools, from storyboard to recording, editing and export, then either attach it to a pull request or draft a post on X. Use when the user asks for a demo, a demo video, a screen recording, a product video, a launch clip, a video for X/Twitter, LinkedIn or a README, or to show a change in a pull request ("add a video to the PR", "show the feature to reviewers"). Also use to set OpenScreen up for an agent, and to continue an OpenScreen demo in a new session.Creator · MITFFmpeg for Video ProductionVideo and audio processing with FFmpeg. Use for format conversion, resizing, compression, audio extraction, and preparing assets for Remotion. Triggers include converting GIF to MP4, resizing video, extracting audio, compressing files, or any media transformation task.Creator · MITfake-screencast — screenshots → simulated screen recordingTurn static SCREENSHOTS into a simulated screen recording (TSX) — a fake screencast with an animated cursor that eases to targets and clicks, a browser URL bar that updates per page, hard-cut navigations, in-page filter crossfades, smooth scroll, and a ken-burns zoom onto the payoff. Use when a beat needs to show a walkthrough of a web app / dashboard / settings page and you'd rather build it from screenshots than get (or ask for) a real screen recording — "fake a screen recording", "turn these screenshots into a screencast", "simulate clicking through the dashboard", "animate this UI walkthrough", "cursor moving through the app". Built on remotion/src/lib/screencast.tsx. This is a technique WITHIN step 2 (make-tsx): defer timeline/render/bake orchestration to make-tsx and raw crash-free TSX rules to vidtsx-2d-generator. Not for a single static page clone (use WebBrowserFrame directly) and not when the point is genuine proof of real speed/output (use a real recording).Creator · MITKhan explainerUse when the user wants a Khan Academy style explainer video, a blackboard or whiteboard lesson, a hand-drawn chalk-talk animation, a short narrated video that teaches a concept ("explain X in a video", "explainer video", "teach X in 30 seconds"), or a tutorial that draws hand-written arrows, circles and captions over product screenshots ("draw over the UI", "annotated walkthrough"), or clips cut from a YouTube video or podcast where the speaker's real audio plays under a blackboard drawn to it ("khanify this video", "clip this with the Khan visual"), especially when it must be free, local, and use no paid APIs or keys. macOS only.Creator · MIT