Video Caption Generator — a skill by Eric Siu.
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
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".
Processes new MP4s from a Google Drive folder: transcribes, deduplicates, generates captions + titles.
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.
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.
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.
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>
whisper (local installation, model: turbo)ANTHROPIC_API_KEY environment variable)ANTHROPIC_API_KEY in your environmentGWS_GATEWAY in scripts/process_videos.py to point to your Google Drive CLIWHISPER_BIN if Whisper is installed at a different pathPass --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).