Procesamiento y creación de video

# Subir, codificar y publicar un video en YouTube

Recibe la subida de un video, crea una variante MP4 controlada y publícalo de forma privada en YouTube mediante un flujo de trabajo revisable.

Publicado el 1 de septiembre de 2026

## Conclusiones clave

* Codifica una salida MP4 revisada antes de la exportación a YouTube en lugar de hacer que el canal acepte cualquier variación de la fuente.
* Inicia las exportaciones como privadas para que la finalización del procesamiento no se confunda con la aprobación editorial o la publicación pública.
* Mantén el acceso OAuth en credenciales de Template con nombre y mantén los secretos de la cuenta de Transloadit fuera del código del navegador.

Subir directamente a YouTube resulta cómodo hasta que cada navegador, cliente móvil y herramienta interna implementa su propia validación, sus propios supuestos de codificación, sus propias reglas de metadatos y su propio comportamiento de reintento. Un flujo de trabajo de tres etapas crea una única transferencia controlada: aceptar la fuente, normalizar el entregable y luego publicarlo en un canal bajo una política de visibilidad explícita.

## En esta guía

1. [Define la publicación como una transición de estado](#upload-encode-publish-video-youtube-section-1)
2. [Construye el Template bloqueado de YouTube](#upload-encode-publish-video-youtube-section-2)
3. [Protege las credenciales y los metadatos del canal](#upload-encode-publish-video-youtube-section-3)
4. [Concilia la finalización sin publicar por duplicado](#upload-encode-publish-video-youtube-section-4)
5. [Prueba el contrato de destino](#upload-encode-publish-video-youtube-section-5)
6. [Mantén la retención de la fuente separada de la entrega al canal](#upload-encode-publish-video-youtube-section-6)

## Lo más importante

* Valida el título, la descripción y las palabras clave en la aplicación antes de proporcionarlos como campos del Template, y mantén la categoría y la visibilidad como valores fijos del Template en lugar de entradas del cliente.
* Guarda el ID de la Assembly y el identificador de plataforma devuelto para que los reintentos no puedan crear videos duplicados de forma silenciosa.
* Prueba los permisos y las cuotas del canal con la cuenta de destino real antes de habilitar la publicación desatendida.

## Define la publicación como una transición de estado

Subir los bytes, terminar una codificación y hacer público un video son tres eventos distintos. Modélalos por separado. La aplicación debe saber qué usuario proporcionó la fuente, qué metadatos se aprobaron, qué versión del flujo de trabajo se ejecutó y si una persona o una política puede exponer el registro de canal resultante. Un Step /youtube/store completado demuestra que YouTube aceptó la exportación; no demuestra que el contenido deba ser público.

Empieza con la visibilidad configurada como privada. Concilia la identidad de destino devuelta con el registro de la aplicación, deja que los editores revisen la reproducción y los metadatos, y realiza la publicación pública o no listada mediante una acción explícitamente autorizada. Este límite evita que un flujo de trabajo técnicamente exitoso se salte la moderación, la programación o la revisión de derechos.

### Transferencia completa

La fuente llegó a la Assembly y está disponible para los Steps posteriores.

### Procesamiento completo

El MP4 controlado existe y pasó las verificaciones técnicas elegidas por el Template.

### Publicación aprobada

La aplicación concilió el destino y autorizó a su audiencia.

## Construye el Template bloqueado de YouTube

El grafo base tiene un Step de subida, un Step de codificación y un Step de exportación a YouTube. /upload/handle se nombra :original y no tiene valor use. /video/encode lee :original y produce una variante MP4 acotada. /youtube/store solo lee esa variante, por lo que una subida sin procesar de una cámara no puede eludir la política de codificación.

Mantén allow\_steps\_override en false cuando los clientes de navegador o móviles creen Assemblies a partir del Template. Proporciona solo campos de metadatos revisados desde un servidor de confianza. El contrato de título, categoría, palabras clave y visibilidad de YouTube es más estricto que la entrada de formato libre de la aplicación, así que valida los campos antes de firmar o crear la Assembly, en lugar de descubrir errores de política después de una codificación extensa.

Codificar un video subido y exportarlo de forma privada a YouTube

```
{
  "allow_steps_override": false,
  "auth": {
    "max_number_of_files": 1,
    "max_size": 2147483648
  },
  "steps": {
    ":original": {
      "robot": "/upload/handle"
    },
    "youtube_ready": {
      "use": ":original",
      "robot": "/video/encode",
      "preset": "web/mp4/1080p",
      "width": 1920,
      "height": 1080,
      "resize_strategy": "fit",
      "zoom": false
    },
    "youtube_private": {
      "use": "youtube_ready",
      "robot": "/youtube/store",
      "credentials": "youtube-channel",
      "title": "${fields.title}",
      "description": "${fields.description}",
      "category": "education",
      "keywords": "${fields.keywords}",
      "visibility": "private",
      "result": true
    }
  }
}
```

## Protege las credenciales y los metadatos del canal

Crea credenciales de Template de YouTube mediante el flujo de OAuth y haz referencia solo a su nombre en el Template. El navegador nunca debe recibir el token de OAuth ni el Auth Secret de Transloadit. El servidor debe seleccionar el Template fijo, autorizar el canal de destino y limitar qué usuarios pueden proporcionar metadatos de publicación.

No interpoles HTML arbitrario, secretos ni datos internos de registros en la descripción pública. Aplica un límite de 80 caracteres para el título, asigna las categorías a la lista admitida, limita la longitud y la cantidad de palabras clave en la aplicación, y elige la visibilidad a partir de una política de la aplicación en lugar de aceptar un valor sin validar del cliente.

## Concilia la finalización sin publicar por duplicado

La codificación de video y una subida a una plataforma remota pueden tardar más que una solicitud interactiva. Guarda una operación de publicación local antes de crear la Assembly, adjunta el ID de la Assembly en cuanto exista, y completa el registro a partir de un webhook con firma verificada o de una consulta posterior del Assembly Status. Conserva la identidad de YouTube devuelta junto con la operación, en lugar de tratar la URL del resultado como el único registro.

Un tiempo de espera agotado no es evidencia de que la exportación fallara. Antes de reintentar, verifica la operación almacenada y el Assembly Status. Una clave de idempotencia estable basada en la versión de la fuente, el canal, la versión del flujo de trabajo y el evento de publicación previsto evita que una respuesta perdida cree un segundo video privado que nadie note.

## Prueba el contrato de destino

Usa el canal de destino real para un archivo de prueba privado. Verifica las dimensiones codificadas, el audio, la duración, el comportamiento de truncamiento del título, la categoría, las palabras clave y la privacidad. Prueba una concesión de OAuth expirada, un usuario sin permisos sobre el canal, un título que supere el límite de la aplicación, una fuente no compatible y una notificación de finalización repetida.

Supervisa los fallos por fase: recepción, codificación o exportación a YouTube. Registra el tiempo en cola, la duración del procesamiento, los bytes de salida, la duración de la exportación, la identidad de destino y el estado final. Mantén los errores sin procesar del proveedor en diagnósticos protegidos y muestra a los editores una acción estable, como reconectar las credenciales, corregir los metadatos o reintentar la operación existente.

## Mantén la retención de la fuente separada de la entrega al canal

YouTube es un destino de publicación, no necesariamente el repositorio de origen de la aplicación. Decide si el archivo maestro subido, el archivo codificado de entrega, o ambos, deben permanecer en un almacenamiento controlado por la aplicación. Conservar una fuente conocida facilita la recodificación posterior, la revisión de derechos, la migración de proveedores y la recuperación tras la eliminación accidental del canal.

Aplica la eliminación solo después de conciliar la identidad de destino y de que la política de retención del producto lo permita. Un video privado de YouTube aún puede eliminarse, bloquearse o desvincularse de la cuenta de la aplicación, así que no hagas de la presencia en la plataforma la única evidencia de que el flujo de trabajo de origen tuvo éxito.

## Detalles técnicos que conviene conocer

* /upload/handle debe llamarse :original, no debe definir use, y solo puede aparecer una vez en un conjunto de Assembly Instructions.
* El esquema de /youtube/store requiere credenciales, título, descripción, categoría, palabras clave y visibilidad. El valor de visibilidad no tiene un valor predeterminado y debe ser public, private o unlisted, por lo que omitirlo hace fallar la validación. Configúralo como private para un flujo de trabajo centrado primero en la revisión.
* El esquema de /youtube/store limita los títulos a 80 caracteres y restringe category a una enumeración fija. YouTube documenta un límite de descripción de 5.000 caracteres, que la aplicación debe hacer cumplir porque el esquema del Robot acepta cadenas de cualquier longitud.
* Las palabras clave de YouTube se proporcionan como una sola cadena separada por comas, en lugar de un array.
* Un Step de /youtube/store puede recibir un video y una miniatura personalizada mediante entradas use con nombre, pero la línea base de tres etapas envía solo el video codificado.
* Las credenciales de Template contienen la autorización OAuth de YouTube. No determinan qué usuario de la aplicación puede publicar en el canal conectado.

## Un enfoque práctico

1. 1\
   Define la fuente aceptada, la variante de salida, los límites de metadatos y el estado de aprobación.
2. 2\
   Crea credenciales de Template de YouTube y guarda un Template bloqueado de subida, codificación y exportación.
3. 3\
   Envía un archivo de prueba privado y concilia el resultado de la Assembly con un registro de la aplicación.
4. 4\
   Pon a prueba los envíos duplicados, el acceso OAuth vencido, los metadatos rechazados y la publicación manual.

Un flujo de trabajo multimedia de cuatro etapas

## Cuándo resulta útil Transloadit

Usa /upload/handle para el archivo entrante, /video/encode para una variante MP4 acotada, y /youtube/store para la subida al canal. Mantén el Template guardado bloqueado, obtén el acceso OAuth de YouTube mediante credenciales de Template, valida los metadatos en tiempo de ejecución en la aplicación y comienza con visibilidad privada.

## Límite de la arquitectura

Transloadit puede recibir, codificar y subir un video a YouTube, pero la aplicación sigue siendo responsable de la autorización de quien sube el contenido, la aprobación editorial, la política de metadatos, la gobernanza del canal y la relación duradera entre su registro y el video resultante en YouTube.

## Preguntas frecuentes

### ¿Puede el flujo de trabajo publicar directamente como público?

Sí, /youtube/store admite la visibilidad pública, pero private es más seguro cuando la publicación requiere aprobación editorial, de derechos o de moderación. Convierte la publicación pública en una transición separada y autorizada.

### ¿YouTube sigue transcodificando el MP4 subido?

La codificación de Transloadit controla el entregable acotado que se sube a YouTube, mientras que YouTube controla por separado cómo se prepara esa subida para la reproducción en su plataforma.

### ¿Dónde debería residir el token de OAuth de YouTube?

En credenciales de Template con nombre. El código del navegador no debe recibir ni el token de OAuth ni el Auth Secret de Transloadit.

### ¿Cómo evitamos videos duplicados después de un tiempo de espera agotado?

Guarda la operación y el ID de la Assembly antes de esperar. Verifica ese estado y el Assembly Status antes de crear otra Assembly para la misma fuente, canal y evento de publicación.

### ¿Puede este flujo de trabajo agregar una miniatura personalizada?

Sí, /youtube/store puede tomar entradas de video e imagen con nombre, pero eso agrega otra ramificación de procesamiento. Esta guía básica cubre intencionalmente el flujo de trabajo de tres etapas centrado solo en video.

## Crea el flujo de trabajo

Pasa del concepto a una Assembly probada con documentación de Robots y demos funcionales.

### Robots relevantes

* [/upload/handle](/es/docs/robots/upload-handle.md)
* [/video/encode](/es/docs/robots/video-encode.md)
* [/youtube/store EN (English)](/docs/robots/youtube-store.md)
* [Recibe los archivos subidos](/es/docs/robots/upload-handle.md)
* [Crea la variante de YouTube](/es/docs/robots/video-encode.md)
* [Exporta videos a YouTube EN (English)](/docs/robots/youtube-store.md)
* [Protege las credenciales de OAuth](/es/docs/topics/template-credentials.md)
* [Concilia la finalización asíncrona](/es/docs/topics/webhooks.md)
* [Lee la documentación de la API](/es/docs.md)
* [Explora demos funcionales EN (English)](/demos.md)
* [Crea un Workspace gratuito](/c/signup/)

Procesamiento y creación de video

## Continúa con guías relacionadas

* [Flujos de trabajo de procesamiento multimedia personalizables con Transloadit](/es/guides/customizable-media-processing-workflows.md)\
  Diseña un Template reutilizable con validación, variables, derivados paralelos, almacenamiento seguro y finalización observable.
* [Controla los códecs de video y audio con Transloadit](/es/guides/control-video-audio-codecs.md)\
  Elige ajustes preestablecidos de audio/video y un stack de FFmpeg, anula sus opciones admitidas y prueba salidas de códec sin operar una flota de codificación.
* [Importa, codifica y republica videos de Vimeo con seguridad](/es/guides/vimeo-import-encode-republish-workflow.md)\
  Importa una variante existente de Vimeo, normalízala a un MP4 controlado y exporta un nuevo video privado de Vimeo para revisión o migración.
