Skip to content
Back to skills

N8n Workflow Designer

ASecurity

Workflows d'automatisation avec n8n — nodes, triggers, credentials, déploiement self-hosted, intégrations SaaS et bonnes pratiques de fiabilité. Se déclenche avec "n8n", "workflow n8n", "automatisation open-source", "n8n self-hosted". Also triggers on "n8n workflow", "self-hosted automation", "n8n nodes".

  • 27 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 18, 2026
ai-agentspythonbashsqlnodeexpressdockergitapidatabase

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add khalilbenaz/claude-skills-collection --skill n8n-workflow-designer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of N8n Workflow Designer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for N8n Workflow Designer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khalilbenaz-n8n-workflow-designer/badge)](https://www.skillsdirectory.com/skills/khalilbenaz-n8n-workflow-designer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: n8n-workflow-designer
description: Workflows d'automatisation avec n8n — nodes, triggers, credentials, déploiement self-hosted, intégrations SaaS et bonnes pratiques de fiabilité. Se déclenche avec "n8n", "workflow n8n", "automatisation open-source", "n8n self-hosted". Also triggers on "n8n workflow", "self-hosted automation", "n8n nodes".
---

# n8n Workflow Designer

## Workflow en étapes

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

**Critères de décision :**

| Contexte | Mode recommandé |
|---|---|
| Prototype / dev local | `npx n8n` ou Docker simple |
| Prod mono-serveur | Docker + PostgreSQL + reverse proxy |
| Prod haute dispo | n8n Queue Mode (Redis + workers) |
| Zéro ops | n8n Cloud |

**Docker Compose minimal pour la prod :**

```yaml
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 :

- **Trigger** : Webhook (push), Cron (pull périodique), ou événement applicatif (ex. n8n trigger interne) ?
- **Volume** : traitement unitaire ou batch ? Si > 100 items → prévoir `Split In Batches`.
- **Idempotence** : que se passe-t-il si le workflow tourne deux fois avec les mêmes données ? Ajouter une vérification de doublon si nécessaire.
- **Branchements** : IF (2 branches), Switch (n branches), Merge (rejoindre des branches parallèles).

**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œud | Usage typique |
|---|---|
| `HTTP Request` | Appel REST/GraphQL externe |
| `Code` (JS ou Python) | Transformation complexe, logique métier |
| `Set` | Renommer, ajouter, supprimer des champs |
| `IF` / `Switch` | Routage conditionnel |
| `Split In Batches` | Traitement paginé / rate-limit safe |
| `Merge` | Réunir deux branches (Inner Join, Left Join, etc.) |
| `Execute Workflow` | Appeler un sous-workflow réutilisable |
| `Wait` | Pause temporelle ou attente de webhook de confirmation |

**Expressions courantes :**

```js
// 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

```js
// 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
# 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 :

```js
// 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');
}
```

4. Activer `continueOnFail` uniquement quand on veut traiter les erreurs item par item (boucle avec gestion locale).

---

### 7. Tester et itérer

- Utiliser **Pin Data** sur un nœud pour fixer des données de test sans ré-exécuter le trigger.
- Inspecter chaque nœud dans le panneau Output — vérifier la structure JSON exacte avant de câbler le nœud suivant.
- Tester les cas limites : liste vide, champ null, rate limit déclenché.
- Valider le comportement du Error Trigger en forçant une erreur volontaire (`throw new Error('test')`).

---

### 8. Versionner et déployer

**Export/import CLI :**

```bash
# 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é) :**
- Activer **Source Control** (Settings → Source Control) pour push/pull natif vers Git.
- Committer chaque modification significative avec un message descriptif.
- Séparer les branches `dev` / `prod` et valider en staging avant merge.

**Mise à jour n8n :**

```bash
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-pattern | Risque | Alternative |
|---|---|---|
| Credentials codés en dur dans Code | Fuite de secrets dans les logs et exports JSON | Gestionnaire de credentials n8n |
| Workflow monolithique > 50 nœuds | Impossible à debugger, pas réutilisable | Découper en sous-workflows (`Execute Workflow`) |
| Pas de gestion d'erreur | Échecs silencieux, données perdues | Error Trigger global + retry |
| SQLite en production | Corruption sous charge concurrente | PostgreSQL |
| Traiter 10 000 items sans batch | Timeout, consommation mémoire | `Split In Batches` (taille 50-200) |
| WEBHOOK_URL mal configuré | OAuth callbacks cassés, webhooks non reçus | Vérifier `WEBHOOK_URL` = URL publique exacte |
| Pas de pruning des exécutions | Disque plein en quelques semaines | `EXECUTIONS_DATA_PRUNE=true` + `MAX_AGE` |
| Mise à jour sans lire les release notes | Breaking changes sur les expressions | Toujours lire les notes avant `docker pull` |

---

## Bonnes pratiques 2026

- **Queue Mode** pour la scalabilité : ajouter des workers n8n indépendants derrière Redis — les webhooks et les exécutions sont découplés.
- **Variables d'environnement** pour les valeurs qui changent entre envs (URLs, timeouts) — éviter les valeurs en dur dans les nœuds Set.
- **Sous-workflows réutilisables** : extraire la logique commune (authentification, formatage de date, notification d'erreur) en workflows partagés appelés par `Execute Workflow`.
- **Monitoring** : brancher les logs n8n sur un agrégateur (Loki, Datadog) et alerter sur les exécutions en statut `error` ou `crashed`.
- **Limiter les permissions des credentials** : utiliser des tokens API avec scope minimal (lecture seule si possible).

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.