Copiar y pegar transcripciones de YouTube en Claude es el camino lento. El camino rápido: el punto final de transcripción de Scavio devuelve la transcripción escrita como JSON, luego un pequeño contenedor de Python o JS la transmite a un mensaje de Claude. Este tutorial muestra el contenedor además de algunos patrones para resumir, verificar datos y realizar preguntas y respuestas de seguimiento.
Requisitos previos
- Python 3.10+
- Una clave API de Scavio
- Clave API antrópica
Guia paso a paso
Paso 1: Extraiga una transcripción de YouTube
El punto final de transcripción de Scavio devuelve texto más tiempo.
import requests, os
API_KEY = os.environ['SCAVIO_API_KEY']
def transcript(video_id):
r = requests.post('https://api.scavio.dev/api/v1/youtube/transcript',
headers={'x-api-key': API_KEY},
json={'video_id': video_id})
return r.json().get('transcript', '')Paso 2: Enviar a Claude
Pase la transcripción como contexto del mensaje del usuario.
import anthropic
client = anthropic.Anthropic()
def summarize(video_id):
t = transcript(video_id)
msg = client.messages.create(
model='claude-sonnet-4-6',
max_tokens=512,
messages=[{'role': 'user', 'content': f'Summarize in 5 bullets:\n{t[:8000]}'}])
return msg.content[0].textPaso 3: Afirmaciones de verificación de hechos
Loop reclama contra Scavio SERP por citaciones.
def fact_check(claim):
r = requests.post('https://api.scavio.dev/api/v1/google',
headers={'x-api-key': API_KEY},
json={'query': claim, 'num_results': 5})
return r.json().get('organic_results', [])Paso 4: Preguntas y respuestas en varios videos
Concatene las 3 transcripciones principales, pregúntele a Claude.
def multi_video_qa(video_ids, question):
texts = [transcript(vid)[:3000] for vid in video_ids]
context = '\n\n'.join(texts)
msg = client.messages.create(
model='claude-sonnet-4-6',
max_tokens=1024,
messages=[{'role': 'user', 'content': f'{question}\n\n{context}'}])
return msg.content[0].textPaso 5: Transcripciones en caché
Evite repetir llamadas en el mismo video.
from functools import lru_cache
@lru_cache(maxsize=200)
def cached_transcript(vid):
return transcript(vid)Ejemplo en Python
import os, requests, anthropic
API_KEY = os.environ['SCAVIO_API_KEY']
client = anthropic.Anthropic()
def summarize_yt(vid):
t = requests.post('https://api.scavio.dev/api/v1/youtube/transcript',
headers={'x-api-key': API_KEY}, json={'video_id': vid}).json().get('transcript', '')
msg = client.messages.create(model='claude-sonnet-4-6', max_tokens=512,
messages=[{'role':'user','content':f'Summarize: {t[:8000]}'}])
return msg.content[0].text
print(summarize_yt('dQw4w9WgXcQ'))Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic();
export async function summarizeYt(vid) {
const r = await fetch('https://api.scavio.dev/api/v1/youtube/transcript', { method: 'POST', headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ video_id: vid }) });
const t = (await r.json()).transcript || '';
const msg = await client.messages.create({ model: 'claude-sonnet-4-6', max_tokens: 512, messages: [{ role: 'user', content: `Summarize: ${t.slice(0, 8000)}` }] });
return msg.content[0].text;
}Salida esperada
Claude returns a 5-bullet summary of the video. Multi-video Q&A produces grounded answers across 3 transcripts. Fact-check returns 5 SERP citations per claim.