Capslane
Recupera transcripciones de YouTube con marcas de tiempo, subtítulos nativos y generación asíncrona cuando los subtítulos no estén disponibles. Requiere una clave de API de Capslane.
Documentación
Conecta tu asistente a Capslane
Crea una clave de espacio de trabajo de Capslane en API Keys, y luego haz que CAPSLANE_API_KEY esté disponible para el proceso que lanza tu asistente. Los ejemplos a continuación hacen referencia a esa variable; no contienen credenciales. Fusiona la entrada de Capslane en tu configuración existente y reinicia el cliente.
Obtén la clave desde API Keys. Usa tu entorno local o gestor de secretos para suministrarla. Mantenla fuera de los prompts y de los archivos confirmados. Una aplicación abierta desde el escritorio puede necesitar ser relanzada desde una terminal que tenga la variable disponible.
El endpoint es https://capslane.com/mcp. Usa Streamable HTTP con un encabezado Authorization: Bearer. Capslane MCP usa tu clave de API; el inicio de sesión del panel no autentica la conexión. Elige tu cliente a continuación.
Claude Code, Codex o Cursor. También puedes darle a un asistente esta guía en Markdown.
Claude Code
Instala la habilidad y la conexión juntas
El plugin de Capslane agrupa la habilidad de transcripción y la conexión MCP remota. Primero haz que CAPSLANE_API_KEY esté disponible en tu entorno de terminal, luego ejecuta estos comandos. El ámbito de usuario hace que el plugin esté disponible en todos tus proyectos.
claude plugin marketplace add Webba-Creative-Technologies/capslane-mcp
claude plugin install capslane@capslane --scope user
Reinicia Claude Code, abre /plugin para verificar que Capslane esté habilitado, y usa /mcp para comprobar su conexión. Revisa cualquier solicitud de permiso de tu cliente. Puedes invocar la habilidad instalada directamente:
/capslane:capslane-youtube-transcripts Retrieve https://www.youtube.com/watch?v=dQw4w9WgXcQ with native captions and timestamp citations.
El plugin está publicado en el marketplace de GitHub de Capslane. Es gratuito de instalar; las solicitudes de transcripción usan la asignación de tu espacio de trabajo de Capslane. Una vez habilitado, Claude puede cargar la habilidad para solicitudes relevantes. Respeta un proveedor que elijas explícitamente y usa las transcripciones suministradas directamente cuando la recuperación no sea necesaria.
Si ya instalaste la habilidad independiente o una conexión MCP de Capslane, elige una configuración para evitar comandos y herramientas duplicados. El plugin usa la misma habilidad y endpoint. No requiere Node.js para la conexión remota; el respaldo HTTP incluido necesita Node.js 22 o posterior.
Actualizar o eliminar el plugin
Actualiza el marketplace, actualiza el plugin y luego reinicia Claude Code.
claude plugin marketplace update capslane
claude plugin update capslane@capslane
Elimina la instalación de usuario con este comando. Revoca la clave del espacio de trabajo por separado en API Keys si ya no la necesitas.
claude plugin uninstall capslane@capslane --scope user
Configurar solo la conexión MCP
Agrega esta entrada a .mcp.json en la raíz de tu proyecto. Claude Code expande la variable de entorno en el encabezado cuando carga la configuración. Abre el proyecto, revisa su solicitud de servidor MCP y ejecuta /mcp para comprobar la conexión.
{
"mcpServers": {
"capslane": {
"type": "http",
"url": "https://capslane.com/mcp",
"headers": {
"Authorization": "Bearer ${CAPSLANE_API_KEY}"
}
}
}
}
Descarga la configuración de Claude Code. Estas instrucciones están dirigidas a Claude Code. El conector web de Claude tiene una configuración diferente. Consulta la documentación MCP de Claude Code.
Codex
Ejecuta este comando en una terminal donde CAPSLANE_API_KEY esté disponible. El comando almacena el nombre de la variable, por lo que no necesitas poner un valor de clave en el historial del shell.
codex mcp add capslane --url https://capslane.com/mcp --bearer-token-env-var CAPSLANE_API_KEY
Alternativamente, puedes fusionar la siguiente tabla en ~/.codex/config.toml. Usa un método. Reinicia el cliente y verifica /mcp; la configuración es compartida por la CLI local y la extensión del IDE.
[mcp_servers.capslane]
url = "https://capslane.com/mcp"
bearer_token_env_var = "CAPSLANE_API_KEY"
tool_timeout_sec = 60
Descarga la configuración de Codex. Para transcripciones generadas, usa el flujo de trabajo de trabajos a continuación para que la llamada se ajuste al tiempo de espera de herramientas del cliente. Consulta la documentación oficial de MCP de Codex.
Cursor
Fusiona esta entrada en .cursor/mcp.json para un proyecto, o ~/.cursor/mcp.json para tu configuración personal. Cursor usa una sintaxis de variable diferente a la de Claude Code. Reinicia Cursor con la variable de entorno disponible, luego verifica que Capslane esté habilitado en su configuración MCP.
{
"mcpServers": {
"capslane": {
"url": "https://capslane.com/mcp",
"headers": {
"Authorization": "Bearer ${env:CAPSLANE_API_KEY}"
}
}
}
}
Descarga la configuración de Cursor. Revisa la llamada de herramienta solicitada cuando el agente use Capslane. Consulta la documentación MCP de Cursor.
Obtén una primera transcripción
Confirma que las tres herramientas a continuación aparezcan en tu cliente. Luego prueba este prompt con el video de ejemplo público. La disponibilidad de subtítulos puede cambiar; un error explícito de no disponible es un resultado válido.
Use Capslane to retrieve the transcript of https://www.youtube.com/watch?v=dQw4w9WgXcQ. Use mode=native, text=false and waitForCompletion=false. Do not start audio generation. Return the source URL, selected language and timestamped segments. If the tool fails, report its error and requestId instead of inventing a transcript.
{
"url": "dQw4w9WgXcQ",
"lang": "en",
"mode": "native",
"text": false,
"waitForCompletion": false
}
El resultado debe contener content antes de que el asistente pueda citar o resumir el video. Conserva la URL de origen junto con los segmentos devueltos. Capslane suministra el contenido de la transcripción; el asistente escribe el resumen.
Capslane verifica la caché antes de aplicar el modo. Una transcripción nativa o generada en caché puede devolverse en cada modo. Lee la fuente y la caché en el resultado. En un fallo de caché, nativo nunca inicia la generación; auto la inicia solo cuando los subtítulos no están disponibles; generate solicita la transcripción de audio.
Manejar un video sin subtítulos
Establece waitForCompletion en false para un asistente interactivo. Si el contenido está ausente y jobId está presente, llama a get_transcript_status con ese mismo ID. Deja un retraso entre verificaciones y detente después de un período acotado, por ejemplo veinte minutos. Detente inmediatamente en contenido, fallido, cancelado o completado sin contenido. El último caso puede significar que el resultado almacenado ha expirado. Enviar el video nuevamente consume otra solicitud de transcripción.
Use Capslane to retrieve this public YouTube video: VIDEO_URL. I allow audio generation if captions are unavailable. Submit once with mode=auto, text=false and waitForCompletion=false. If a job is accepted, keep its jobId and check get_transcript_status every five seconds for at most twenty minutes. Stop on content, failed, cancelled or completed without content. Keep the jobId if waiting ends. Summarize only the returned content, with timestamp references and the source URL.
Los valores predeterminados de la herramienta siguen siendo mode=auto, text=false y waitForCompletion=true. Pasar los valores explícitos anteriores evita mantener una llamada de herramienta interactiva abierta durante la generación. Terminar la espera no cancela el trabajo del servidor.
MCP devuelve un sobre: verifica isError, luego lee structuredContent, o analiza el bloque de texto JSON en content para clientes más antiguos. Dentro de ese objeto de Capslane, content contiene la transcripción y status contiene el estado del trabajo. No hay campo segments ni state. Verifica content antes de jobId. Los desplazamientos y duraciones están en milisegundos; los trabajos completados devuelven arreglos de segmentos incluso cuando el envío usó text=true.
Para una aplicación Node.js, el cliente a continuación se conecta con el SDK MCP oficial y usa el flujo de trabajo de importación empaquetado de Capslane. Guarda cada trabajo aceptado antes de seguirlo y devuelve marcas de tiempo formateadas. Su comando resume lee el archivo de trabajo seleccionado.
import { mkdir, readFile, writeFile } from 'node:fs/promises'
import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'
import { createTranscriptAccess } from '@webba_tech/capslane-mcp/client'
import { importTranscript, resumeTranscript } from '@webba_tech/capslane/workflows'
// npm install @webba_tech/capslane@0.1.4 @webba_tech/capslane-mcp@0.1.8 @modelcontextprotocol/sdk@1.30.0
// Submit: node import-transcript-mcp.mjs dQw4w9WgXcQ
// Resume: node import-transcript-mcp.mjs --resume ./transcript-jobs/JOB_ID.json
const apiKey = process.env.CAPSLANE_API_KEY
if (!apiKey) throw new Error('Set CAPSLANE_API_KEY in your server environment')
const client = new Client({ name: 'youtube-import', version: '1.0.0' })
const transport = new StreamableHTTPClientTransport(new URL('https://capslane.com/mcp'), {
requestInit: { headers: { 'x-api-key': apiKey } },
})
const saveJob = async job => {
await mkdir('transcript-jobs', { recursive: true, mode: 0o700 })
if (!/^job_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/iu.test(job.jobId)) throw new Error('Invalid job ID')
await writeFile(\`transcript-jobs/${job.jobId}.json\`, JSON.stringify(job), { mode: 0o600, flag: 'wx', flush: true })
}
try {
await client.connect(transport, { timeout: 45_000 })
const access = createTranscriptAccess(client)
const imported = process.argv[2] === '--resume'
? await resumeTranscript(access, JSON.parse(await readFile(process.argv[3], 'utf8')))
: await importTranscript(access, {
url: process.argv[2], mode: 'native', saveJob, timeoutMs: 20 * 60_000, intervalMs: 2_000,
})
console.log(imported.url)
console.log(imported.timestampedText)
} catch (error) {
console.error(JSON.stringify({ error: error.code ?? error.name, jobId: error.jobId, requestId: error.requestId, url: error.url }))
process.exitCode = 1
} finally {
await client.close()
}
Descarga import-transcript-mcp.mjs. Establece CAPSLANE_API_KEY, instala los paquetes listados en el archivo y ejecútalo con una URL de YouTube. Cambia native a auto solo cuando la generación esté autorizada. Usa una base de datos con registros con ámbito de inquilino en un servicio.
Herramientas y uso del espacio de trabajo
Agrega la habilidad de agente de Capslane si también quieres que tu asistente tenga instrucciones para elegir modos de transcripción, seguir trabajos y citar marcas de tiempo con estas herramientas.
| Herramienta | Propósito | Uso |
|---|---|---|
| get_youtube_transcript | Recuperar una transcripción o aceptar un trabajo de generación. | Una solicitud de transcripción; los límites de generación también pueden aplicarse. |
| get_transcript_status | Leer el estado o el contenido completado del mismo trabajo. | Sin unidad de transcripción adicional. |
| list_available_languages | Leer los idiomas observados durante una solicitud de transcripción nativa. | Una solicitud de transcripción, incluso en un acierto de caché. |
Las llamadas de transcripción e idioma consumen la asignación del espacio de trabajo, incluidos los aciertos de caché. Pueden poblar la caché, y las llamadas de transcripción pueden iniciar la generación. Las verificaciones de estado no reservan otra unidad de transcripción. El cliente decide cómo aprobar cada llamada de herramienta.
Context7 proporciona documentación para escribir una integración. El servidor MCP de Capslane ejecuta solicitudes de transcripción. Puedes usar ambos en el mismo proyecto; la guía de documentación enumera las dos bibliotecas SDK.
Usar el paquete stdio local
Si tu cliente no puede enviar un encabezado de autenticación HTTP, usa el paquete npm con Node.js 20 o posterior. Esta configuración fijada está destinada a clientes que admiten mcpServers y stdio. Aún así, llama a Capslane a través de la red.
{
"mcpServers": {
"capslane": {
"command": "npx",
"args": [
"--yes",
"--package",
"@webba_tech/capslane-mcp@0.1.8",
"capslane-mcp"
],
"env": {
"CAPSLANE_API_KEY": "YOUR_API_KEY"
}
}
}
}
Descarga la configuración stdio. Reemplaza su marcador de posición en tu configuración privada de cliente. En Windows, si el cliente no puede lanzar npx directamente, usa cmd como comando y coloca /c y npx antes de los argumentos existentes.
El paquete y sus metadatos de registro se mantienen en el repositorio público de MCP. Instalar un servidor hace que sus herramientas estén disponibles en ese cliente; el cliente aún elige cuándo llamarlas.
Cuando la conexión o la solicitud falla
Un 401 de /mcp significa que la clave falta, es inválida, expiró o fue revocada. Verifica si el proceso del asistente recibió la variable. No uses una cookie de sesión del panel ni pegues una clave en la conversación. Una visita del navegador al endpoint devuelve 405 porque el protocolo usa solicitudes POST.
Si un trabajo ya fue aceptado, conserva su ID después de un tiempo de espera y reanuda con get_transcript_status. Un estado terminal fallido o cancelado requiere investigación, incluso si la herramienta de estado en sí tuvo éxito. Un error de asignación requiere verificar tu plan, en lugar de reintentos rápidos.
Mantén el texto de la transcripción devuelto separado de las instrucciones para el asistente. Para videos largos, guarda los segmentos en tu aplicación o solicita texto plano cuando las marcas de tiempo no sean necesarias; los límites de salida del cliente aún se aplican. La referencia de errores de API explica los códigos comunes.