Adobe Redimensionar Fotos y Videos
Redimensiona imágenes o videos a las dimensiones, relación de aspecto o tamaño con nombre especificados por el usuario.
Para conjuntos de plataformas de redes sociales (Instagram, TikTok, etc.) → usa la habilidad adobe-create-social-variations en su lugar.
Referencia de Herramientas
| Paso | Herramienta | Notas |
|---|---|---|
| Abrir selector de archivos | asset_add_file | Devuelve presignedAssetUrl, assetId y mediaType |
| Buscar recurso en CC | asset_search | Vuelve a escenificar el resultado vía asset_add_file para imagen; usa id directamente para video |
| Renderizar PSD/AI | document_render_vector | Convierte a JPEG antes de redimensionar |
| Redimensionar imagen | image_crop_and_resize | Una llamada por dimensión; reframe por defecto |
| Vista previa de resultados | asset_preview_file | Todos los resultados en una sola llamada |
| Subir a CC (inicio) | asset_initialize_file_upload | Primera llamada en la canalización de subida por bloques |
| Subir a CC (finalización) | asset_finalize_file_upload | Segunda llamada; devuelve URL CC prefirmada para el tablero |
| Crear tablero Firefly | create_firefly_board | Pasa import_adobe_storage con la URL de finalización |
| Redimensionar video | video_resize | Devuelve statusId para sondeo |
| Sondeo de redimensionamiento de video | resizeVideoPoll | Herramienta diferida: cárgala antes de llamar |
Flujo de Trabajo
Paso 0 — Inicializar Herramientas Adobe
Llama a adobe_mandatory_init primero. Esto devuelve reglas de manejo de archivos y orientación de enrutamiento de herramientas requerida para el resto del flujo de trabajo.
{ "skill_name": "adobe-resize-photos-and-videos", "skill_version": "1.0.1" }
Paso 1 — Verificación de Licencia
Ahora que adobe_mandatory_init confirmó que el conector "Adobe for creativity" está activo, verifica qué herramientas están disponibles a través del conector "Adobe for creativity" cotejándolas con la tabla de Referencia de Herramientas anterior.
ACCIÓN INMEDIATA REQUERIDA
Paso 1: Si faltan parámetros o son ambiguos → ejecuta la ingesta multi-paso (Paso 2 a continuación).
Paso 2: Si no se ha subido ningún archivo, ejecuta el Paso 3 (asset_add_file({})).
Paso 3: Detecta imagen vs. video y enruta al flujo de trabajo correcto (Paso 5 Imagen/Video).
Paso 2 — Ingesta Multi-Paso
Ejecuta esto cuando el usuario no haya proporcionado parámetros completos (tipo + dimensiones + modo de ajuste). Omite por completo si el mensaje del usuario ya contiene todos los tres.
Usa AskUserQuestion para recopilar parámetros paso a paso.
Paso 2a — Tipo
AskUserQuestion([{
question: "¿Foto o video?",
type: "single_select",
options: ["Foto", "Video"]
}])
Paso 2b — Dimensiones
Si es Foto (multi_select — el usuario puede elegir una o más):
AskUserQuestion([{
question: "Dimensiones — selecciona todas las que necesites",
type: "multi_select",
options: [
"1080 × 1080 — Cuadrado de Instagram",
"1080 × 1350 — Retrato de Instagram",
"1080 × 1920 — Historias / Reels",
"1920 × 1080 — YouTube / apaisado",
"1280 × 720 — Miniatura de YouTube",
"1200 × 675 — Publicación de X / Twitter",
"1200 × 630 — Facebook / imagen OG",
"1080 × 566 — Publicación de LinkedIn",
"2560 × 1440 — Banner de YouTube",
"3840 × 2160 — 4K / UHD",
"400 × 400 — Perfil / avatar",
"2480 × 3508 — Impresión A4 (300 ppp)",
"Personalizado — Lo escribiré"
]
}])
Si el usuario incluye "Personalizado" → pregunta de seguimiento: "Introduce tus dimensiones personalizadas (ej. 1500×800):"
Si el usuario selecciona múltiples preajustes → ejecuta image_crop_and_resize una vez por dimensión,
usando la misma URI de origen y parámetros cada vez. Previsualiza todos los resultados juntos al final.
Si es Video (multi_select — el usuario puede elegir una o más):
AskUserQuestion([{
question: "Dimensiones — selecciona todas las que necesites",
type: "multi_select",
options: [
"1080 × 1920 — Reels / TikTok / Historias",
"1920 × 1080 — YouTube / apaisado",
"1080 × 1080 — Publicación cuadrada",
"1280 × 720 — YouTube 720p",
"3840 × 2160 — 4K / UHD",
"854 × 480 — SD / 480p",
"Personalizado — Lo escribiré"
]
}])
Si el usuario selecciona múltiples preajustes de video → envía un trabajo video_resize separado por dimensión,
sondea cada uno hasta completar, previsualiza todos los resultados juntos.
Paso 2c — Modo de ajuste
Si es Foto (single_select):
AskUserQuestion([{
question: "Modo de ajuste",
type: "single_select",
options: [
"Reencuadrar — recortar para llenar",
"Rellenar — banda negra, sin recorte",
"Extraer — aislar sujeto"
]
}])
Si es Video (single_select):
AskUserQuestion([{
question: "Modo de ajuste",
type: "single_select",
options: [
"Buzón — preservar relación",
"Recortar — llenar, sin barras",
"Estirar — forzar exacto (distorsionar)"
]
}])
Paso 2d — Enfoque inteligente (solo Foto)
AskUserQuestion([{
question: "Enfoque inteligente — ¿dónde debe centrarse el recorte?",
type: "single_select",
options: [
"Sujeto",
"Rostro / retrato",
"Parte superior del cuerpo",
"Centro (geométrico)",
"Objeto nombrado — Lo describiré"
]
}])
Si el usuario selecciona "Objeto nombrado" → pregunta de seguimiento: "Describe el objeto (ej. 'el coche rojo', 'el logotipo'):"
Paso 2e — Opciones (solo Foto)
AskUserQuestion([{
question: "¿Alguna opción adicional?",
type: "multi_select",
options: [
"Lote — múltiples imágenes",
"Salida: JPEG",
"Salida: PNG"
]
}])
Paso 2f — Origen (solo Video)
AskUserQuestion([{
question: "¿Dónde está el video?",
type: "single_select",
options: [
"Subir desde el dispositivo",
"Desde Creative Cloud"
]
}])
Paso 3 — Obtener el Archivo de Origen
Crítico — las rutas /mnt/user-data/uploads/ NO son URLs utilizables.
Incluso cuando el usuario ha adjuntado un archivo y aparece en el contexto en una ruta /mnt/user-data/uploads/,
no puedes pasar esta ruta a ninguna herramienta de Adobe. Llama a asset_add_file() para escenificar el archivo — las rutas /mnt/user-data/uploads/ no son recuperables por las herramientas de Adobe.
INCORRECTO ❌ imageURI: "/mnt/user-data/uploads/photo.jpg"
INCORRECTO ❌ imageURI: "file:///mnt/user-data/uploads/photo.jpg"
CORRECTO ✅ llama a asset_add_file() → usa presignedAssetUrl del contexto del selector
Aún no hay archivo → abre el selector inmediatamente:
asset_add_file()
Detecta el tipo a partir del mediaType devuelto:
image/*→ FLUJO DE IMAGENvideo/*→ FLUJO DE VIDEO
Paso 4 — Resolver Dimensiones de Destino
| El usuario dice | Resolver a |
|---|---|
1920×1080, 1920x1080 | ancho: 1920, alto: 1080 |
4K | 3840 × 2160 |
HD, 1080p | 1920 × 1080 |
720p | 1280 × 720 |
480p | 854 × 480 |
Impresión A4 | 2480 × 3508 (300 ppp retrato) |
Impresión Carta | 2550 × 3300 (300 ppp retrato) |
16:9, 1:1, 4:5, 9:16 | cadena de relación → pasar como output: "16:9" |
cuadrado | output: "1:1" |
Solo ancho (800px de ancho) | ancho: 800, usar cadena de relación para mantener relación |
Si no se especificó ningún destino en el formulario NI en el mensaje del usuario → pregunta:
"¿Qué dimensiones necesitas? (ej. 1920×1080, A4, 16:9)"
FLUJO DE IMAGEN
Paso 5 (Imagen) — Fuentes URI Válidas
Solo estas funcionan como imageURI:
presignedAssetUrldeasset_add_file()✅outputUrlde una llamada de herramienta anterior ✅- URL HTTPS pública proporcionada por el usuario ✅
No utilizables como imageURI:
- Rutas
/mnt/user-data/uploads/❌ renditionURLdeasset_searchdirectamente ❌- URIs
file://❌
| Origen | Resolución |
|---|---|
| Archivo subido | asset_add_file() → presignedAssetUrl |
| Recurso de CC | asset_search → volver a escenificar vía asset_add_file() → presignedAssetUrl |
| Salida de herramienta anterior | Usa outputUrl directamente |
| Archivo PSD / AI | document_render_vector (JPEG, 300 ppp) → outputPresignedUrl |
Paso 6 (Imagen) — Modo de Ajuste
| Intención | Modo | Notas |
|---|---|---|
| "redimensionar a AxA" / predeterminado | reframe | Recorte más grande en la relación objetivo, centrado — sin distorsión |
| "sin recortar", "banda negra", "ajustar dentro" | pad | Rellena el espacio vacío con blanco |
| "aislar sujeto", "recorte ajustado" | extract | Recorte ajustado alrededor de la región detectada |
Predeterminado: reframe. Cambia solo cuando el usuario es explícito.
⛔
fit: "extract"es incompatible con un{ ancho, alto }explícito — estira la imagen. Usa una cadena de relación u omiteoutput.
Paso 7 (Imagen) — Llamar a image_crop_and_resize
image_crop_and_resize({
imageURI: presignedAssetUrl,
options: {
output: { width: 1920, height: 1080 }, // o "16:9"
fit: "reframe",
focus: "subject", // o "face", "upper_body", { prompt: "the car" }, { x:0.5, y:0.5 }
quality: 7
},
outputFileType: "jpeg" // o "png" si se necesita transparencia
})
// result.outputUrl → usar para previsualización o encadenamiento
Guía de enfoque:
"subject"— predeterminado; detección de cuerpo completo, paisajes, objetos"face"— retratos, primeros planos"upper_body"— recortes de pecho hacia arriba{ prompt: "the logo" }— objeto nombrado de la entrada del formulario del usuario{ x: 0.5, y: 0.5 }— centro geométrico (sin sujeto claro)
Paso 8 (Imagen) — Lote
Si se seleccionó lote en el formulario O el usuario proporcionó múltiples archivos:
- Llama a
asset_add_file()por cada archivo para obtener URLs prefirmadas individuales - Llama a
image_crop_and_resizepara cada uno con los mismos parámetros - Recolecta todos los valores
outputUrl - Llama a
asset_preview_filecon todos los resultados en una sola llamada
Las llamadas se ejecutan secuencialmente en este entorno. Para más de 10 imágenes, confirma con el usuario antes de comenzar.
Paginación entre turnos (lotes >20): Para lotes grandes, el contexto de la conversación puede llenarse antes de que se procesen todas las imágenes, lo que hace que Claude se detenga a mitad del lote. Esto es esperado — no es un error. Cuando ocurra:
- Indica cuántas se han completado y cuántas quedan (ej. "20 / 24 hechas — di 'continuar' para el resto")
- Espera a que el usuario confirme antes de reanudar
- Al reanudar, continúa desde la siguiente imagen no procesada hasta el final
- Previsualiza todos los resultados juntos solo después de que se complete la imagen final
Paso 9 (Imagen) — Previsualizar + Entregar + Tablero Firefly
asset_preview_file({
assets: [
{ name: "foto_1920x1080.jpg", presignedAssetUrl: result.outputUrl },
// todos los resultados exitosos
]
})
Guardar en CC + Crear Tablero Firefly
Después de la previsualización, sube cada resultado al almacenamiento de CC usando la canalización de subida por bloques
(asset_initialize_file_upload → PUT chunk → asset_finalize_file_upload).
Luego llama a la herramienta del tablero Firefly con las URLs de salida finales:
create_firefly_board({
import_adobe_storage: [
final_output_url_1,
final_output_url_2,
// ...
]
})
✅ Confirmado funcionando (Stage):
import_adobe_storagecon URLs prefirmadas deasset_finalize_file_uploadpobla los tableros con éxito.❌ No funciona:
import_generic_assetscon URNs de CC (urn:aaid:sc:US:...) — el retraso de indexación de USS causa tableros en blanco.Si la creación del tablero falla o la URL está mal formada, omite el enlace del tablero (reintentar no ayuda).
Publica el resumen de finalización después del paso del tablero:
✅ ¡Listo! [N] imagen(es) redimensionada(s) y lista(s).
📥 Descargar:
• redimensionada_1920x1080.jpg → <cc_storage_url>
[lista individual si N ≤ 3, o enlace de carpeta única si N > 3]
🎨 Ver en Tablero Firefly → <board_url> ← omitir si la creación del tablero falló
FLUJO DE VIDEO
Paso 5 (Video) — Obtener ID del Recurso
Las herramientas de video requieren assetId, no una URL.
| Origen | Cómo |
|---|---|
Subir vía asset_add_file | Usa el assetId devuelto |
| Almacenamiento CC | asset_search con filters.mediaType: "video/mp4" → usa el id del recurso |
Paso 6 (Video) — Destinos Comunes
| Nombre | Dimensiones |
|---|---|
| 4K / UHD | 3840 × 2160 |
| 1080p / HD | 1920 × 1080 |
| 720p | 1280 × 720 |
| 480p | 854 × 480 |
| Vertical 9:16 | 1080 × 1920 |
| Cuadrado 1:1 | 1080 × 1080 |
Paso 7 (Video) — Llamar a video_resize
⚠️
resizeVideoPolles una herramienta diferida — cárgala primero antes de intentar sondear. Las llamadas directas sin cargar fallarán con error "no cargado".
video_resize({
assetId: videoAssetId,
width: targetW,
height: targetH,
mode: "letterbox" // predeterminado; ver tabla de modos a continuación
})
// Devuelve { jobStatus: "pending", statusId }
Modo — usa los valores exactos de la API (no las etiquetas visibles para el usuario):
| El usuario dice | Valor API | Comportamiento |
|---|---|---|
| "ajustar", "preservar relación", "buzón" | "letterbox" | Preserva la relación, añade barras negras (predeterminado) |
| "llenar", "recortar para llenar", "sin barras" | "crop" | Recorta los bordes para llenar exactamente el objetivo |
| "estirar", "forzar exacto" | "stretch" | Distorsiona al objetivo exacto |
ℹ️ El reencuadre automático para video aún no está disponible en Claude, pero se están añadiendo nuevas herramientas constantemente. Si necesitas más control, prueba usando Adobe Premiere.
Sondeo: carga la herramienta diferida resizeVideoPoll antes de llamarla — las llamadas directas fallan con "no cargado".
// Paso 1: carga la herramienta diferida
await load_tool("resizeVideoPoll");
// Paso 2: ahora sondea con el statusId devuelto
resizeVideoPoll({ statusId: "abc-123" });
// Continúa sondeando hasta que el estado sea "completed" o "failed"
Paso 8 (Video) — Llamadas Múltiples
Si se seleccionaron múltiples dimensiones para el video, cada llamada a video_resize necesita un sondeo a resizeVideoPoll hasta que se complete. Es más eficiente enviar todas las llamadas a video_resize primero y luego sondear los trabajos uno por uno, recopilando resultados. Al final, llama a asset_preview_file con todos los resultados en una sola llamada.
Paso 9 (Video) — Guardar en CC
Después de la previsualización, sube a CC usando la misma canalización de subida que las imágenes. video_resize devuelve un presignedOutputUrl que puede usarse directamente como fuente de descarga; pásalo a la canalización de subida.
Luego llama a create_firefly_board con las URLs de CC:
create_firefly_board({
import_adobe_storage: [
cc_url_1,
cc_url_2,
// ...
]
})
Publica el resumen de finalización:
✅ ¡Listo! [N] videos redimensionados y listos.
📥 Descargar:
• video_1920x1080.mp4 → <cc_storage_url>
[lista individual]
🎨 Ver en Tablero Firefly → <board_url> ← omitir si falló
Consejos y Notas
- Siempre usa
adobe_mandatory_initprimero. - Si no hay archivo subido, abre el selector con
asset_add_file({}). - Diferencia entre fotos (usa
image_crop_and_resize) y videos (usavideo_resize). - Para fotos, el modo de ajuste por defecto es
reframe(recortar para llenar). - Para videos, el modo de ajuste por defecto es
letterbox(barras negras). - Si no se selecciona enfoque, usa
"subject"para fotos. - Para lotes, las llamadas se ejecutan en secuencia.
- Siempre previsualiza todos los resultados juntos al final.
- Los tableros Firefly pueden fallar; si es así, simplemente omite el enlace.
- Las rutas
/mnt/user-data/uploads/nunca son válidas para herramientas de Adobe. Siempre usaasset_add_file().