Il problema che risolve
La trascrizione manuale limita gli studi a poche decine di video, e gli script di scraping improvvisati si rompono e sono difficili da riprodurre. I ricercatori hanno bisogno di un modo affidabile per raccogliere trascrizioni complete per un campione definito di canali e date, archiviarle con i metadati e condividere il metodo affinché altri possano replicarlo.
Cosa includere nella prima versione
- Un campione documentato di canali e un intervallo di date
- Trascrizioni complete salvate come JSON grezzo con metadati
- Fonte dei sottotitoli registrata per ogni video (manuali, automatici o AI)
- Esportazione in CSV o testo per R, Python, NVivo o ATLAS.ti
- Uno script di raccolta rieseguibile per la replicazione
Come realizzarla, passo dopo passo
- 01
Definisci il campione
Elenca i canali e l'intervallo di tempo che studierai e annota i criteri di inclusione per la sezione sui metodi.
- 02
Ottieni gli elenchi dei video
Chiama /channels/resolve per ogni canale e filtra i risultati per data di pubblicazione.
- 03
Raccogli le trascrizioni
Invia gli ID video a /batch e salva la risposta JSON completa, inclusi la lingua e la fonte dei sottotitoli di ogni trascrizione.
- 04
Prepara l'analisi
Esporta le trascrizioni come testo o CSV con ID video, canale, data e timestamp, poi analizzale con topic model, frequenze delle parole chiave o codifica qualitativa.
Codice di partenza
Questa idea si basa sullo schema "Ricetta 3: carica in blocco una playlist in una knowledge base". Sostituisci canali, prompt e storage con i tuoi.
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBPerché vale la pena realizzarla
Per i ricercatori il ritorno è un dataset riproducibile a una frazione del costo e del tempo della trascrizione manuale. Alcuni team creano anche dataset o servizi di analisi a pagamento per società di media monitoring e think tank.
Errori da evitare
- Mescolare sottotitoli automatici e umani senza annotarlo: registra la fonte dei sottotitoli, perché l'accuratezza è diversa.
- Non salvare le risposte grezze: conserva il JSON originale per poter rieseguire l'analisi.
- Ignorare la revisione etica e i termini della piattaforma: verifica i requisiti del tuo ateneo e i termini di YouTube prima di pubblicare dataset.
Domande su questa idea
Posso usare le trascrizioni di YouTube per la ricerca accademica?
Molti ricercatori lo fanno. Verifica i requisiti etici del tuo ateneo, i termini di YouTube e la normativa sul diritto d'autore, soprattutto prima di condividere pubblicamente un dataset.
Quanto sono accurati i sottotitoli automatici di YouTube?
Variano in base a qualità audio, accenti e argomento. L'API indica se ogni trascrizione proviene da sottotitoli manuali, sottotitoli automatici o riconoscimento vocale AI, così puoi tenerne conto.
Quanti video posso raccogliere in una volta?
Con il piano Business una singola richiesta batch accetta fino a 3.000 ID video. Gli studi più ampi possono eseguire più batch.