Steg-för-steg: Bygg en YouTube-forskningsagent med Claude Code
Om du någonsin har spenderat en eftermiddag med att gräva ner dig i YouTube, bara för att glömma vilka videor som var värda att spara, är du inte ensam. Föreställ dig nu en outtröttlig assistent som snabbt kan hitta de bästa videorna, extrahera sammanfattningar, plocka ut viktiga citat, tidsstämpla insikter och returnera källor på begäran. Det är precis vad en YouTube-forskningsagent kan göra. I denna steg-för-steg-guide kommer vi att bygga en praktisk YouTube-forskningsagent med Claude Code, designad för kreatörer, analytiker, studenter och besatta elever som vill ha signal över brus.
Vi kommer att ta en praktisk och direkt väg: arkitektur, kod, prompter och skyddsräcken. Längs vägen kommer vi att göra åsiktsfulla val som du kan byta ut senare. I slutet kommer du att ha en fungerande agent som kan söka på YouTube, samla in transkriptioner, resonera över flera videor och producera rena forskningsrapporter.
Vad vi bygger (och varför det är viktigt)
- Mål: En YouTube-forskningsagent som kan:
- Söka på YouTube efter sökfråga
- Ranka resultat efter relevans/engagemang
- Hämta transkriptioner (automatiska undertexter eller från tredje part)
- Dela upp och bädda in innehåll för hämtning
- Använda Claude Code för att syntetisera insikter från flera videor
- Mata ut strukturerade anteckningar: sammanfattning, påståenden, tidsstämplar, citat och källhänvisningar
- Primärt nyckelord: "Building a YouTube research agent with Claude Code"
- Format: Steg-för-steg-handledning med körbar kod och prompter
- Utdata: Markdown-forskningsrapport + JSON för programmatisk användning
Varför det är viktigt: YouTube är den största offentliga kunskapsbasen med samtal, lektioner, demonstrationer och debatter. Men det är brusigt. Att bygga en YouTube-forskningsagent med Claude Code ger dig en fördel: du kan aggregera insikter från dussintals videor på några minuter, inte timmar.
Arkitektur i korthet
Vi kommer att hålla den första versionen enkel och robust.
- Indata: en forskningsfråga (t.ex. "LLM agent architectures 2025"), valfria begränsningar (datumintervall, kanal, varaktighet)
- YouTube Search: YouTube Data API v3 (eller SerpAPI fallback)
- Transkriptioner: YouTube Transcript API; fallback till ASR (t.ex. Whisper) när det inte är tillgängligt
- Chunking: Meningsmedveten segmentering (ungefär 800–1 200 tokens)
- Inbäddningar: Använd en lokal eller hostad inbäddningsmodell (t.ex.
text-embedding-3-large, nomic-embed-text, eller bge-large)
- Vektorlagring: Lokal
FAISS för snabbhet; kan bytas ut till Pinecone, Weaviate eller Qdrant
- Resonemang: Claude Code för orkestrering, verktygsanvändning, syntes och kodexekvering inuti en kontrollerad loop
- Utdata: Markdown-rapport + JSON-index med källhänvisningar, tidsstämplar och poäng
Dataflöde: Fråga → Sök → Hämta metadata → Transkription → Chunk → Bädda in → Hämta top‑K → Claude Code-syntes → Rapport.
Förutsättningar och inställning
- API-nycklar:
YOUTUBE_API_KEY, ANTHROPIC_API_KEY (för Claude Code)
- Valfritt:
OPENAI_API_KEY eller lokala inbäddningar
google-api-python-client, youtube-transcript-api
faiss-cpu, numpy, pandas, tiktoken (eller sentencepiece)
requests, pydantic, tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
Miljövariabler:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
Steg 1: YouTube-sökning med filter
Vi kommer att söka på YouTube och returnera strukturerad metadata: titel, kanal, publiceringsdatum, varaktighet, visningar (om tillgängligt) och videoId.
# file: yt_search.py
from googleapiclient.discovery import build
import os
YOUTUBE_API_KEY = os.environ — channel, date\n\n"
"---\n"
"JSON schema: {\"claims\":[{\"claim\":str,\"support\":[{\"video_id\":str,\"start\":float,\"end\":float}]}]}\n"
)
def call_claude(goal: str, passages: list[dict]):
passages_str = "\n\n".join(
f"[rank {p['rank']} | score {p['score']:.3f}] (vID={p.get('video_id','?')}, {p.get('start',0):.1f}-{p.get('end',0):.1f})\n{p['text']}"
for p in passages
)
msg = client.messages.create(
model="claude-3-5-sonnet-20240620",
max_tokens=1800,
temperature=0.2,
system=SYSTEM_PROMPT,
messages=[
{"role": "user", "content": USER_TEMPLATE.format(goal=goal, passages=passages_str)}
])
return msg.content[0].text
Promptstips när du bygger en YouTube-forskningsagent med Claude Code:
- Be om strukturerade utdata i både läsbara och maskinläsbara format
- Tvinga fram tidsstämplade källhänvisningar
- Uppmuntra osäkerhetsredovisningar och motsägelser
Steg 6: Sätta ihop allt
Låt oss koppla ihop fråga → sök → transkriptioner → chunks → inbäddningar → hämta → syntetisera.
# file: run_agent.py
from yt_search import search_youtube
from transcripts import fetch_transcript
from chunking import transcript_to_docs
from embeddings import VectorStore
from orchestrator import call_claude
from datetime import datetime
def build_corpus(query: str, max_videos=8):
results = search_youtube(query, max_results=max_videos)
corpus_docs = []
for r in results:
tx = fetch_transcript(r["video_id"]) or []
if not tx:
continue
docs = transcript_to_docs(tx)
for d in docs:
d.update({
"video_id": r["video_id"]
"title": r["title"]
"channel": r["channel"]
"url": r["url"]
})
corpus_docs.extend(docs)
return corpus_docs
def research(query: str, k=12):
corpus = build_corpus(query)
if not corpus:
return "No transcripts available."
vs = VectorStore
vs.add(corpus)
passages = vs.search(query, k=k)
md = call_claude(query, passages)
timestamp = datetime.utcnow.isoformat
return f"<!-- generated {timestamp} UTC -->\n\n" + md
if __name__ == "__main__":
print(research("LLM agents for YouTube research"))
Denna basversion av en YouTube-forskningsagent med Claude Code kommer att söka, hämta och syntetisera insikter från flera videor med källhänvisningar. Uppgradera inbäddningarna och lägg till cachning för att göra den produktionsklar.
Sju uppgraderingar för att göra den fantastisk
- Bättre inbäddningar och hybridsökning
- Byt ut till högkvalitativa inbäddningar och lägg till BM25-nyckelordssökning. Hybrid ger mer återkallelse på nischtermer och bättre precision på abstrakta ämnen.
- Utöka verktyg för rikare metadata
- Hämta kommentarer, likes/dislikes-förhållande och kanalauktoritet. Lägg till en omrankare (cross-encoder) för de 100 bästa kandidaterna.
- Forskningsplanering i flera steg
- Använd Claude Code för att föreslå en forskningsplan: delfrågor, hypoteser och täckningskontroller. Kör iterativt tills täckningströsklarna är uppfyllda.
- Bevisspårning och motbevis
- För varje påstående, logga stödjande och motsägande utdrag. Presentera båda i rapporter; lägg till konfidenspoäng.
- Strategier för långa videor
- Använd scendetektion via undertexter eller Whisper-ordtider. Sammanfatta per sektion före global syntes för att undvika kontextutspädning.
- Lagra transkriptioner, inbäddningar och rapporter per fråga. Återanvänd när användare justerar filter. Lägg till deduplicering efter video-ID.
- Exportformat och leverans
- Exportera Markdown, PDF och JSON. E-post eller Slack-leverans. Rendera tidsstämplar som klickbara
?t=mmss-länkar.
Prompter du kan återanvända
Använd dessa mallar när du bygger en YouTube-forskningsagent med Claude Code.
System: Du är en noggrann forskningsagent. Syntetisera över flera YouTube-transkriptioner. Citera inline med [vID @ mm:ss] och inkludera en Källor-sektion med URL:er. Returnera både en Markdown-rapport och en JSON-payload av påståenden med tidsstämplat stöd.
User: Research goal: {topic}
Constraints: focus on {audience or scope}; prefer sources within {date range}; include disagreements.
Candidate passages (ranked):
{retrieved_passages}
Output: Summary → Key Insights (bullets) → Notable Quotes (with timestamps) → Contradictions & Gaps → Sources. Then JSON {"claims": ...}
Skyddsräcken och etik
- Respektera skaparättigheter: Länka till de ursprungliga videorna och undvik att publicera stora ordagranna transkriptioner.
- Var transparent: Visa var påståenden kommer från med hjälp av tidsstämplar och video-ID:n.
- Undvik över-sammanfattning: Bevara nyanser; flagga när bildtexter är automatiskt genererade och sannolikt brusiga.
- Hantera känsliga ämnen försiktigt: Uppmärksamma osäkerhet och sök olika källor.
Felsökning: Vanliga problem och lösningar
- "Ingen transkription hittades"
- Fallback till Whisper; prova olika språk; kontrollera om videon är regionsblockerad.
- Uppgradera inbäddningar; lägg till BM25; öka chunk-överlappningen; parameterjustera top‑K.
- Hallucinerade källhänvisningar
- Tvinga fram strikt källhänvisningsschema; straffa icke-stödda påståenden; kräva exakta tidsstämplar som finns i hämtade chunks.
- Cache aggressivt; minska
max_results; batch-förfrågningar; lägg till back‑off med tenacity.
- Sammanfatta per sektion; begränsa max tokens; använd planeringsprompter med explicit disposition.
Mäta kvalitet
- Precision@K av hämtade chunks vs. en märkt uppsättning
- Trovärdighet: andel påståenden med verifierbart tidsstämplat stöd
- Täckning: antal unika relevanta videor som citeras
- Latens: tid från fråga till rapport
Exempel: Forska om "Vector Databases Explained"
- Fråga: "vector databases explained for developers 2025"
- Filter: videor efter 2023, varaktighet 6–30 minuter
- Resultat: Agent citerar 6 videor, lyfter fram avvägningar mellan HNSW vs. IVF‑PQ, diskuterar kostnad/återkallelse och länkar till benchmarks. Motsägelser-sektionen jämför leverantörspåståenden vs. resultat med öppen källkod.
Förresten: Automatisera detta inom ditt arbetsflöde
Om du arbetar med dokument och kod är det värt att automatisera den sista biten. En liten CLI kan köra nattliga frågor och släppa Markdown-rapporter i din kunskapsbas. Du kan också koppla in den i ärendemallar för sprintforskning.
Värt att notera: om ditt arbetsflöde redan finns i en webbläsar-sidopanel eller AI-assistent, kan verktyg som Sider.AI effektivisera forskningsloopen – välj ett ämne, kör en sökning, fånga transkriptioner och utarbeta en Claude‑driven sammanfattning direkt där du arbetar. Detta kan spara kontextväxling och göra att bygga en YouTube-forskningsagent med Claude Code ännu mer praktiskt för team. Viktiga slutsatser
- Att bygga en YouTube-forskningsagent med Claude Code är ett sätt med hög hävstångseffekt för att omvandla videor till handlingsbara rapporter.
- Den minimala stacken: YouTube API + transkriptioner + chunking + inbäddningar + FAISS + Claude-syntes.
- Uppgraderingsvägar: hybridsökning, omrankning, planeringsloopar och strikt spårning av källhänvisningar.
- Börja enkelt, mät trovärdighet och iterera mot tillförlitlighet.
Nästa steg
- Implementera en riktig inbäddningsmodell och hybridhämtning
- Lägg till ett omrankningssteg och kvalitetsmått
- Skapa ett schemalagt jobb för att uppdatera ämnen varje vecka
- Paketera som en CLI och ett lätt webbgränssnitt
FAQ
Q1:How do I start building a YouTube research agent with Claude Code?
Begin with YouTube search, fetch transcripts, chunk content, embed into a vector store, and use Claude Code to synthesize results. The guide above provides step-by-step code to assemble a working pipeline.
Q2:What libraries are best for a YouTube research agent?
Use the YouTube Data API for search, youtube-transcript-api for captions, FAISS for vector search, and the Anthropic SDK to call Claude Code. You can swap embeddings with OpenAI, Nomic, or BGE.
Q3:How do I ensure accurate citations and timestamps?
Keep start/end timestamps during chunking and require Claude Code to cite [video_id @ mm:ss]. Validate that cited timestamps exist in retrieved chunks before publishing.
Q4:Can I use this agent for private or unlisted videos?
Yes, if you have access and can fetch transcripts or run local ASR (e.g., Whisper). Always respect permissions and avoid distributing copyrighted content.
Q5:How can I scale this YouTube research agent for teams?
Add caching, a shared vector store, job queues, and scheduled runs. Integrate with Slack or a wiki, and consider a browser-based assistant like Sider.AI to streamline researcher workflows.