HomeBlogTranscribePlansAPI Keys

Ollama: Sammanfatta YouTube-videor utan att betala för tokens

Terminalledning som rör en YouTube-transkription genom jq in i en lokal Ollama-modell

Du kan få Ollama att sammanfatta YouTube-videor med ett skalöverföring: hämta transkriptionen över HTTP, extrahera texten med jq, mata den till en lokal modell. Ingen OpenAI-räkning, ingen data som lämnar din maskin förutom själva transkriptionshämtningen. Här är röret, sammanhangsfönstersmatematiken som gör det fungerar, och där det brister.

Enrads-jargongen

Hämta den delade demo-nyckeln först (eller ta din egen — mer om det nedan):

API_KEY=$(curl -s https://youtube2text.org/api/demo-key | jq -r .apiKey)

Sedan:

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:"

API:t returnerar {"result": {"videoId", "title", "pubDate", "content", ...}}; jq -r .result.content skalpar det ned till raw text, och Ollama bifogarckså det pipade stdin till promptargumentet. Trettio sekunder senare har du punkter och YouTube såg aldrig en begäran från din IP — transkriptionshämtningen går genom youtube2text.org, som hanterar den delen som får blockerad när du skrapar från din egen maskin.

Varför maxChars=12000

Det här är numret folk får fel. Ollama kör modeller med en 4096-token kontext som standard, och allt tävlar om det: din prompt, transkriptionen och modellens utmatning. Med ungefär 4 tecken per token är 12 000 tecken transkription ~3 000 tokens, vilket lämnar andrum för sammanfattningen. Rör en full 90-minuters podcast vid API:ts standardtak på 150 000 tecken och Ollama tyst trunkerar från framsidan — modellen sammanfattar de sista tio minuterna och ignorerar medvetet resten. Inget fel, bara ett felaktigt svar.

Om din hårdvara har RAM att ersätta, höj båda ändarna tillsammans:

OLLAMA_CONTEXT_LENGTH=16384 ollama serve

sedan knöl maxChars till omkring 50000. Skala de två siffrorna i låssteget eller du är tillbaka till tyst trunkering.

Gör det en skallfunktion

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"

Byt prompten för vad du faktiskt behöver — "extrahera alla verktyg som nämns", "lista aktionsobjekten", "översätt till tyska". Samma röret, en annan instruktion. För att förvandla föreläsningar till strukturerade anteckningar finns ett längre arbetsflöde i studieanteckningar från föreläsningsvideos.

Sekretess- och kostnadsfallet

Endast en sak lämnar din maskin: transkriptionsbegäran till youtube2text.org. Videoinnehållet, dina prompter och modellens utmatning förblir lokala. För alla som sammanfattar interna träningsvideos, konkurrentforskning eller innehål de snarare inte skulle skicka till en moln-LLM är det hela tonen. Kostnadsida: LLM-slutledningen är gratis för evigt; den enda mätta biten är transkriptionshämtningen.

Där det brister

Ärlig begränsning: en 8B-modell som sammanfattar en begränsad skiva av en timslång video missar saker. maxChars trunkerar från en fast budget, och llama3.1 vid 4k kontext gör inte djup syntes — det gör kompetent komprimering av vad som passar. För snabb "är denna video värd min tid" triage är det utmärkt. För forskningstoleringad extraktion över långt innehål, antingen köra en större modell med ett verkligt sammanhangsfönsternster eller indexera allt ordentligt — se RAG över en YouTube-kanal för den vägen.

Också: demo-nyckeln är delad och begränsad till 5 videor per månad per IP. Det existerar så att enrads-jargongen ovan fungerar innan du har registrerat dig för något. När du är förbi att elda däck, få din egen nyckel — gratis nivå är också 5 videor/månad men det är ditt, och $5,99 köper 50.