<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Video Analysis on KnightLi Blog</title>
        <link>https://knightli.com/en/tags/video-analysis/</link>
        <description>Recent content in Video Analysis on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Wed, 08 Jul 2026 08:15:05 +0800</lastBuildDate><atom:link href="https://knightli.com/en/tags/video-analysis/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>claude-video: Let Claude Watch Videos with /watch, Extract Frames, Transcribe, and Answer Questions</title>
        <link>https://knightli.com/en/2026/07/08/claude-video-watch-video-transcript-frames-skill/</link>
        <pubDate>Wed, 08 Jul 2026 08:15:05 +0800</pubDate>
        
        <guid>https://knightli.com/en/2026/07/08/claude-video-watch-video-transcript-frames-skill/</guid>
        <description>&lt;p&gt;Claude can read webpages, code, and documents, but it does not watch video by default. If you paste a YouTube link, it may rely on the title, page text, or captions. That is not enough when the important content is on screen: a product demo, a screen recording, a bug reproduction, an ad hook, or a code error.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bradautomates/claude-video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;bradautomates/claude-video&lt;/a&gt; adds a &lt;code&gt;/watch&lt;/code&gt; capability. You provide a video URL or a local file path, ask a question, and the tool downloads only what it needs, extracts captions, samples frames, and hands the material to Claude.&lt;/p&gt;
&lt;h2 id=&#34;what-it-is-good-for&#34;&gt;What It Is Good For
&lt;/h2&gt;&lt;p&gt;This is not just a video downloader or transcript summarizer. Its value is giving the AI both the visual frames and the spoken text.&lt;/p&gt;
&lt;p&gt;Useful cases include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;analyzing YouTube, TikTok, Loom, Vimeo, X, Instagram, and other public videos;&lt;/li&gt;
&lt;li&gt;summarizing long videos or courses;&lt;/li&gt;
&lt;li&gt;turning tutorials into notes;&lt;/li&gt;
&lt;li&gt;checking what was actually shown in a launch, ad, or competitor video;&lt;/li&gt;
&lt;li&gt;diagnosing bug reproduction recordings;&lt;/li&gt;
&lt;li&gt;asking what happened at a specific timestamp;&lt;/li&gt;
&lt;li&gt;finding UI issues, error messages, or steps in a screen recording.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/watch https://youtu.be/dQw4w9WgXcQ what happens at the &lt;span class=&#34;m&#34;&gt;30&lt;/span&gt; second mark?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Local recording:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/watch ~/Movies/screen-recording.mp4 when does the UI break?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;how-it-works&#34;&gt;How It Works
&lt;/h2&gt;&lt;h3 id=&#34;1-video-plus-question&#34;&gt;1. Video plus question
&lt;/h3&gt;&lt;p&gt;The input can be a URL or a local file. Because it uses &lt;code&gt;yt-dlp&lt;/code&gt;, it supports many sites, including YouTube, Loom, TikTok, X, Instagram, and many others. Local formats include &lt;code&gt;.mp4&lt;/code&gt;, &lt;code&gt;.mov&lt;/code&gt;, &lt;code&gt;.mkv&lt;/code&gt;, and &lt;code&gt;.webm&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;2-captions-first&#34;&gt;2. Captions first
&lt;/h3&gt;&lt;p&gt;The tool checks for native or auto-generated captions before downloading video. In &lt;code&gt;transcript&lt;/code&gt; mode, a captioned URL can return without downloading the video, which is faster and cheaper.&lt;/p&gt;
&lt;h3 id=&#34;3-frame-extraction-with-ffmpeg&#34;&gt;3. Frame extraction with ffmpeg
&lt;/h3&gt;&lt;p&gt;When the question needs visuals, it uses &lt;code&gt;ffmpeg&lt;/code&gt; to extract frames. Detail modes control the tradeoff:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;efficient&lt;/code&gt;: fast keyframe extraction;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;balanced&lt;/code&gt;: default, scene-aware frames;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;token-burner&lt;/code&gt;: more complete scene coverage;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transcript&lt;/code&gt;: transcript only, no frames.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Frames are 512px wide by default and sized for Claude Read compatibility. Increase resolution when Claude needs to read small text, slides, terminals, or code.&lt;/p&gt;
&lt;h3 id=&#34;4-whisper-fallback&#34;&gt;4. Whisper fallback
&lt;/h3&gt;&lt;p&gt;If a video has no captions, claude-video can extract audio and transcribe it with Whisper. It prefers Groq &lt;code&gt;whisper-large-v3&lt;/code&gt; and also supports OpenAI &lt;code&gt;whisper-1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Most public videos can be handled through captions for free. Whisper keys are only needed when there is no usable caption track.&lt;/p&gt;
&lt;h3 id=&#34;5-frames-and-transcript-go-to-claude&#34;&gt;5. Frames and transcript go to Claude
&lt;/h3&gt;&lt;p&gt;The tool outputs timestamped transcript text and image frame paths. Claude reads the frames and answers from what is actually visible and spoken, not just from a title or summary.&lt;/p&gt;
&lt;h2 id=&#34;why-frame-budget-matters&#34;&gt;Why Frame Budget Matters
&lt;/h2&gt;&lt;p&gt;Video analysis is expensive because every frame is an image. A 30-second clip can be scanned densely, but a 30-minute video can burn context quickly.&lt;/p&gt;
&lt;p&gt;Default frame budgets are roughly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;up to 30 seconds: about 30 frames;&lt;/li&gt;
&lt;li&gt;30 seconds to 1 minute: about 40 frames;&lt;/li&gt;
&lt;li&gt;1 to 3 minutes: about 60 frames;&lt;/li&gt;
&lt;li&gt;3 to 10 minutes: about 80 frames;&lt;/li&gt;
&lt;li&gt;over 10 minutes: about 100 frames in capped modes, with a sparse-scan warning.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you care about a specific segment, pass a time window:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/watch https://youtu.be/abc --start 2:15 --end 2:45
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;This is usually more accurate and cheaper than scanning a whole long video.&lt;/p&gt;
&lt;h2 id=&#34;deduplication-helps&#34;&gt;Deduplication Helps
&lt;/h2&gt;&lt;p&gt;Slides, screen recordings, and product demos often hold the same frame for a long time. Sending near-identical frames wastes image tokens.&lt;/p&gt;
&lt;p&gt;claude-video deduplicates frames by default. It uses &lt;code&gt;ffmpeg&lt;/code&gt; to scale frames to tiny grayscale thumbnails, compares brightness differences, and drops near-duplicates so the frame budget goes to distinct content.&lt;/p&gt;
&lt;h2 id=&#34;install&#34;&gt;Install
&lt;/h2&gt;&lt;p&gt;For Claude Code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin marketplace add bradautomates/claude-video
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;/plugin install watch@claude-video
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;For Codex, Cursor, Copilot, Gemini CLI, and other Agent Skills hosts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add bradautomates/claude-video -g
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;code&gt;-g&lt;/code&gt; installs globally for the current user. Without it, the skill is scoped to the current project.&lt;/p&gt;
&lt;h2 id=&#34;first-run&#34;&gt;First Run
&lt;/h2&gt;&lt;p&gt;On the first &lt;code&gt;/watch&lt;/code&gt;, the skill checks for &lt;code&gt;ffmpeg&lt;/code&gt;, &lt;code&gt;yt-dlp&lt;/code&gt;, and optional Whisper configuration.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;macOS can use &lt;code&gt;brew install ffmpeg yt-dlp&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Linux prints &lt;code&gt;apt&lt;/code&gt;, &lt;code&gt;dnf&lt;/code&gt;, or &lt;code&gt;pipx&lt;/code&gt; commands;&lt;/li&gt;
&lt;li&gt;Windows prints &lt;code&gt;winget&lt;/code&gt; or &lt;code&gt;pip&lt;/code&gt; commands;&lt;/li&gt;
&lt;li&gt;Whisper fallback uses &lt;code&gt;GROQ_API_KEY&lt;/code&gt; or &lt;code&gt;OPENAI_API_KEY&lt;/code&gt; in &lt;code&gt;~/.config/watch/.env&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If the video has captions, you usually do not need a Whisper key.&lt;/p&gt;
&lt;h2 id=&#34;practical-tips&#34;&gt;Practical Tips
&lt;/h2&gt;&lt;p&gt;Start with &lt;code&gt;transcript&lt;/code&gt; or &lt;code&gt;efficient&lt;/code&gt; for long videos. Use &lt;code&gt;--start&lt;/code&gt; and &lt;code&gt;--end&lt;/code&gt; when you know the relevant moment. Increase resolution only when on-screen text matters. Clean up local working files for private videos. And respect platform access rules; this is for analysis, not bypassing paywalls or copyright limits.&lt;/p&gt;
&lt;h2 id=&#34;who-should-use-it&#34;&gt;Who Should Use It
&lt;/h2&gt;&lt;p&gt;It fits people who watch many technical videos, courses, product launches, ads, competitor demos, or bug recordings. It is less useful if you only want to download videos, do not want command-line tools, need professional frame-perfect video analysis, or cannot send the video content to an AI tool.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;claude-video turns video into materials Claude can understand: captions for audio, frames for visuals, and timestamps for grounding. If video is part of your information workflow, &lt;code&gt;/watch&lt;/code&gt; can save a lot of manual scrubbing.&lt;/p&gt;
&lt;p&gt;Sources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bradautomates/claude-video&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub: bradautomates/claude-video&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://raw.githubusercontent.com/bradautomates/claude-video/main/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;README: claude-video /watch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
