video-production
Video downloading, stitching, title slides, and YouTube descriptions. Use this skill when downloading videos from Google Drive, creating title slides, stitching multiple videos together, or generating YouTube descriptions with timestamps. Triggers on video course creation, video editing, video compilation, or YouTube upload preparation.
What this skill does
# Video Production
## Overview
Assemble course videos from individual lesson files with title slides and auto-generated timestamps for YouTube.
## Quick Decision Tree
```
What do you need?
│
├── Full course assembly (end-to-end)
│ └── references/workflow.md
│ └── Combines all scripts below
│
├── Download videos from Drive
│ └── Script: scripts/gdrive_video_download.py
│
├── Create title slides
│ └── Script: scripts/create_title_slides.py
│
├── Stitch videos together
│ └── Script: scripts/stitch_videos.py
│
└── Generate YouTube description
└── Script: scripts/generate_youtube_description.py
```
## Environment Setup
Google Drive OAuth (same as google-workspace skill).
### System Requirements
- **FFmpeg** installed and in PATH
- Python 3.9+
## Complete Workflow
```bash
# Full course assembly from Drive folder
python scripts/stitch_videos.py \
--folder "https://drive.google.com/drive/folders/xxx" \
--output "Complete Course.mp4" \
--slide-duration 3
```
## Pipeline Steps
1. **Download** - Get all videos from Drive folder
2. **Parse Titles** - Extract clean names from `[e1] Intro` format
3. **Get Metadata** - FFprobe for duration/resolution
4. **Generate Slides** - Title card for each lesson
5. **Build Concat List** - video1 → slide2 → video2 → ...
6. **Stitch with FFmpeg** - Concatenate all segments
7. **Calculate Timestamps** - Track cumulative duration
8. **Generate Description** - YouTube-ready markdown
## Outputs
| File | Description |
|------|-------------|
| `{output_name}.mp4` | Final stitched video |
| `youtube_description.md` | Timestamped description |
| `metadata.json` | Processing info |
## Performance
| Input | Time | Output Size |
|-------|------|-------------|
| 5 videos (30 min) | ~5 min | ~1.5 GB |
| 10 videos (1 hr) | ~10 min | ~3 GB |
| 20 videos (2 hr) | ~20 min | ~6 GB |
## Security Notes
### Credential Handling
- Google OAuth credentials for Drive access (see google-workspace skill)
- `mycreds.txt` and `client_secrets.json` never committed to git
- No additional API keys required for local video processing
### Data Privacy
- All video processing happens locally using FFmpeg
- No video content is uploaded to external cloud services
- Source videos downloaded from Google Drive to local `.tmp/`
- Final videos stored locally until manually uploaded
- Metadata JSON contains file names and timestamps only
### Access Scopes
- Google Drive: `drive.readonly` sufficient for downloading
- Google Drive: `drive` required for uploading final videos
- No external video processing APIs used
### Compliance Considerations
- **Local Processing**: All encoding/stitching done locally (privacy-preserving)
- **No Cloud Upload**: Videos never leave your machine during processing
- **Content Rights**: Ensure you have rights to source video content
- **Course Content**: Verify licensing for educational content distribution
- **YouTube ToS**: Generated descriptions comply with YouTube guidelines
- **Storage**: Large video files require adequate local disk space
- **Cleanup**: Remove temporary files from `.tmp/` after processing
## Troubleshooting
### Common Issues
#### Issue: FFmpeg not found
**Symptoms:** "FFmpeg not found" or "command not found: ffmpeg"
**Cause:** FFmpeg not installed or not in system PATH
**Solution:**
- Install FFmpeg: `brew install ffmpeg` (macOS) or download from ffmpeg.org
- Verify installation: `ffmpeg -version`
- Add FFmpeg to PATH if installed in non-standard location
- Restart terminal after installation
#### Issue: Codec mismatch / incompatible videos
**Symptoms:** "Non-monotonous DTS" or codec errors during stitching
**Cause:** Source videos have different codecs, resolutions, or frame rates
**Solution:**
- Re-encode all source videos to the same format before stitching
- Use FFmpeg to normalize: `ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4`
- Ensure consistent resolution (e.g., all 1920x1080)
- Match frame rates across all videos (e.g., all 30fps)
#### Issue: Audio out of sync
**Symptoms:** Audio drifts from video over time
**Cause:** Inconsistent frame rates or variable frame rate sources
**Solution:**
- Use constant frame rate for all source videos
- Re-encode with `-vsync cfr` flag
- Avoid mixing video from different sources/devices
- Check audio sample rates match across files
#### Issue: Insufficient disk space
**Symptoms:** "No space left on device" or incomplete output
**Cause:** Not enough free space for video processing
**Solution:**
- Check available disk space: `df -h`
- Clear `.tmp/` directory of old files
- Move large source videos to external drive
- Process fewer videos at once
#### Issue: Google Drive download fails
**Symptoms:** Videos fail to download from Drive folder
**Cause:** OAuth issue, permissions, or network timeout
**Solution:**
- Verify Google OAuth credentials (see google-workspace skill)
- Check folder sharing permissions
- Try downloading single file first to test
- Check for network connectivity issues
#### Issue: Title slides not generating
**Symptoms:** Missing title cards in final video
**Cause:** Font or image generation issue
**Solution:**
- Verify ImageMagick or Pillow is installed
- Check font files exist if custom fonts specified
- Review title text for special characters
- Try with default font settings first
## Resources
- **references/workflow.md** - Complete video course workflow
## Integration Patterns
### Full Course Pipeline
**Skills:** google-workspace → video-production → google-workspace
**Use case:** End-to-end course video assembly
**Flow:**
1. Download lesson videos from Google Drive folder
2. Generate title slides and stitch all videos together
3. Upload final video back to Drive and generate YouTube description
### Transcript to Timestamps
**Skills:** transcript-search → video-production
**Use case:** Generate YouTube descriptions from meeting recordings
**Flow:**
1. Search transcripts for relevant meetings
2. Extract topic timestamps from transcript
3. Generate formatted YouTube description with chapter markers
### Content to Title Slides
**Skills:** content-generation → video-production
**Use case:** Create branded title cards for videos
**Flow:**
1. Generate title slide images with content-generation
2. Export slides in video-compatible format
3. Insert title slides between video segments
Related in Image & Video
watch
IncludedWatch a video (URL or local path). Downloads with yt-dlp, extracts auto-scaled frames with ffmpeg, pulls the transcript from captions (or Whisper API fallback), and hands the result to Claude so it can answer questions about what's in the video.
physical-ai-defect-image-generation
IncludedUse when the user wants to orchestrate defect image generation, run associated setup, or handle outputs on OSMO. The Day 0 path handles cold-start with USD-to-ROI, image-edit augmentation, and AnomalyGen to create initial PCBA datasets. The Day 1 path performs inference and labeling on real images. This skill helps with first-time asset setup, creation of finetuning checkpoints, and configuring deployment. Trigger keywords: defect image generation, dig workflow, dig pipeline, defect image detection workflow, aoi pipeline, aoi anomalygen, usd2roi anomalygen, day 0 pcba, day 1 pcba, day 1 real-photo alignment, day 1 manual roi, metal surface anomaly, glass defect, anomalygen finetune, setup_pcb, setup_metal, setup_glass, setup_pretrained, dig setup, dig datasets, dig pretrained checkpoint, dig image-edit endpoint.
accelint-react-best-practices
IncludedReact performance optimization and best practices. ALWAYS use this skill when working with any React code - writing components, hooks, JSX; refactoring; optimizing re-renders, memoization, state management; reviewing for performance; fixing hydration mismatches; debugging infinite re-renders, stale closures, input focus loss, animations restarting; preventing remounting; implementing transitions, lazy initialization, effect dependencies. Even simple React tasks benefit from these patterns. Covers React 19+ (useEffectEvent, Activity, ref props). Triggers - useEffect, useState, useMemo, useCallback, memo, inline components, nested components, components inside components, re-render, performance, hydration, SSR, Next.js, useDeferredValue, combined hooks.
elevenlabs-agents
IncludedBuild conversational AI voice agents with ElevenLabs Platform using React, JavaScript, React Native, or Swift SDKs. Configure agents, tools (client/server/MCP), RAG knowledge bases, multi-voice, and Scribe real-time STT. Use when: building voice chat interfaces, implementing AI phone agents with Twilio, configuring agent workflows or tools, adding RAG knowledge bases, testing with CLI "agents as code", or troubleshooting deprecated @11labs packages, Android audio cutoff, CSP violations, dynamic variables, or WebRTC config. Keywords: ElevenLabs Agents, ElevenLabs voice agents, AI voice agents, conversational AI, @elevenlabs/react, @elevenlabs/client, @elevenlabs/react-native, @elevenlabs/elevenlabs-js, @elevenlabs/agents-cli, elevenlabs SDK, voice AI, TTS, text-to-speech, ASR, speech recognition, turn-taking model, WebRTC voice, WebSocket voice, ElevenLabs conversation, agent system prompt, agent tools, agent knowledge base, RAG voice agents, multi-voice agents, pronunciation dictionary, voice speed control, elevenlabs scribe, @11labs deprecated, Android audio cutoff, CSP violation elevenlabs, dynamic variables elevenlabs, case-sensitive tool names, webhook authentication
humanizer
IncludedHumanize AI-generated text by detecting and removing patterns typical of LLM output. Rewrites text to sound natural, specific, and human. Uses 28 pattern detectors, 560+ AI vocabulary terms across 3 tiers, and statistical analysis (burstiness, type-token ratio, readability) for comprehensive detection. Use when asked to humanize text, de-AI writing, make content sound more natural/human, review writing for AI patterns, score text for AI detection, or improve AI-generated drafts. Covers content, language, style, communication, and filler categories.
generating-mermaid-diagrams
IncludedSalesforce architecture diagrams using Mermaid with ASCII fallback. Use this skill when generating text-based diagrams for Salesforce architecture, OAuth flows, ERDs, integration sequences, or Agentforce structure. TRIGGER when: user says "diagram", "visualize", "ERD", or asks for sequence diagrams, flowcharts, class diagrams, or architecture visualizations in Mermaid. DO NOT TRIGGER when: user wants PNG/SVG image output (use generating-visual-diagrams), or asks about non-Salesforce systems.