VidWords YouTube
Busca la transcripción de un video de YouTube y lee sus fotogramas: cada respuesta cita una marca de tiempo en la que se puede hacer clic.
Documentación
Servidor MCP de VidWords YouTube
Un servidor Model Context Protocol alojado que permite a un agente de IA leer videos de YouTube — y citar el segundo exacto del que obtuvo la respuesta.
Un modelo de lenguaje no puede ver un video. Apúntalo a este endpoint y obtendrá nueve herramientas para buscar transcripciones, leer los fotogramas de un video — diapositivas, gráficos, demostraciones, texto en pantalla — y responder preguntas con citas que se verifican antes de que las veas.
Sin código de integración. Sin scraping. Sin grupo de proxies.
POST https://vidwords.com/mcp
Authorization: Basic <your-api-token>
Solo remoto y alojado — no hay nada que instalar ni autoalojar. Este repositorio es el manifiesto público, la referencia de configuración y el rastreador de problemas para ese endpoint.
Inicio rápido
Obtén un token gratuito: crea una cuenta en vidwords.com/register, verifica tu correo electrónico y luego copia el token de tu perfil. El plan gratuito incluye créditos mensuales y 10 minutos de Watch, para que puedas configurarlo y usarlo antes de pagar nada.
Claude Code
claude mcp add --transport http vidwords https://vidwords.com/mcp \
--header "Authorization: Basic YOUR_API_TOKEN"
Claude Desktop — claude_desktop_config.json
{
"mcpServers": {
"vidwords": {
"type": "http",
"url": "https://vidwords.com/mcp",
"headers": { "Authorization": "Basic YOUR_API_TOKEN" }
}
}
}
Cursor — .cursor/mcp.json
{
"mcpServers": {
"vidwords": {
"url": "https://vidwords.com/mcp",
"headers": { "Authorization": "Basic YOUR_API_TOKEN" }
}
}
}
Codex CLI — ~/.codex/config.toml
[mcp_servers.vidwords]
url = "https://vidwords.com/mcp"
env_http_headers = { "Authorization" = "VIDWORDS_MCP_AUTH" }
export VIDWORDS_MCP_AUTH="Basic YOUR_API_TOKEN"
No uses
bearer_token_env_var. Es el campo que parece obvio, pero envíaAuthorization: Bearer <value>y este servidor se autentica con Basic.
claude.ai y ChatGPT — OAuth, nada que pegar
Añade https://vidwords.com/mcp como conector personalizado. El host se registra solo, te envía a
VidWords para iniciar sesión y muestra una pantalla de consentimiento que nombra exactamente lo que está pidiendo. El registro
por sí solo no concede nada — el acceso comienza solo cuando una persona con sesión iniciada hace clic en Aprobar, y las
conexiones activas se pueden revocar desde tu página de API con efecto inmediato.
Clientes sin soporte de cabeceras personalizadas, y Docker
Este repositorio también incluye un pequeño proxy stdio (src/index.js) que habla MCP en
stdin/stdout y reenvía las llamadas de herramientas al endpoint alojado. Úsalo cuando tu cliente no
pueda enviar una cabecera HTTP personalizada, o cuando quieras el servidor en un contenedor:
{
"mcpServers": {
"vidwords": {
"command": "npx",
"args": ["-y", "github:haljishi/vidwords-mcp"],
"env": { "VIDWORDS_API_TOKEN": "YOUR_API_TOKEN" }
}
}
}
Ejecútalo directamente desde este repositorio — el proxy no está publicado en npm, por lo que un simple
npx @vidwords/mcpno se resolverá.
docker build -t vidwords-mcp .
docker run --rm -i -e VIDWORDS_API_TOKEN=YOUR_API_TOKEN vidwords-mcp
Los esquemas de las herramientas se declaran en línea en el proxy, por lo que initialize y tools/list responden
sin credenciales y no se contacta con el upstream hasta que se llama realmente a una herramienta.
Una llamada sin VIDWORDS_API_TOKEN devuelve un error legible en lugar de fallar el
handshake. VIDWORDS_MCP_URL anula el endpoint si apuntas a una instancia que no es de producción.
El puente genérico mcp-remote también funciona:
{
"mcpServers": {
"vidwords": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://vidwords.com/mcp",
"--header", "Authorization:Basic YOUR_API_TOKEN"]
}
}
}
Los archivos de configuración listos están en examples/.
Las nueve herramientas
| Herramienta | Qué hace | Coste |
|---|---|---|
search_transcript | Encuentra dónde un video discute algo. Toma un video o una lista de hasta 25, por lo que una llamada puede responder una pregunta en todo un canal. Devuelve los momentos coincidentes con marcas de tiempo, contexto citado y enlaces profundos youtube.com/watch?v=…&t=…s. | 1 crédito por video |
get_transcript | Texto completo de la transcripción para hasta 25 videos en una llamada. | 1 crédito por video |
list_channel_videos | Resuelve un identificador de canal, URL o id de UC… a sus subidas recientes. | Gratis · Starter y superior |
list_watchlists | Las listas de seguimiento Radar de la cuenta y cuánto ha registrado cada una. | Gratis |
watchlist_activity | Subidas más recientes que Radar ha registrado para una lista de seguimiento. | Gratis |
account | Plan y créditos restantes, para que el agente pueda calcular el precio de un trabajo antes de ejecutarlo. | Gratis |
analyze_video | Inicia un análisis a nivel de fotogramas — diapositivas, gráficos, demostraciones y texto en pantalla, no solo subtítulos. Devuelve un analysisId inmediatamente. | Minutos de Watch |
get_analysis | Lee un análisis terminado: capítulos, puntos clave, evidencia con marca de tiempo. | Gratis |
ask_video | Haz una pregunta sobre un análisis terminado. Las citas se verifican contra la evidencia almacenada o se descartan. | 1 pregunta de Watch |
Prefiere search_transcript sobre get_transcript
Ambos cuestan un crédito por video, por lo que no hay razón de facturación para elegir. La razón es el contexto.
Pregunta "¿qué dijo esta entrevista de dos horas sobre precios?" y get_transcript devuelve aproximadamente
20,000 palabras, de las cuales quizás 300 son sobre precios — esas 300 ahora compiten por atención con
19,700 que no lo son, y la respuesta empeora, se vuelve más lenta y más cara de generar.
search_transcript devuelve solo los tramos coincidentes, cada uno con un enlace profundo. Recurre a
get_transcript cuando realmente quieras el texto completo: una exportación, un diff, un corpus.
Pide un intervalo, no un video completo
Ambas herramientas de transcripción aceptan códigos de tiempo opcionales from y to — segundos (615), m:ss
(10:20) o h:mm:ss (1:02:13):
{ "videos": ["dQw4w9WgXcQ"], "from": "10:20", "to": "11:00" }
Estos son los mismos formatos que las herramientas imprimen, por lo que una marca de tiempo de una respuesta se puede pegar directamente en la siguiente pregunta. Un código de tiempo que no se puede analizar se rechaza antes de obtener nada, por lo que un error tipográfico no cuesta crédito — nunca se amplía silenciosamente a todo el video.
Una llamada en todo un canal
search_transcript acepta una lista, que es como respondes "¿qué ha dicho este canal sobre
X" sin un viaje de ida y vuelta por video. Obtén los ids de list_channel_videos primero:
{ "video": ["VIDEO_ID_1", "VIDEO_ID_2", "VIDEO_ID_3"], "query": "pricing" }
Cada video se factura al habitual 1 crédito, y un video no disponible se informa en su propia fila en lugar de fallar la llamada — los demás se obtuvieron y se cobraron, por lo que aún los recibes.
Lee la imagen, no solo los subtítulos
analyze_video mira diapositivas, gráficos, ejemplos de código y texto en pantalla que nunca se dice
en voz alta. ask_video luego responde contra ese análisis almacenado, y cada cita se verifica
antes de que la veas: una afirmación visual tiene que coincidir con un fotograma que realmente se grabó, una afirmación
hablada tiene que aterrizar en un segmento de transcripción real. Cualquier cosa que falle se descarta, y cuando nada
sobrevive, la respuesta dice que la evidencia es insuficiente en lugar de producir una suposición segura.
Eso es ocasionalmente molesto — una negativa es una demostración peor que una respuesta fluida — y es la única versión de esta función que es segura de poner frente a un agente, porque un agente repite lo que se le dice sin el escepticismo que aplica un lector humano.
Autenticación, coste y límites
Basic, noBearer. El token se envía tal cual; no codificas en base64 un paruser:pass.- Verifica tu correo electrónico primero. Hasta que hagas clic en el enlace de verificación, cada llamada devuelve
403con{"error":"email_unverified"}— el fallo más común en la primera llamada en una cuenta nueva. - Los créditos son un solo grupo compartido con la API REST y el sitio web. Un crédito es una transcripción. El análisis de fotogramas consume minutos de Watch en su lugar, y una ejecución rechazada antes de comenzar no cuesta nada.
- Límite de velocidad: 30 solicitudes / 10 s — deliberadamente más flexible que el 5 de la API REST, porque el servidor
no tiene estado y un cliente vuelve a ejecutar
initializeantes de cada llamada.analyze_videotiene su propio límite de 10 inicios por minuto, compartido con la ruta REST. - Los tokens de RapidAPI se rechazan aquí. Esa identidad se mide por llamada y no tiene cuenta detrás, y ninguna de las dos cosas sobrevive a una sesión de llamada de herramientas. Usa un token de API de VidWords.
- Sin estado por diseño. Sin flujos SSE reanudables, sin sesión que eliminar; cada herramienta responde en
una sola vez.
GETyDELETEdevuelven un error JSON-RPC en lugar de un HTML 404. - Los subtítulos tienen que existir. Para un video sin pista de subtítulos, una cuenta con sesión iniciada puede transcribir desde el audio en su lugar — con precio por duración, cotizado antes de que gastes.
Números completos: precios.
Habilidad del agente
skills/youtube-transcripts/SKILL.md es una habilidad de agente
lista para usar para este servidor — selección de herramientas, intervalos de código de tiempo, búsqueda en todo el canal, la tabla de
costes y los códigos de error que vale la pena atender, en el formato que Claude y los agentes compatibles cargan directamente.
Copia la carpeta en el directorio de habilidades de tu agente:
git clone --depth 1 https://github.com/haljishi/vidwords-mcp
cp -r vidwords-mcp/skills/youtube-transcripts ~/.claude/skills/
Asume que el servidor MCP está configurado (ver Inicio rápido). El punto es que un asistente
que ha leído la habilidad sabe recurrir a search_transcript con un intervalo de código de tiempo en lugar de
traer una transcripción completa de dos horas a su contexto.
Documentación
- Habilidad del agente (SKILL.md)
- Servidor MCP de YouTube — descripción general
- Configuración en Claude Code
- Configuración en Claude Desktop
- Configuración en Cursor
- Documentación de la API REST
Soporte
Abre un problema aquí para cualquier cosa sobre la superficie MCP — una herramienta que se comporta mal, un cliente cuya configuración no hemos documentado, un esquema que podría ser más claro. Las preguntas sobre cuentas y facturación van a soporte.
Licencia
El contenido de este repositorio (documentación y ejemplos de configuración) tiene licencia MIT. El servicio alojado en sí es propietario y se rige por los términos de VidWords.
Producto independiente; no afiliado a YouTube o Google.