Demo en la nube: los cambios no se guardan (almacenamiento temporal). Edita en local para trabajo persistente.

Playbook: Maestros — clip → proyecto

Objetivo: un MP4 de fútbol → proyecto 9:16 con branding Maestros del Fútbol, solo por API.

Prerrequisitos

  • Studio en $BASE (p. ej. http://127.0.0.1:3000 o :3010)
  • STUDIO_API_TOKEN configurado
  • Template tpl_user_maestros_day4 (seed + create-maestros-user-template.ts)
  • Worker solo si vas a type=export
export TOKEN="$STUDIO_API_TOKEN"
export BASE="${BASE:-http://127.0.0.1:3000}"
export VIDEO="/path/to/clip.mp4"
export TEXTO="Título del clip"

Ops: docs/ops/n8n-maestros-stack.md.

1. Subir clip

UPLOAD=$(curl -sS -X POST "$BASE/api/assets" \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@${VIDEO}")

ASSET_ID=$(echo "$UPLOAD" | jq -r '.asset.id')
echo "assetId=$ASSET_ID"

2. Instanciar plantilla

Variables: texto + video (solo slot 0).

PROJECT=$(curl -sS -X POST "$BASE/api/projects/from-template" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n \
    --arg tid "tpl_user_maestros_day4" \
    --arg name "Maestros — ${TEXTO}" \
    --arg texto "$TEXTO" \
    --arg video "$ASSET_ID" \
    '{templateId:$tid,name:$name,values:{texto:$texto,video:$video}}')")

PROJECT_ID=$(echo "$PROJECT" | jq -r '.project.id')
echo "edit=$BASE/edit/$PROJECT_ID"

3. Export opcional

JOB=$(curl -sS -X POST "$BASE/api/jobs" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"projectId\":\"$PROJECT_ID\",\"type\":\"export\"}")

4. Multi-clip (2–4)

Ver Maestros batch.

Checklist

  • assetId y projectId no son null
  • UI en /edit/$PROJECT_ID muestra branding + clip
  • Smoke: ./scripts/n8n-maestros-smoke.sh "$VIDEO" "$TEXTO"