Video caption generator skill

name: video-caption-generator

by ericosiu·MIT license·★ 3,615 Stars on the repo·GitHub ↗

Use now

Files of Video caption generator

ericosiu/main1 file shown
SKILL.md
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_KEY environment variable)

Configuration

  1. Set ANTHROPIC_API_KEY in your environment
  2. Update GWS_GATEWAY in scripts/process_videos.py to point to your Google Drive CLI
  3. Update WHISPER_BIN if 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```bash
6# Version check (silent if up to date)
7python3 telemetry/version_check.py 2>/dev/null || true
8 
9# Telemetry opt-in (first run only, then remembers your choice)
10python3 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---
16name: video-caption-generator
17description: >
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 
28Processes new MP4s from a Google Drive folder: transcribes, deduplicates, generates captions + titles.
29 
30## Drive Folder Setup
31 
32Configure 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 
40Set your folder IDs in `folder-map.json` or pass them directly via `--folder-id`.
41 
42## Quick Run
43 
44```bash
45python3 skills/video-caption-generator/scripts/process_videos.py \
46 --folder-id YOUR_FOLDER_ID
47```
48 
49Processed video IDs are logged to `processed_ids.json` so already-seen videos are skipped on future runs.
50 
51## A/B Variant Handling
52 
53Videos 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 
57For 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 
791. Set `ANTHROPIC_API_KEY` in your environment
802. Update `GWS_GATEWAY` in `scripts/process_videos.py` to point to your Google Drive CLI
813. Update `WHISPER_BIN` if Whisper is installed at a different path
82 
83## Adding New Folders
84 
85Pass `--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

Gemini carouselGenerate a branded slide-by-slide LinkedIn carousel using Gemini. Takes source content, builds a design brief, waits for approval, then outputs per-slide image generation prompts. 1080x1350 vertical format. Use this skill whenever the user says "carousel", "build a carousel", "turn this into a carousel", "gemini carousel", or wants multi-slide LinkedIn content. Always includes an approval gate between brief and image generation.Creator · MITInstagram Caption WriterDraft an Instagram caption with the hook in the first 125 characters, a skimmable body, and one clear CTA, using a 2026 hook formula chosen by goal (saves, shares, comments, follows). Runs the humanizer pass and, on approval, publishes with the image or video you supply via the Publora media flow. Use to caption a single image or a Reel. Not for slide-by-slide carousels (use ig-carousel-planner) or auditing a draft (use ig-humanizer --mode audit).Creator · MITInstagram Carousel PlannerPlan an Instagram carousel slide by slide, up to 10 slides, with a hook slide that opens a loop, value slides that front-load the payoff, and a payoff slide that earns the save and follow. Picks a 2026 carousel formula (listicle, before/after, myth-buster, framework) by goal (saves, shares, follows), drafts each slide's text plus the caption, then publishes the images you supply via Publora. Use to structure a multi-slide carousel. Not for single-image captions (use ig-caption-writer).Creator · MITSocial media analyzerSocial media campaign analysis and performance tracking. Calculates engagement rates, ROI, and benchmarks across platforms. Use when analyzing social media performance, calculating engagement rate, measuring campaign ROI, comparing platform metrics, or benchmarking against industry standards. Also use when the user mentions "social media audit," "engagement rate," or "which platform performs best. · MIT