Open Source
Explore the latest AI open-source projects from GitHub and HuggingFace.
Explore the latest AI open-source projects from GitHub and HuggingFace.
claude-real-video (crv on PyPI) is a local preprocessing tool that turns a video into something a text-and-image LLM can actually read: the frames that matter, deduplicated, plus a timestamped transcript and a manifest. Point it at a YouTube link or a local file, and it writes crv-out/frames/*.jpg, frames.json, transcript.txt/.json and MANIFEST.txt — then you paste that into Claude, ChatGPT or Gemini and ask questions.
The repository was created on 30 June 2026 and has reached roughly 1,951 stars and 163 forks, with the latest release (v0.7.16) on 21 July and commits through 3 August. It is MIT-licensed with 5 contributors, and reached the Hacker News front page.
Most "let an LLM watch a video" paths do something weaker than they appear to. Paste a YouTube link into ChatGPT and it reads the transcript, not the picture. Claude does not accept a video file at all. Gemini can read video natively, but it uploads the file and samples frames at a fixed interval — 1 fps by default — which over-samples a static screencast and under-samples a fast-cut reel.
crv replaces the fixed quota with scene-change detection plus a density floor, then removes near-duplicates. On a 58-second clip, 1 fps sampling yields 58 frames; crv keeps the 26 that actually differ.
| Stage | Implementation |
|---|---|
| Fetch | yt-dlp for URLs (optional cookies) or a local file copy |
| Extract | One chronological ffmpeg select pass — every scene change plus at least one frame per --fps-floor seconds |
| Dedup | Three channels compared against a sliding window of the last --dedup-window kept frames |
| Transcribe | Whisper, or faster-whisper with Silero VAD when the [fast] extra is installed |
| Output | Frames, frames.json, transcript, MANIFEST.txt, optional viewer.html and contact-sheet grids |
The dedup design is where the engineering sits. A global channel measures real pixel difference on downscaled RGB rather than a perceptual hash — the README notes hashes go blind on flat colours and equal-luma hue changes. A settled-local channel catches what the global one averages away: thin pen strokes, caption swaps and small UI updates, gated so it only fires on a settled new state rather than motion mid-flight, with 1px shift tolerance so grain and jitter do not trigger it. Because the window spans the last N kept frames rather than only the previous one, an A-B-A cutaway does not re-send a shot the model has already seen.
Version 0.7.16 added a third "action" channel after a structural blind spot surfaced in a user's 2,181-video batch run: a percentage comparator can never detect a subject covering under 1% of the frame, because it cannot change 8% of the pixels. On the synthetic repro — a 40x90 px subject moving in the last 10 of 65 frames — v0.7.15 kept 1 of 10 action frames and v0.7.16 kept all 10.
The README publishes numbers rather than claims. On a 3-minute 640x360 video on a Mac mini M4, frames and dedup only:
| Mode | Frames kept | Wall time | Est. image tokens |
|---|---|---|---|
| default | 170 | 23.5 s | ~52k |
--max-frames 80 | 80 | 23.4 s | ~25k |
--adaptive | 270 | 36.8 s | ~83k |
Token estimates use Anthropic's (width x height) / 750, about 307 tokens per frame at that resolution. Fewer frames is the whole point: context is the budget.
The tool ships in more forms than a CLI. crv-web opens a local page in Traditional Chinese, Simplified Chinese or English for people who do not want a terminal. An MCP server (crv-mcp) exposes watch_video and get_frames to Claude Desktop, Claude Code and Cursor, caching analyses under ~/.cache/crv-mcp so follow-ups are instant. It also installs as an agent skill via npx skills add, or as a Claude Code plugin through its own marketplace. There is a Python API (from claude_real_video import process).
Mode flags cover the cases where pure scene detection underperforms: --adaptive compares against a rolling neighbourhood for slow morphs and gradual pans; --text-anchors forces frames at subtitle-cue timestamps for lecture slides and screen recordings; --speakers runs a 45 MB local diarization model to label transcript lines. --why "find the pricing strategy" writes intent into the manifest so the analysis has a lens, and --kb files the result as a dated note in your own notes folder.
Processing runs on the local machine — fetch, extract, dedup and transcribe all happen there, and the source video is never uploaded. The README is careful to state the actual boundary: whatever frames or transcript text you subsequently paste into a cloud LLM does go to that provider. That is the honest framing, and it is more useful than an unqualified "private" badge.
There is a paid tier, and the README sells it. The free MIT tool lets a model see the video; crv Pro, a $29 one-time add-on sold through Capafy and Lemon Squeezy, is pitched as letting it understand the video — cut rhythm, camera moves, gestures, expressions, voice pitch, sound events. The open-source core is genuinely complete and usable, but the README is also a storefront, and the split between free and paid capability is a maintainer decision that can move.
Setup is not pip-only. ffmpeg/ffprobe must be installed separately. Transcription requires the [whisper] extra — without it there is no speech-to-text, though videos shipping their own subtitles still produce a transcript. Diarization, MCP and faster-whisper are three more extras.
Transcript quality is capped by the model you pick. The default is Whisper base. Sharper output means --whisper-model turbo, which is a one-time 1.6 GB download and roughly 6 GB of memory.
Tuning is real work. --scene, --dedup-threshold, --dedup-window, --fps-floor and --max-frames all interact. --report exists precisely because you will want to see every keep/drop decision — which is a good tool, and also an admission that defaults will not fit every video.
It is five weeks old. One primary maintainer, 5 contributors, 16 patch releases in that span. The velocity is encouraging and the v0.7.16 blind-spot fix shows the maintainer responds to real failure reports, but the interface is clearly still moving.
The insight worth taking from crv is that "multimodal" for most LLM workflows is still a preprocessing problem, not a model problem. Uniform frame sampling wastes context on redundancy and misses the moments that carry meaning; scene-aware selection with windowed dedup spends the same token budget on more information.
Anyone routinely asking an AI agent about screen recordings, lectures, demos or reels should try it — the MCP server is the lowest-friction entry point, since it turns "watch this video" into a tool call. Teams should read the free-versus-Pro boundary before building a workflow on top of it.
hacksider
Real-time AI face swap and one-click video deepfake with only a single image
harry0703
AI-powered short video generator that automates scripting, footage sourcing, subtitles, and composition — supporting 10+ LLM providers and batch production.