O problema que resolve
Jornalistas locais e moradores querem saber o que as autoridades disseram sobre uma mudança de zoneamento, um item do orçamento ou uma política escolar. Encontrar isso exige vasculhar horas de vídeo de muitas sessões. Pautas e atas raramente registram a discussão completa, e muitas redações locais já não têm repórteres acompanhando todas as sessões.
O que incluir na primeira versão
- Importação automática de todas as sessões a partir do canal do órgão
- Identificação de falantes para pesquisar por autoridade
- Busca por tema e palavra-chave em anos de sessões
- Alertas quando um tema ou endereço é discutido
- Links compartilháveis para o momento exato da gravação
Como criar, passo a passo
- 01
Colete os vídeos das sessões
Resolva o canal da câmara ou a playlist de sessões e continue verificando novos uploads.
- 02
Transcreva com falantes
Use ASR com speakerLabels ativado, e speakerId com nomes conhecidos, para que cada trecho seja atribuído a um falante. As sessões são longas, então use o endpoint de estimativa para prever o custo.
- 03
Indexe por sessão e falante
Armazene os parágrafos com data da sessão, falante e timestamp, e adicione busca full-text e semântica.
- 04
Adicione alertas
Permita que os usuários salvem buscas, como o nome de uma rua ou um tema de política pública, e envie um e-mail quando o assunto aparecer em uma nova sessão.
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 DBPor que vale a pena criar
Veículos de notícias locais, grupos de advocacy e empresas do setor imobiliário ou de políticas públicas pagam por alertas e ferramentas de pesquisa. Projetos cívicos costumam funcionar com financiamento ou oferecer um acervo público gratuito com alertas pagos.
Erros a evitar
- Depender de legendas automáticas em sessões longas com muitos falantes: a identificação de falantes torna o acervo muito mais útil.
- Subestimar a duração: as sessões duram horas, então estime os créditos de ASR antes de transcrever um acervo acumulado.
- Publicar sem contexto: vincule cada citação à gravação para que os leitores possam ouvir por conta própria.
Dúvidas sobre esta ideia
Posso transcrever sessões da câmara municipal a partir do YouTube?
Sim. Use as legendas quando existirem, ou reconhecimento de fala por IA com identificação de falantes para transcrições mais legíveis de sessões longas.
Como identifico quem está falando?
Ative os rótulos de falantes para separar quem fala, e a identificação de falantes com uma lista de nomes ou cargos conhecidos para atribuí-los.
Quanto custa transcrever uma sessão de três horas?
O reconhecimento de fala por IA custa cerca de 40 créditos por hora antes de recursos adicionais. Use o endpoint de estimativa para ver o custo exato antes de começar.