O problema que resolve
Coaches e educadores respondem às mesmas perguntas nos comentários e nas DMs todos os dias, mesmo já tendo tratado delas em vídeos. O público não acha o vídeo certo, e o criador não consegue escalar respostas pessoais. Um chatbot do canal responde com a voz do criador e leva o público de volta ao conteúdo original.
O que incluir na primeira versão
- Respostas tiradas apenas dos vídeos do próprio criador
- Citações com link para o vídeo e o timestamp exatos
- Atualização automática quando novos vídeos são publicados
- Um plano gratuito com limite de perguntas e um plano pago para membros
- Widget incorporável no site ou na comunidade do criador
Como criar, passo a passo
- 01
Importe o canal
Resolva o canal ou uma playlist selecionada e envie todos os IDs de vídeo para /batch com format.paragraphs e format.timestamp.
- 02
Divida e gere embeddings
Armazene cada parágrafo com o título do vídeo, a URL e o tempo de início, e crie embeddings em um banco vetorial.
- 03
Recupere e responda
Para cada pergunta, recupere os parágrafos mais relevantes e peça a um LLM que responda usando só esses trechos, citando o vídeo e o timestamp.
- 04
Mantenha atualizado
Verifique periodicamente se há novos uploads no canal e adicione ao índice apenas as novas transcrições.
Código inicial
Esta ideia segue o padrão "Receita 3: carregue uma playlist inteira em uma base de conhecimento". Use seus próprios canais, prompts e armazenamento.
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 DBComo gera receita
Cobre do criador uma mensalidade pelo chatbot hospedado ou divida a receita de um plano pago que ele vende ao público. Comunidades de membros e vendedores de cursos podem incluí-lo como benefício premium.
Erros a evitar
- Deixar o modelo responder com conhecimento geral: restrinja-o aos trechos de transcrição recuperados para que soe como o criador.
- Usar blocos de tamanho fixo que cortam frases ao meio: o agrupamento por parágrafo preserva o contexto.
- Lançar sem a aprovação do criador: construa junto com ele, já que é a voz e o conteúdo dele.
Dúvidas sobre esta ideia
Posso treinar um chatbot com um canal do YouTube?
Sim. Em vez de treinar um modelo, você recupera trechos relevantes das transcrições e faz um LLM responder a partir deles. Isso se chama geração aumentada por recuperação (RAG).
Como faço o chatbot citar as fontes?
Armazene a URL do vídeo e o tempo de início junto com cada bloco de transcrição e instrua o modelo a incluí-los em cada resposta.
Quanto custa indexar um canal inteiro?
Vídeos com legendas nativas custam 1 crédito cada. Um canal de 300 vídeos custa cerca de 300 créditos para indexar uma vez, e depois disso só os novos uploads.