El problema
El conocimiento valioso está encerrado en los videos de YouTube sin una forma estructurada de buscar entre las transcripciones. Los desarrolladores quieren crear bases de conocimiento internas a partir de tutoriales, charlas de conferencias y contenido educativo, pero YouTube no tiene una API de búsqueda de transcripciones.
La solucion de Scavio
Proceso de tres pasos: (1) Utilice la búsqueda de Scavio en YouTube para descubrir videos relevantes por tema, (2) Extraiga transcripciones usando youtube-transcript-api, (3) Indexe transcripciones en MongoDB con índices de texto ponderados. La búsqueda de texto de MongoDB con un peso 10x en el título y 1x en la transcripción garantiza que las coincidencias de títulos breves se clasifiquen por encima de las coincidencias incidentales de palabras clave en la transcripción.
Antes
Antes de la base de conocimientos, un equipo de formación de desarrolladores buscaba manualmente tutoriales en YouTube, veía partes de cada vídeo y guardaba enlaces en una hoja de cálculo. Para encontrar "qué video cubría el manejo de errores de los componentes de React Server" fue necesario verificar 20 marcadores.
Después
Después de crear la base de conocimientos, el equipo busca 'Manejo de errores de componentes de React Server' y obtiene 8 transcripciones coincidentes clasificadas por relevancia, con enlaces directos. Diariamente se descubren nuevos vídeos mediante búsquedas automáticas de temas. La base de conocimientos contiene 2400 transcripciones indexadas después de 3 meses de ingesta diaria.
Para quien es
Equipos de formación de desarrolladores, programas de gestión del conocimiento e investigadores de contenido que desean acceso con capacidad de búsqueda al contenido de vídeo de YouTube.
Beneficios clave
- La búsqueda de YouTube descubre vídeos relevantes automáticamente
- Los índices de texto de MongoDB permiten la búsqueda de texto completo en transcripciones
- Los índices ponderados priorizan las coincidencias de títulos sobre el ruido de transcripción
- La canalización diaria agrega nuevos videos sin curación manual
- 50 consultas de descubrimiento diarias cuestan $0,25
Ejemplo en Python
import requests, os, json
from pymongo import MongoClient
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
client = MongoClient(os.environ.get('MONGO_URI', 'mongodb://localhost:27017'))
db = client['youtube_kb']
collection = db['transcripts']
def discover_videos(topic: str) -> list:
"""Find relevant YouTube videos via search."""
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'youtube', 'query': topic}, timeout=10).json()
return [{'title': o.get('title'), 'url': o.get('link'),
'channel': o.get('channel')}
for o in r.get('organic_results', [])[:10]]
def index_transcript(video: dict, transcript_text: str):
collection.update_one(
{'url': video['url']},
{'$set': {'title': video['title'], 'transcript': transcript_text,
'channel': video.get('channel')}},
upsert=True)
# Create weighted text index
collection.create_index([('title', 'text'), ('transcript', 'text')],
weights={'title': 10, 'transcript': 1})
videos = discover_videos('react server components tutorial')
for v in videos[:3]:
print(f"{v['title']}: {v['url']}")Ejemplo en JavaScript
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function discoverVideos(topic) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ platform: 'youtube', query: topic })
}).then(r => r.json());
return (r.organic_results || []).slice(0, 10).map(o => ({
title: o.title, url: o.link, channel: o.channel
}));
}
const videos = await discoverVideos('react server components tutorial');
videos.slice(0, 3).forEach(v => console.log(`${v.title}: ${v.url}`));Plataformas utilizadas
YouTube
Búsqueda de videos con transcripciones y metadatos