Video caption generator skill
name: video-caption-generator
by ericosiu·MIT license·★ 3,615 Stars on the repo·GitHub ↗
npx degit ericosiu/ai-marketing-skills/video-caption-generator#main ~/.claude/skills/video-caption-generatorChecked ·commit main
Files of Video caption generator
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 |
Discussion
Alternatives
Browse more free Claude skills or everything in Content creator.