21 juil. 2025

21 juil. 2025

21 juil. 2025

Rédiger et envoyer automatiquement un message d’ajout personnalisé sur LinkedIn aux fondateurs de nouvelles entreprises

🎯 Objectif du workflow

Rédiger et envoyer automatiquement un message d’ajout personnalisé sur LinkedIn aux fondateurs de nouvelles entreprises, en utilisant la description de leur profil LinkedIn.

jsonCopierModifier{
  "body": {
    "company": {
      "linkedin_url": "https://linkedin.com/in/nomutilisateur",
      "linkedin_description": "Consultant passionné par l’innovation",
      "linkedin_scoring": "90"
    }
  }
}

🧱 Étapes détaillées du workflow

1. 🔔 Déclencheur

📍 Noeud : Webhook

  • Type : POST

  • Ce webhook reçoit les données d’une nouvelle entreprise identifiée via JeunePousse (ex. nom, scoring, description LinkedIn, etc.).

jsonCopierModifier{
  "body": {
    "company": {
      "linkedin_url": "https://linkedin.com/in/nomutilisateur",
      "linkedin_description": "Consultant passionné par l’innovation",
      "linkedin_scoring": "90"
    }
  }
}

2. 🧹 Filtrer les entreprises pertinentes

📍 Noeud : Filter

  • Objectif : ne garder que les entreprises avec un linkedin_scoring élevé (90 ou 100).

  • Conditions :

    • linkedin_scoring contient "90" OU

    • linkedin_scoring contient "100"

3. 🤖 Agent LangChain / GPT

📍 Noeud : AI Agent (LangChain Agent)

Tu es un agent de prospection LinkedIn.
Ton objectif est de rédiger un message d’ajout personnalisé et engageant.
Voici le contexte : l’entreprise de ce prospect vient tout juste d’être créée.
Utilise la description de son profil LinkedIn pour personnaliser ton approche.
Sois concis, professionnel et humain à la fois. Pas besoin de mentionner que tu as vu son profil ou que tu veux « élargir ton réseau  ».
Tu peux exprimer ta curiosité, proposer un échange futur ou simplement féliciter.

Description LinkedIn à utiliser :
{{ $json.body.company.linkedin_description }}

📍 Noeud lié : OpenAI Chat Model

  • Utilise gpt-4o-mini

  • Sert à alimenter le prompt de l’AI Agent

4. 🧠 Extraction de l’identifiant LinkedIn

📍 Noeud : Code

javascriptCopierModifierreturn items.map(item => {
  const url = item.json.company?.linkedin_url || '';
  const match = url.match(/linkedin\.com\/in\/([^\/?#]+)/i);
  
  return {
    json: {
      identifiant_linkedin: match ? match[1] : null,
      url_valide: !!match
    }
  };
});

5. 🔎 Appel à l'API Unipile pour enrichir les données

📍 Noeud : HTTP Request3

  • Requête GET vers l'API Unipile pour enrichir les données du contact LinkedIn

  • URL construite avec identifiant_linkedin

6. 📩 Envoi de la demande d'ajout

📍 Noeud : HTTP Request4

  • Méthode : POST vers l’API users/invite d’Unipile

  • Corps de la requête :

jsonCopierModifier{
  "provider_id": "{{ $json.provider_id }}",
  "account_id": "********",
  "message": "<Message généré par l’agent>"
}

Plus d’infos sur Unipile

📝 Cas d’usage pratique

  1. JeunePousse détecte une nouvelle entreprise et envoie un POST au webhook n8n.

  2. L’entreprise est filtrée par score LinkedIn.

  3. Le profil LinkedIn est analysé pour générer un message personnalisé de connexion.

  4. Le slug LinkedIn est extrait.

  5. Un appel Unipile enrichit le profil si besoin.

  6. Un message est automatiquement envoyé via l’API Unipile.

💡 Conseils d’améliorationConseils d’amélioration

  • Ajouter un Set pour historiser le nom de l’entreprise et la date de traitement.

  • Sauvegarder dans un Google Sheet ou Airtable tous les messages envoyés.

  • Ajouter une vérification pour éviter les doublons (via identifiant_linkedin).

  • Ajouter un webhook de retour pour suivre les acceptations ou réponses.

WORKFLOW n8n A COPIER/COLLER

{
  "name": "My workflow 3",
  "nodes": [
    {
      "parameters": {
        "promptType": "define",
        "text": "=Tu es un agent de prospection LinkedIn.\nTon objectif est de rédiger un message d’ajout personnalisé et engageant.\nVoici le contexte : l’entreprise de ce prospect vient tout juste d’être créée.\nUtilise la description de son profil LinkedIn pour personnaliser ton approche.\nSois concis, professionnel et humain à la fois. Pas besoin de mentionner que tu as vu son profil ou que tu veux « élargir ton réseau ».\nTu peux exprimer ta curiosité, proposer un échange futur ou simplement féliciter.\n\nDescription LinkedIn à utiliser :\n{{ $json.body.company.linkedin_description }}",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 2,
      "position": [
        1180,
        0
      ],
      "id": "67772fbb-eca6-4be0-aa57-589c4e3a4201",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [
        1120,
        200
      ],
      "id": "1c4dd9e6-0ff2-47de-99b6-2c8c889eccdc",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "id": "bTmxfWJbFX2e8VL9",
          "name": "OpenAi account 2"
        }
      }
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "ebd93c3f-76a6-4d49-82de-34f6e90584fc",
              "leftValue": "={{ $json.body.company.linkedin_scoring }}",
              "rightValue": "90",
              "operator": {
                "type": "string",
                "operation": "contains"
              }
            },
            {
              "id": "22ed65df-0367-4961-be4d-7544355bbe92",
              "leftValue": "={{ $json.body.company.linkedin_scoring }}",
              "rightValue": "100",
              "operator": {
                "type": "string",
                "operation": "contains"
              }
            }
          ],
          "combinator": "or"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.filter",
      "typeVersion": 2.2,
      "position": [
        920,
        0
      ],
      "id": "25d448db-6341-41bd-abeb-64ec2cf5b3a9",
      "name": "Filter"
    },
    {
      "parameters": {
        "content": "## Agent Linkedin Jeunepousse\n",
        "height": 620,
        "width": 1420,
        "color": 4
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        600,
        -200
      ],
      "id": "e89ea9e6-7a88-41e6-8e58-5c8c7cac0404",
      "name": "Sticky Note"
    },
    {
      "parameters": {
        "content": "Envoi de la demande d’ajout 🤝 via unipile : unipile.com",
        "height": 80,
        "width": 180,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        1720,
        300
      ],
      "id": "3b73f5dc-e0fb-4e7b-a25f-de54cfc86841",
      "name": "Sticky Note3"
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "6f357677-24c6-4876-8b3e-7f8209aa296d",
        "options": {}
      },
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        680,
        0
      ],
      "id": "4083dab0-8c56-4c2b-93cd-eb311ab63374",
      "name": "Webhook",
      "webhookId": "6f357677-24c6-4876-8b3e-7f8209aa296d"
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api1-.unipile.com:11111/api/v1/users/invite",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-KEY",
              "value": "******************"
            },
            {
              "name": "accept",
              "value": "application/json"
            },
            {
              "name": "content-type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "provider_id",
              "value": "={{ $json.provider_id }}"
            },
            {
              "name": "account_id",
              "value": "=************"
            },
            {
              "name": "message",
              "value": "="
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1760,
        120
      ],
      "id": "c0e669dc-b4cd-4054-b36e-f7165f6367c4",
      "name": "HTTP Request4",
      "alwaysOutputData": true
    },
    {
      "parameters": {
        "url": "=https://api16.unipile.com:14679/api/v1/users/{{ $json.identifiant_linkedin }}?linkedin_sections=%2A&account_id=*****",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-KEY",
              "value": "***************************"
            },
            {
              "name": "accept",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "bodyParameters": {
          "parameters": [
            {}
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        1760,
        -160
      ],
      "id": "dc4e1984-6f1b-46ab-a526-18abde170cd7",
      "name": "HTTP Request3"
    },
    {
      "parameters": {
        "content": "Récupération des nouvelles entreprises créées via JeunePousse.co",
        "height": 100,
        "width": 180,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        660,
        160
      ],
      "id": "4edf23dc-9f54-4d90-accf-51cc7f44a7c7",
      "name": "Sticky Note4"
    },
    {
      "parameters": {
        "content": "Filtrage des entreprises avec un profil LinkedIn",
        "height": 80,
        "width": 180,
        "color": 3
      },
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        880,
        160
      ],
      "id": "19de6bde-7069-4523-a375-2e2629b04bd3",
      "name": "Sticky Note5"
    },
    {
      "parameters": {
        "jsCode": "return items.map(item => {\n  const url = item.json.company?.linkedin_url || '';\n  const match = url.match(/linkedin\\.com\\/in\\/([^\\/?#]+)/i);\n  \n  return {\n    json: {\n      identifiant_linkedin: match ? match[1] : null,\n      url_valide: !!match\n    }\n  };\n});\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1540,
        0
      ],
      "id": "8dee1f17-c948-4aac-b453-b949018e7c57",
      "name": "Code"
    }
  ],
  "pinData": {},
  "connections": {
    "AI Agent": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Filter": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Webhook": {
      "main": [
        [
          {
            "node": "Filter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request4": {
      "main": [
        []
      ]
    },
    "HTTP Request3": {
      "main": [
        [
          {
            "node": "HTTP Request4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "HTTP Request3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "c120b397-b175-4272-85b9-1f904244d047",
  "meta": {
    "templateCredsSetupCompleted": true,
    "instanceId": "9dee12df844381439a70dd379f6ba42db52f05a4418537c99f051fe5852e5b31"
  },
  "id": "D1EZAVZh5KHzjGcE",
  "tags": []
}