Tutorializer
Auditar tutoriales localizados y mantener de forma segura los metadatos del proyecto y las reglas de pronunciación.
Documentación
Impulsa la producción de videos tutoriales desde tu propio código: una API REST con claves de alcance limitado y límites de tasa por clave para tus proyectos, tutoriales, videos renderizados y voces en off sintetizadas, además de webhooks firmados cuando algo cambia.
Conector de IA
Conecta Tutorializer a Claude, ChatGPT y clientes MCP
Tutorializer proporciona un endpoint de Model Context Protocol alojado para asistentes de IA. Utiliza OAuth, por lo que cada persona inicia sesión con su propia cuenta de Tutorializer y solo puede acceder a proyectos en organizaciones donde tenga un rol activo.
Pide a un asistente que inspeccione proyectos, definiciones de tutoriales, videos renderizados y segmentos de voz en off; audite la cobertura de idiomas y dispositivos; o muestre las tarjetas interactivas de proyectos y tutoriales. Las herramientas de escritura pueden crear un proyecto, mantener reglas de pronunciación o eliminar un discurso o video.
{
"mcpServers": {
"tutorializer": {
"type": "http",
"url": "https://mcp.tutorializer.com/mcp"
}
}
}
Usa la URL de producción anterior en cualquier cliente que acepte un servidor MCP remoto Streamable HTTP. El descubrimiento OAuth, el registro dinámico de clientes y PKCE se manejan durante la conexión; no pegues una clave de API en la configuración de MCP.
El directorio de conectores de Claude lista un segundo endpoint: https://mcp.tutorializer.com/authoring. Sirve los mismos proyectos, tutoriales, videos y registros de voz con el mismo inicio de sesión y alcances, pero no puede sintetizar narración ni cambiar reglas de pronunciación. Usa el endpoint anterior cuando un asistente también deba generar voces en off.
Las herramientas de lectura usan el alcance tutorializer:read. Las herramientas que cambian el estado usan tutorializer:write y declaran si son destructivas e idempotentes para que los hosts compatibles puedan solicitar aprobación. La eliminación elimina medios almacenados, por lo que debes revisar el objetivo exacto antes de aprobarlo. La síntesis de voz en off se ejecuta con los créditos de tu propia organización, y el renderizado de videos permanece en el panel de Tutorializer y en la CLI de publicación.
El conector devuelve proyecciones limitadas en lugar de documentos de base de datos sin procesar. Nunca expone campos de propiedad de la organización, identificadores de diccionarios de proveedores, matrices de alineación de voz, credenciales o tokens.
Claves de API
Obtén una clave y autentícate
La API REST de Tutorializer permite que tu propio backend trabaje con el mismo contenido que el panel: los proyectos para los que grabas tutoriales, los tutoriales en sí, los videos renderizados a partir de ellos y los clips de voz de los que se sintetizan sus voces en off.
Abre el panel de Tutorializer y crea una clave de API en la sección API keys. El secreto se muestra cuando se crea la clave y nunca se devuelve mediante los endpoints que listan o leen claves; un administrador de la organización puede revelarlo nuevamente desde el panel, pero solo después de volver a ingresar su contraseña. Una clave pertenece a una sola organización, por lo que la organización está implícita en la clave y nunca es necesario enviarla.
Autentica cada solicitud con autenticación básica HTTP que lleve solo el secreto de la clave, codificado en base64, en el encabezado Authorization.
# The Authorization header is HTTP Basic auth carrying only the key secret,
# with no username and no colon.
Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)
Cada endpoint se encuentra bajo https://api.tutorializer.com. Las solicitudes realizadas con una clave tienen límite de tasa por clave; superar el límite devuelve 429.
Inicio rápido
Tus primeras tres llamadas
Lista tus proyectos, lee los tutoriales de uno de ellos y luego lee los videos renderizados para un solo tutorial.
# List the projects of your organization
curl https://api.tutorializer.com/api/projects \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
# List the tutorials of one of those projects
curl "https://api.tutorializer.com/api/tutorials?projectId=PROJECT_ID" \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
# List the rendered videos of a single tutorial
curl "https://api.tutorializer.com/api/videos?projectId=PROJECT_ID&tutorialId=TUTORIAL_ID" \
-H "Authorization: Basic $(printf %s YOUR_API_KEY_SECRET | base64)"
Explora la referencia completa de la API: cada endpoint con sus parámetros, cuerpo de solicitud, respuestas y alcance requerido.
CLI
Interfaz de línea de comandos
Los mismos proyectos, tutoriales, videos renderizados y discursos de voz en off están disponibles desde tu terminal a través de la CLI de tutorializer. Instálala globalmente con npm o ejecútala ad hoc con npx.
La autenticación es un solo comando: tutorializer login abre tu navegador para iniciar sesión en tu cuenta de Tutorializer y almacena una sesión para comandos posteriores, sin necesidad de pegar una clave de API.
# Install once, globally
npm install -g tutorializer
# or run it ad hoc without installing
npx tutorializer --help
# Log in — opens your browser to sign in and stores a session
tutorializer login
# List the projects of your organization
tutorializer projects list
# List the videos rendered for one of them
tutorializer videos list --projectId PROJECT_ID
# Inspect a voiceover speech, then fix how a word is pronounced
tutorializer speeches read SPEECH_ID
tutorializer projects pronunciation add "Acme" "ˈækmi" --projectId PROJECT_ID
La CLI es de código abierto en github.com/tutorializer/cli y se publica como tutorializer en npm. Ejecuta cualquier comando con --help para ver sus opciones.
Habilidades de agente
Enseña a tu agente de codificación Tutorializer
Tutorializer incluye Agent Skills: guías que siguen el estándar agentskills.io y que enseñan a los agentes de codificación a auditar y mantener tu biblioteca de tutoriales con la CLI de tutorializer y el conector MCP, en lugar de adivinar comandos y herramientas.
# Install the Tutorializer skills into your coding agent
npx skills add tutorializer/skills
Un solo comando instala las habilidades en Claude Code, Cursor, Codex, Gemini CLI y cualquier otro agente que siga el estándar de Skills. La CLI también incluye las mismas guías, con versiones coincidentes con los comandos que incluye: tutorializer skills get <name> imprime una bajo demanda.
Las habilidades son de código abierto en github.com/tutorializer/skills. Los usuarios de Claude también pueden instalar el plugin de Tutorializer para Claude, que incluye el conector junto con las habilidades: github.com/tutorializer/claude-plugin.
Alcances
Privilegio mínimo por defecto
Cada clave lleva una lista de alcances, por lo que una integración que solo necesita descargar tus videos finales nunca obtiene la capacidad de modificarlos, ni de gastar créditos de síntesis de voz. Las claves nuevas comienzan con solo lectura; amplíalas explícitamente en el panel. Una solicitud cuya clave no tenga el alcance que requiere un endpoint se rechaza con 403.
- projects:readLista los proyectos de tu organización y lee un proyecto individual.
- projects:writeCrea, actualiza y elimina proyectos.
- tutorials:readLee los tutoriales de un proyecto y un tutorial individual.
- tutorials:writeCrea, actualiza y elimina tutoriales.
- videos:readLee los videos renderizados de un proyecto o tutorial.
- videos:writeCrea, actualiza y elimina videos.
- speeches:readLee los clips de voz sintetizados de un proyecto.
- speeches:writeSintetiza nuevos clips de voz y actualiza o elimina los existentes.
Leer un proyecto, tutorial, video o discurso individual que pertenezca a otra organización responde 404 en lugar de 403, por lo que no se puede comprobar la existencia de un ID. Usuarios, roles, invitaciones, preferencias y facturación son solo del panel y ninguna clave llega a ellos.
Webhooks
Webhooks firmados
Agrega una suscripción de webhook a un proyecto en el panel y Tutorializer envía por POST los eventos que elegiste a tu servidor a medida que ocurren. Las suscripciones se gestionan con una sesión de operador, no con una clave de API.
- project.createdSe creó un proyecto.
- project.updatedSe editó un proyecto.
- project.deletedSe eliminó un proyecto.
- tutorial.createdSe creó un tutorial.
- tutorial.updatedSe editó un tutorial.
- tutorial.deletedSe eliminó un tutorial.
- video.createdSe agregó un video a un tutorial.
- video.updatedSe editó un video.
- video.deletedSe eliminó un video.
- speech.createdSe sintetizó un clip de voz.
- speech.updatedSe editó un clip de voz.
- speech.deletedSe eliminó un clip de voz.
POST https://your-server.com/tutorializer-webhook
{
"event": "video.created",
"timestamp": 1719000000,
"data": { "...": "..." }
}
Verifica la firma
Cada entrega lleva un encabezado X-Tutorializer-Signature con la forma t=timestamp,v1=firma, donde la firma es un HMAC-SHA256 de timestamp.body con clave del secreto de suscripción que se te mostró una vez al crear la suscripción. Vuelve a calcularla sobre el cuerpo sin procesar y compara antes de confiar en la carga útil.
import crypto from 'node:crypto'
// body must be the RAW request body, byte for byte
function verify(header, body, secret) {
const [t, v1] = (header || '').split(',').map(part => part.split('=')[1])
if (!t || !v1) return false
const expected = crypto
.createHmac('sha256', secret)
.update(\`${t}.${body}\`)
.digest('hex')
// timingSafeEqual throws on a length mismatch, so a malformed signature
// has to be rejected before the comparison rather than by it.
if (v1.length !== expected.length) return false
return crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))
}
La entrega es un único intento de mejor esfuerzo con un tiempo de espera de cinco segundos y sin reintentos, por lo que debes responder 2xx rápidamente y hacer el trabajo de forma asíncrona. Un endpoint que falla veinte veces seguidas se desactiva automáticamente y debe reactivarse en el panel.