Adobe Redimensionner Photos et Vidéos
Redimensionne des images ou vidéos selon des dimensions, ratios d'aspect ou tailles nommées spécifiées par l'utilisateur.
Pour les ensembles de plateformes sociales (Instagram, TikTok, etc.) → utilisez plutôt la compétence adobe-create-social-variations.
Référence des Outils
| Étape | Outil | Notes |
|---|---|---|
| Ouvrir le sélecteur de fichier | asset_add_file | Renvoie presignedAssetUrl, assetId et mediaType |
| Trouver un fichier dans CC | asset_search | Ré-étagerez le résultat via asset_add_file pour une image ; utilisez id directement pour une vidéo |
| Rendre un PSD/AI | document_render_vector | Convertit en JPEG avant redimensionnement |
| Redimensionner l'image | image_crop_and_resize | Un appel par dimension ; reframe par défaut |
| Prévisualiser les sorties | asset_preview_file | Toutes les sorties en un seul appel |
| Upload vers CC (début) | asset_initialize_file_upload | Premier appel du pipeline d'upload par blocs |
| Upload vers CC (fin) | asset_finalize_file_upload | Deuxième appel ; renvoie une URL CC présignée pour le tableau |
| Créer un tableau Firefly | create_firefly_board | Passez import_adobe_storage avec l'URL finalisée |
| Redimensionner une vidéo | video_resize | Renvoie statusId pour le suivi |
| Suivre le redimensionnement vidéo | resizeVideoPoll | Outil différé — chargez avant d'appeler |
Workflow
Étape 0 — Initialisation des Outils Adobe
Appelez d'abord adobe_mandatory_init. Cela renvoie les règles de gestion des fichiers et les directives de routage des outils nécessaires pour la suite du workflow.
{ "skill_name": "adobe-resize-photos-and-videos", "skill_version": "1.0.1" }
Étape 1 — Vérification des Droits
Maintenant que adobe_mandatory_init a confirmé que le connecteur "Adobe for creativity" est actif, vérifiez quels outils sont disponibles via ce connecteur en les croisant avec le tableau Référence des Outils ci-dessus.
ACTION IMMÉDIATE REQUISE
Étape 1 : Si des paramètres sont manquants ou ambigus → exécutez le processus d'accueil multi-étapes (Étape 2 ci-dessous).
Étape 2 : Si aucun fichier n'est uploadé, exécutez l'Étape 3 (asset_add_file({})).
Étape 3 : Détectez image vs. vidéo et acheminez vers le workflow correct (Étape 5 Image/Vidéo).
Étape 2 — Accueil Multi-Étapes
Exécutez ceci lorsque l'utilisateur n'a pas fourni de paramètres complets (type + dimensions + mode d'ajustement). Ignorez complètement si le message de l'utilisateur contient déjà les trois éléments.
Utilisez AskUserQuestion pour collecter les paramètres étape par étape.
Étape 2a — Type
AskUserQuestion([{
question: "Photo ou vidéo ?",
type: "single_select",
options: ["Photo", "Vidéo"]
}])
Étape 2b — Dimensions
Si Photo (multi_select — l'utilisateur peut en choisir un ou plusieurs) :
AskUserQuestion([{
question: "Dimensions — sélectionnez tout ce dont vous avez besoin",
type: "multi_select",
options: [
"1080 × 1080 — Carré Instagram",
"1080 × 1350 — Portrait Instagram",
"1080 × 1920 — Stories / Reels",
"1920 × 1080 — YouTube / paysage",
"1280 × 720 — Miniature YouTube",
"1200 × 675 — Post X / Twitter",
"1200 × 630 — Post Facebook / OG image",
"1080 × 566 — Post LinkedIn",
"2560 × 1440 — Bannière YouTube",
"3840 × 2160 — 4K / UHD",
"400 × 400 — Profil / avatar",
"2480 × 3508 — Impression A4 (300 ppp)",
"Personnalisé — Je vais le taper"
]
}])
Si l'utilisateur inclut "Personnalisé" → suivi : "Entrez vos dimensions personnalisées (par ex. 1500×800) :"
Si l'utilisateur sélectionne plusieurs préréglages → exécutez image_crop_and_resize une fois par dimension,
en utilisant la même URI source et les mêmes paramètres à chaque fois. Prévisualisez toutes les sorties ensemble à la fin.
Si Vidéo (multi_select — l'utilisateur peut en choisir un ou plusieurs) :
AskUserQuestion([{
question: "Dimensions — sélectionnez tout ce dont vous avez besoin",
type: "multi_select",
options: [
"1080 × 1920 — Reels / TikTok / Stories",
"1920 × 1080 — YouTube / paysage",
"1080 × 1080 — Post carré",
"1280 × 720 — YouTube 720p",
"3840 × 2160 — 4K / UHD",
"854 × 480 — SD / 480p",
"Personnalisé — Je vais le taper"
]
}])
Si l'utilisateur sélectionne plusieurs préréglages vidéo → soumettez un travail video_resize séparé par dimension,
suivez chacun jusqu'à son achèvement, prévisualisez toutes les sorties ensemble.
Étape 2c — Mode d'Ajustement
Si Photo (single_select) :
AskUserQuestion([{
question: "Mode d'ajustement",
type: "single_select",
options: [
"Recadrage — recadrer pour remplir",
"Bordure — letterbox, sans recadrage",
"Extraction — isoler le sujet"
]
}])
Si Vidéo (single_select) :
AskUserQuestion([{
question: "Mode d'ajustement",
type: "single_select",
options: [
"Letterbox — préserver le ratio",
"Recadrage — remplir, sans barres",
"Étirer — forcer exact (distorsion)"
]
}])
Étape 2d — Focus Intelligent (Photo uniquement)
AskUserQuestion([{
question: "Focus intelligent — où centrer le recadrage ?",
type: "single_select",
options: [
"Sujet",
"Visage / portrait",
"Haut du corps",
"Centre (géométrique)",
"Objet nommé — Je vais le décrire"
]
}])
Si l'utilisateur sélectionne "Objet nommé" → suivi : "Décrivez l'objet (par ex. 'la voiture rouge', 'le logo') :"
Étape 2e — Options (Photo uniquement)
AskUserQuestion([{
question: "Options supplémentaires ?",
type: "multi_select",
options: [
"Lot — plusieurs images",
"Sortie : JPEG",
"Sortie : PNG"
]
}])
Étape 2f — Source (Vidéo uniquement)
AskUserQuestion([{
question: "Où se trouve la vidéo ?",
type: "single_select",
options: [
"Uploader depuis l'appareil",
"Depuis Creative Cloud"
]
}])
Étape 3 — Obtenir le Fichier Source
Critique — Les chemins /mnt/user-data/uploads/ ne sont PAS des URLs utilisables.
Même lorsque l'utilisateur a joint un fichier et qu'il apparaît dans le contexte à un chemin /mnt/user-data/uploads/,
vous ne pouvez pas passer ce chemin à un outil Adobe. Appelez asset_add_file() pour étager le fichier — les chemins /mnt/user-data/uploads/ ne sont pas récupérables par les outils Adobe.
MAUVAIS ❌ imageURI : "/mnt/user-data/uploads/photo.jpg"
MAUVAIS ❌ imageURI : "file:///mnt/user-data/uploads/photo.jpg"
CORRECT ✅ appelez asset_add_file() → utilisez presignedAssetUrl du contexte du sélecteur
Aucun fichier encore → ouvrez immédiatement le sélecteur :
asset_add_file()
Détectez le type à partir du mediaType renvoyé :
image/*→ WORKFLOW IMAGEvideo/*→ WORKFLOW VIDÉO
Étape 4 — Résoudre les Dimensions Cibles
| L'utilisateur dit | Résoudre en |
|---|---|
1920×1080, 1920x1080 | largeur : 1920, hauteur : 1080 |
4K | 3840 × 2160 |
HD, 1080p | 1920 × 1080 |
720p | 1280 × 720 |
480p | 854 × 480 |
Impression A4 | 2480 × 3508 (300 PPP portrait) |
Impression Lettre | 2550 × 3300 (300 PPP portrait) |
16:9, 1:1, 4:5, 9:16 | chaîne de ratio → passez comme output: "16:9" |
carré | output: "1:1" |
Largeur seulement (800 px de large) | largeur : 800, utilisez une chaîne de ratio pour maintenir l'aspect |
Si aucune cible n'a été spécifiée dans le formulaire ET aucune dans le message de l'utilisateur → demandez :
"De quelles dimensions avez-vous besoin ? (par ex. 1920×1080, A4, 16:9)"
WORKFLOW IMAGE
Étape 5 (Image) — Sources URI Valides
Seules ces sources fonctionnent comme imageURI :
presignedAssetUrldeasset_add_file()✅outputUrld'un appel d'outil précédent ✅- URL HTTPS publique fournie par l'utilisateur ✅
Non utilisable comme imageURI :
- Chemins
/mnt/user-data/uploads/❌ renditionURLdeasset_searchdirectement ❌- URIs
file://❌
| Source | Résolution |
|---|---|
| Fichier uploadé | asset_add_file() → presignedAssetUrl |
| Fichier du stockage CC | asset_search → ré-étagerez via asset_add_file() → presignedAssetUrl |
| Sortie d'outil précédent | Utilisez outputUrl directement |
| Fichier PSD / AI | document_render_vector (JPEG, 300 PPP) → outputPresignedUrl |
Étape 6 (Image) — Mode d'Ajustement
| Intention | Mode | Notes |
|---|---|---|
| "redimensionner à LxH" / par défaut | reframe | Plus grand recadrage au ratio cible, centré — sans distorsion |
| "pas de recadrage", "letterbox", "ajuster à l'intérieur" | pad | Remplit l'espace vide avec du blanc |
| "isoler le sujet", "recadrage serré" | extract | Recadrage serré autour de la région détectée |
Par défaut : reframe. Changez seulement lorsque l'utilisateur est explicite.
⛔
fit : "extract"est incompatible avec un{ width, height }explicite — cela étire l'image. Utilisez une chaîne de ratio ou omettezoutput.
Étape 7 (Image) — Appeler image_crop_and_resize
image_crop_and_resize({
imageURI: presignedAssetUrl,
options: {
output: { width: 1920, height: 1080 }, // ou "16:9"
fit: "reframe",
focus: "subject", // ou "face", "upper_body", { prompt: "the car" }, { x:0.5, y:0.5 }
quality: 7
},
outputFileType: "jpeg" // ou "png" si transparence nécessaire
})
// result.outputUrl → utilisez pour la prévisualisation ou le chaînage
Guide de focus :
"subject"— par défaut ; détection corps entier, paysages, objets"face"— portraits, photos de visage"upper_body"— recadrages buste{ prompt : "le logo" }— objet nommé depuis le formulaire de l'utilisateur{ x: 0.5, y: 0.5 }— centre géométrique (aucun sujet clair)
Étape 8 (Image) — Lot
Si le lot a été sélectionné dans le formulaire OU l'utilisateur a fourni plusieurs fichiers :
- Appelez
asset_add_file()pour chaque fichier afin d'obtenir des URLs présignées individuelles - Appelez
image_crop_and_resizepour chacun avec les mêmes paramètres - Collectez toutes les valeurs
outputUrl - Appelez
asset_preview_fileavec toutes les sorties en un seul appel
Les appels s'exécutent séquentiellement dans cet environnement. Pour >10 images, confirmez avec l'utilisateur avant de commencer.
Pagination entre les tours (lots >20) : Pour les grands lots, le contexte de la conversation peut se remplir avant que toutes les images soient traitées, ce qui amène Claude à faire une pause au milieu du lot. C'est attendu — pas une erreur. Quand cela arrive :
- Indiquez combien ont été terminées et combien restent (par ex. "20 / 24 faites — dites 'continuer' pour le reste")
- Attendez que l'utilisateur confirme avant de reprendre
- À la reprise, reprenez à partir de l'image non traitée suivante et continuez jusqu'à la fin
- Prévisualisez toutes les sorties ensemble seulement après la dernière image terminée
Étape 9 (Image) — Prévisualiser + Livrer + Tableau Firefly
asset_preview_file({
assets: [
{ name: "photo_1920x1080.jpg", presignedAssetUrl: result.outputUrl },
// toutes les sorties réussies
]
})
Sauvegarder dans CC + Créer un Tableau Firefly
Après la prévisualisation, uploadez chaque sortie vers le stockage CC via le pipeline d'upload par blocs
(asset_initialize_file_upload → PUT chunk → asset_finalize_file_upload).
Appelez ensuite l'outil de tableau Firefly avec les URLs de sortie finalisées :
create_firefly_board({
import_adobe_storage: [
final_output_url_1,
final_output_url_2,
// ...
]
})
✅ Confirmé fonctionnel (Stage) :
import_adobe_storageavec URLs présignées deasset_finalize_file_uploadremplit avec succès les tableaux.❌ Ne fonctionne pas :
import_generic_assetsavec URNs CC (urn:aaid:sc:US:...) — le délai d'indexation USS provoque des tableaux vides.Si la création du tableau échoue ou que l'URL est malformée, omettez le lien du tableau (relancer n'aide pas).
Publiez le résumé d'achèvement après l'étape du tableau :
✅ Terminé ! [N] image(s) redimensionnée(s) et prête(s).
📥 Téléchargement :
• redimensionnee_1920x1080.jpg → <cc_storage_url>
[listez individuellement si N ≤ 3, ou un lien de dossier unique si N > 3]
🎨 Voir dans le tableau Firefly → <board_url> ← omettez si la création du tableau a échoué
WORKFLOW VIDÉO
Étape 5 (Vidéo) — Obtenir l'ID du Fichier
Les outils vidéo nécessitent assetId, pas une URL.
| Source | Comment |
|---|---|
Upload via asset_add_file | Utilisez le assetId renvoyé |
| Stockage CC | asset_search avec filters.mediaType : "video/mp4" → utilisez l'id du fichier |
Étape 6 (Vidéo) — Cibles Courantes
| Nom | Dimensions |
|---|---|
| 4K / UHD | 3840 × 2160 |
| 1080p / HD | 1920 × 1080 |
| 720p | 1280 × 720 |
| 480p | 854 × 480 |
| Vertical 9:16 | 1080 × 1920 |
| Carré 1:1 | 1080 × 1080 |
Étape 7 (Vidéo) — Appeler video_resize
⚠️
resizeVideoPollest un outil différé — chargez-le d'abord avant de tenter de suivre. Les appels directs sans chargement échoueront avec une erreur "not loaded".
video_resize({
assetId: videoAssetId,
width: targetW,
height: targetH,
mode: "letterbox" // par défaut ; voir tableau des modes ci-dessous
})
// Renvoie { jobStatus: "pending", statusId }
Mode — utilisez les valeurs exactes de l'API (pas les libellés visibles par l'utilisateur) :
| Ce que dit l'utilisateur | Valeur API | Comportement |
|---|---|---|
| "ajuster", "préserver le ratio", "letterbox" | "letterbox" | Préserve le ratio, ajoute des barres noires (par défaut) |
| "remplir", "recadrer pour remplir", "pas de barres" | "crop" | Recadre les bords pour remplir exactement la cible |
| "étirer", "forcer exact" | "stretch" | Déforme pour correspondre exactement à la cible |
ℹ️ Le recadrage automatique pour vidéo n'est pas encore disponible dans Claude, mais de nouveaux outils sont ajoutés régulièrement. Si vous avez besoin de plus de contrôle, essayez d'utiliser Adobe Premiere.
Suivi : chargez l'outil différé resizeVideoPoll avant de l'appeler — les appels directs échouent avec "not loaded".
// Étape 1 : chargez l'outil différé
// (exemple d'initialisation selon la documentation de l'agent)
Étape 8 (Vidéo) — Suivi du Travail
// Après avoir chargé l'outil différé :
resizeVideoPoll({ statusId: videoStatusId })
// Renvoie { status: "completed"|"failed"|"in_progress", assetId: videoAssetId }
Répétez jusqu'à ce que status soit "completed" ou "failed". Utilisez un délai raisonnable entre les tentatives.
Étape 9 (Vidéo) — Prévisualiser + Livrer + Tableau Firefly
asset_preview_file({
assets: [
{ name: "video_1920x1080.mp4", presignedAssetUrl: videoOutputUrl },
// toutes les vidéos redimensionnées
]
})
Sauvegarder dans CC + Créer un Tableau Firefly (identique au workflow image)
get_presigned_url_for_video(videoAssetId) // outil hypothétique — convertit assetId en URL
// Suivez le pipeline d'upload par blocs comme pour les images
✅ Terminé ! [N] vidéo(s) redimensionnée(s) et prête(s).
📥 Téléchargement :
• video_1920x1080.mp4 → <cc_storage_url>
🎨 Voir dans le tableau Firefly → <board_url>
Annotation des Outils pour le Moteur
{
"functionName": "asset_add_file",
"parameters": {},
"description": "Ouvre un sélecteur de fichier système. L'utilisateur sélectionne un fichier à uploader. Renvoie presignedAssetUrl, assetId, mediaType."
}
{
"functionName": "image_crop_and_resize",
"parameters": {
"imageURI": "URL du fichier image",
"options": {
"output": { "width": 1920, "height": 1080 },
"fit": "reframe | pad | extract",
"focus": "subject | face | upper_body | { prompt: 'keyword' } | { x: 0.5, y: 0.5 }",
"quality": 7
},
"outputFileType": "jpeg | png"
}
}
{
"functionName": "video_resize",
"parameters": {
"assetId": "ID du fichier vidéo",
"width": 1920,
"height": 1080,
"mode": "letterbox | crop | stretch"
}
}
{
"functionName": "resizeVideoPoll",
"parameters": {
"statusId": "ID de statut du travail"
}
}
{
"functionName": "asset_preview_file",
"parameters": {
"assets": [
{ "name": "output.jpg", "presignedAssetUrl": "url" }
]
}
}
{
"functionName": "document_render_vector",
"parameters": {
"assetId": "ID du fichier PSD/AI",
"format": "jpeg",
"dpi": 300,
"outputFormat" : "presigned"
}
}
{
"functionName": "create_firefly_board",
"parameters": {
"import_adobe_storage": ["url_finalisee_1", "url_finalisee_2"]
}
}
{
"functionName": "adobe_mandatory_init",
"parameters": {
"skill_name": "adobe-resize-photos-and-videos",
"skill_version": "1.0.1"
}
}
Notes Complémentaires
- Formats de fichiers vidéo : Testé avec
.mp4,.mov,.avi— peut ne pas fonctionner pour tous les codecs. - Limites de taille : L'API Adobe impose une taille de fichier maximale (vérifiez la documentation Adobe pour les limites actuelles).
- Redimensionnement par lots : Limité à ~20 fichiers par session en raison des limites de contexte. Pour de plus grands lots, divisez en plusieurs sessions.
- Dépannage : Si un appel d'outil échoue, vérifiez que l'URL source est bien une URL présignée et non un chemin local. Si
resizeVideoPolléchoue avec "not loaded", assurez-vous d'avoir chargé l'outil différé au préalable.