Communitygithub.com

ComeOnOliver/skillshub

Create complete videos with voiceover, music, and visuals.

What is skillshub?

skillshub is a Claude Code agent skill that create complete videos with voiceover, music, and visuals.

Works with✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/ComeOnOliver/skillshub/tree/main/skills/michaelboeding/skills/video-producer-agent

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

Video Producer

Create complete videos with voiceover, music, and visuals.

This is an orchestrator skill that combines:

  • Script/storyboard generation (Claude)
  • Voiceover synthesis (Gemini TTS)
  • Background music (Lyria)
  • Video clip generation (Veo 3.1) or image animation
  • Final assembly (FFmpeg via media-utils)

Workflow

Step 1: Gather Requirements (REQUIRED)

⚠️ DO NOT skip this step. DO NOT run init_project.py until you have ALL answers.

Use interactive questioning — ask ONE question at a time, wait for the response, then ask the next. This creates a collaborative spec-driven process.

Question Flow

⚠️ Use the AskUserQuestion tool for each question below. Do not just print questions in your response — use the tool to create interactive prompts with the options shown.

Q1: Subject

"I'll create that video! First — what's it about?

(e.g., product launch, brand story, tutorial, explainer — or describe your own)"

Wait for response.

Q2: Duration

"How long should the video be?

  • 15 seconds (quick hook)
  • 30 seconds (standard ad)
  • 60 seconds (explainer)
  • 2+ minutes (detailed)
  • Or specify your own duration"

Wait for response.

Q3: Style

"What visual style?

  • Premium/luxury
  • Fun/playful
  • Corporate/professional
  • Dramatic/cinematic
  • Minimal/clean
  • Or describe your own style"

Wait for response.

Q4: Assets

"Do you have existing images or video clips to use?

  • No, generate everything
  • Yes, I have images (provide paths)
  • Yes, I have video clips (provide paths)"

Wait for response.

Q5: Audio Strategy

"How should we handle audio?

  • Custom — I generate voiceover + background music
  • Veo native — Use Veo's built-in dialogue/SFX/ambient
  • Silent — No audio, add later"

Wait for response.

Q6: Voice (if custom audio)

"What voice tone for the voiceover?

  • Professional
  • Friendly/warm
  • Energetic
  • Calm/soothing
  • Dramatic
  • Or describe your own tone"

Wait for response.

Q7: Music (if custom audio)

"What music vibe?

  • Modern electronic
  • Cinematic/epic
  • Upbeat pop
  • Ambient/chill
  • Corporate
  • Or describe your own style"

Wait for response.

Q8: Format

"What aspect ratio?

  • 16:9 (YouTube, web)
  • 9:16 (TikTok, Reels, Shorts)
  • 1:1 (Instagram feed)"

Wait for response.

Q9: Resolution

"What resolution?

  • 720p (faster generation)
  • 1080p (standard HD)"

Wait for response.

Q10: Model

"Which Veo model?

  • veo-3.1 — Latest, highest quality (default)
  • veo-3.1-fast — Faster generation, slightly lower quality
  • veo-3 — Previous generation
  • veo-3-fast — Previous gen, faster"

Wait for response.

Quick Reference

QuestionDetermines
SubjectScene content and prompts
DurationScene count (Veo clips must be 4, 6, or 8 seconds)
StyleVisual prompts and music selection
AssetsGenerate vs use existing
Audiocustom, veo_audio, or silent
VoiceTTS voice selection
MusicLyria prompt
FormatAspect ratio for Veo
Resolution720p or 1080p output quality
Modelveo-3.1, veo-3.1-fast, veo-3, veo-3-fast

Step 2: Initialize Project

Once you have the user's answers, initialize the project with their preferences:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/init_project.py \
  --name "Product Launch Video" \
  --duration 30 \
  --aspect-ratio 16:9 \
  --audio-strategy custom \
  --scenes 5

Step 3: Configure project.json

Edit project.json with scene prompts, voiceover text, and music style based on user's answers.

Step 4: Assemble the Video

python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-producer-agent/scripts/assemble.py \
  --project ~/my_video_project/

Project Structure

When you initialize a project, this folder structure is created:

my_project/
├── project.json          # Configuration: scenes, voiceover, music, settings
├── storyboard.md         # Planning document for the video
├── scenes/               # Generated video clips from Veo
│   ├── scene1_intro.mp4
│   ├── scene2_features.mp4
│   └── scene3_cta.mp4
├── audio/                # Audio assets
│   ├── voiceover.wav     # Generated voiceover
│   ├── background_music.wav  # Generated music
│   └── final_mix.mp3     # Mixed audio track
├── work/                 # Intermediate files (auto-generated)
│   ├── silent_scene1.mp4
│   ├── video_concatenated.mp4
│   └── ...
└── output/               # Final deliverables
    └── product_launch_video_final.mp4

Scripts

init_project.py

Initialize a new video project with folder structure and templates.

# Basic project
python3 init_project.py --name "My Video" --duration 30

# Create in specific directory
python3 init_project.py --name "Demo Video" --output ~/Videos/

# Vertical video for social
python3 init_project.py --name "Instagram Reel" --aspect-ratio 9:16 --duration 15

# Use Veo's native audio (no custom voiceover/music)
python3 init_project.py --name "Cinematic Scene" --audio-strategy veo_audio

# More scenes
python3 init_project.py --name "Long Video" --duration 60 --scenes 5

Options:

OptionDefaultDescription
--namerequiredProject name
--outputcurrent dirParent directory
--duration30Target duration in seconds
--aspect-ratio16:916:9, 9:16, 1:1, 4:3
--audio-strategycustomcustom, veo_audio, silent
--scenes3Number of scene placeholders

assemble.py

Orchestrate the full video assembly pipeline.

# Full pipeline (generate everything + assemble)
python3 assemble.py --project ~/my_project/

# Skip generation (use existing scene/audio files)
python3 assemble.py --project ~/my_project/ --skip-generation

# Dry run (show what would be done)
python3 assemble.py --project ~/my_project/ --dry-run

Pipeline steps:

  1. Generate video scenes (Veo 3.1)
  2. Strip audio from scenes (if custom audio)
  3. Generate voiceover (Gemini TTS)
  4. Generate background music (Lyria)
  5. Mix voiceover + music
  6. Concatenate video clips
  7. Merge audio with video
  8. Output final video

project.json Configuration

{
  "name": "Product Launch Video",
  "duration_target": 30,
  "aspect_ratio": "16:9",
  "resolution": "720p",
  "audio_strategy": "custom",
  
  "scenes": [
    {
      "id": 1,
      "name": "scene1_hero",
      "prompt": "Cinematic slow zoom on premium product, dramatic lighting, high-end commercial style",
      "duration": 6,
      "notes": "Music only, no voiceover"
    },
    {
      "id": 2,
      "name": "scene2_features",
      "prompt": "Product features demonstration, sleek animations, modern tech aesthetic",
      "duration": 8,
      "notes": "Voiceover starts here"
    },
    {
      "id": 3,
      "name": "scene3_cta",
      "prompt": "Product with logo on clean background, call to action moment",
      "duration": 6,
      "notes": "Music swells, voiceover ends"
    }
  ],
  
  "voiceover": {
    "enabled": true,
    "text": "Introducing the future of audio. Crystal clear sound. All-day comfort. Experience the difference.",
    "voice": "Charon",
    "style": "Professional, confident, premium brand voice"
  },
  
  "music": {
    "enabled": true,
    "prompt": "modern electronic, premium, sleek, product showcase, subtle bass",
    "duration": 35,
    "bpm": 100,
    "brightness": 0.6
  },
  
  "assembly": {
    "transition": "fade",
    "transition_duration": 0.5,
    "music_volume": 0.3,
    "fade_in": 1.0,
    "fade_out": 2.0
  }
}

Audio Strategies

StrategyDescriptionUse When
customStrip Veo audio, add custom voiceover + musicMost videos
veo_audioKeep Veo's generated audio (dialogue, SFX)Cinematic scenes, dialogues
silentStrip audio, output silent videoAdding audio later

Workflow: Creating a Video

Step 1: Initialize Project

python3 init_project.py --name "Wireless Earbuds Promo" --duration 30

Step 2: Plan the Storyboard

Edit storyboard.md to plan your video structure:

## Scene 1: Hero Reveal (0-5s)
- Visual: Earbuds emerging from shadow, premium lighting
- Audio: Music only (dramatic intro)

## Scene 2: Sound Quality (5-12s)
- Visual: Sound waves, person enjoying music
- Audio: Voiceover: "Crystal clear sound. Immersive bass."

## Scene 3: Comfort (12-20s)
- Visual: Close-up of fit, person running
- Audio: Voiceover: "All-day comfort. Secure fit."

## Scene 4: CTA (20-30s)
- Visual: Product + logo
- Audio: Voiceover: "Experience the difference." + music swell

Step 3: Configure project.json

Fill in the scene prompts, voiceover text, and music style based on your storyboard.

Step 4: Assemble

python3 assemble.py --project ~/wireless_earbuds_promo/

Step 5: Review and Iterate

Check the output in output/. If adjustments needed:

# Re-run with existing scenes (just re-mix audio)
python3 assemble.py --project ~/wireless_earbuds_promo/ --skip-generation

What You Can Create

TypeExample
Product video30s hero video showcasing a product
Explainer videoHow-to or feature explanation
Promo/ad videoMarketing advertisement
Demo videoProduct demonstration
Training videoInternal training content
TestimonialCustomer quote style video
Brand videoCompany/brand story

Prerequisites

  • GOOGLE_API_KEY - For Veo (video), Gemini TTS (voice), Lyria (music)
  • FFmpeg installed: brew install ffmpeg

Video Styles & Music Pairings

StyleMusic PromptVoice
Premium/Luxury"elegant, minimal, ambient, sophisticated"Charon (informative)
Tech/Modern"electronic, futuristic, clean, innovative"Kore (firm)
Fun/Playful"upbeat, cheerful, acoustic, positive"Puck (upbeat)
Corporate"professional, inspiring, orchestral lite"Orus (firm)
Lifestyle"chill, aspirational, indie, warm"Aoede (breezy)
Dramatic/Cinematic"epic, orchestral, emotional, building"Gacrux (mature)

Common Video Structures

Product Video (30s)

0-5s:   Hero shot (music only)
5-15s:  Features (voiceover + music)
15-25s: Lifestyle/use case (voiceover + music)
25-30s: Logo + CTA (music fade)

Explainer Video (60s)

0-5s:   Hook/problem statement
5-20s:  Solution introduction
20-45s: How it works (3 steps)
45-55s: Benefits summary
55-60s: CTA

Testimonial Video (45s)

0-5s:   Intro/name card
5-35s:  Testimonial quote (multiple scenes)
35-45s: Product shot + logo

Manual Workflow (Without Scripts)

If you prefer to run each step manually:

Generate scenes:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/video-generation/scripts/veo.py \
  --batch scenes.json

Generate voiceover:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/voice-generation/scripts/gemini_tts.py \
  --text "Your voiceover text..." \
  --voice Charon \
  --style "Professional, warm"

Generate music:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/music-generation/scripts/lyria.py \
  --prompt "modern electronic, premium" \
  --duration 35

Strip audio from clips:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_strip_audio.py \
  -i scene*.mp4

Concatenate videos:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_concat.py \
  -i silent_*.mp4 --transition fade -o video.mp4

Mix audio:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/audio_mix.py \
  --voice voiceover.wav --music music.wav -o audio.mp3

Merge audio + video:

python3 ${CLAUDE_PLUGIN_ROOT}/skills/media-utils/scripts/video_audio_merge.py \
  --video video.mp4 --audio audio.mp3 -o final.mp4

Input Files You Can Provide

File TypeHow It's Used
Product imagesAnimate with Veo as first frame
Logo (PNG)Overlay on final scene
Existing voiceoverPlace in audio/voiceover.wav
Brand musicPlace in audio/background_music.wav
Video clipsPlace in scenes/ folder
Script/copyUse for voiceover text

Limitations

  • Veo video duration: Max 8 seconds per clip (concatenate for longer)
  • Veo 3.1 includes audio: All clips have generated audio (strip if using custom)
  • Processing time: Video generation takes 1-3 minutes per clip
  • Resolution: Currently 720p or 1080p (1080p for 8s only)

Error Handling

ErrorSolution
"GOOGLE_API_KEY not set"Set up API key per README
"FFmpeg not found"Install: brew install ffmpeg
"project.json not found"Run init_project.py first
Video generation timeoutRetry, or use shorter duration
Audio/video sync issuesAdjust scene durations

Example Prompts

Simple:

"Create a 30-second product video for my new coffee maker"

Detailed:

"Create a 45-second product video for our new wireless earbuds. Premium, luxury feel. I have product photos attached. Professional male voiceover. Modern electronic music. 16:9 for YouTube."

With project:

"Initialize a video project called 'App Demo' with 5 scenes, 60 seconds total, vertical format for TikTok"

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ComeOnOliver/skillshub

Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.

ComeOnOliver/skillshub

Next.js 16+ 和 Turbopack — 增量打包、文件系统缓存、开发速度,以及何时使用 Turbopack 与 webpack。

ComeOnOliver/skillshub

SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS/macOS UI best practices.

ComeOnOliver/skillshub

See, Understand, Act on video and audio. See- ingest from local files, URLs, RTSP/live feeds, or live record desktop; return realtime context and playable stream links. Understand- extract frames, build visual/semantic/temporal indexes, and search moments with timestamps and auto-clips. Act- transcode and normalize (codec, fps, resolution, aspect ratio), perform timeline edits (subtitles, text/image overlays, branding, audio overlays, dubbing, translation), generate media assets (image, audio, video), and create real time alerts for events from live streams or desktop capture.

ComeOnOliver/skillshub

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

ComeOnOliver/skillshub

Next.js 15 애플리케이션을 위한 프론트엔드 개발 가이드라인. React 19, TypeScript, Shadcn/ui, Tailwind CSS를 사용한 모던 패턴. Server Components, Client Components, App Router, 파일 구조, Shadcn/ui 컴포넌트, 성능 최적화, TypeScript 모범 사례 포함. 컴포넌트, 페이지, 기능 생성, 데이터 페칭, 스타일링, 라우팅, 프론트엔드 코드 작업 시 사용.

ComeOnOliver/skillshub

Provides Tamagui patterns for config v4, compiler optimization, styled context, and cross-platform styling. Must use when working with Tamagui projects (tamagui.config.ts, @tamagui imports).

ComeOnOliver/skillshub

Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.

ComeOnOliver/skillshub

Create high-converting, visually distinctive landing pages. Use when building marketing pages, product launches, SaaS homepages, or any single-page conversion-focused website. Guides section-by-section composition with anti-AI-slop principles.

ComeOnOliver/skillshub

Auto-loaded context for Portfolio Buddy 2 development. Use for ANY task involving: React 19 development, TypeScript, portfolio analysis features, metrics calculations, trading strategy comparison, or working with the Portfolio Buddy 2 codebase. Contains tech stack, known issues, and architectural constraints.

ComeOnOliver/skillshub

Next.js development tooling via MCP. Inspect routes, components, build info, and debug Next.js apps. Use when working on Next.js applications, debugging routing, or inspecting app structure. NOT for general React or non-Next.js projects.

ComeOnOliver/skillshub

Implement UI using Shadcn MCP (atoms/theme) and 21st.dev MCP (complex sections). Use when adding buttons, layouts, or generating landing pages.

ComeOnOliver/skillshub

A conceptual skill for building an API client in Next.js that handles JWT tokens

ComeOnOliver/skillshub

Best practices and patterns for Next.js App Router, Server Actions, and Routing in this project.

ComeOnOliver/skillshub

The Design System, Theme, and UX rules for the Physical AI Hub.

ComeOnOliver/skillshub

Comprehensive frontend development skill for building modern, performant web applications using ReactJS, NextJS, TypeScript, Tailwind CSS. Includes component scaffolding, performance optimization, bundle analysis, and UI best practices. Use when developing frontend features, optimizing performance, implementing UI/UX designs, managing state, or reviewing frontend code.

ComeOnOliver/skillshub

This document captures learnings from fixing keyboard navigation issues when floating components (Select, DropdownMenu, Popover) have CSS open/close animations.

ComeOnOliver/skillshub

Build Next.js 16 applications with correct patterns and distinctive design. Use when creating pages, layouts, dynamic routes, upgrading from Next.js 15, or implementing proxy.ts. Covers breaking changes (async params/searchParams, Turbopack, cacheComponents) and frontend aesthetics. NOT when building non-React or backend-only applications.

ComeOnOliver/skillshub

Comprehensive Framer Motion animation library for React. Covers motion components, variants, gestures, page transitions, and scroll animations. Use when adding animations to React/Next.js applications.

ComeOnOliver/skillshub

Build interfaces that resonate, not just render. This skill enforces bold, intentional

Related Skills