Modèle GPT-4o-mini pour un générateur d'ouvertures d'e-mails froids
Ceci est unLead Generation, Multimodal AIworkflow d'automatisation du domainecontenant 10 nœuds.Utilise principalement des nœuds comme GoogleSheets, ManualTrigger, SplitInBatches, OpenAi. Générer des phrases d'ouverture pour e-mails froids personnalisés avec GPT-4O-mini et Google Sheets
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (10)
Catégorie
{
"id": "8yxaQbSKa73Naaoq",
"meta": {
"instanceId": "6dab325484db17217432bd17c46b16a74656e18b7a3b29fe24824c64123a2170",
"templateCredsSetupCompleted": true
},
"name": "Cold Email Icebreaker Generator With GPT 4o-mini Template",
"tags": [],
"nodes": [
{
"id": "6e508452-0193-4fc6-9762-a53d57b5a02a",
"name": "Lors du clic sur 'Exécuter le workflow'",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-32,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d564d4ce-92c9-4797-868a-697f8a5e9ecd",
"name": "Obtenir une/des ligne(s) dans la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
192,
0
],
"parameters": {
"sheetName": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultUrl": "",
"cachedResultName": ""
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "O1ZqVN7Ekj72TWzq",
"name": "Google Sheets account 2"
}
},
"executeOnce": false,
"typeVersion": 4.6
},
{
"id": "6574b56d-b207-48a5-bcf7-4f9d54332e52",
"name": "Envoyer un message à un modèle",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
624,
16
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "You are a data-to-JSON generator. \nYou must return ONLY a valid JSON object with no text before or after. \nDo not add explanations, line breaks, or commentary outside the JSON. \nStrict schema:\n\n{\n \"verdict\": \"true\" or \"false\",\n \"icebreaker\": \"string\",\n \"shortenedCompanyName\": \"string\"\n}\n"
},
{
"content": "=Your task is to write a natural, close, and spartan one-line icebreaker for a cold email. \nIt should feel like I’ve done my homework on the person — specific and genuine, not generic. \n\nOutput rules:\n- \"verdict\" = \"true\" if the input is a person, \"false\" if it’s a company. \n- \"icebreaker\" must: \n - Start with: \"Hey [firstName],\" \n - Use a natural “I love…” or “I really like…” structure, but go deeper than surface-level (highlight something real from their role, company, industry, or city). \n - Keep it casual, like talking to a friend — no hype, no formal language. \n - One line only. \n- End the icebreaker with a short, natural transition phrase like “wanted to run something by you” (or variations such as “thought I’d reach out” / “figured I’d connect”).\n- \"shortenedCompanyName\": shorten the company name (remove “Inc.”, “LLC”, “Agency”, etc). \n\nExamples: \nInput: \"Aina Rakotoarinaly, CEO founder - Maki Agency/Ti'bouffe, Maki Agency, outsourcing/offshoring, Antananarivo, Madagascar\" \nOutput: {\"verdict\":\"true\",\"icebreaker\":\"Hey Aina, I love how you’ve built Maki into a go-to shop for outsourcing in Antananarivo.\",\"shortenedCompanyName\":\"Maki\"}\n\nInput: \"Adam Greenwood, Visionary Agency Leader | Digital Strategy & AI | Middle East, UK and Global Markets, the human tech agency, information technology & services, Dubai, United Arab Emirates\" \nOutput: {\"verdict\":\"true\",\"icebreaker\":\"Hey Adam, I love how The Human Tech Agency mixes digital strategy with AI across global markets — super smart. Thought I’d reach out.\",\"shortenedCompanyName\":\"The Human Tech Agency\"}\n\nNow generate JSON for:\n{{ $json.firsName }} {{ $json.lastName }}, {{ $json.headline }}, {{ $json.industry }}, {{ $json.companyName }}, {{ $json.city }}, {{ $json.email }}"
}
]
},
"simplify": false,
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"id": "YyHV6eOJU0bKIPQK",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "0bcf09d1-f467-4578-9abf-981a24baddfe",
"name": "Boucler sur les éléments",
"type": "n8n-nodes-base.splitInBatches",
"position": [
416,
0
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "0d808a31-0bf6-4ec5-9491-2e02f805fc14",
"name": "Mettre à jour une ligne dans la feuille",
"type": "n8n-nodes-base.googleSheets",
"position": [
960,
16
],
"parameters": {
"columns": {
"value": {
"icebreaker": "={{ $json.choices[0].message.content.icebreaker }}",
"row_number": "={{ $('Get row(s) in sheet').item.json.row_number }}",
"shortenedCompanyName": "={{ $json.choices[0].message.content.shortenedCompanyName }}"
},
"schema": [
{
"id": "first_name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "first_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "last_name",
"type": "string",
"display": true,
"required": false,
"displayName": "last_name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "headline",
"type": "string",
"display": true,
"required": false,
"displayName": "headline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "companyName",
"type": "string",
"display": true,
"required": false,
"displayName": "companyName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "industry",
"type": "string",
"display": true,
"required": false,
"displayName": "industry",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "city",
"type": "string",
"display": true,
"required": false,
"displayName": "city",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "country",
"type": "string",
"display": true,
"required": false,
"displayName": "country",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "email",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "icebreaker",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "icebreaker",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "shortenedCompanyName",
"type": "string",
"display": true,
"required": false,
"displayName": "shortenedCompanyName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "linkedin_url",
"type": "string",
"display": true,
"required": false,
"displayName": "linkedin_url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R1PdKdw1UH1YCGOK94xPFlAM7Qqfkiz6sa7kihIsyX0/edit#gid=0",
"cachedResultName": "Hoja 1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "O1ZqVN7Ekj72TWzq",
"name": "Google Sheets account 2"
}
},
"typeVersion": 4.6
},
{
"id": "7e71ea4a-af5f-4bf8-8ef0-6fd76d7990b9",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-320
],
"parameters": {
"color": 4,
"width": 192,
"height": 272,
"content": "## Fetch Leads from Google Sheets\nPulls lead data from your Google Sheet. \nEach row should contain details like: \n- First name \n- Last name \n- Company name \n- Industry \n- City \n- (Any other fields you want to use for personalization) \n\n⚠️ Make sure your sheet has consistent columns with the lead information you need. \n"
},
"typeVersion": 1
},
{
"id": "b4b1fa0f-8f4e-4d82-941e-b01f1cf0d888",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
-320
],
"parameters": {
"width": 192,
"height": 272,
"content": "## Workflow Trigger\nThis workflow runs on-demand when you click **Execute Workflow**. \nUse it whenever you want to enrich your Google Sheet with fresh personalization for leads. \n"
},
"typeVersion": 1
},
{
"id": "c1310003-7c1c-43b1-af57-02ae1684836f",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
-320
],
"parameters": {
"color": 6,
"width": 288,
"height": 272,
"content": "## Generate Personalization with AI\nUses OpenAI to create two fields: \n- `icebreaker` → a short, natural, friendly opening line for your cold email. \n- `shortenedCompanyName` → a simplified company name (e.g. \"Mayo\" instead of \"Mayo Inc.\"). \n\nThe AI always returns results in structured JSON. \nThis makes it easy to map into your Google Sheet in the next step. \n\n💡 You can edit the prompt in this node to match your preferred tone and style, as well as for adding your own column names and fields.\n"
},
"typeVersion": 1
},
{
"id": "baefc452-c9d5-422c-acce-9c3444afbb37",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
-320
],
"parameters": {
"color": 5,
"width": 192,
"height": 272,
"content": "## Process Each Lead\nThis node loops through your sheet **one lead at a time**. \nThis prevents errors with Google Sheets or the AI model. \n\n✅ Ensures each lead gets its own personalized icebreaker and shortened company name. \n"
},
"typeVersion": 1
},
{
"id": "81fbe23c-c5d5-4900-9d11-a5251ebfba8c",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
912,
-320
],
"parameters": {
"color": 4,
"width": 192,
"height": 272,
"content": "## Save Results into Google Sheets\nWrites the AI-generated results back into your Google Sheet. \n\n- Map `icebreaker` to your sheet’s personalization column (or create one). \n- Map `shortenedCompanyName` to the column where you want to store shortened names. \n\n⚠️ Your sheet may have different column names — adjust mappings here to match your setup. \n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "955ec341-ea41-4da0-8ebf-83d56c571dbd",
"connections": {
"0bcf09d1-f467-4578-9abf-981a24baddfe": {
"main": [
[],
[
{
"node": "6574b56d-b207-48a5-bcf7-4f9d54332e52",
"type": "main",
"index": 0
}
]
]
},
"6574b56d-b207-48a5-bcf7-4f9d54332e52": {
"main": [
[
{
"node": "0d808a31-0bf6-4ec5-9491-2e02f805fc14",
"type": "main",
"index": 0
}
]
]
},
"d564d4ce-92c9-4797-868a-697f8a5e9ecd": {
"main": [
[
{
"node": "0bcf09d1-f467-4578-9abf-981a24baddfe",
"type": "main",
"index": 0
}
]
]
},
"0d808a31-0bf6-4ec5-9491-2e02f805fc14": {
"main": [
[
{
"node": "0bcf09d1-f467-4578-9abf-981a24baddfe",
"type": "main",
"index": 0
}
]
]
},
"6e508452-0193-4fc6-9762-a53d57b5a02a": {
"main": [
[
{
"node": "d564d4ce-92c9-4797-868a-697f8a5e9ecd",
"type": "main",
"index": 0
}
]
]
}
}
}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 - Génération de leads, 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
Rodrigo
@rodrigonzalezsyncraAI & automation consultant helping businesses streamline processes, generate leads, and scale faster with smart workflows. Founder of SyncraLabs, integrating AI with n8n to create practical, high-impact automations. Passionate about sharing knowledge through ready-to-use templates and community contributions.
Partager ce workflow