webflow-mcp:bulk-cms-update

Par webflow · webflow-skills

Créez ou mettez à jour plusieurs éléments CMS dans une collection Webflow avec validation et aperçu des différences. À utiliser pour ajouter plusieurs articles de blog, produits, ou mettre à jour des champs sur de nombreux éléments.

npx skills add https://github.com/webflow/webflow-skills --skill webflow-mcp:bulk-cms-update

Mise à jour en masse CMS

Créer ou mettre à jour plusieurs éléments CMS avec validation complète, approbation granulaire et capacité de restauration.

Note importante

UTILISEZ TOUJOURS les outils Webflow MCP pour toutes les opérations :

  • Utilisez data_sites_tool de Webflow MCP avec l'action list_sites pour lister les sites disponibles
  • Utilisez data_cms_tool de Webflow MCP avec l'action get_collection_list pour lister les collections CMS
  • Utilisez data_cms_tool de Webflow MCP avec l'action get_collection_details pour récupérer les schémas de collection
  • Utilisez data_cms_tool de Webflow MCP avec l'action list_collection_items pour récupérer les éléments existants
  • Utilisez data_cms_tool de Webflow MCP avec l'action create_collection_items pour créer des éléments (brouillon ou publiés)
  • Utilisez data_cms_tool de Webflow MCP avec l'action update_collection_items pour mettre à jour des éléments (brouillon ou publiés)
  • Utilisez data_cms_tool de Webflow MCP avec l'action publish_collection_items pour publier les éléments en brouillon
  • Utilisez webflow_guide_tool pour obtenir les meilleures pratiques avant de commencer
  • N'UTILISEZ PAS d'autres outils ou méthodes pour les opérations Webflow
  • Tous les appels d'outils doivent inclure le paramètre context requis (15-25 mots, perspective à la troisième personne)

Instructions

Phase 1 : Sélection du site et de la collection

  1. Obtenir le site : Identifier le site cible. Si l'utilisateur ne fournit pas l'ID du site, le demander.
  2. Lister les collections : Utilisez data_cms_tool de Webflow MCP avec l'action get_collection_list pour afficher les collections disponibles
  3. Demander à l'utilisateur de sélectionner une collection : L'utilisateur spécifie la collection avec laquelle travailler
  4. Récupérer le schéma de collection : Utilisez data_cms_tool de Webflow MCP avec l'action get_collection_details pour récupérer :
    • Toutes les définitions de champs avec types
    • Champs obligatoires vs optionnels
    • Validations de champs (longueur max, motifs, etc.)
    • Cibles de champs de référence

Phase 2 : Collecte et analyse des données

  1. Demander le type d'opération : Clarifier ce que l'utilisateur souhaite faire :

    • Créer uniquement de nouveaux éléments
    • Mettre à jour uniquement les éléments existants
    • Créer et mettre à jour
  2. Recevoir les données de l'utilisateur : Accepter les données dans des formats flexibles :

    • Format structuré (style JSON)
    • Descriptions en langage naturel
    • Données de style CSV
    • Listes à puces
  3. Analyser et normaliser : Convertir les données utilisateur en format structuré

  4. Récupérer les éléments existants (si des mises à jour sont impliquées) : Utilisez data_cms_tool de Webflow MCP avec l'action list_collection_items pour obtenir les données actuelles

    IMPORTANT - Recherche efficace d'éléments :

    • Lors de la recherche d'éléments spécifiques par nom, UTILISEZ TOUJOURS le paramètre name pour filtrer (par ex., name: "Pikachu")
    • Lors de la recherche par slug, utilisez le paramètre slug pour filtrer
    • NE récupérez JAMAIS tous les éléments en premier puis ne les recherchez dans les résultats - cela gaspille les appels API et les tokens
    • Ne récupérez la liste complète que si vous devez afficher tous les éléments ou ne savez pas quels éléments cibler

Phase 3 : Validation et analyse

  1. Valider toutes les données :
    • Noms de champs : Vérifier que tous les noms de champs existent dans le schéma
    • Champs obligatoires : S'assurer que tous les champs obligatoires sont fournis
    • Types de champs : Valider que les types de données correspondent au schéma
    • Contraintes : Vérifier les longueurs max, les motifs, les valeurs autorisées
    • Slugs : S'assurer que les slugs sont uniques et valides
    • Champs de référence : Vérifier que les éléments référencés existent
  2. Détecter les conflits :
    • Slugs en double (dans le lot ou avec les éléments existants)
    • Champs obligatoires manquants
    • Types de données invalides
    • Violations de contraintes
  3. Analyser l'impact :
    • Compter les créations vs les mises à jour
    • Identifier les champs qui changeront
    • Calculer la taille du lot et le temps de traitement

Phase 4 : Aperçu et approbation granulaire

  1. Générer un aperçu détaillé :
    • Afficher chaque élément avec le statut de validation
    • Afficher les avertissements pour tout problème
    • Pour les mises à jour, afficher les différences (ancien → nouveau)
    • Pour les créations, afficher toutes les valeurs de champs
    • Numéroter chaque élément pour l'approbation sélective
  2. Présenter les options d'approbation granulaire :
    • Permettre à l'utilisateur de sélectionner des éléments spécifiques à traiter
    • Options : « all » (tous), « none » (aucun), numéros spécifiques, plages de numéros
    • Afficher le temps de traitement estimé
  3. Offrir des options de publication :
    • Publier immédiatement (utiliser les endpoints *_live)
    • Créer comme brouillons (utiliser les endpoints standard + publication manuelle)

Phase 5 : Exécution et rapports

  1. Stocker les données de restauration : Avant tout changement, enregistrer :
    • Les valeurs originales de tous les éléments mis à jour
    • Horodatage
    • Détails de l'opération
  2. Traiter par lots :
    • Maximum 50 éléments par lot
    • Afficher un indicateur de progression
    • Gérer les limites de débit avec élégance
  3. Exécuter les opérations : Utiliser les outils Webflow MCP appropriés selon le choix de l'utilisateur
  4. Gérer les erreurs avec élégance :
    • Continuer le traitement en cas d'échec d'un élément
    • Suivre les succès et les échecs séparément
    • Fournir des messages d'erreur détaillés
  5. Générer un rapport complet :
    • Résumé (nombre de succès/échecs)
    • Résultats détaillés par élément
    • IDs d'éléments pour les éléments créés/mis à jour
    • Détails d'erreur pour les éléments en échec
  6. Offrir l'option de restauration : Permettre à l'utilisateur d'annuler les modifications si nécessaire

Exemples

Demande utilisateur :

Ajouter 2 articles de blog sur Webflow MCP et mettre à jour le premier article pour dire "Top" au lieu de "Best"

Étape 1 : Sélection du site et de la collection

📋 Configuration de la mise à jour en masse CMS

Sites disponibles :
1. MCP Demo#1
2. MCP Demo#2
3. MCP Demo#3

Veuillez sélectionner un site (1-3) :

L'utilisateur sélectionne : 1

Collections disponibles dans MCP Demo#1 :
└── Blog Posts (9 éléments)
    Champs : name, slug, post-body, post-summary, main-image, thumbnail-image, featured, color

Continuer avec la collection Blog Posts ? (yes/no)

L'utilisateur confirme : yes

Étape 2 : Collecte des données

🔍 Schéma de collection : Blog Posts

Champs obligatoires :
- name (PlainText, max 256 caractères)
- slug (PlainText, max 256 caractères, alphanumériques uniquement)

Champs optionnels :
- post-body (RichText)
- post-summary (PlainText)
- main-image (Image)
- thumbnail-image (Image)
- featured (Switch, true/false)
- color (Color, format hex)

Je vais analyser votre demande :
- Créer 2 nouveaux articles sur Webflow MCP
- Mettre à jour le premier article : "Best" → "Top"

Génération des éléments...

Étape 3 : Validation et aperçu

📋 Aperçu : Mise à jour en masse CMS

Collection : Blog Posts
Opérations : Créer 2 éléments + Mettre à jour 1 élément

---

### 🆕 Éléments à créer (2)

[1] ✓ NOUVEL ARTICLE
    name: "Webflow MCP: The Future of Web Development"
    slug: "webflow-mcp-future-web-development"
    post-summary: "Découvrez comment Webflow MCP révolutionne..."
    post-body: "<h1>The Future is Here</h1><p>..."
    featured: true
    color: "#9B59B6"
    ✅ Toutes les validations sont passées

[2] ✓ NOUVEL ARTICLE
    name: "Why Webflow MCP Will Transform Your Workflow in 2026"
    slug: "webflow-mcp-transform-workflow-2026"
    post-summary: "Découvrez comment l'intégration Webflow MCP..."
    post-body: "<h1>Transform Your Workflow</h1><p>..."
    featured: true
    color: "#3498DB"
    ✅ Toutes les validations sont passées

---

### ✏️ Éléments à mettre à jour (1)

[3] ✓ MISE À JOUR EXISTANTE
    ID d'élément : 69615f84fc6ce1aa444d24d5
    Slug : why-webflow-is-best-2026-ai

    Modifications :
      name: "Why Webflow is the Best Choice for 2026" → "Why Webflow is the Top Choice for 2026"

    ✅ Toutes les validations sont passées

---

**Résumé :**
- ✅ 2 éléments seront créés
- ✅ 1 élément sera mis à jour
- ⚠️ 0 avertissement
- ❌ 0 erreur

**Options de publication :**
1. Publier immédiatement (recommandé)
2. Enregistrer comme brouillons

Quels éléments souhaitez-vous traiter ?
- Tapez « all » pour traiter les 3 éléments
- Tapez des numéros à ignorer (par ex., « 2 » pour ignorer l'élément 2)
- Tapez « none » pour annuler

Sélectionner l'option de publication (1/2) : _
Sélectionner les éléments : _

L'utilisateur sélectionne : 1, all

⚠️ Vous êtes sur le point de :
- Créer 2 nouveaux articles de blog (publiés en direct)
- Mettre à jour 1 article de blog existant (modifications publiées en direct)

Tapez « confirm » pour continuer.

L'utilisateur confirme : confirm

Étape 4 : Exécution et résultats

🔄 Traitement de la mise à jour en masse...

Création d'éléments : ██████████ 100% (2/2)
Mise à jour d'éléments : ██████████ 100% (1/1)

✅ Mise à jour en masse CMS terminée !

---

### 🆕 Éléments créés (2)

✓ [1] "Webflow MCP: The Future of Web Development"
      ID : 6961640c66de07bed9aacf3e
      Slug : webflow-mcp-future-web-development
      Publié : 9 janv. 2026, 20:24

✓ [2] "Why Webflow MCP Will Transform Your Workflow in 2026"
      ID : 6961640c66de07bed9aacf41
      Slug : webflow-mcp-transform-workflow-2026
      Publié : 9 janv. 2026, 20:24

---

### ✏️ Éléments mis à jour (1)

✓ [3] "Why Webflow is the Top Choice for 2026"
      ID : 69615f84fc6ce1aa444d24d5
      Modifié : titre mis à jour
      Publié : 9 janv. 2026, 20:24

---

**Résumé :**
- ✅ 2 éléments créés avec succès
- ✅ 1 élément mis à jour avec succès
- ❌ 0 échec
- ⏱️ Complété en 3,2 secondes

**Total d'éléments :** 11 (était 9)

📋 Restauration disponible :
Dernière mise à jour : 3 éléments modifiés à l'instant
Tapez « undo » dans les 5 minutes pour annuler tous les changements

Alternative : Avec avertissements de validation

📋 Aperçu : Mise à jour en masse CMS

[1] ⚠️ NOUVEL ARTICLE
    name: "Test Post"
    slug: "test"
    post-summary: "Salut"
    ⚠️ Avertissement : post-summary trop court (< 20 caractères) - peut affecter le SEO
    ⚠️ Avertissement : slug trop générique - envisagez un slug plus descriptif
    ⚠️ Avertissement : post-body manquant - le contenu sera vide
    ✅ Champs obligatoires présents (peut continuer)

[2] ❌ NOUVEL ARTICLE
    name: "Another Post!!!"
    slug: "another post"
    ❌ Erreur : slug contient des espaces (doit être alphanumériques avec tirets uniquement)
    ❌ Erreur : name contient des caractères spéciaux non autorisés
    🔴 Impossible de continuer - corrigez d'abord les erreurs

---

**Résumé :**
- ✅ 1 élément peut être créé (avec avertissements)
- ❌ 1 élément comporte des erreurs (impossible de créer)

Corriger l'élément 2 ou l'ignorer ? (fix/skip)

Directives

Phase 1 : Exigences critiques

Sélection du site et de la collection :

  • Toujours récupérer la liste réelle des sites en utilisant data_sites_tool avec l'action list_sites
  • Ne jamais supposer les IDs de sites
  • Afficher les noms des collections et les nombres d'éléments
  • Afficher le schéma de champs avant d'accepter les données
  • Confirmer la sélection de la collection avec l'utilisateur

Phase 2 : Analyse des données

Formats d'entrée flexibles : Accepter les données dans plusieurs formats :

  1. Structuré (style JSON) :
    
    CREATE:
  • name: "Post Title" slug: "post-slug" featured: true
  1. Langage naturel :

    "Ajouter un article de blog appelé 'Démarrage' avec slug 'demarrage'"
  2. Style CSV :

    name,slug,featured
    "Post 1","post-1",true
    "Post 2","post-2",false
  3. Listes à puces :

  • Post 1 : "Title" (slug: title-slug)
  • Post 2 : "Another" (slug: another-slug)

Règles d'analyse :

  • Être flexible avec les variations de format
  • Déduire les champs optionnels manquants
  • Demander une clarification si ambigu
  • Ne jamais supposer les valeurs des champs obligatoires

Recherche efficace d'éléments : Lors de la récupération d'éléments existants pour les mises à jour, utiliser les paramètres de filtre pour minimiser les appels API :

# Bon - Filtrer par nom quand vous connaissez le nom de l'élément
data_cms_tool(action: "list_collection_items", collection_id, name: "Pikachu")

# Bon - Filtrer par slug quand vous connaissez le slug
data_cms_tool(action: "list_collection_items", collection_id, slug: "pikachu")

# Mauvais - Récupérer tous les éléments puis les rechercher dans les résultats
data_cms_tool(action: "list_collection_items", collection_id)  # Retourne 100 éléments
# Puis recherche manuelle de "Pikachu" dans les résultats...
  • UTILISEZ TOUJOURS les paramètres name ou slug lors de la recherche d'éléments spécifiques
  • Cela réduit les appels API, la taille de la réponse et l'utilisation des tokens
  • Ne récupérez la liste non filtrée que si vous devez afficher tous les éléments ou quand la cible est inconnue

Phase 3 : Règles de validation

Validation des noms de champs :

  • Vérifier que tous les noms de champs existent dans le schéma
  • Correspondance sensible à la casse
  • Suggérer des corrections pour les fautes de frappe
  • Exemple : « autor » → Vouliez-vous dire « author » ?

Champs obligatoires :

  • name et slug sont TOUJOURS obligatoires pour Webflow CMS
  • Vérifier les champs obligatoires spécifiques à la collection à partir du schéma
  • Lister clairement tous les champs obligatoires manquants
  • Impossible de continuer si les champs obligatoires manquent

Validation des types de champs :

PlainText :

  • Vérifier les contraintes de longueur max
  • Valider les motifs s'ils sont spécifiés
  • Aucun HTML autorisé

RichText :

  • Doit être du HTML valide
  • Vérifier les balises non fermées
  • Autoriser les éléments HTML courants

Image/Fichier :

  • Accepter les IDs de fichier ou les URLs
  • Valider que le fichier existe (si possible)
  • Texte alternatif optionnel

Switch (Booléen) :

  • Accepter : true/false, yes/no, 1/0
  • Normaliser en booléen

Color :

  • Doit être au format hex (#RRGGBB)
  • Valider les caractères hex
  • Exemple : #FF5733 ✓, red ✗

Champs de référence :

  • Doivent référencer les IDs d'éléments existants
  • Valider que les éléments référencés existent
  • Afficher les noms d'éléments référencés pour plus de clarté

Validation du slug :

  • CRITIQUE : Doit être alphanumériques avec tirets uniquement
  • Pas d'espaces, traits de soulignement ou caractères spéciaux
  • Max 256 caractères
  • Doit être unique (vérifier dans l'existant + lot)
  • Suggestion automatique de slugs à partir des titres si manquant
  • Exemple :
    • ❌ "My Post!" → ⚠️ Contient des caractères spéciaux
    • ✅ "my-post" → Valide

Validation des contraintes :

  • Longueur max : Avertir si approche limite, erreur si dépasse
  • Motifs : Tester les motifs regex du schéma
  • Valeurs autorisées : Vérifier par rapport aux options énumérées

Phase 4 : Aperçu et approbation

Format d'aperçu :

Pour les opérations de création :

[1] ✓ NOUVEL ARTICLE
    champ1 : "valeur1"
    champ2 : "valeur2"
    champ3 : "valeur3"
    ✅ Toutes les validations sont passées

Pour les opérations de mise à jour :

[2] ✓ MISE À JOUR EXISTANTE
    ID d'élément : xxx
    Slug : slug-existant

    Modifications :
      champ1 : "ancienne valeur" → "nouvelle valeur"
      champ2 : (sans changement)
      champ3 : "ancien" → "nouveau"

    ✅ Toutes les validations sont passées

Pour les éléments avec avertissements :

[3] ⚠️ NOUVEL ARTICLE
    name: "Title"
    ⚠️ Avertissement : Champ optionnel manquant « post-body »
    ⚠️ Avertissement : Le slug peut être trop générique
    ✅ Peut continuer (avertissements uniquement)

Pour les éléments avec erreurs :

[4] ❌ NOUVEL ARTICLE
    name: "Title!!!"
    slug: "bad slug"
    ❌ Erreur : slug contient des espaces
    ❌ Erreur : name a des caractères spéciaux
    🔴 Impossible de continuer - doit corriger les erreurs

Approbation granulaire :

  • Numéroter chaque élément : [1], [2], [3]...
  • Permettre le traitement sélectif
  • Accepter les formats :
    • « all » - traiter tous
    • « none » - annuler l'opération
    • « 1,3,5 » - traiter les éléments 1, 3 et 5
    • « 1-5 » - traiter les éléments 1 à 5
    • « 2 » - ignorer uniquement l'élément 2, traiter le reste

Options de publication :

  • Publication immédiate : Utiliser les endpoints *_live (recommandé)
  • Mode brouillon : Utiliser les endpoints standard, publier plus tard
  • Expliquer les implications de chaque choix

Phase 5 : Exécution et rapports

Traitement par lots :

  • Maximum 50 éléments par lot
  • Afficher la barre de progression :
    Traitement : ████████░░ 80% (40/50 éléments)
  • Temps estimé restant
  • Gérer les limites de débit (pause/retry)

Gestion des erreurs :

Pour les échecs d'éléments individuels :

Traitement de l'élément 3/10...
❌ Échec : "Post Title"
   Erreur : Le slug existe déjà
   → Passage à l'élément suivant

Continuer le traitement :

  • Ne pas échouer le lot entier pour une erreur
  • Suivre tous les succès et les échecs
  • Rapporter séparément

Pour les échecs critiques :

❌ Erreur critique : Connexion API perdue

Éléments traités avant l'erreur : 7/50
- 5 créés avec succès
- 2 mis à jour avec succès
- 43 non traités

Réessayer les éléments en échec ? (yes/no)

Format du rapport de succès :

✅ Opération terminée

Créés : 25 éléments
- Afficher les 5 premiers avec IDs
- « [+20 autres] » si > 5

Mis à jour : 10 éléments
- Afficher les 5 premiers avec IDs
- « [+5 autres] » si > 5

Échoués : 2 éléments
- "Item Name" : Raison de l'erreur
- "Item Name" : Raison de l'erreur

Temps total : 12,5 secondes
Éléments par seconde : 2,8

Capacité de restauration :

Stocker avant les modifications :

{
  "timestamp": "2026-01-09T20:24:44Z",
  "operations": [
    {
      "type": "update",
      "itemId": "xxx",
      "originalValues": {
        "name": "Old Title",
        "featured": false
      },
      "newValues": {
        "name": "New Title",
        "featured": true
      }
    }
  ]
}

Offrir la restauration :

📋 Restauration disponible :
Dernière mise à jour : 15 éléments modifiés il y a 2 minutes

La restauration va :
- Restaurer 10 éléments mis à jour aux valeurs précédentes
- Supprimer 5 éléments nouvellement créés

⚠️ Tapez « undo » pour restaurer tous les changements
⚠️ La restauration expire dans 3 minutes

Optimisation des performances

Taille du lot :

  • Par défaut : 50 éléments par lot
  • Ajuster selon la complexité des champs
  • Images lourdes : 20 éléments par lot
  • Champs de texte simples : 100 éléments par lot

Indicateurs de progression :

Création d'éléments...
Lot 1/3 : ████████████████████ 100% (50/50)
Lot 2/3 : ████████████████████ 100% (50/50)
Lot 3/3 : ██████░░░░░░░░░░░░░░ 30% (15/50)

Limitation de débit :

  • Respecter les limites de débit de l'API Webflow
  • Pause entre les lots si nécessaire
  • Expliquer à l'utilisateur pourquoi attendre
  • Réessayer automatiquement les requêtes en échec (max 3 tentatives)

Messages d'erreur

Clairs et exploitables :

Mauvais :

"Erreur : validation échouée"

Bon :

"Erreur de validation sur l'élément 3 :
 - Le slug « my post » contient des espaces
 - Changer en : « my-post » (alphanumériques avec tirets uniquement)"

Catégories d'erreurs :

  • 🔴 Critique : Impossible de continuer du tout (API down, auth invalide)
  • Erreur : Cet élément ne peut pas être traité (corriger ou ignorer)
  • ⚠️ Avertissement : Peut continuer mais non recommandé (champs optionnels manquants)
  • 💡 Suggestion : Meilleures pratiques (slug trop générique, résumé trop court)

Meilleures pratiques

Toujours :

  • ✅ Afficher l'aperçu avant tout changement
  • ✅ Nécessiter une confirmation explicite
  • ✅ Valider complètement toutes les données
  • ✅ Traiter par lots pour les opérations importantes
  • ✅ Rapporter les succès et les échecs séparément
  • ✅ Offrir la restauration pour les changements récents
  • ✅ Utiliser l'approbation granulaire pour plus de flexibilité

Jamais :

  • ❌ Appliquer des changements sans confirmation utilisateur
  • ❌ Échouer le lot entier pour l'erreur d'un seul élément
  • ❌ Supposer les noms de champs ou les valeurs
  • ❌ Traiter sans valider d'abord
  • ❌ Cacher les avertissements de validation à l'utilisateur

Cas limites :

  • Slugs en double : Ajouter automatiquement un nombre (post-title-2)
  • Champs optionnels manquants : Laisser vide (ne pas inventer les valeurs)
  • Lots importants : Avertir sur le temps de traitement
  • Champs de référence : Valider que les cibles existent
  • Champs image : Accepter les URLs ou les IDs de fichier

Expérience utilisateur :

  • Afficher le schéma de collection en premier
  • Numéroter les éléments pour faciliter la référence
  • Utiliser la hiérarchie visuelle (├── └──)
  • Fournir des messages d'erreur exploitables
  • Estimer le temps de traitement
  • Permettre l'annulation en cours de traitement

Skills similaires