Video Transcripts
Transcribe a supplied local or linked video with Gemini and check the transcript...
Install
npx skills add udecode/dotai --skill video-transcripts -g -a claude-code -y- Repository
- udecode/dotai1.2k
- Category
- Git and review
- Updated
- 3d ago
- License
- See repository
- Context cost
- Mediumabout 2,225 tokens
- Runs scripts
- Yes, review before use
What it does
Transcribe a supplied local or linked video with Gemini and check the transcript against one frame per second, when a recording's contents are needed as evidence, such as a bug recording on an issue, PR or comment, or a question about what a video shows.
Video Transcripts
Quick Start
Run the helper once per relevant video. <skill> is this skill's directory:
bash <skill>/scripts/generate_video_transcript.sh \
"https://uploads.linear.app/.../screen-recording.mov" \
--title "PDF preview hyperlinks trigger leave-page modal"
Or for a GitHub attachment:
bash <skill>/scripts/generate_video_transcript.sh \
"https://github.com/user-attachments/assets/..." \
--title "Slash menu loses selection after confirm"
Or for a Screencastify watch page:
bash <skill>/scripts/generate_video_transcript.sh \
"https://app.screencastify.com/watch/..." \
--title "Bulk send expands filtered recipients"
Or for a local file:
bash <skill>/scripts/generate_video_transcript.sh \
"/absolute/path/to/video.mov" \
--title "Preview hyperlink exits workflow"
For auth-gated Linear uploads, the helper automatically retries with cookies from the local Linear desktop app on macOS. For private GitHub asset URLs, it retries with GITHUB_TOKEN, GH_TOKEN, or gh auth token when available.
The helper also cuts the video into one frame per second and prints Frames: <dir> on stderr. <dir>/frames/tSSSS.png is the frame at second SSSS, so [01:12] is t0072.png, and each <dir>/sheet-SSSS-SSSS.png shows the nine seconds its name spans in one image. Pass --frames <dir> to choose the directory. For a local video without Gemini, run bash <skill>/scripts/video_frames.sh <video> --output <dir>.
The transcript is a draft until Workflow step 3 checks it against the frames.
Use This When
- A GitHub or Linear issue, PR, or comment includes a screen recording.
- An attachment URL points to
uploads.linear.app. - An attachment URL points to a GitHub attachment or private GitHub asset host.
- A tracker links to a public Screencastify watch page.
- You need timeline-style transcript lines, not a vague summary.
- You want the result in this exact XML shape:

