Problemet det löser
Manuell transkribering begränsar studier till några dussin videor, och hemmasnickrade scrapingskript går sönder och är svåra att reproducera. Forskare behöver ett pålitligt sätt att samla in kompletta transkript för ett definierat urval av kanaler och datum, spara dem med metadata och dela sin metod så att andra kan replikera den.
Vad den första versionen bör innehålla
- Ett dokumenterat urval av kanaler och en tidsperiod
- Kompletta transkript sparade som rå JSON med metadata
- Undertextkälla registrerad för varje video (manuell, automatisk eller AI)
- Export till CSV eller text för R, Python, NVivo eller ATLAS.ti
- Ett insamlingsskript som kan köras om för replikering
Så bygger du det, steg för steg
- 01
Definiera urvalet
Lista kanalerna och tidsperioden du ska studera, och dokumentera dina urvalskriterier för metodavsnittet.
- 02
Hämta videolistor
Anropa /channels/resolve för varje kanal och filtrera resultaten efter publiceringsdatum.
- 03
Samla in transkript
Skicka video-ID:n till /batch och spara hela JSON-svaret, inklusive språk och undertextkälla för varje transkript.
- 04
Förbered för analys
Exportera transkripten som text eller CSV med video-ID, kanal, datum och tidsstämplar, och analysera dem sedan med ämnesmodeller, ordfrekvenser eller kvalitativ kodning.
Startkod
Den här idén bygger på mönstret "Recept 3: Läs in en hel spellista i en kunskapsbas". Byt till dina egna kanaler, promptar och lagring.
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 DBDärför är det värt att bygga
För forskare är vinsten ett reproducerbart dataset till en bråkdel av kostnaden och tiden för manuell transkribering. Team bygger också betalda dataset eller analystjänster för medieövervakningsföretag och tankesmedjor.
Misstag att undvika
- Att blanda automatiska och mänskliga undertexter utan att notera det: registrera undertextkällan eftersom träffsäkerheten skiljer sig.
- Att inte spara råa svar: spara den ursprungliga JSON:en så att din analys kan köras om.
- Att ignorera etikprövning och plattformens villkor: kontrollera ditt lärosätes krav och YouTubes villkor innan du publicerar dataset.
Frågor om den här idén
Får jag använda YouTube-transkript i akademisk forskning?
Många forskare gör det. Kontrollera ditt lärosätes etiska krav, YouTubes villkor och upphovsrättslagen, särskilt innan du delar ett dataset offentligt.
Hur korrekta är YouTubes automatiska undertexter?
Det varierar med ljudkvalitet, dialekter och ämne. API:et rapporterar om varje transkript kommer från manuella undertexter, automatiska undertexter eller AI-taligenkänning så att du kan ta hänsyn till det.
Hur många videor kan jag samla in på en gång?
En enda batchförfrågan tar emot upp till 3 000 video-ID:n på Business-planen. Större studier kan köra flera batcher.