edit-meta-creative

Par markifact · markifact-mcp

Modifiez le contenu créatif d'une publicité Meta — URL de la page de destination, texte principal, titre, description, CTA, description du lien — sur une ou plusieurs publicités. À utiliser quand l'utilisateur dit « change l'URL de mes publicités », « mets à jour le texte », « remplace le CTA », ou toute modification de ce qu'affiche une publicité Meta existante. Meta n'autorise pas la modification directe des créatifs, donc cette commande exécute le workflow requis : get → modify → create → replace.

npx skills add https://github.com/markifact/markifact-mcp --skill edit-meta-creative

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)

  1. Nom du compte (substring) — requis.
  2. 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).
  3. 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.
  4. Mapping ancien → nouveau s'il s'agit d'une recherche et remplacement (ex. remplacer utm_campaign=spring par utm_campaign=summer, ou remplacer oldsite.com par newsite.com).

Flux de travail

  1. 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.
  2. Inspecter chacune avec get_operation_inputs.
  3. Résoudre le compte via meta_ads_select_accounts (substring).
  4. Résoudre la portée en une liste de ad_ids via meta_ads_list_ads avec 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.
  5. 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 nouveau creative_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.
  6. 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_approval si l'approbation est requise.
  7. 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) avec creative_only=true. Cela upload les nouveaux médias et retourne un creative_id sans créer une nouvelle annonce. Puis appelez meta_ads_replace_ad_creative pour l'attacher.
  • N'essayez pas d'uploader les médias à l'intérieur du payload patché — create_ad_creative ne les traitera pas.

Règles spécifiques à la plateforme que le modèle DOIT respecter

  • Le même ad_id survit 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_data et 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_creative rejette 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_*_ad avec creative_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. »

Skills similaires