Communitygithub.com

nio74/nio-video-extractor

Local, free video content extractor — an Agent Skill for Claude Code. Whisper transcription (GPU/CPU auto) + ffmpeg frame extraction + Markdown synthesis. Cross-platform, no API keys.

Was ist nio-video-extractor?

nio-video-extractor is a Claude Code agent skill that local, free video content extractor — an Agent Skill for Claude Code. Whisper transcription (GPU/CPU auto) + ffmpeg frame extraction + Markdown synthesis. Cross-platform, no API keys.

Funktioniert mitClaude Code~Codex CLI~Cursor
npx skills add nio74/nio-video-extractor

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht nio-video-extractor?

Pipeline locale per trasformare uno o piu' video in testo + frame chiave + sintesi. Il "capire il video" lo fa il modello leggendo le trascrizioni e i fotogrammi come immagini — gli script servono solo a preparare quel materiale. Nessun servizio esterno.

Gli script stanno nella cartella scripts/ di questa skill. Nei comandi qui sotto, SKILL_DIR = la cartella di questa skill (es. ~/.claude/skills/nio-video-extractor).

Requisiti

  • ffmpeg + ffprobe (Windows: winget install Gyan.FFmpeg · macOS: brew install ffmpeg · Linux: apt install ffmpeg)
  • Python 3.9+ con faster-whisper (pip install faster-whisper)
  • yt-dlp solo per gli URL (pip install --upgrade yt-dlp). Per i file locali non serve.
  • GPU opzionale (NVIDIA): pip install nvidia-cublas-cu12 nvidia-cudnn-cu12 → trascrizione ~10x piu' veloce. Senza GPU funziona su CPU (piu' lento; valuta --model small o medium).

Workflow

1. Controlla l'ambiente

python "SKILL_DIR/scripts/setup_check.py"

Se manca qualcosa, mostra all'utente i comandi di installazione e fermati finche' non e' risolto.

2. Estrai audio→testo e i frame

Passa quello che ha dato l'utente: file, cartella oppure URL (anche misti, anche piu' di uno).

python "SKILL_DIR/scripts/scrub.py" "<video-o-cartella-o-URL>" [altri...]

Con un URL il video viene scaricato in <outdir>/source/ e poi trattato come un file locale qualunque: da li' in poi il flusso e' identico. Rilanciare lo stesso link non riscarica nulla.

Con soli URL non esiste una cartella di partenza, quindi l'output finisce in _scrub dentro la directory corrente. Se vuoi che stia altrove passa --outdir, e falla sempre esplicita quando lavori per un progetto specifico.

Opzioni utili: --lang it (o auto), --model large-v3|medium|small, --grid-interval 12, --no-frames, --no-transcribe, --cpu, --keep-audio, --outdir, --download-dir (dove finiscono i video scaricati), --no-subs. Output creato in <cartella>/_scrub/: transcripts/*.txt e *.srt, frames/<id>/grid_*.jpg, manifest.txt.

3. Leggi le trascrizioni

Leggi i file transcripts/*.txt. Riassumi la sostanza; se il parlato e' colloquiale o volgare, estrai solo il contenuto utile riscritto in forma pulita.

4. Individua i momenti visivi chiave

Leggi le griglie frames/<id>/grid_*.jpg (contact-sheet, 1 frame ogni 12 s, 4x4). Trova le schermate importanti (grafici, diagrammi, slide). Mappa griglia→tempo: per grid_00G.jpg (G da 0) e la cella C (0..15, per righe): secondi = (G*16 + C) * intervallo (intervallo = 12 di default).

5. Estrai i frame chiave in alta risoluzione

Per ogni schermata utile, al timestamp calcolato:

python "SKILL_DIR/scripts/keyframe.py" "<video>" <secondi> "<cartella>/_scrub/frames/key/<nome>.jpg"

Poi rileggi i frame estratti per verificarne il contenuto e scegliere i migliori.

6. Scrivi la sintesi

Crea <cartella>/_scrub/SINTESI.md: sintesi per video + i frame chiave incorporati (![descrizione](frames/key/<nome>.jpg)), un indice video con durate, e riferimenti alle trascrizioni.

Note

  • Privacy/costi: tutto in locale, nessun upload, nessuna API key.
  • Copyright: se i video sono di un corso/opera altrui, il materiale estratto (testo, frame, sintesi) e' per studio personale — non pubblicarlo/redistribuirlo senza permesso.
  • Sorgenti iPad/full-range: gli script gestiscono gia' il caso YUV full-range (format=yuvj420p).
  • URL supportati via yt-dlp: si scarica al massimo 1080p, che per leggere le interfacce nei tutorial e' abbondante e va molto piu' veloce. Un link = un video: le playlist non vengono seguite.
  • Sottotitoli: per gli URL vengono salvati anche i sottotitoli disponibili (inclusi gli automatici) accanto al video. NON sostituiscono la trascrizione Whisper, che resta la fonte usata dalla pipeline: sono una rete di sicurezza quando Whisper e' lento perche' gira su CPU. Disattivabili con --no-subs.

Verwandte Skills