Ollama: Riassumi Video YouTube Senza Pagare per Token

Puoi fare in modo che Ollama riassuma i video YouTube con un tubo shell: recupera la trascrizione su HTTP, estrai il testo con jq, alimentalo in un modello locale. Nessuna bolletta OpenAI, nessun dato che esce dalla tua macchina tranne il recupero della trascrizione stesso. Ecco il tubo, la matematica della finestra di contesto che lo fa funzionare, e dove fallisce.
Il one-liner
Afferra prima la chiave demo condivisa (o porta la tua — più sotto su quello):
API_KEY=$(curl -s https://youtube2text.org/api/demo-key | jq -r .apiKey)
Quindi:
curl -s "https://youtube2text.org/api/transcribe?url=https://www.youtube.com/watch?v=VIDEO_ID&maxChars=12000" \
-H "x-api-key: $API_KEY" \
| jq -r .result.content \
| ollama run llama3.1 "Summarize this video transcript in five bullet points:"
L'API restituisce {"result": {"videoId", "title", "pubDate", "content", ...}}; jq -r .result.content la riduce al testo grezzo, e Ollama aggiunge lo stdin inviato all'argomento del prompt. Trenta secondi dopo hai punti elenco e YouTube non ha mai visto una richiesta dal tuo IP — il recupero della trascrizione passa attraverso youtube2text.org, che gestisce la parte che viene bloccata quando raschi dalla tua macchina.
Perché maxChars=12000
Questo è il numero che le persone sbagliano. Ollama esegue modelli con un contesto di 4096 token per impostazione predefinita, e tutto compete per esso: il tuo prompt, la trascrizione e l'output del modello. A circa 4 caratteri per token, 12.000 caratteri di trascrizione sono ~3.000 token, lasciando spazio per il riassunto. Invia un podcast completo di 90 minuti al limite predefinito dell'API di 150.000 caratteri e Ollama tronca silenziosamente dall'inizio — il modello riassume gli ultimi dieci minuti e consapevolmente ignora il resto. Nessun errore, solo una risposta sbagliata.
Se il tuo hardware ha RAM da risparmiare, alza entrambi gli estremi insieme:
OLLAMA_CONTEXT_LENGTH=16384 ollama serve
quindi aumenta maxChars a circa 50.000. Ridimensiona i due numeri in lockstep o sei di nuovo al truncation silenzioso.
Rendilo una funzione shell
yt-summary() {
curl -s "https://youtube2text.org/api/transcribe?url=$1&maxChars=12000" \
-H "x-api-key: $API_KEY" \
| jq -r .result.content \
| ollama run llama3.1 "Summarize this video transcript in five bullet points:"
}
yt-summary "https://www.youtube.com/watch?v=VIDEO_ID"
Scambia il prompt per quello di cui hai effettivamente bisogno — "estrai ogni strumento menzionato", "elenca gli elementi d'azione", "traduci in tedesco". Stesso tubo, istruzione diversa. Per trasformare le lezioni in note strutturate c'è un flusso di lavoro più lungo in note di studio da video di lezione.
La custodia della privacy e del costo
Solo una cosa esce dalla tua macchina: la richiesta della trascrizione a youtube2text.org. Il contenuto del video, i tuoi prompt e l'output del modello rimangono locali. Per chiunque riassuma video di training interni, ricerca sulla concorrenza o contenuti che preferirebbe non inviare a un LLM cloud, è l'intera proposta. Lato costo: l'inferenza LLM è gratuita per sempre; l'unico pezzo misurato è il recupero della trascrizione.
Dove fallisce
Onesta limitazione: un modello 8B che riassume un taglio limitato di un video di un'ora perderà le cose. maxChars tronca da un budget fisso, e llama3.1 a 4k di contesto non sta facendo sintesi profonda — sta facendo compressione competente di quello che si adatta. Per il triage rapido di "vale la pena guardare questo video il mio tempo" è eccellente. Per l'estrazione a livello di ricerca su contenuti lunghi, esegui un modello più grande con una vera finestra di contesto o indicizza tutto correttamente — vedi RAG su un canale YouTube per quella strada.
Inoltre: la chiave demo è condivisa ed è limitata a 5 video al mese per IP. Esiste in modo che il one-liner sopra funzioni prima di esserti iscritto. Una volta che hai finito di calciare i pneumatici, ottieni la tua chiave — il livello gratuito è anche 5 video/mese ma è tuo, e $ 5,99 acquista 50.