Workflow n8n

Automatisation d'images avec n8n : génération de légendes AI

  • Ce workflow n8n est conçu pour automatiser le processus de génération de légendes d'images en utilisant le modèle Google Gemini. Dans un contexte où les entreprises cherchent à enrichir leur contenu visuel, ce workflow offre une solution efficace pour créer des légendes pertinentes et attrayantes. Il s'adresse particulièrement aux équipes marketing et de communication qui souhaitent optimiser leur production de contenu visuel tout en réduisant le temps consacré à cette tâche.
  • Le workflow débute avec un déclencheur manuel, permettant à l'utilisateur de lancer le processus à tout moment. Ensuite, le modèle Google Gemini est utilisé pour générer des légendes basées sur les images fournies. Les images sont ensuite traitées par plusieurs nœuds, notamment pour le redimensionnement et l'ajout de légendes. Le nœud 'Get Image' permet de récupérer l'image à partir d'une URL, tandis que les nœuds 'Resize For AI' et 'Apply Caption to Image' ajustent l'image et ajoutent la légende générée. Les nœuds de fusion, tels que 'Merge Image & Caption', combinent l'image et la légende pour créer un produit final cohérent.
  • Les bénéfices de ce workflow incluent une réduction significative du temps de création de contenu, une amélioration de l'engagement visuel et une capacité à produire des légendes adaptées à différents formats d'image. En intégrant ce type d'automatisation n8n, les entreprises peuvent non seulement gagner en efficacité, mais aussi améliorer la qualité de leur communication visuelle.
Tags clés :automatisationGoogle Geminiimagen8ncontent marketing
Catégorie: Manual · Tags: automatisation, Google Gemini, image, n8n, content marketing0

Workflow n8n Google Gemini, image, content marketing : vue d'ensemble

Schéma des nœuds et connexions de ce workflow n8n, généré à partir du JSON n8n.

Workflow n8n Google Gemini, image, content marketing : détail des nœuds

  • When clicking ‘Test workflow’

    Ce noeud déclenche manuellement l'exécution du workflow lorsque l'utilisateur clique sur 'Test workflow'.

  • Google Gemini Chat Model

    Ce noeud utilise le modèle de chat Google Gemini pour générer des réponses basées sur les options et le nom du modèle fournis.

  • Structured Output Parser

    Ce noeud analyse la sortie structurée en fonction d'un exemple de schéma JSON donné.

  • Get Info

    Ce noeud récupère des informations sur une image en fonction de l'opération spécifiée.

  • Resize For AI

    Ce noeud redimensionne une image pour l'adapter à des besoins spécifiques en utilisant la largeur, la hauteur et d'autres options.

  • Calculate Positioning

    Ce noeud exécute un code JavaScript pour calculer le positionnement en fonction du mode et du code fourni.

  • Apply Caption to Image

    Ce noeud applique une légende à une image en utilisant les options et les opérations spécifiées.

  • Sticky Note

    Ce noeud fusionne une image et une légende selon le mode et les options définis.

  • Merge Image & Caption

    Ce noeud fusionne des légendes et des positions d'images en utilisant le mode et les options spécifiés.

  • Merge Caption & Positions

    Ce noeud effectue une requête HTTP pour obtenir une image à partir de l'URL fournie.

  • Sticky Note1

    Ce noeud crée une note autocollante avec une couleur, une largeur, une hauteur et un contenu spécifiés.

  • Sticky Note2

    Ce noeud crée une deuxième note autocollante avec des paramètres de couleur, largeur, hauteur et contenu.

  • Sticky Note3

    Ce noeud crée une troisième note autocollante avec des spécifications de couleur, largeur, hauteur et contenu.

  • Sticky Note4

    Ce noeud crée une quatrième note autocollante avec une largeur, une hauteur et un contenu définis.

  • Image Captioning Agent

    Ce noeud exécute un agent de légendage d'image en utilisant le texte, les messages, le type de prompt et l'option de parser de sortie.

Inscris-toi pour voir l'intégralité du workflow

Inscription gratuite

S'inscrire gratuitementBesoin d'aide ?
{
  "meta": {
    "instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9"
  },
  "nodes": [
    {
      "id": "0b64edf1-57e0-4704-b78c-c8ab2b91f74d",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        480,
        300
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "a875d1c5-ccfe-4bbf-b429-56a42b0ca778",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1280,
        720
      ],
      "parameters": {
        "options": {},
        "modelName": "models/gemini-1.5-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "dSxo6ns5wn658r8N",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a5e00543-dbaa-4e62-afb0-825ebefae3f3",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1480,
        720
      ],
      "parameters": {
        "jsonSchemaExample": "{\n\t\"caption_title\": \"\",\n\t\"caption_text\": \"\"\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "bb9af9c6-6c81-4e92-a29f-18ab3afbe327",
      "name": "Get Info",
      "type": "n8n-nodes-base.editImage",
      "position": [
        1100,
        400
      ],
      "parameters": {
        "operation": "information"
      },
      "typeVersion": 1
    },
    {
      "id": "8a0dbd5d-5886-484a-80a0-486f349a9856",
      "name": "Resize For AI",
      "type": "n8n-nodes-base.editImage",
      "position": [
        1100,
        560
      ],
      "parameters": {
        "width": 512,
        "height": 512,
        "options": {},
        "operation": "resize"
      },
      "typeVersion": 1
    },
    {
      "id": "d29f254a-5fa3-46fa-b153-19dfd8e8c6a7",
      "name": "Calculate Positioning",
      "type": "n8n-nodes-base.code",
      "position": [
        2020,
        720
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "const { size, output } = $input.item.json;\n\nconst lineHeight = 35;\nconst fontSize = Math.round(size.height / lineHeight);\nconst maxLineLength = Math.round(size.width/fontSize) * 2;\nconst text = `\"${output.caption_title}\". ${output.caption_text}`;\nconst numLinesOccupied = Math.round(text.length / maxLineLength);\n\nconst verticalPadding = size.height * 0.02;\nconst horizontalPadding = size.width * 0.02;\nconst rectPosX = 0;\nconst rectPosY = size.height - (verticalPadding * 2.5) - (numLinesOccupied * fontSize);\nconst textPosX = horizontalPadding;\nconst textPosY = size.height - (numLinesOccupied * fontSize) - (verticalPadding/2);\n\nreturn {\n caption: {\n fontSize,\n maxLineLength,\n numLinesOccupied,\n rectPosX,\n rectPosY,\n textPosX,\n textPosY,\n verticalPadding,\n horizontalPadding,\n }\n}\n"
      },
      "typeVersion": 2
    },
    {
      "id": "12a7f2d6-8684-48a5-aa41-40a8a4f98c79",
      "name": "Apply Caption to Image",
      "type": "n8n-nodes-base.editImage",
      "position": [
        2380,
        560
      ],
      "parameters": {
        "options": {},
        "operation": "multiStep",
        "operations": {
          "operations": [
            {
              "color": "=#0000008c",
              "operation": "draw",
              "endPositionX": "={{ $json.size.width }}",
              "endPositionY": "={{ $json.size.height }}",
              "startPositionX": "={{ $json.caption.rectPosX }}",
              "startPositionY": "={{ $json.caption.rectPosY }}"
            },
            {
              "font": "/usr/share/fonts/truetype/msttcorefonts/Arial.ttf",
              "text": "=\"{{ $json.output.caption_title }}\". {{ $json.output.caption_text }}",
              "fontSize": "={{ $json.caption.fontSize }}",
              "fontColor": "#FFFFFF",
              "operation": "text",
              "positionX": "={{ $json.caption.textPosX }}",
              "positionY": "={{ $json.caption.textPosY }}",
              "lineLength": "={{ $json.caption.maxLineLength }}"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "4d569ec8-04c2-4d21-96e1-86543b26892d",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -120,
        80
      ],
      "parameters": {
        "width": 423.75,
        "height": 431.76353488372104,
        "content": "## Try it out!\n\n### This workflow takes an image and generates a caption for it using AI. The OpenAI node has been able to do this for a while but this workflow demonstrates how to achieve the same with other multimodal vision models such as Google's Gemini.\n\nAdditional, we'll use the Edit Image node to overlay the generated caption onto the image. This can be useful for publications or can be repurposed for copyrights and/or watermarks.\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n"
      },
      "typeVersion": 1
    },
    {
      "id": "45d37945-5a7a-42eb-8c8c-5940ea276072",
      "name": "Merge Image & Caption",
      "type": "n8n-nodes-base.merge",
      "position": [
        1620,
        400
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3
    },
    {
      "id": "53a26842-ad56-4c8d-a59d-4f6d3f9e2407",
      "name": "Merge Caption & Positions",
      "type": "n8n-nodes-base.merge",
      "position": [
        2200,
        560
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "combineBy": "combineByPosition"
      },
      "typeVersion": 3
    },
    {
      "id": "b6c28913-b16a-4c59-aa49-47e9bb97f86d",
      "name": "Get Image",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        680,
        300
      ],
      "parameters": {
        "url": "https://images.pexels.com/photos/1267338/pexels-photo-1267338.jpeg?auto=compress&cs=tinysrgb&w=600",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "6c25054d-8103-4be9-bea7-6c3dd47f49a3",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        340,
        80
      ],
      "parameters": {
        "color": 7,
        "width": 586.25,
        "height": 486.25,
        "content": "## 1. Import an Image \n[Read more about the HTTP request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest)\n\nFor this demonstration, we'll grab an image off Pexels.com - a popular free stock photography site - by using the HTTP request node to download.\n\nIn your own workflows, this can be replaces by other triggers such as webhooks."
      },
      "typeVersion": 1
    },
    {
      "id": "d1b708e2-31c3-4cd1-a353-678bc33d4022",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        140
      ],
      "parameters": {
        "color": 7,
        "width": 888.75,
        "height": 783.75,
        "content": "## 2. Using Vision Model to Generate Caption\n[Learn more about the Basic LLM Chain](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm)\n\nn8n's basic LLM node supports multimodal input by allowing you to specify either a binary or an image url to send to a compatible LLM. This makes it easy to start utilising this powerful feature for visual classification or OCR tasks which have previously depended on more dedicated OCR models.\n\nHere, we've simply passed our image binary as a \"user message\" option, asking the LLM to help us generate a caption title and text which is appropriate for the given subject. Once generated, we'll pass this text along with the image to combine them both."
      },
      "typeVersion": 1
    },
    {
      "id": "36a39871-340f-4c44-90e6-74393b9be324",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1880,
        280
      ],
      "parameters": {
        "color": 7,
        "width": 753.75,
        "height": 635,
        "content": "## 3. Overlay Caption on Image \n[Read more about the Edit Image node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.editimage)\n\nFinally, we’ll perform some basic calculations to place the generated caption onto the image. With n8n's user-friendly image editing features, this can be done entirely within the workflow!\n\nThe Code node tool is ideal for these types of calculations and is used here to position the caption at the bottom of the image. To create the overlay, the Edit Image node enables us to insert text onto the image, which we’ll use to add the generated caption."
      },
      "typeVersion": 1
    },
    {
      "id": "d175fe97-064e-41da-95fd-b15668c330c4",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2660,
        280
      ],
      "parameters": {
        "width": 563.75,
        "height": 411.25,
        "content": "**FIG 1.** Example input image with AI generated caption\n![Example Output](https://res.cloudinary.com/daglih2g8/image/upload/f_auto,q_auto/v1/n8n-workflows/l5xbb4ze4wyxwwefqmnc#full-width)"
      },
      "typeVersion": 1
    },
    {
      "id": "23db0c90-45b6-4b85-b017-a52ad5a9ad5b",
      "name": "Image Captioning Agent",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1280,
        560
      ],
      "parameters": {
        "text": "Generate a caption for this image.",
        "messages": {
          "messageValues": [
            {
              "message": "=You role is to provide an appropriate image caption for user provided images.\n\nThe individual components of a caption are as follows: who, when, where, context and miscellaneous. For a really good caption, follow this template: who + when + where + context + miscellaneous\n\nGive the caption a punny title."
            },
            {
              "type": "HumanMessagePromptTemplate",
              "messageType": "imageBinary"
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.4
    }
  ],
  "pinData": {},
  "connections": {
    "Get Info": {
      "main": [
        [
          {
            "node": "Merge Image & Caption",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Image": {
      "main": [
        [
          {
            "node": "Resize For AI",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Info",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resize For AI": {
      "main": [
        [
          {
            "node": "Image Captioning Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Positioning": {
      "main": [
        [
          {
            "node": "Merge Caption & Positions",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Merge Image & Caption": {
      "main": [
        [
          {
            "node": "Calculate Positioning",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge Caption & Positions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image Captioning Agent": {
      "main": [
        [
          {
            "node": "Merge Image & Caption",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Image Captioning Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Image Captioning Agent",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Merge Caption & Positions": {
      "main": [
        [
          {
            "node": "Apply Caption to Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Get Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Workflow n8n Google Gemini, image, content marketing : pour qui est ce workflow ?

Ce workflow s'adresse aux équipes marketing, aux créateurs de contenu et aux entreprises souhaitant automatiser la génération de légendes pour leurs images. Un niveau technique intermédiaire est recommandé pour la mise en place et l'adaptation du workflow.

Workflow n8n Google Gemini, image, content marketing : problème résolu

Ce workflow résout le problème de la création manuelle de légendes pour les images, un processus souvent long et répétitif. En automatisant cette tâche, il permet aux utilisateurs de gagner du temps tout en garantissant des légendes de qualité, adaptées au contenu visuel. Cela réduit également le risque d'erreurs humaines et améliore la cohérence des messages visuels diffusés par l'entreprise.

Workflow n8n Google Gemini, image, content marketing : étapes du workflow

Étape 1 : Le processus commence par un déclencheur manuel, permettant à l'utilisateur de tester le workflow.

  • Étape 1 : Le modèle Google Gemini génère des légendes pour les images fournies.
  • Étape 2 : Les images sont récupérées via le nœud 'Get Image'.
  • Étape 3 : Les images sont redimensionnées avec le nœud 'Resize For AI'.
  • Étape 4 : Les légendes sont appliquées aux images à l'aide du nœud 'Apply Caption to Image'.
  • Étape 5 : Les nœuds de fusion combinent l'image et la légende pour créer le produit final.
  • Étape 6 : Les résultats sont structurés et prêts à être utilisés.

Workflow n8n Google Gemini, image, content marketing : guide de personnalisation

Pour personnaliser ce workflow, vous pouvez modifier l'URL de l'image dans le nœud 'Get Image' pour utiliser vos propres images. Vous pouvez également ajuster les paramètres de redimensionnement dans le nœud 'Resize For AI' pour répondre à vos besoins spécifiques. Si vous souhaitez utiliser un autre modèle de génération de texte, remplacez le nœud 'Google Gemini Chat Model' par un autre modèle disponible dans n8n. Assurez-vous de tester le workflow après chaque modification pour garantir son bon fonctionnement.