Amélioration de qualité groupée de photos de portraits avec Real-ESRGAN AI, Google Drive et Airtable

Intermédiaire

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 12 nœuds.Utilise principalement des nœuds comme Code, Airtable, GoogleDrive, HttpRequest, ManualTrigger. Amélioration groupée de la qualité des photos de portraits avec Real-ESRGAN AI, Google Drive et Airtable

Prérequis
  • Clé API Airtable
  • Informations d'identification Google Drive API
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "9e721f64f4f5b8df656a4e0e1b663225a53ad0de7655a0878df9764d30956485",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "3a204dbb-8945-4fd1-8d09-9980a664128f",
      "name": "Lors du clic sur 'Exécuter le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1024,
        -848
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "1d9e1318-89b1-436f-abf1-0ea269f35644",
      "name": "Créer un dossier",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -768,
        -848
      ],
      "parameters": {
        "name": "=< Folder Name >",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "resource": "folder"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "AKldzSoqKzegF8kI",
          "name": "Vertical Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "f44f1434-e002-4478-bbd5-498dff5a8e40",
      "name": "Boucle sur les éléments",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -64,
        -848
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "af7d12c5-fd15-4ed3-8bf4-11901dc21f89",
      "name": "Téléverser vers Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "onError": "continueRegularOutput",
      "position": [
        832,
        -848
      ],
      "parameters": {
        "name": "={{ 'Upscaled_Picture' + $now.format('yyyy-MM-dd_HH-mm-ss') + '.png' }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $json.gdriveUploadFolderId }}"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "AKldzSoqKzegF8kI",
          "name": "Vertical Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "6bab8092-e2a1-4640-acf5-07e4e15d656f",
      "name": "Télécharger l'image suréchantillonnée",
      "type": "n8n-nodes-base.httpRequest",
      "onError": "continueRegularOutput",
      "position": [
        384,
        -928
      ],
      "parameters": {
        "url": "={{ $json.output }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "444a3467-8416-4dfd-ad89-1be387ea4613",
      "name": "Extraire les URL des portraits de la sortie Airtable",
      "type": "n8n-nodes-base.code",
      "position": [
        -288,
        -848
      ],
      "parameters": {
        "jsCode": "// N8N Code Node - Extract Portrait Photo URLs from Airtable Output\n\n// Input data from Airtable\nconst airtableData = $input.all()[0].json;\n\n// Get Google Drive folder ID from previous node\nconst folderId = $node[\"Create folder\"].json.id;\n\n// Extract URLs from PortraitFotoAuswahl array\nconst portraitUrls = [];\n\nif (airtableData.PortraitFotoAuswahl && Array.isArray(airtableData.PortraitFotoAuswahl)) {\n airtableData.PortraitFotoAuswahl.forEach((item, index) => {\n   if (item.url) {\n     portraitUrls.push({\n       index: index,\n       url: item.url,\n       filename: item.filename || `portrait_${index}`,\n       size: item.size || null,\n       width: item.width || null,\n       height: item.height || null,\n       gdriveUploadFolderId: folderId\n     });\n   }\n });\n}\n\n// Return array of URLs with folder ID\nreturn portraitUrls.map(item => ({\n json: {\n   url: item.url,\n   index: item.index,\n   filename: item.filename,\n   size: item.size,\n   width: item.width,\n   height: item.height,\n   gdriveUploadFolderId: item.gdriveUploadFolderId\n }\n}));"
      },
      "typeVersion": 2
    },
    {
      "id": "5868126e-c299-4574-9170-ce02655a59ad",
      "name": "Replicate Upscaler",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        160,
        -928
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"version\": \"nightmareai/real-esrgan:f121d640bd286e1fdc67f9799164c1d5be36ff74576ee11c803ae5b665dd46aa\",\n  \"input\": {\n    \"image\": \"{{ $json.url }}\",\n    \"scale\": 2,\n    \"face_enhance\": false\n  }\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "FovFPj60gDUn3HP0",
          "name": "Replicate"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "94532da7-1ca5-4d71-b906-677964f0490f",
      "name": "Définir l'ID du dossier de téléversement GDrive",
      "type": "n8n-nodes-base.code",
      "position": [
        608,
        -928
      ],
      "parameters": {
        "jsCode": "// Set Node JavaScript Code\nconst currentItem = $input.all()[0];\nconst loopData = $node[\"Loop Over Items\"].json;\n\nreturn [{\n  json: {\n    gdriveUploadFolderId: loopData.gdriveUploadFolderId,\n    originalFilename: loopData.filename,\n    originalIndex: loopData.index\n  },\n  binary: currentItem.binary\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "711fea9d-9b12-48cb-b66f-2fa75b014142",
      "name": "Note autocollante",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1568,
        -976
      ],
      "parameters": {
        "color": 4,
        "width": 304,
        "height": 368,
        "content": "## Information\n\nThis Node will Upscale Multiple Pictures from A Dataspace in Airtable \n\n1. it will create A folder in Drive\n2. it will take pictures stored in the airtable Dataspace\n3. It will run over Items to upscale in Replicate the pictures\n4. It will store the pictures in Drive\n\nPlease Upload the Pictures in Airtable in a column: PortraitFotoAuswahl "
      },
      "typeVersion": 1
    },
    {
      "id": "97297413-8022-4966-8117-944edf4736fc",
      "name": "Obtenir l'enregistrement depuis Pictures",
      "type": "n8n-nodes-base.airtable",
      "position": [
        -496,
        -848
      ],
      "parameters": {
        "id": "=< enter Record ID >",
        "base": {
          "__rl": true,
          "mode": "id",
          "value": ""
        },
        "table": {
          "__rl": true,
          "mode": "id",
          "value": ""
        },
        "options": {}
      },
      "credentials": {
        "airtableTokenApi": {
          "id": "yPMIQY5qCFGtB5FX",
          "name": "Book your fantasy Airtable"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "45e45d37-8afc-48a2-ab4b-557b985c9741",
      "name": "Note autocollante 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -576,
        -960
      ],
      "parameters": {
        "height": 352,
        "content": "## Enter Record from Stored Data\n"
      },
      "typeVersion": 1
    },
    {
      "id": "73b660f8-f518-42d8-8970-234a956f412a",
      "name": "Note autocollante 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        -960
      ],
      "parameters": {
        "height": 352,
        "content": "##  Add Folder Name"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "1d9e1318-89b1-436f-abf1-0ea269f35644": {
      "main": [
        [
          {
            "node": "97297413-8022-4966-8117-944edf4736fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f44f1434-e002-4478-bbd5-498dff5a8e40": {
      "main": [
        [],
        [
          {
            "node": "5868126e-c299-4574-9170-ce02655a59ad",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6bab8092-e2a1-4640-acf5-07e4e15d656f": {
      "main": [
        [
          {
            "node": "94532da7-1ca5-4d71-b906-677964f0490f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5868126e-c299-4574-9170-ce02655a59ad": {
      "main": [
        [
          {
            "node": "6bab8092-e2a1-4640-acf5-07e4e15d656f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "af7d12c5-fd15-4ed3-8bf4-11901dc21f89": {
      "main": [
        [
          {
            "node": "f44f1434-e002-4478-bbd5-498dff5a8e40",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "97297413-8022-4966-8117-944edf4736fc": {
      "main": [
        [
          {
            "node": "444a3467-8416-4dfd-ad89-1be387ea4613",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "94532da7-1ca5-4d71-b906-677964f0490f": {
      "main": [
        [
          {
            "node": "af7d12c5-fd15-4ed3-8bf4-11901dc21f89",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3a204dbb-8945-4fd1-8d09-9980a664128f": {
      "main": [
        [
          {
            "node": "1d9e1318-89b1-436f-abf1-0ea269f35644",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "444a3467-8416-4dfd-ad89-1be387ea4613": {
      "main": [
        [
          {
            "node": "f44f1434-e002-4478-bbd5-498dff5a8e40",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Intermédiaire - Création de contenu, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Générer des listes de produits Shopify à partir d'images avec Gemini AI et Airtable
Utiliser Gemini AI et Airtable pour générer une liste de produits Shopify à partir d'images
If
Set
Code
+
If
Set
Code
33 NœudsMANISH KUMAR
Création de contenu
Publication automatique de carrousel Google Drive vers Instagram (avec notification via Cloudinary et Telegram)
Créer des publications carrousel Instagram depuis Google Drive avec Cloudinary et envoyer des rappels Telegram
Set
Code
Wait
+
Set
Code
Wait
17 NœudsRobert Schröder
Réseaux sociaux
En direct - Automatisation de la création et de la publication de vidéos virales AI avec Gemini et Creatomate
Utiliser Gemini et Creatomate pour automatiser la création de vidéos IA et leur publication multiplateforme
Set
Code
Wait
+
Set
Code
Wait
47 NœudsIntuz
Création de contenu
Automatisation de la création de contenu viral avec OpenAI, ElevenLabs et Fal.ai pour les vidéos, les podcasts et l'ASMR
Automatiser la création de contenu viral pour la vidéo, les podcasts et l'ASMR avec OpenAI, ElevenLabs et Fal.ai
Set
Code
Wait
+
Set
Code
Wait
97 NœudsAdam Crafts
Création de contenu
Mon concours communautaire de l'arène des agents
Construire un système de questions-réponses basé sur RAG avec Qdrant, Mistral OCR et GPT-4
Set
Code
Wait
+
Set
Code
Wait
41 NœudsDavide
Création de contenu
Extraction de données de feuilles de temps avec Mistral OCR et vérification humaine via Gmail
Extraire des données de feuilles de temps avec Mistral OCR et vérification manuelle via Gmail
Set
Code
Gmail
+
Set
Code
Gmail
32 NœudsRajeet Nair
Création de contenu
Informations sur le workflow
Niveau de difficulté
Intermédiaire
Nombre de nœuds12
Catégorie2
Types de nœuds7
Description de la difficulté

Adapté aux utilisateurs expérimentés, avec des workflows de complexité moyenne contenant 6-15 nœuds

Auteur
Robert Schröder

Robert Schröder

@saits

I'm a self-taught n8n automation specialist from Zürich with 2 years of intensive experience building complex workflows. My focus lies in creating practical, production-ready workflows that solve real business challenges - from AI-powered content generation to data management and process automation. Each workflow I share reflects tested, optimized solutions that deliver measurable results.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34