← leoaido.com GitHub ★ 1.2k+
free · open source · runs locally

How to make ChatGPT actually watch a video

Spoiler: ChatGPT can't watch videos. Paste a YouTube link and it reads the transcript — not one frame of the picture. Here's the 2-command fix.

Why "ChatGPT, watch this video" doesn't work

Paste a YouTube link into ChatGPT and it fetches text: the title, the description, the captions. It has not seen a single frame. Ask it "what's on screen at 0:42?" and it will guess from the words — confidently, and often wrongly.

Upload a video file directly and you hit the same wall: ChatGPT doesn't ingest video. Claude won't take a video file at all. Even Gemini, which can read video natively, sends your file to Google and samples frames at a fixed interval (1 fps by default), so fast cuts slip past between samples.

The fix isn't a bigger model. It's giving the model what it can already read: the frames that matter, plus the transcript.

The fix: turn the video into something ChatGPT reads natively

claude-real-video (short name: crv) is a free, MIT-licensed command-line tool with 1.2k+ GitHub stars. Point it at a URL or a local file and it:

All processing runs on your own machine — the source video never gets uploaded. Only what you later paste into ChatGPT goes to OpenAI.

Step by step (2 commands)

1. Install

# macOS (Windows: winget install Gyan.FFmpeg / Linux: apt install ffmpeg)
brew install ffmpeg
pip install "claude-real-video[whisper]"

2. Run it on any video

# YouTube, Instagram, TikTok links or a local file all work
crv "https://www.youtube.com/watch?v=..."
→ crv-out/frames/*.jpg  +  transcript.txt  +  MANIFEST.txt

3. Feed it to ChatGPT

Open a new ChatGPT conversation, drag in the frames (or the 3x3 contact sheets — see below) together with transcript.txt, and prompt:

These are the keyframes and transcript extracted from a video.
1. Summarize what the video is about
2. Outline its structure
3. Tell me what happens visually that the transcript doesn't mention

From here, ask anything — it's now answering from the actual picture, not a text summary of one.

Tip: use --grid to send 9x fewer images

crv "https://youtu.be/..." --grid --why "explain the editing structure"

--grid tiles consecutive keyframes into 3x3 contact sheets, so ChatGPT reads a sequence instead of scattered stills — and you attach far fewer images. --why writes your question into the manifest so the analysis focuses on what you care about.

Why not just screenshot every second?

fixed-interval samplingclaude-real-video
Frame selectionevery N secondsscene-change detection + density floor
Static slide (10 min)~600 near-identical framescollapses to 1
Fast-cut reelmisses frames between samplescatches each visual change
Repeated shots (A-B-A cuts)sent again every timeeach shot sent once
Where processing happensoften someone's cloudyour machine

FAQ

Can ChatGPT watch a video?

Not directly. It reads a YouTube link's transcript and metadata — text, not pixels. Extract keyframes + transcript with crv and it can genuinely analyze the visuals.

Does my video get uploaded?

No. crv runs entirely on your machine. Only the frames or text you choose to paste into ChatGPT afterwards go to that provider.

Does this work with Claude and Gemini too?

Yes — the output is plain images and text, which every major LLM reads. See the companion guide on Claude video analysis.

What about camera moves and pacing?

Keyframes tell a model what's on screen, not how it moves. For camera-move classification, cuts-per-minute rhythm, and a timestamped gesture/emotion timeline, that's the paid add-on crv Pro ($19 one-time).

Related guides

Give ChatGPT real eyes.

Free and open source. Two commands.

Get it on GitHub See crv Pro
Built by Leo Huang · claude-real-video is MIT-licensed open source · Pro version: crv Pro