Ozor Documento a Video
Conversión completa de documento a video en Ozor.ai. Toma un archivo real (PDF, PPTX, DOCX, etc.), lo analiza en el lado de Ozor para producir un plan estructurado, permite al usuario aprobar/editar el plan, luego genera y exporta un video terminado, conservando los elementos visuales de las diapositivas.
Cuándo usar
Usa esta habilidad cuando la entrada sea un documento/archivo. Señales:
- El usuario adjuntó o mencionó un PDF, PPTX, DOCX, exportación de Keynote, presentación, propuesta, informe técnico, reporte, one-pager
- "Convierte esta presentación en un video"
- "Haz un video a partir de este PDF"
- "Video de mi propuesta / presentación / informe"
NO uses esta habilidad cuando:
- La entrada sea un brief de texto creativo corto →
ozor-generate - La entrada sea una URL o página de destino →
ozor-url-to-video - El usuario solo quiera un prompt escrito de Ozor →
ozor-doc-to-video(habilidad solo de prompt) - El usuario quiera gestionar videos existentes →
ozor-video-library
Herramientas MCP requeridas
mcp__ozor__analyze_document— analiza el doc, devuelve unplanIdmás el plan estructuradomcp__ozor__prepare_document_upload— obtiene una URL de subida mediante curl para archivos locales sin URL pública (el caso común)mcp__ozor__get_plan— obtiene el estado más reciente del planmcp__ozor__update_plan— aplica ediciones del usuario al plan antes de la generaciónmcp__ozor__generate_from_plan— inicia la construcción del video a partir del plan aprobado, devuelveprojectIdmcp__ozor__export_video— inicia el renderizado (usa elprojectIdcomovideoId)mcp__ozor__wait_for_export— bloquea hasta que el renderizado esté listomcp__ozor__get_embed_code— devuelve el HTML del<iframe>
Si el MCP de Ozor no está conectado, informa al usuario y detente. No extraigas contenido tú mismo ni recurras a generate_video con un guion escrito a mano: eso pierde los elementos visuales de las diapositivas y supera el límite de 2000 caracteres del prompt. El flujo basado en planos es obligatorio para documentos.
Flujo de trabajo
Paso 1 — Llevar el documento a Ozor
Elige la mejor fuente, en orden de prioridad:
- URL pública → pasa
urldirectamente aanalyze_document. Sin límite de tamaño, sin coste de tokens. Mejor opción cuando esté disponible. - Archivo local (el caso común) → llama a
mcp__ozor__prepare_document_upload, luego ejecuta el comando curl devuelto para enviar los bytes directamente al almacenamiento de Ozor. Los bytes nunca pasan por una llamada de herramienta, por lo que archivos de hasta ~50 MB funcionan. Usa esto para cualquier PDF/PPTX/DOCX de varios MB que el usuario haya subido a la conversación. fileBase64+fileNameenanalyze_document→ solo para archivos pequeños (≲ unos pocos cientos de KB). Evitar para presentaciones grandes: consume tokens.
Si prepare_document_upload no está en la lista de herramientas, las subidas están deshabilitadas en este servidor. Recurre a una URL o base64 pequeño.
Paso 2 — Analizar el documento
Una vez que Ozor tenga el archivo, llama:
mcp__ozor__analyze_document({
url | uploadId | fileBase64+fileName,
...sugerencias opcionales: targetDuration, format (16:9 / 9:16), audience, tone
})
Esto devuelve { planId, plan }. El plan contiene las escenas propuestas, la narración, las notas visuales y qué diapositivas/páginas corresponden a cada escena.
Paso 3 — Presentar el plan al usuario y DETENERSE
Este es el paso crítico. No te saltes a la generación. Muestra al usuario una representación concisa del plan:
📋 Plan de Ozor para "<nombre del documento>"
**Formato:** 16:9 (o 9:16)
**Duración estimada:** ~X segundos
**Escenas:** N
(1) <título de escena> — <narración / visual de una línea>
(2) <título de escena> — <narración / visual de una línea>
...
¿Quieres que genere esto tal cual, o cambiar algo? Puedes:
- Editar una escena ("cambia la escena 2 a ...")
- Reordenar / eliminar / añadir escenas
- Cambiar tono, duración o formato
- Aprobar y generar
Luego espera a que el usuario apruebe o solicite ediciones. No llames a generate_from_plan por tu cuenta: el plan es el punto de control del usuario para el coste y el control creativo.
Paso 4 — Aplicar ediciones (si las hay)
Si el usuario solicita cambios, llama a mcp__ozor__update_plan({ planId, ... }) con las ediciones. Vuelve a obtener el plan con get_plan y vuelve a mostrar el plan actualizado. Repite hasta que el usuario apruebe.
Paso 5 — Generar a partir del plan
Cuando el usuario apruebe:
mcp__ozor__generate_from_plan({ planId })
Esto devuelve { projectId }. Usa projectId como videoId para todas las llamadas posteriores.
Si la respuesta incluye un jobId, espera con wait_for_job({ videoId: projectId, jobId }). De lo contrario, continúa con la exportación.
Paso 6 — Exportar
mcp__ozor__export_video({ videoId: projectId })
mcp__ozor__wait_for_export({ videoId: projectId })
Devuelve shareUrl, editorUrl, downloadUrl.
Paso 7 — Insertar (embed)
mcp__ozor__get_embed_code({ videoId: projectId })
Paso 8 — Presentar resultados
🎬 Video listo desde "<nombre del documento>"
**Compartir:** <shareUrl>
**Editor:** <editorUrl>
**Descargar:** <downloadUrl>
**Insertar:**
```html
<iframe ...></iframe>
¿Quieres un corte social 9:16 a partir del mismo plan? Puedo regenerarlo.
## Sugerencias para pasar a `analyze_document`
Pasa cualquiera de estas si el usuario las mencionó o si son obvias a partir del documento:
- `targetDuration` — p.ej. `"60s"`, `"90s"`. Por defecto ~60s para propuestas/presentaciones, ~30s para one-pagers.
- `format` — `"16:9"` (por defecto) o `"9:16"` para redes sociales.
- `audience` — inversores, clientes, desarrolladores, equipo interno, ...
- `tone` — seguro, cálido, técnico, enérgico, ...
- `focus` — opcional, una nota de una línea como "enfatiza las métricas de la diapositiva 4" o "salta la diapositiva del equipo".
## Adaptación por tipo de documento
| Documento | Duración por defecto | Formato | Tono | Enfoque |
|-----------|----------------------|---------|------|---------|
| Presentación para inversores | 60–90s | 16:9 | Seguro | Problema → solución → tracción → CTA |
| Propuesta (DOCX) | 60s | 16:9 | Profesional | Resultados + precio + siguiente paso |
| Informe técnico / whitepaper | 60–90s | 16:9 | Autoritario | 3 hallazgos clave, enlace al documento completo en CTA |
| One-pager de ventas | 30–45s | 16:9 | Impactante | Gancho → 3 beneficios → CTA |
| Notas de versión | 30–45s | 16:9 | Enérgico | Una escena por funcionalidad |
| Capacitación / SOP | 90s+ | 16:9 | Tranquilo, claro | Pasos numerados, dividir en una serie si > 7 escenas |
En caso de duda, propón un valor por defecto en tu llamada inicial y deja que el usuario lo anule después de ver el plan.
## Iterar después de la generación
Si el video renderizado necesita cambios:
- Ajustes pequeños de narración/texto → `update_plan` + regenerar (esto se ejecuta desde el plan, no es necesario volver a analizar el documento)
- Nuevo orden de escenas o tono → mismo camino
- Nuevo enfoque o audiencia → puede ser más barato llamar a `analyze_document` de nuevo con sugerencias más fuertes
## Errores y recuperación
- **`analyze_document` falla porque el archivo es demasiado grande** → usa `prepare_document_upload` en lugar de base64.
- **El plan tiene contenido faltante o incorrecto** → llama a `update_plan` con correcciones en lugar de reiniciar.
- **`generate_from_plan` falla** → el error suele apuntar a una escena específica. Arregla mediante `update_plan`, reintenta.
- **La exportación se cuelga** → es seguro volver a llamar a `wait_for_export`; se reanuda.
## Reglas
1. **Siempre ve primero con el plan.** Nunca llames a `generate_video` con prosa escrita a mano extraída del documento. El objetivo de esta habilidad es que Ozor vea las diapositivas directamente.
2. **Siempre muestra el plan al usuario y espera la aprobación** antes de `generate_from_plan`. La generación es el paso costoso; el plan es el punto de control.
3. **Para archivos locales, usa `prepare_document_upload` + curl.** Base64 solo para archivos muy pequeños.
4. **Usa `projectId` como `videoId` en todas partes después de `generate_from_plan`.** Es el mismo identificador.
5. **Muestra todas las URLs** — compartir, editor, descarga, inserción.
6. **No resumas el documento tú mismo** — `analyze_document` de Ozor lo hace y conserva los elementos visuales. Tu trabajo es orquestar el MCP y curar el plan, no reescribir el contenido.