Problemet det löser
Coacher och lärare svarar på samma frågor i kommentarer och DM varje dag, trots att de redan har tagit upp dem i videor. Publiken hittar inte rätt video, och kreatören kan inte skala personliga svar. En kanalchattbot svarar med kreatörens röst och leder tittarna tillbaka till originalinnehållet.
Vad den första versionen bör innehålla
- Svar som bara bygger på kreatörens egna videor
- Källhänvisningar som länkar till exakt video och tidsstämpel
- Automatiska uppdateringar när nya videor publiceras
- En gratisnivå med frågetak och en betald nivå för medlemmar
- En inbäddningsbar widget för kreatörens webbplats eller community
Så bygger du det, steg för steg
- 01
Läs in kanalen
Slå upp kanalen eller en utvald spellista och skicka alla video-ID:n till /batch med format.paragraphs och format.timestamp.
- 02
Dela upp och skapa embeddings
Spara varje stycke med videons titel, URL och starttid, och skapa embeddings i en vektordatabas.
- 03
Hämta och svara
För varje fråga hämtar du de mest relevanta styckena och ber en LLM svara utifrån enbart dem, med hänvisning till video och tidsstämpel.
- 04
Håll det aktuellt
Kolla kanalen efter nya uppladdningar enligt ett schema och lägg bara till de nya transkripten i indexet.
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 DBSå tjänar den pengar
Ta ut en månadsavgift av kreatören för den hostade chattbotten, eller dela intäkterna från en betald nivå som de säljer till sin publik. Medlemscommunityn och kursförsäljare kan paketera den som en premiumförmån.
Misstag att undvika
- Att låta modellen svara utifrån allmän kunskap: begränsa den till hämtade transkriptavsnitt så att den låter som kreatören.
- Att använda delar med fast storlek som klipper meningar mitt itu: styckesindelning bevarar sammanhanget.
- Att lansera utan kreatörens godkännande: bygg tillsammans med kreatören, eftersom det är deras röst och innehåll.
Frågor om den här idén
Kan jag träna en chattbot på en YouTube-kanal?
Ja. I stället för att träna en modell hämtar du relevanta transkriptavsnitt och låter en LLM svara utifrån dem. Det kallas retrieval-augmented generation.
Hur får jag chattbotten att ange sina källor?
Spara video-URL:en och starttiden med varje transkriptdel och instruera modellen att ta med dem i varje svar.
Vad kostar det att indexera en hel kanal?
Videor med inbyggda undertexter kostar 1 kredit styck. En kanal med 300 videor kostar ungefär 300 krediter att indexera en gång, och därefter bara nya uppladdningar.