---
name: video-to-skill
description: Turn a tutorial video (Instagram reel, YouTube Short, TikTok) into a reusable skill. Use when the user sends a video link or forwards a video file and asks to capture the method it teaches. Download it, read the caption, transcribe the audio, read the frames, then write a SKILL.md for the method.
---

# Video to skill

The user sends tutorial videos and wants the METHOD captured as a skill you can both reuse later. Extract the technique being taught. Do not just describe the video.

## 1. Get the video and caption

Try yt-dlp first. It handles YouTube, TikTok, X, and most other platforms:

    yt-dlp -o video.mp4 "<url>"

Instagram usually blocks direct downloads. Fall back to a scraper there, for example the Apify `instagram-scraper` actor via MCP: pass the reel URL with `resultsType: "reels"`, then download the `videoUrl` it returns. That link is a short-lived signed CDN URL, so quote it in the shell and re-run the scrape if you get a 403.

If the user forwarded the video file itself, use that file directly. Their message text is the caption. Ask for the original link only if you want it for the Source line (optional).

## 2. Transcribe the audio

Use whatever transcription you have available, in this order of preference:

1. Platform captions: `yt-dlp --write-auto-subs --skip-download "<url>"`
2. A local Whisper model (openai-whisper or faster-whisper CLI)
3. A hosted Whisper API

Empty output usually means a music-only video. That is fine. The method is probably in the on-screen text, so lean on the caption and the frames.

## 3. Read the frames

    mkdir -p frames && ffmpeg -y -i video.mp4 -vf fps=1/3 frames/f_%02d.jpg

Read 4 to 8 frames. Look for on-screen text (often the real content), steps being shown, app or UI demos, and before/after comparisons. If the transcript says "look here" or "as you can see", grab a frame at that exact moment too:

    ffmpeg -y -ss <mm:ss> -i video.mp4 -frames:v 1 frames/cue.jpg

## 4. Extract the method

Combine caption + transcript + frames into the technique being taught:

- the core claim or principle
- the concrete steps, formula, or settings
- the specific numbers, examples, and phrasings used
- when it applies, and when it does not

Quality gate: many reels are lead magnets. The caption says "comment WORD and I'll send it over" and the video itself is a teaser. If the method is visible in the video anyway, capture it. If the video teaches nothing actionable (entertainment, a meme, a pure teaser), tell the user that instead of writing a hollow skill.

## 5. Write the skill

Create `~/.claude/skills/<topic-name>/SKILL.md`. Name it after the topic (`3-second-hooks`, `pricing-psychology`), never after "video" or "reel".

Check existing skills first. If one already covers this topic, update it only if the new method is better than what is already written, and note in the file what changed and why. Never write a duplicate.

- Frontmatter: `name`, plus a `description` that states when to use it.
- Body: the actionable playbook. Steps, examples, pitfalls.
- End with a `## Source` section: video URL, creator @username, date captured.
- Save the full transcript to `references/transcript.md` in the same folder.

## 6. Confirm

Tell the user the skill name and a 2-line summary of the method captured. Delete the downloaded video and frames afterwards.

## Failure modes

- Download blocked or private account: ask the user to forward the raw video file into the chat.
- Music-only audio: the caption and frames carry the method.
- Signed CDN link expired (403): re-run the scrape for a fresh one.
