Objectif
Appliquer un changement de contenu créatif à une ou plusieurs annonces Meta existantes sans perdre l'apprentissage, les limites de fréquence, l'engagement de l'annonce ou l'ID de l'annonce. Le même ad_id continue à s'exécuter avec un nouveau créatif attaché.
La réalité de Meta que cette commande existe pour gérer
Meta n'autorise pas la modification sur place du contenu créatif (URL, texte, titre, image, CTA). La seule façon de modifier le créatif d'une annonce existante est :
get_ad_creative → modify payload locally → create_ad_creative → replace_ad_creative
Toute autre approche (supprimer + recréer l'annonce) détruit l'apprentissage, les limites de fréquence, les preuves sociales (likes/commentaires) et casse tout lien que les gens ont avec le post de l'annonce. Utilisez toujours replace_ad_creative — jamais supprimer-et-recréer pour un changement de créatif.
Entrées à confirmer (lot)
- Nom du compte (substring) — requis.
- Portée — requise. L'une des options :
- ID(s) d'annonce unique(s).
- Toutes les annonces d'une campagne / ensemble d'annonces (par nom ou ID).
- Toutes les annonces actives du compte correspondant à un filtre (ex. status=ACTIVE).
- Quoi modifier — requis. Exemples :
- URL de la page de destination (la modification en masse la plus courante).
- Texte principal / titre / description / description du lien.
- Bouton d'appel à l'action.
- Lien d'affichage / lien profond.
- Mapping ancien → nouveau s'il s'agit d'une recherche et remplacement (ex. remplacer
utm_campaign=springparutm_campaign=summer, ou remplaceroldsite.comparnewsite.com).
Flux de travail
- Découvrir les ops :
meta_ads_select_accounts,meta_ads_list_ads,meta_ads_list_adsets,meta_ads_list_campaigns,meta_ads_get_ad_creative,meta_ads_create_ad_creative,meta_ads_replace_ad_creative. - Inspecter chacune avec
get_operation_inputs. - Résoudre le compte via
meta_ads_select_accounts(substring). - Résoudre la portée en une liste de
ad_ids viameta_ads_list_adsavec les bons filtres (campagne, ensemble d'annonces, statut). Afficher à l'utilisateur la liste des annonces et le nombre avant de faire quoi que ce soit. - Pour chaque annonce dans la portée :
a.
meta_ads_get_ad_creative(ad_id)→ retourne le payload créatif brut. b. Modifier le payload localement selon le changement demandé. Préserver tous les champs que l'utilisateur n'a pas demandé de modifier. Champs courants à patcher :object_story_spec.link_data.link(URL pour les annonces de lien/image unique)object_story_spec.link_data.message(texte principal)object_story_spec.link_data.name(titre)object_story_spec.link_data.description(description du lien)object_story_spec.link_data.call_to_action.value.link(lien CTA)object_story_spec.link_data.call_to_action.type(type de bouton CTA, ex.LEARN_MORE,SHOP_NOW)- Pour les annonces vidéo :
object_story_spec.video_data.* - Pour le carrousel : chaque élément sous
object_story_spec.link_data.child_attachments[]c.meta_ads_create_ad_creative(modified_payload)→ retourne le nouveaucreative_id. Fonctionne uniquement quand le média existant (image_hash / video_id) est réutilisé. Si l'utilisateur veut aussi intégrer des nouveaux médias qui ne sont pas déjà dans Meta, voir « Nouveaux médias » ci-dessous. d.meta_ads_replace_ad_creative(ad_id, creative_id)→ attache le nouveau créatif.
- Construire un aperçu de diff avant l'exécution. Afficher à l'utilisateur un tableau de chaque annonce avec ancien → nouveau pour chaque champ modifié. Attendre la confirmation explicite. Puis exécuter tous les remplacements, regroupés dans un seul
request_human_approvalsi l'approbation est requise. - Confirmer : nombre de succès, nombre d'échecs (avec raison), liste des nouveaux
creative_ids.
Utiliser safe-write-operations pour les étapes 5c, 5d et 6.
Nouveaux médias (image/vidéo que l'utilisateur veut intégrer)
meta_ads_create_ad_creative s'attend à des médias qui existent déjà dans Meta en tant que image_hash ou video_id. Si l'utilisateur veut de nouveaux médias :
- Chemin le plus facile : utiliser l'op dédié
meta_ads_create_*_ad(ex.meta_ads_create_single_image_ad) aveccreative_only=true. Cela upload les nouveaux médias et retourne uncreative_idsans créer une nouvelle annonce. Puis appelezmeta_ads_replace_ad_creativepour l'attacher. - N'essayez pas d'uploader les médias à l'intérieur du payload patché —
create_ad_creativene les traitera pas.
Règles spécifiques à la plateforme que le modèle DOIT respecter
- Le même
ad_idsurvit au remplacement. Les limites de fréquence, l'apprentissage, les preuves sociales (likes/commentaires/partages), les permaliens — tout est préservé. Informer l'utilisateur de cela. - Le remplacement est un créatif par annonce. Vous ne pouvez pas attacher le même nouveau créatif à plusieurs annonces en un seul appel — faites une boucle annonce par annonce.
- Les changements créatifs importants peuvent réinitialiser légèrement l'apprentissage. Meta garde généralement l'annonce en apprentissage si le créatif change substantiellement (ex. nouvelle image + nouveau texte). Les changements d'URL uniquement et les modifications mineures de copie ne déclenchent généralement pas de réinitialisation. Avertir l'utilisateur quand le changement est majeur.
- Ne supprimez pas puis ne recréez pas. Cela perd tout et c'est ce que cette commande existe pour prévenir.
- Annonces carrousel : la modification doit gérer le tableau
child_attachments— patcher le bon index, ne remplacez pas le tableau entier sauf si l'utilisateur veut que chaque carte soit modifiée. - Annonces de catalogue (DPA) : le créatif est piloté par un modèle à partir du catalogue de produits — pour changer les URLs, vous modifiez généralement le flux du catalogue, pas le créatif. Vérifier si l'annonce utilise
template_dataet diriger l'utilisateur pour corriger le flux à la place. - Certains champs ne sont pas modifiables même avec ce flux (ex.
object_story_spec.page_id— pour changer de Page, vous devez créer une nouvelle annonce). Si l'utilisateur le demande, le dire.
Modes d'échec et récupération
create_ad_creativerejette le payload → cause la plus courante est le référencement de médias non présents dans ce compte. Demander à l'utilisateur d'uploader d'abord l'asset dans le compte ou utiliser l'op dédiécreate_*_adaveccreative_only=true.- L'annonce utilise
template_data(catalogue/DPA) → informer l'utilisateur que les URLs proviennent du flux de produits ; proposer d'aider à mettre à jour le flux du catalogue à la place. - Le remplacement échoue pour une seule annonce dans un lot → continuer avec les autres, signaler les échecs séparément à la fin.
Sortie à l'utilisateur
Avant exécution — tableau de diff :
| Annonce | Champ | Avant | Après |
|---|---|---|---|
| Spring Promo - Image 1 (123) | link | …/spring | …/summer |
| Spring Promo - Image 2 (124) | link | …/spring | …/summer |
Après exécution — résultat :
| Statut | Nombre |
|---|---|
| Remplacées | <n> |
| Ignorées (feed modèle) | <n> |
| Échouées | <n> |
Terminer par : « Toutes les annonces mises à jour conservent leurs ID d'annonce originaux, leurs limites de fréquence et leur engagement. Aucune réinitialisation d'apprentissage n'est attendue pour les changements d'URL uniquement. »