⚙️ Automatisation

automation-n8n-workflow-designer

Workflows d'automatisation avec n8n — nodes,

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- automation-n8n-workflow-designer --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } automation-n8n-workflow-designer -Launch"

🚀 Déjà installé ?

claude "/automation-n8n-workflow-designer"

Ou tapez /automation-n8n-workflow-designer dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

n8nworkflow n8nautomatisation open-sourcen8n self-hosted

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/automation-n8n-workflow-designer ~/.claude/skills/

Payload du plugin : skills/automation-n8n-workflow-designer · source éditable : automation-skills/n8n-workflow-designer

📖 Manuel

n8n Workflow Designer

Workflow en étapes

1. Choisir et déployer le mode d'exécution

Critères de décision :

ContexteMode recommandé
Prototype / dev localnpx n8n ou Docker simple
Prod mono-serveurDocker + PostgreSQL + reverse proxy
Prod haute dispon8n Queue Mode (Redis + workers)
Zéro opsn8n Cloud

Docker Compose minimal pour la prod :

services:
  n8n:
    image: n8nio/n8n:latest
    environment:
      - N8N_ENCRYPTION_KEY=<clé-aléatoire-32-chars>
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_DATABASE=n8n
      - DB_POSTGRESDB_USER=n8n
      - DB_POSTGRESDB_PASSWORD=<mot-de-passe>
      - WEBHOOK_URL=https://n8n.mondomaine.com/
      - N8N_BASIC_AUTH_ACTIVE=true
      - N8N_BASIC_AUTH_USER=admin
      - N8N_BASIC_AUTH_PASSWORD=<mot-de-passe>
      - EXECUTIONS_DATA_PRUNE=true
      - EXECUTIONS_DATA_MAX_AGE=168   # 7 jours
    volumes:
      - n8n_data:/home/node/.n8n
    ports:
      - "5678:5678"
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: n8n
      POSTGRES_USER: n8n
      POSTGRES_PASSWORD: <mot-de-passe>
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  n8n_data:
  postgres_data:
Ne jamais exposer le port 5678 directement sur Internet — passer par Nginx/Caddy avec TLS.

2. Concevoir l'architecture du workflow

Avant de cliquer dans l'éditeur, répondre à ces questions :

Squelette type :

[Trigger] → [Valider/Filtrer] → [Transformer] → [Action principale]
                                                      ↓ (error path)
                                              [Notifier erreur]

3. Configurer les credentials

Toujours passer par Settings → Credentials → New — jamais en dur dans un nœud Code.

# Tester une API Key manuellement avant de la sauvegarder :
curl -H "Authorization: Bearer <TOKEN>" https://api.exemple.com/me

Pour OAuth2 : renseigner N8N_EDITOR_BASE_URL correctement, sinon le callback échoue.


4. Assembler les nœuds

Nœuds clés et leurs usages :

NœudUsage typique
HTTP RequestAppel REST/GraphQL externe
Code (JS ou Python)Transformation complexe, logique métier
SetRenommer, ajouter, supprimer des champs
IF / SwitchRoutage conditionnel
Split In BatchesTraitement paginé / rate-limit safe
MergeRéunir deux branches (Inner Join, Left Join, etc.)
Execute WorkflowAppeler un sous-workflow réutilisable
WaitPause temporelle ou attente de webhook de confirmation

Expressions courantes :

// Accéder au champ d'un item courant
{{ $json.email }}

// Accéder à la sortie d'un nœud précis
{{ $node["HTTP Request"].json.data.id }}

// Timestamp ISO courant
{{ new Date().toISOString() }}

// Environnement / variable globale
{{ $env.MY_SECRET_VAR }}

5. Transformer les données avec le nœud Code

// Exemple : enrichir chaque item avec un champ calculé
for (const item of $input.all()) {
  item.json.fullName = `${item.json.firstName} ${item.json.lastName}`;
  item.json.processedAt = new Date().toISOString();
}
return $input.all();
# Python (n8n >= 1.0) — même logique
items = _input.all()
for item in items:
    item.json['fullName'] = f"{item.json['firstName']} {item.json['lastName']}"
return items
Limiter le nœud Code aux transformations sans effets de bord. Les appels HTTP → nœud HTTP Request.

6. Gérer les erreurs et la fiabilité

Pattern recommandé :

  1. Activer le Error Trigger (workflow dédié aux erreurs) → envoie un message Slack/email avec {{ $json.execution.url }}.
  2. Sur les nœuds critiques (HTTP Request, DB) : activer Retry On Fail (3 tentatives, délai exponentiel).
  3. Utiliser Stop and Error pour valider les préconditions :
// Dans un nœud IF ou Code — arrêt explicite si données manquantes
if (!$json.orderId) {
  throw new Error('orderId manquant — exécution annulée');
}
  1. Activer continueOnFail uniquement quand on veut traiter les erreurs item par item (boucle avec gestion locale).

7. Tester et itérer


8. Versionner et déployer

Export/import CLI :

# Exporter tous les workflows en JSON
n8n export:workflow --all --output=./workflows/

# Importer depuis un fichier
n8n import:workflow --input=./workflows/mon-workflow.json

Intégration Git (recommandé) :

Mise à jour n8n :

docker compose pull n8n && docker compose up -d n8n
# Vérifier les breaking changes dans https://docs.n8n.io/release-notes/

Garde-fous / Anti-patterns

Anti-patternRisqueAlternative
Credentials codés en dur dans CodeFuite de secrets dans les logs et exports JSONGestionnaire de credentials n8n
Workflow monolithique > 50 nœudsImpossible à debugger, pas réutilisableDécouper en sous-workflows (Execute Workflow)
Pas de gestion d'erreurÉchecs silencieux, données perduesError Trigger global + retry
SQLite en productionCorruption sous charge concurrentePostgreSQL
Traiter 10 000 items sans batchTimeout, consommation mémoireSplit In Batches (taille 50-200)
WEBHOOK_URL mal configuréOAuth callbacks cassés, webhooks non reçusVérifier WEBHOOK_URL = URL publique exacte
Pas de pruning des exécutionsDisque plein en quelques semainesEXECUTIONS_DATA_PRUNE=true + MAX_AGE
Mise à jour sans lire les release notesBreaking changes sur les expressionsToujours lire les notes avant docker pull

Bonnes pratiques 2026