Step‑by‑Step: Creazione di un agente di ricerca YouTube con Claude Code
Se ti è mai capitato di passare un pomeriggio intero a perderti tra i meandri di YouTube, per poi dimenticare quali video valeva la pena salvare, non sei il solo. Ora immagina un assistente instancabile in grado di trovare i video migliori, estrarre riassunti, individuare citazioni chiave, aggiungere timestamp alle informazioni e fornire fonti su richiesta, il tutto in modo rapido. Questo è esattamente ciò che può fare un agente di ricerca YouTube. In questa guida dettagliata, creeremo un pratico agente di ricerca YouTube con Claude Code, progettato per creatori, analisti, studenti e appassionati di apprendimento che desiderano concentrarsi sulla sostanza, non sul rumore.
Adotteremo un approccio pratico e diretto: architettura, codice, prompt e misure di sicurezza. Lungo il percorso, faremo delle scelte che potrai modificare in seguito. Alla fine, avrai un agente funzionante in grado di cercare su YouTube, raccogliere trascrizioni, elaborare informazioni da più video e produrre brevi sintesi di ricerca.
Cosa stiamo creando (e perché è importante)
- Obiettivo: un agente di ricerca YouTube in grado di:
- Cercare su YouTube tramite query
- Classificare i risultati in base alla rilevanza/coinvolgimento
- Recuperare le trascrizioni (sottotitoli automatici o di terze parti)
- Dividere e incorporare il contenuto per il recupero
- Utilizzare Claude Code per sintetizzare informazioni da più video
- Produrre note strutturate: riassunto, affermazioni, timestamp, citazioni e riferimenti
- Parola chiave principale: "Creazione di un agente di ricerca YouTube con Claude Code"
- Formato: tutorial dettagliato con codice e prompt eseguibili
- Output: breve sintesi di ricerca in Markdown + JSON per l'uso programmatico
Perché è importante: YouTube è la più grande base di conoscenza pubblica di talk, lezioni, demo e dibattiti. Ma è anche piena di rumore. Creare un agente di ricerca YouTube con Claude Code ti offre un vantaggio: puoi aggregare informazioni da decine di video in pochi minuti, anziché ore.
Architettura in sintesi
Manterremo la prima versione semplice e robusta.
- Input: una query di ricerca (ad esempio, "architetture di agenti LLM 2025"), vincoli opzionali (intervallo di date, canale, durata)
- Ricerca YouTube: YouTube Data API v3 (o fallback a SerpAPI)
- Trascrizioni: YouTube Transcript API; fallback ad ASR (ad esempio, Whisper) quando non disponibile
- Chunking: segmentazione basata sulle frasi (circa 800–1.200 token)
- Embeddings: utilizzare un modello di embedding locale o ospitato (ad esempio,
text-embedding-3-large, nomic-embed-text o bge-large)
- Vector Store:
FAISS locale per la velocità; può essere sostituito con Pinecone, Weaviate o Qdrant
- Ragionamento: Claude Code per l'orchestrazione, l'uso di strumenti, la sintesi e l'esecuzione di codice all'interno di un loop controllato
- Output: report in Markdown + indice JSON con citazioni, timestamp e punteggi
Flusso di dati: Query → Ricerca → Recupero metadati → Trascrizione → Chunking → Embedding → Recupero top‑K → Sintesi con Claude Code → Report.
Prerequisiti e configurazione
- Chiavi API:
YOUTUBE_API_KEY, ANTHROPIC_API_KEY (per Claude Code)
- Opzionale:
OPENAI_API_KEY o embedding locali
google-api-python-client, youtube-transcript-api
faiss-cpu, numpy, pandas, tiktoken (o sentencepiece)
requests, pydantic, tenacity
pip install google-api-python-client youtube-transcript-api faiss-cpu numpy pandas requests pydantic tenacity anthropic tiktoken
Variabili d'ambiente:
export YOUTUBE_API_KEY=YOUR_YT_KEY
export ANTHROPIC_API_KEY=YOUR_ANTHROPIC_KEY
Passaggio 1: Ricerca YouTube con filtri
Cercheremo su YouTube e restituiremo metadati strutturati: titolo, canale, data di pubblicazione, durata, visualizzazioni (se disponibili) e 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
Suggerimenti per i prompt durante la creazione di un agente di ricerca YouTube con Claude Code:
- Richiedi output strutturati sia in formati leggibili da persone che da macchine
- Applica citazioni con timestamp
- Incoraggia la divulgazione di incertezze e contraddizioni
Passaggio 6: Mettere tutto insieme
Colleghiamo query → ricerca → trascrizioni → chunking → embedding → recupero → sintesi.
# 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"))
Questa versione di base di un agente di ricerca YouTube con Claude Code cercherà, recupererà e sintetizzerà informazioni da più video con citazioni. Aggiorna gli embedding e aggiungi la memorizzazione nella cache per renderlo pronto per la produzione.
Sette aggiornamenti per migliorarlo
- Embedding migliori e ricerca ibrida
- Sostituisci con embedding di alta qualità e aggiungi la ricerca di parole chiave BM25. L'ibrido offre un maggiore richiamo su termini di nicchia e una migliore precisione su argomenti astratti.
- Espandi gli strumenti per metadati più ricchi
- Estrai commenti, rapporto likes/dislikes e autorevolezza del canale. Aggiungi un re‑ranker (cross‑encoder) per i primi 100 candidati.
- Pianificazione della ricerca multi‑turno
- Utilizza Claude Code per proporre un piano di ricerca: sotto‑domande, ipotesi e controlli di copertura. Esegui iterativamente fino a quando non vengono soddisfatte le soglie di copertura.
- Monitoraggio delle prove e controprove
- Per ogni affermazione, registra snippet di supporto e contraddittori. Presenta entrambi nei report; aggiungi punteggi di confidenza.
- Strategie per video lunghi
- Utilizza il rilevamento delle scene tramite sottotitoli o i tempi delle parole di Whisper. Riassumi per sezione prima della sintesi globale per evitare la diluizione del contesto.
- Memorizzazione nella cache e persistenza
- Memorizza le trascrizioni, gli embedding e i report per query. Riusa quando gli utenti modificano i filtri. Aggiungi la deduplicazione per ID video.
- Formati di esportazione e consegna
- Esporta in Markdown, PDF e JSON. Consegna via e‑mail o Slack. Visualizza i timestamp come link cliccabili
?t=mmss.
Prompt che puoi riutilizzare
Utilizza questi modelli durante la creazione di un agente di ricerca YouTube con Claude Code.
Sistema: sei un agente di ricerca meticoloso. Sintetizza le trascrizioni di più video di YouTube. Cita inline con [vID @ mm:ss] e includi una sezione Fonti con URL. Restituisci sia una breve sintesi in Markdown sia un payload JSON di affermazioni con supporto timestamped.
Utente: Obiettivo della ricerca: {topic}
Vincoli: concentrati su {audience or scope}; preferisci fonti entro {date range}; includi i disaccordi.
Passaggi candidati (classificati):
{retrieved_passages}
Output: Riassunto → Informazioni chiave (punti elenco) → Citazioni notevoli (con timestamp) → Contraddizioni e lacune → Fonti. Quindi JSON {"claims": ...}
Misure di sicurezza ed etica
- Rispetta i diritti del creatore: collega i video originali ed evita di pubblicare trascrizioni integrali di grandi dimensioni.
- Sii trasparente: mostra da dove provengono le affermazioni utilizzando timestamp e ID video.
- Evita la sovra‑semplificazione: preserva le sfumature; segnala quando i sottotitoli sono generati automaticamente e probabilmente rumorosi.
- Gestisci gli argomenti sensibili con attenzione: evidenzia l'incertezza e cerca fonti diverse.
Risoluzione dei problemi: problemi comuni e soluzioni
- "Nessuna trascrizione trovata"
- Fallback a Whisper; prova lingue diverse; controlla se il video è bloccato per regione.
- Scarsa qualità di recupero
- Aggiorna gli embedding; aggiungi BM25; aumenta la sovrapposizione dei chunk; ottimizza i parametri del top‑K.
- Forza uno schema di citazione rigoroso; penalizza le affermazioni non supportate; richiedi timestamp esatti presenti nei chunk recuperati.
- Memorizza nella cache in modo aggressivo; riduci
max_results; richieste batch; aggiungi back‑off con tenacity.
- Riassumi per sezione; limita i token massimi; utilizza prompt di pianificazione con una struttura esplicita.
Misurazione della qualità
- Precisione@K dei chunk recuperati rispetto a un set etichettato
- Tasso di fedeltà: proporzione di affermazioni con supporto timestamped verificabile
- Copertura: numero di video pertinenti univoci citati
- Latenza: tempo dalla query al report
Esempio: ricerca su "Database vettoriali spiegati"
- Query: "database vettoriali spiegati per sviluppatori 2025"
- Filtri: video dopo il 2023, durata 6–30 minuti
- Risultato: l'agente cita 6 video, evidenzia i compromessi di HNSW rispetto a IVF‑PQ, discute i costi/richiami e collega i benchmark. La sezione Contraddizioni confronta le affermazioni dei fornitori rispetto ai risultati open‑source.
A proposito: automatizzare questo all'interno del tuo flusso di lavoro
Se lavori tra documenti e codice, vale la pena automatizzare l'ultimo miglio. Una piccola CLI può eseguire query notturne e rilasciare brevi sintesi in Markdown nella tua base di conoscenza. Puoi anche collegarlo a modelli di issue per la ricerca sprint.
Vale la pena notare: se il tuo flusso di lavoro è già presente in una barra laterale del browser o in un assistente AI, strumenti come Sider.AI possono semplificare il ciclo di ricerca: seleziona un argomento, esegui una ricerca, acquisisci trascrizioni e crea una bozza di riepilogo basata su Claude direttamente dove lavori. Ciò può far risparmiare il cambio di contesto e rendere la creazione di un agente di ricerca YouTube con Claude Code ancora più pratica per i team. Punti chiave
- La creazione di un agente di ricerca YouTube con Claude Code è un modo ad alta leva per trasformare i video in sintesi fruibili.
- Lo stack minimo: YouTube API + trascrizioni + chunking + embedding + FAISS + sintesi con Claude.
- Percorsi di aggiornamento: ricerca ibrida, re‑ranking, loop di pianificazione e monitoraggio rigoroso delle citazioni.
- Inizia in modo semplice, misura la fedeltà e itera verso l'affidabilità.
Passaggi successivi
- Implementa un vero modello di embedding e un recupero ibrido
- Aggiungi un passaggio di re‑ranking e metriche di qualità
- Crea un processo pianificato per aggiornare gli argomenti settimanalmente
- Pacchettizza come CLI e un'interfaccia utente web leggera
FAQ
D1: Come posso iniziare a creare un agente di ricerca YouTube con Claude Code?
Inizia con la ricerca su YouTube, recupera le trascrizioni, dividi il contenuto in chunk, incorpora in un vector store e utilizza Claude Code per sintetizzare i risultati. La guida sopra fornisce codice dettagliato per assemblare una pipeline funzionante.
D2: Quali librerie sono le migliori per un agente di ricerca YouTube?
Utilizza YouTube Data API per la ricerca, youtube-transcript-api per i sottotitoli, FAISS per la ricerca vettoriale e l'SDK Anthropic per chiamare Claude Code. Puoi scambiare gli embedding con OpenAI, Nomic o BGE.
D3: Come posso garantire citazioni e timestamp accurati?
Mantieni i timestamp di inizio/fine durante il chunking e richiedi a Claude Code di citare [video_id @ mm:ss]. Valida che i timestamp citati esistano nei chunk recuperati prima della pubblicazione.
D4: Posso utilizzare questo agente per video privati o non in elenco?
Sì, se hai accesso e puoi recuperare le trascrizioni o eseguire ASR locale (ad esempio, Whisper). Rispetta sempre le autorizzazioni ed evita di distribuire contenuti protetti da copyright.
D5: Come posso scalare questo agente di ricerca YouTube per i team?
Aggiungi la memorizzazione nella cache, un vector store condiviso, code di lavoro ed esecuzioni pianificate. Integra con Slack o una wiki e considera un assistente basato su browser come Sider.AI per semplificare i flussi di lavoro dei ricercatori.