Dominar “Extend” en Veo 3.1 — Implementación paso a paso, design patterns y la guía más reciente lista para API
TL;DR
- Qué es realmente Extend: Veo 3.1 puede añadir a un video generado por Veo en bloques de 7 segundos hasta 20 veces, y exportarlo como un único clip continuo (salida máxima ≈148 segundos). Está disponible oficialmente vía la Gemini API, y también puedes operarlo desde las UIs/SDKs de Flow y Vertex AI.
- Canales compatibles: La documentación de Gemini API (Veo 3.1/3.1 Fast) y Google Cloud Vertex AI incluye los procedimientos de Extend. Flow también incorpora funciones tipo “Scene Extension” y puede manejar audio.
- Requisitos y límites: Solo se pueden extender videos generados por Veo. Restricciones de entrada incluyen 9:16 o 16:9 / 720p, etc.
- Quién se beneficia: Equipos de Ads/SNS / Redacciones / Plataformas UGC / Educación & formación interna. Puedes hacer crecer clips cortos a más largos con una cadencia estable de 7 segundos, automatizada vía API.
- Objetivo de este artículo: Ofrecer el camino más corto a producción hoy (entorno → generación base → Extend → QA → plantillas operativas) para UI y API, con ejemplos listos para copiar y pegar.
A quién ayuda más (personas concretas)
- Equipos de Ads / Social Ops: Toma un gran plano de 8 segundos y “extiende la respiración” en pasos de 7 s hasta un corte natural de 30–60 s, luego ejecuta A/B de CTR / retención.
- Redacciones / Medios: Convierte un clip líder corto en una pieza final única agregando seguimientos y supers.
- UGC / Desarrolladores de apps: Concatena automáticamente clips generados por Veo en plantillas con un tono consistente.
- Educación / Formación corporativa: Construye Intro → Pasos → Resumen a través de extensiones por etapas, facilitando ediciones/sustituciones.
Priorizamos la precisión y excluimos información incierta. Las especificaciones/límites/canales están confirmados en documentación pública.
1. Los hechos que necesitas primero sobre “Extend” en Veo 3.1 (a oct 2025)
- Granularidad: 7 segundos por extensión, hasta 20 extensiones. La salida final es un solo video concatenado de hasta ≈148 segundos.
- Prerrequisitos de entrada: Solo videos generados por Veo son elegibles. Relación 9:16 o 16:9; resolución 720p; entrada ≤141 segundos. En la Gemini API, Extend requiere salida de Veo como entrada.
- Dónde funciona: Gemini API (Veo 3.1 / 3.1 Fast). Vertex AI ofrece guía de Consola y API. Flow proporciona “Scene Extension”, y el audio también se puede extender.
- Mejoras relacionadas: Veo 3.1 mejora el control de continuidad, incluyendo hasta 3 imágenes de referencia e interpolación de primer/último fotograma. Combinado con Extend, puedes escalar la duración preservando la consistencia de la escena.
En resumen, Extend te permite seguir impulsando un plano fuerte hacia adelante—limpio y en secuencia.
2. Diseño de workflow de extremo a extremo (de UI → API)
2-1. Flujo central (visión general)
- Fija el concepto: Decide tema, sensación de lente, temperatura de color—la columna vertebral de la continuidad.
- Crea el “núcleo” corto: Genera ~8 s del plano más emblemático (usa imágenes de referencia y último fotograma).
- Extiende en pasos de 7 s: Separa prompt narrativo vs. prompt de restricciones para minimizar derivas.
- Control de calidad: Verifica costuras visuales y continuidad de audio; re-extiende donde sea necesario.
- Exporta / publica: Finaliza subtítulos, logo, relación de aspecto para el canal destino.
2-2. ¿Qué canal usar?
- Prototipado rápido: Flow (Scene Extension) → previa por Gemini API para ajuste fino.
- Producción: Usa Gemini API o Vertex AI vía SDK/REST. Si te importan cloud ops (IAM/auditoría), centra en Vertex AI.
3. Aprende Extend desde la UI (Flow / Vertex AI)
3-1. Fundamentos de Flow (Scene Extension)
- Genera una base con Veo 3.1 (usa imágenes de referencia y primer/último fotograma para forzar consistencia).
- Elige Extend / Scene Extension, introduce tu prompt de continuación de 7 s. Especifica también ambiente/BGM en el mismo mundo.
- Repite hasta 20 veces y exporta como un clip continuo.
3-2. Extend en la consola de Vertex AI
- En Media Studio → Video, selecciona Veo y ejecuta AI actions → Extend video sobre un clip generado. Añade un prompt y genera. La API refleja este flujo.
4. Implementa Extend con la Gemini API (con código)
A partir de aquí usaremos Gemini API (Veo 3.1) para ilustrar el patrón canónico núcleo de 8 s → Extend de 7 s × N. Límites/prerrequisitos según docs.
4-1. Prerrequisitos
- Modelos:
veo-3.1-generate-previewoveo-3.1-fast-generate-preview - Entrada elegible: Video generado por Veo (9:16/16:9, 720p, ≤141 s)
- Unidad de Extend: 7 s, hasta 20 veces (salida = clip continuo, máx ≈148 s)
4-2. Genera el video base (Python)
# pip install google-genai
import time
from google import genai
from google.genai import types
client = genai.Client()
prompt = (
"A cinematic medium shot of a female reporter in a modern newsroom. "
"Cool daylight tone, 35mm look, shallow depth of field. "
"She turns to camera and starts walking forward. Include natural ambience."
)
op = client.models.generate_videos(
model="veo-3.1-generate-preview",
prompt=prompt,
# Consejo: también puedes pasar reference_images (hasta 3) y first/last frame
# config=types.GenerateVideosConfig(reference_images=[...], last_frame=...),
)
while not op.done:
time.sleep(10)
op = client.operations.get(op)
video_asset = op.response.generated_videos[0].video
client.files.download(file=video_asset)
video_asset.save("base_8s.mp4")
Tip: Usar hasta 3 imágenes de referencia más primer/último fotograma facilita mucho la continuidad en Extend.
4-3. Ejecuta una única extensión de 7 s (Python)
import time
from google import genai
from google.genai import types
client = genai.Client()
extend_prompt = (
"Continue the scene: she stops near the anchor desk, points to the right screen. "
"Keep the same outfit, lighting, and ambience. Camera slowly pushes in."
)
op = client.models.generate_videos(
model="veo-3.1-generate-preview",
video=video_asset, # debe ser una salida previa de Veo
prompt=extend_prompt,
config=types.GenerateVideosConfig(
number_of_videos=1,
resolution="720p", # Extend asume 720p según la especificación
),
)
while not op.done:
time.sleep(10)
op = client.operations.get(op)
extended = op.response.generated_videos[0].video
client.files.download(file=extended)
extended.save("extended_15s.mp4")
Especificación clave: Pasos de 7 s, hasta 20. La entrada debe ser salida de Veo, 720p, 9:16 o 16:9, etc.
4-4. Plantilla práctica de “cadena de extensiones” (Python)
def extend_chain(base_video, prompts, max_hops=5):
"""
base_video: *handle* a un video generado por Veo (client.files.get(...) etc.)
prompts: lista de *prompts* de continuación de 7 s
max_hops: hasta 20 (según especificación)
"""
assert len(prompts) <= max_hops <= 20
current = base_video
results = []
for i, p in enumerate(prompts, 1):
op = client.models.generate_videos(
model="veo-3.1-generate-preview",
video=current,
prompt=p,
config=types.GenerateVideosConfig(
number_of_videos=1,
resolution="720p",
),
)
while not op.done:
time.sleep(10)
op = client.operations.get(op)
current = op.response.generated_videos[0].video
results.append(current)
return current, results # current es el clip continuo
4-5. Skeleton en JavaScript (Node.js)
import { GoogleAI } from "@google/generative-ai"; // SDK gemini-js equivalente
const ai = new GoogleAI();
const base = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
prompt: "A cinematic shot in a modern newsroom. Cool daylight, 35mm.",
});
let video = base.response.generatedVideos[0].video;
const prompts = [
"Continue: she approaches the desk; maintain lighting, ambience.",
"Continue: over-shoulder view of the wall monitor; match color tone.",
// ...
];
for (const p of prompts) {
const op = await ai.models.generateVideos({
model: "veo-3.1-generate-preview",
video,
prompt: p,
config: { numberOfVideos: 1, resolution: "720p" }
});
video = op.response.generatedVideos[0].video;
}
// descarga video.bytes → guarda a disco
Los IDs de modelo/parámetros deben seguir las tablas oficiales (p. ej.,
veo-3.1(-fast)-generate-preview,number_of_videos,resolution, etc.).
5. Implementa Extend en Vertex AI (SDK / REST)
Si valoras IAM, auditoría y visibilidad de costes, Vertex AI es sólido. Consola y API soportan Extend.
5-1. Python (GenAI SDK sobre Vertex AI)
pip install --upgrade google-genai
export GOOGLE_CLOUD_PROJECT=your_project
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_VERTEXAI=True
import time
from google import genai
from google.genai.types import GenerateVideosConfig, Video
client = genai.Client()
# Ejemplo: asumimos que ya existe un corto base generado (omitido). Ahora extendemos 7 s sobre un clip de Veo.
op = client.models.generate_videos(
model="veo-3.1-generate-preview", # Verifica el *rollout* actual en docs
prompt="Continue: camera push-in; keep ambience and outfit.",
video=Video(uri="gs://your-bucket/base_8s.mp4", mime_type="video/mp4"),
config=GenerateVideosConfig(
aspect_ratio="16:9",
# En Vertex, escribir a GCS es un patrón práctico
output_gcs_uri="gs://your-bucket/output/",
# resolution y otros parámetros: ver documentación del modelo actual
),
)
while not op.done:
time.sleep(15)
op = client.operations.get(op)
print(op.result.generated_videos[0].video.uri)
Las guías de Vertex cubren pasos de Extend en UI/REST/SDK, además de auth/IAM y flujo de salidas en GCS.
6. Diseño de prompts: cómo evitar romper la continuidad
Separación recomendada
- Contexto: Mundo, lente, temperatura de color, ambiente.
- Directiva: Acciones del sujeto / movimientos de cámara concretos.
- Restricciones: Fija vestuario/props/luces, especifica NGs (artefactos de manos, texto corrido, etc.).
Ejemplo de Extend (cada 7 s)
[Context]
modern newsroom, cool daylight, 35mm look, shallow depth of field; natural ambience.
[Directive]
continue from previous shot; reporter slows down and glances at the wall monitor; camera pushes in slightly.
[Constraints]
keep same outfit and mic color; keep shadow direction consistent; avoid exaggerated hand deformation.
Usando imágenes de referencia: Proporciona tres referencias (persona/vestuario/props) para estabilizar la identidad. Combina con primer/último fotograma para uniones de movimiento más suaves.
7. Gestión de calidad: detecta fallos pronto, corrige barato
- Inspección de fotogramas frontera: En cada unión, verifica pose/orientación/sombras.
- Continuidad de audio: Fija ambiente/clave de BGM en el Contexto. Apaga/enciende con fades en post.
- Automatiza detección de NG: Usa similitud CLIP o SSIM para puntuar consistencia entre cortes adyacentes; si cae de un umbral, re-extiende con el mismo prompt y fija semilla para reducir jitter.
- Bucle de producción: Itera “corto → Extend → revisión → re-Extend solo donde haga falta” en unidades de 7 s para recortar coste/tiempo/tasa de fallo.
Veo 3.1 mejora la integración de audio y la calidad de edición en Flow. Como la iluminación/sombras son más realistas, reforzar el vocabulario de restricciones suele arreglar momentos sutilmente uncanny.
8. Preguntas frecuentes (API & Operaciones)
P1. ¿Puedo usar Extend vía API?
→ Sí. La Gemini API expone Veo 3.1/3.1 Fast, y la especificación de Extend (7 s × hasta 20) es oficial. Vertex AI también incluye pasos de Extend.
P2. ¿Cuánto puedo alargar?
→ Para entrada Veo ≤141 s, añade en pasos de 7 s y obtén un clip único de hasta ≈148 s.
P3. ¿Puedo extender videos verticales 9:16?
→ Sí. Se soportan 9:16 o 16:9 (Extend asume 720p).
P4. Si quiero probar primero la UI…
→ Flow con Scene Extension es lo más rápido. Puedes extender con audio, y hay nuevas funciones de edición.
P5. ¿Precio/calidad?
→ Depende de modelo, resolución y duración. Veo 3.1 ofrece 1080p (8 s) y long-form a 720p, además de una variante Fast. Consulta el pricing/límites vigentes en los docs/anuncios del modelo.
9. Patrones de producción (Gemini / Vertex)
9-1. Driver Swap (abstracción → implementaciones)
class ExtendDriver(Protocol):
def generate(self, prompt: str, **cfg) -> "Video": ...
def extend(self, video: "Video", prompt: str, **cfg) -> "Video": ...
class GeminiVeoDriver(ExtendDriver):
...
class VertexVeoDriver(ExtendDriver):
...
def extend_to_target(video, prompts, driver: ExtendDriver, limit=20):
assert len(prompts) <= limit
current = video
for p in prompts:
current = driver.extend(current, p, resolution="720p")
return current
- Fija una interfaz abstracta para alternar Gemini ↔ Vertex o modelos futuros fácilmente.
- Externaliza encolado (RDB/Redis/SQS) y logs de auditoría, y haz triviales los reintentos de 7 s.
9-2. Template prompts y “léxico de continuidad”
- Mantén un léxico de Contexto (iluminación/lente/temperatura/ambiente).
- Comparte Restricciones (vestuario/props/exposición de logo/negativos) en un estándar de equipo.
- Codifica cuándo usar match cut vs. light dissolve como reglas de transición.
10. Caso de uso: extender un opener de noticias a 60 s de forma natural
Setup: Plano de entrada del presentador de 8 s → walk. Look unificado cool daylight / 35 mm.
Prompts de Extend 7 s × 7 (≈57 s)
- #1 (0–7 s): “Anchor se acerca al escritorio; dolly-in suave. Ambiente: murmullo de redacción.”
- #2 (7–14 s): “Los temas de hoy se reflejan tenuemente en el monitor. Mantén vestuario, peinado y dirección de sombras.”
- #3 (14–21 s): “Toma un bolígrafo y gesticula a la derecha; no cambies iluminación.”
- #4 (21–28 s): “Una silueta de staff pasa tras un panel de vidrio; mantén volumen general estable.”
- #5 (28–35 s): “Deja espacio a la izquierda para supers; prepara un match cut.”
- #6 (35–42 s): “Pequeña inclinación y cambio de mirada; preserva forma facial y textura de boca.”
- #7 (42–49 s): “Mira hacia documentos; atenúa sutilmente el ambiente.”
NG permanentes: “Sin deformación severa de dedos / sin blur excesivo ni altas quemadas / exposición de logo < 2 s / conserva largo y color de cabello.”
Finalización: Ajusta subtítulos y fundidos de BGM en post, luego recorta/remaqueta para SNS (9:16) y YouTube (16:9).
11. Solución de problemas & workarounds
- El sujeto parece otra persona en la unión
→ Fija identidad con imágenes de referencia (hasta 3); bloquea explícitamente pelo/vestuario/props en Restricciones. - Deriva de exposición o temperatura de color
→ Refuerza Contexto con vocabulario de temperatura/dirección de luz; ajusta lighting/shadows en Flow si hace falta. - El audio se siente extraño
→ Bloquea ambiente/claves de BGM en prompts; mantén cambios de volumen cortos y suaves. - Llegas a los límites de longitud
→ Planifica al revés desde la duración objetivo para elegir número de extensiones. Si es necesario, divide en dos partes y une en edición.
12. Cierre — Tejer una historia en “unidades de 7 segundos”
- Extend en Veo 3.1 ofrece 7 s × hasta 20 extensiones continuas desde Gemini API / Flow / Vertex AI. Empieza clavando las restricciones de entrada (720p, 9:16 o 16:9, entrada generada por Veo) y el tope de salida (≈148 s).
- El oficio consiste en definir un núcleo de 8 s, luego fijar Context / Directive / Constraints como léxico de continuidad. Con imágenes de referencia y primer/último fotograma, obtendrás cortes más largos y limpios.
- La jugada operativa es idear en UI → automatizar por API. Combina colas, logs de auditoría y reintentos, y extiende rápido, barato y fiable en unidades de 7 s.
Pienso en Extend como “pasar el testigo de la respiración”. Mantén un buen plano sin perder fuelle y entrégalo a los siguientes 7 segundos—una y otra vez. Así elevas retención e inmersión. Con Veo 3.1 Extend, puedes codificar ese oficio en código y diseño.
Referencias (verificadas: 2025-10-29)
- Generar videos con Veo 3.1 en la Gemini API (Extend = 7 s × hasta 20, restricciones de entrada, IDs de modelo, imágenes de referencia, primer/último fotograma)
- Extender videos de Veo en Vertex AI (pasos de Consola / API / SDK, auth y flujo de salida a GCS)
- Presentando Veo 3.1 (disponibilidad en Gemini API / Vertex AI / Flow; expansión de capacidades creativas)
- Actualizaciones de Veo en Flow (funciones de edición incl. audio; Extend)
- The Verge: Cobertura de edición en Flow × Veo 3.1, audio y Scene Extension
