Video Caption Generator
Video caption generator

name: video-caption-generator
--- ## Preamble (runs on skill start) ```bash # Version check (silent if up to date) python3 telemetry/version_check.py 2>/dev/null || true # Telemetry opt-in (first run only, then remembers your choice) python3 telemetry/telemetry_init.py 2>/dev/null || true ``` > **Privacy:** This skill logs usage locally to `~/.ai-marketing-skills/analytics/`. Remote telemetry is opt-in only. No code, file paths, or repo content is ever collected. See `telemetry/README.md`. --- name: video-caption-generator description: > Transcribe short videos from a Google Drive folder, deduplicate by content,
Overview
name: video-caption-generator description: > Transcribe short videos from a Google Drive folder, deduplicate by content, and generate social captions + YouTube/Facebook titles. Use when new video clips are dropped into a Drive folder and you need transcript, caption, and title for each unique clip. Trigger phrases: "process videos in drive", "transcribe new clips", "caption these videos", "generate titles for these clips". ---
Manual install (npx, ZIP)
npx skills add ericosiu/ai-marketing-skills --skill video-caption-generator -g -a claude-codenpx degit ericosiu/ai-marketing-skills/video-caption-generator#main ~/.claude/skills/video-caption-generatorConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md2.9 KB
Read SKILL.md here
Show the full text86 lines
name: video-caption-generator description: > Transcribe short videos from a Google Drive folder, deduplicate by content, and generate social captions + YouTube/Facebook titles. Use when new video clips are dropped into a Drive folder and you need transcript, caption, and title for each unique clip. Trigger phrases: "process videos in drive", "transcribe new clips", "caption these videos", "generate titles for these clips".
Video Caption Generator
Processes new MP4s from a Google Drive folder: transcribes, deduplicates, generates captions + titles.
Drive Folder Setup
Configure your Google Drive folder IDs before first use:
| Folder | Purpose |
|---|---|
| Main / To Schedule | New clips are dropped here for processing |
| Scheduled | Already posted/scheduled clips (moved after publishing) |
| A/B | Title variants for later posting |
Set your folder IDs in folder-map.json or pass them directly via --folder-id.
Quick Run
python3 skills/video-caption-generator/scripts/process_videos.py \
--folder-id YOUR_FOLDER_ID
Processed video IDs are logged to processed_ids.json so already-seen videos are skipped on future runs.
A/B Variant Handling
Videos with identical transcripts but different filenames (e.g., 0411.mp4, 0411(1).mp4) are A/B title variants — same audio, different on-screen title. The script processes ALL variants (no dedup skipping) and tags them as A/B variants in the output.
Output Format
For each unique new clip, output:
*<filename>*
📝 *Transcript:* <raw spoken words>
🎬 *Caption:* <social-friendly 2-4 sentence caption>
📺 *YT/FB Title:* <punchy title under 60 chars>
Caption + Title Style Guide
- Caption: First person, conversational, no hashtags, 2-4 sentences. Hook first, insight second.
- Title: Curiosity-driven, under 60 chars, no "How I..." unless earned. Lead with the tension or number.
Dependencies
whisper(local installation, model: turbo)- Google Drive CLI or SDK for listing/downloading files
- Anthropic API key (set via
ANTHROPIC_API_KEYenvironment variable)
Configuration
- Set
ANTHROPIC_API_KEYin your environment - Update
GWS_GATEWAYinscripts/process_videos.pyto point to your Google Drive CLI - Update
WHISPER_BINif Whisper is installed at a different path
Adding New Folders
Pass --folder-id <ID> for different folders. Each folder uses the same shared processed_ids.json log (Drive IDs are globally unique so there's no collision).
| 1 | |
| 2 | |
| 3 | ## Preamble (runs on skill start) |
| 4 | |
| 5 | |
| 6 | # Version check (silent if up to date) |
| 7 | python3 telemetry/version_check.py 2>/dev/null || true |
| 8 | |
| 9 | # Telemetry opt-in (first run only, then remembers your choice) |
| 10 | python3 telemetry/telemetry_init.py 2>/dev/null || true |
| 11 | |
| 12 | |
| 13 | > **Privacy:** This skill logs usage locally to `~/.ai-marketing-skills/analytics/`. Remote telemetry is opt-in only. No code, file paths, or repo content is ever collected. See `telemetry/README.md`. |
| 14 | |
| 15 | |
| 16 | name: video-caption-generator |
| 17 | description: > |
| 18 | Transcribe short videos from a Google Drive folder, deduplicate by content, |
| 19 | and generate social captions + YouTube/Facebook titles. Use when new video |
| 20 | clips are dropped into a Drive folder and you need transcript, caption, and |
| 21 | title for each unique clip. |
| 22 | Trigger phrases: "process videos in drive", "transcribe new clips", |
| 23 | "caption these videos", "generate titles for these clips". |
| 24 | |
| 25 | |
| 26 | # Video Caption Generator |
| 27 | |
| 28 | Processes new MP4s from a Google Drive folder: transcribes, deduplicates, generates captions + titles. |
| 29 | |
| 30 | ## Drive Folder Setup |
| 31 | |
| 32 | Configure your Google Drive folder IDs before first use: |
| 33 | |
| 34 | | Folder | Purpose | |
| 35 | |--------|---------| |
| 36 | | Main / To Schedule | New clips are dropped here for processing | |
| 37 | | Scheduled | Already posted/scheduled clips (moved after publishing) | |
| 38 | | A/B | Title variants for later posting | |
| 39 | |
| 40 | Set your folder IDs in `folder-map.json` or pass them directly via `--folder-id`. |
| 41 | |
| 42 | ## Quick Run |
| 43 | |
| 44 | |
| 45 | python3 skills/video-caption-generator/scripts/process_videos.py \ |
| 46 | --folder-id YOUR_FOLDER_ID |
| 47 | |
| 48 | |
| 49 | Processed video IDs are logged to `processed_ids.json` so already-seen videos are skipped on future runs. |
| 50 | |
| 51 | ## A/B Variant Handling |
| 52 | |
| 53 | Videos with identical transcripts but different filenames (e.g., `0411.mp4`, `0411(1).mp4`) are A/B title variants — same audio, different on-screen title. The script processes ALL variants (no dedup skipping) and tags them as A/B variants in the output. |
| 54 | |
| 55 | ## Output Format |
| 56 | |
| 57 | For each unique new clip, output: |
| 58 | |
| 59 | |
| 60 | *<filename>* |
| 61 | 📝 *Transcript:* <raw spoken words> |
| 62 | 🎬 *Caption:* <social-friendly 2-4 sentence caption> |
| 63 | 📺 *YT/FB Title:* <punchy title under 60 chars> |
| 64 | |
| 65 | |
| 66 | ## Caption + Title Style Guide |
| 67 | |
| 68 | **Caption:** First person, conversational, no hashtags, 2-4 sentences. Hook first, insight second. |
| 69 | **Title:** Curiosity-driven, under 60 chars, no "How I..." unless earned. Lead with the tension or number. |
| 70 | |
| 71 | ## Dependencies |
| 72 | |
| 73 | `whisper` (local installation, model: turbo) |
| 74 | Google Drive CLI or SDK for listing/downloading files |
| 75 | Anthropic API key (set via `ANTHROPIC_API_KEY` environment variable) |
| 76 | |
| 77 | ## Configuration |
| 78 | |
| 79 | Set `ANTHROPIC_API_KEY` in your environment |
| 80 | Update `GWS_GATEWAY` in `scripts/process_videos.py` to point to your Google Drive CLI |
| 81 | Update `WHISPER_BIN` if Whisper is installed at a different path |
| 82 | |
| 83 | ## Adding New Folders |
| 84 | |
| 85 | Pass `--folder-id <ID>` for different folders. Each folder uses the same shared `processed_ids.json` log (Drive IDs are globally unique so there's no collision). |
| 86 |
Details
- License
- MIT
- Stars on the repo
- ★ 3,615
- Checked
- Source
- ericosiu/ai-marketing-skills ↗
- Creator
- ericosiu · 34 listings
Similar skills
See all →
SkillAI LinkedIn Carousel Builder
SkillLinkedIn Carousel Builder
SkillIG Caption Writer
SkillIG Carousel Planner
SkillSocial Campaign Analyzer
SkillLinkedIn Post Performance ScorerMore from ericosiu
SkillVideo Moment Extraction Agent
SkillConversion Operations
SkillFinance Operations
SkillRevenue Intelligence Dashboard
SkillSales Pipeline Manager
SkillValue-Based Sales Playbook