Générer des descriptions de modèles n8n à partir de Google Drive

Avancé

Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 27 nœuds.Utilise principalement des nœuds comme Code, Gmail, GoogleDrive, GoogleSheets, ManualTrigger. Utiliser Azure GPT-4 pour générer des descriptions de modèles depuis Google Drive

Prérequis
  • Compte Google et informations d'identification Gmail API
  • Informations d'identification Google Drive API
  • Informations d'identification Google Sheets API
  • Clé API OpenAI
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
{
  "id": "zX0SNUBqlonCm9UQ",
  "meta": {
    "instanceId": "8443f10082278c46aa5cf3acf8ff0f70061a2c58bce76efac814b16290845177",
    "templateCredsSetupCompleted": true
  },
  "name": "Generate n8n template descriptions from Google Drive",
  "tags": [],
  "nodes": [
    {
      "id": "ddb41538-8446-4938-9233-7475b5a63fbb",
      "name": "Lors du clic sur 'Exécuter le workflow'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -688,
        -64
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
      "name": "Extraire du fichier",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        208,
        -192
      ],
      "parameters": {
        "options": {},
        "operation": "fromJson"
      },
      "typeVersion": 1
    },
    {
      "id": "5e02aa21-b341-489c-82fb-feacb0747b13",
      "name": "Télécharger le fichier",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -16,
        -192
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "id",
          "value": "={{$json[\"id\"]}}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "E7nEqUL27GUx1xHa",
          "name": "Techdome Account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "016bff72-bd86-4eba-9c10-86853cd102cc",
      "name": "Rechercher des fichiers et dossiers",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -464,
        -64
      ],
      "parameters": {
        "filter": {
          "folderId": {
            "__rl": true,
            "mode": "list",
            "value": "1HP3LnTPLwe81xUrp0P6aV2nJKdX6BIcM",
            "cachedResultUrl": "https://drive.google.com/drive/folders/1HP3LnTPLwe81xUrp0P6aV2nJKdX6BIcM",
            "cachedResultName": "n8n json checker"
          }
        },
        "options": {},
        "resource": "fileFolder",
        "returnAll": true
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "E7nEqUL27GUx1xHa",
          "name": "Techdome Account"
        }
      },
      "typeVersion": 3,
      "alwaysOutputData": true
    },
    {
      "id": "eca112e7-3b66-455e-8086-2d3bf701cd3b",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        -320
      ],
      "parameters": {
        "height": 192,
        "content": "## ⚙️ Step 1: Manual Trigger  \nUse this to manually start the workflow when testing or batch-processing workflow descriptions.  \n➡️ No setup required.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "7e6d213b-112d-4759-bc8d-2d5f675a1098",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        96
      ],
      "parameters": {
        "width": 288,
        "height": 320,
        "content": "## 📂 Step 2: Search Files and Folders  \nThis node searches a specific Google Drive folder for JSON workflow files to process.  \n\n**Setup Instructions:**  \n- Connect your own Google Drive OAuth2 credentials.  \n- Replace any hardcoded folder ID with a variable or reference to your Drive.  \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e51a77b0-95e8-418a-89d3-2e610c6cac7d",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        208
      ],
      "parameters": {
        "height": 304,
        "content": "## 🧠 Step 8:Store AI Context (LangChain Memory)\nStores short-term AI context to improve continuity during prompt execution.  \nNo credentials required.  \n💡 Keep context window small (7–10) to avoid large memory overhead.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8ff67280-778b-4de1-86d2-82905c3ed3e4",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1184,
        -496
      ],
      "parameters": {
        "height": 288,
        "content": "## ✨ Step 11: Format HTML Email   \nCreates clean HTML and plain-text versions of the generated description for email + Google Sheet logging.  \n\n✅ No credentials here.  \n💡 You may adjust the CSS styling within the HTML block.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e8695343-49c0-4cf3-b0b0-305b36c5a450",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        816,
        -592
      ],
      "parameters": {
        "height": 368,
        "content": "## 🧾 Step 10: Format Markdown Description  \nTakes the AI output and converts it into structured Markdown text suitable for n8n template publishing.  \n\n**Setup Instructions:**  \n- Ensure each section (Overview, Benefits, etc.) is returned properly.  \n- You can tweak emoji styles or section titles here.  \n✅ No credentials required.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "453d0845-afca-4018-a7be-b464150598d9",
      "name": "Note adhésive5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        160
      ],
      "parameters": {
        "height": 288,
        "content": "## 🧩 Step 9: Parse AI Response into Structured JSON\nEnsures AI response is parsed into clean JSON format for the next node.  \n✅ No sensitive data.  \n💡 You can adjust the schema if adding more description sections.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "af7d1723-3163-4083-857a-d3367b9cbd79",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        176
      ],
      "parameters": {
        "height": 320,
        "content": "## 💬 Step 7: Connect to Azure OpenAI GPT Model\n\n**Setup Instructions:**  \n- Use your own `azureOpenAiApi` credential .  \n- Verify the model name (gpt-4o or equivalent).  \n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "205d405d-85ff-4ee8-be90-31df1da4f56a",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        512,
        -688
      ],
      "parameters": {
        "height": 448,
        "content": "## 🤖 Step 6: AI Agent  \nUses a LangChain agent + Azure OpenAI model to generate workflow titles and structured descriptions.  \n\n**Setup Instructions:**  \n- Connect the AI Language Model and Output Parser as shown.  \n- This node defines the prompt and ensures the response follows n8n Template Guidelines.  \n\n✅ No sensitive info here — well-structured system prompt!  \n OpenAI.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6181afda-2715-438e-8a4a-4233ef3b824b",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        176,
        -400
      ],
      "parameters": {
        "height": 192,
        "content": "## 📦 Step 5: Extract JSON Data  \nParses the downloaded file to extract workflow JSON data before AI processing.  \nNo credentials needed here.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "da26533d-f55d-4e7c-b97a-1d7be91897f8",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -80,
        -528
      ],
      "parameters": {
        "height": 320,
        "content": "## ⬇️ Step 4: Download File  \nDownloads the JSON file contents for each matched Drive item.  \n\n**Setup Instructions:**  \n- Connect to your Google Drive OAuth2 credentials .  \n- Ensure file access permissions allow downloads.  \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "129b4156-d3ec-4528-9be9-743dc3371fc1",
      "name": "Note adhésive10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -352,
        -352
      ],
      "parameters": {
        "height": 240,
        "content": "## 🔁 Step 3: Loop Over JSONS  \nProcesses each found file individually to ensure the workflow handles large folders efficiently.  \nNo credential changes required.  \n➡️ You can adjust batch size in the node options.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c51e2df4-3e5a-4f65-b77f-24d6ce7dcec2",
      "name": "Note adhésive11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1728,
        -240
      ],
      "parameters": {
        "height": 368,
        "content": "## 📧 Step 13: Send Email with Description  \nSends a formatted HTML email with the generated template description.  \n\n  \n\n**Setup:**  \n- Use your Gmail OAuth2 credentials (`gmailOAuth2`).  \n- Test with a non-personal account if publishing publicly.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "68f7f509-ebe2-45f1-a4d7-a3f306222dc4",
      "name": "Note adhésive13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1360,
        -352
      ],
      "parameters": {
        "width": 384,
        "height": 448,
        "content": "## 🟨 Workflow Overview  \nThis workflow automates the creation of structured n8n template descriptions.  \nIt fetches JSON workflow files from Google Drive, uses an AI agent (Azure OpenAI + LangChain) to analyze them, and then formats detailed descriptions for publishing.  \n\n### ⚙️ Flow Summary  \n1. Trigger workflow manually.  \n2. Search workflow files in Google Drive.  \n3. Download and extract JSON data.  \n4. Use AI Agent to generate title + description.  \n5. Format Markdown and HTML outputs.  \n6. Append results to Google Sheets.  \n7. Send formatted description via Gmail.  \n\n**Use Case:** Ideal for automating n8n template documentation and content generation.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
      "name": "Boucle sur JSONS",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -240,
        -64
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
      "name": "Agent IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        496,
        -192
      ],
      "parameters": {
        "text": "=You are given this n8n workflow JSON:\n\n{{ JSON.stringify($json) }}\n\nGenerate the **best possible template title** and a **structured description** following the rules.  \nMake sure the title matches the format (Action verb + thing being manipulated + to/on/in/from + where).  \nThe description must follow the defined section structure and highlight actual logic from the workflow.\n",
        "options": {
          "systemMessage": "=You are an **expert n8n template description generator**.  \nYour role is to analyze a provided workflow JSON and generate both a **precise template title** and a **structured description** suitable for n8n’s Template Publishing Guidelines.  \n\n---\n\n### 🔑 Title Rules\n- Format: **Action verb** + **thing being manipulated** + **to/on/in/from** + **where**  \n  - Example: “One-way contact sync from Pipedrive to HubSpot”  \n- The title must:  \n  - Be **short (≤10 words)**, with no filler.  \n  - Use **active verbs** (Automate, Sync, Track, Re-engage, Generate, etc.).  \n  - Clearly name the **services, apps, or data being connected**.  \n  - Indicate **directionality** where applicable (from → to).  \n\n---\n\n### 📝 Description Style Guidelines\n- Write in **professional, user-friendly language**.  \n- Use **light emoji markers** (📊, ⚡, 🚀, 📧) to improve readability.  \n- Avoid generic filler — **every point must reflect actual workflow logic**.  \n- Keep explanations **short, direct, and clear**.  \n- Structure content in **bulleted lists** under clear section headers.  \n- Ensure **accuracy to the JSON nodes and connections**.  \n- Use an **automation-savvy tone** (confident, helpful, concise).  \n\n---\n\n### 📦 Output Sections (Always in This Order)\n\n1. **title**  \n   - A concise workflow title that follows the naming convention above.  \n\n2. **overview**  \n   - A one-line, catchy summary of the workflow’s purpose.  \n\n3. **what_this_template_does**  \n   - Step-by-step, **chronological explanation** of the workflow.  \n   - Mention triggers, actions, and end results in plain English.  \n\n4. **key_benefits**  \n   - 4–6 **outcome-focused benefits** (time saved, efficiency, error reduction).  \n\n5. **features**  \n   - Breakdown of **nodes, triggers, filters, and integrations**.  \n\n6. **requirements**  \n   - List of **services, credentials, or accounts** needed.  \n\n7. **target_audience**  \n   - Who the workflow is most useful for (teams, roles, industries).  \n\n8. **setup_instructions**  \n   - Practical, **step-by-step setup guidance** (credentials, environment variables, import, testing, activation).  \n\n---\n\n### ⚠️ Critical Rules\n- Do **not** invent steps or tools not present in the JSON.  \n- If a section has no applicable content, **omit gracefully** (do not fill with placeholders).  \n- Ensure consistency: every bullet point must tie back to actual workflow logic.  \n- Avoid redundancy — keep the flow **concise but complete**.  \n\n---\n\n### ✅ Example Output Format (for clarity)\n\n**title:**  \nOne-way contact sync from Pipedrive to HubSpot  \n\n**overview:**  \nAutomatically sync new contacts from Pipedrive into HubSpot CRM to keep sales and marketing aligned. 🔄  \n\n**what_this_template_does:**  \n- Runs every hour via schedule trigger ⏰  \n- Fetches new contacts from Pipedrive 📥  \n- Creates or updates matching contacts in HubSpot CRM 📊  \n\n**key_benefits:**  \n- ✅ No more manual contact transfers  \n- ✅ Keeps CRM records consistent  \n- ✅ Saves time for sales teams  \n\n**features:**  \n- Hourly schedule trigger  \n- Pipedrive API integration  \n- HubSpot CRM integration  \n\n**requirements:**  \n- Pipedrive OAuth2 credentials  \n- HubSpot OAuth2 credentials  \n\n**target_audience:**  \n- Sales teams managing dual CRMs  \n- Agencies working with multiple clients  \n\n**setup_instructions:**  \n- Connect Pipedrive and HubSpot accounts 🔑  \n- Import the workflow JSON 📦  \n- Adjust sync interval if needed 🕒  \n- Activate workflow 🚀  \n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d",
      "name": "Formater la description Markdown",
      "type": "n8n-nodes-base.code",
      "position": [
        896,
        -192
      ],
      "parameters": {
        "jsCode": "// Get input data\nconst inputData = $input.all();\n\n// Function to convert array to numbered list with emojis\nfunction formatList(items, emoji = '') {\n  return items.map((item, index) => `${index + 1}. ${item} ${emoji}`).join('\\n');\n}\n\n// Function to convert array to bullet list with checkmarks\nfunction formatBenefits(items) {\n  return items.map(item => `✅ ${item}`).join('\\n');\n}\n\n// Function to convert array to bullet list with asterisks\nfunction formatFeatures(items) {\n  return items.map(item => `* ${item}`).join('\\n');\n}\n\n// Function to convert array to bullet list with emojis\nfunction formatAudience(items) {\n  const emojis = ['👩‍💼', '🔄', '🏢', '🌐', '📊'];\n  return items.map((item, index) => `* ${item} ${emojis[index] || '✨'}`).join('\\n');\n}\n\n// Function to convert setup instructions\nfunction formatSetup(items) {\n  const emojis = ['🔑', '⚙️', '🕒', '📦', '✅', '🚀'];\n  return items.map((item, index) => `${index + 1}. ${item} ${emojis[index] || '📌'}`).join('\\n');\n}\n\n// Process each item in the input\nconst results = inputData.map(item => {\n  const data = item.json.output;\n  \n  // Build the formatted output\n  let formattedOutput = `**Description**\\n`;\n  formattedOutput += `${data.overview} 💌📊💬\\n\\n`;\n  \n  formattedOutput += `**What This Template Does**\\n`;\n  formattedOutput += formatList(data.what_this_template_does, '') + '\\n\\n';\n  \n  formattedOutput += `**Key Benefits**\\n`;\n  formattedOutput += formatBenefits(data.key_benefits) + '\\n\\n';\n  \n  formattedOutput += `**Features**\\n`;\n  formattedOutput += formatFeatures(data.features) + '\\n\\n';\n  \n  formattedOutput += `**Requirements**\\n`;\n  formattedOutput += data.requirements.map(item => `* ${item}`).join('\\n') + '\\n\\n';\n  \n  formattedOutput += `**Target Audience**\\n`;\n  formattedOutput += formatAudience(data.target_audience) + '\\n\\n';\n  \n  formattedOutput += `**Step-by-Step Setup Instructions**\\n`;\n  formattedOutput += formatSetup(data.setup_instructions);\n  \n  return {\n    json: {\n      title: data.title,\n      formatted_description: formattedOutput\n    }\n  };\n});\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "11f7b052-0cb4-4cfe-8aae-bf933d797a5a",
      "name": "Formater l'e-mail HTML",
      "type": "n8n-nodes-base.code",
      "position": [
        1344,
        -192
      ],
      "parameters": {
        "jsCode": "// Get input data\nconst inputData = $input.all();\n\nconst results = inputData.map(item => {\n  const data = item.json;\n  const description = data.formatted_description || '';\n\n  // Parse sections\n  const sections = {\n    overview: description.match(/\\*\\*Description\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    what_does: description.match(/\\*\\*What This Template Does\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    benefits: description.match(/\\*\\*Key Benefits\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    features: description.match(/\\*\\*Features\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    requirements: description.match(/\\*\\*Requirements\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    audience: description.match(/\\*\\*Target Audience\\*\\*\\n(.*?)\\n\\n/s)?.[1]?.trim() || '',\n    setup: description.match(/\\*\\*Step-by-Step Setup Instructions\\*\\*\\n(.*?)$/s)?.[1]?.trim() || ''\n  };\n\n  // 🧾 Plain text version for Google Sheets logging\n  const plainText = `\n${data.title}\n\n📋 Overview:\n${sections.overview}\n\n⚙️ What This Template Does:\n${sections.what_does}\n\n🚀 Key Benefits:\n${sections.benefits}\n\n✨ Features:\n${sections.features}\n\n🔐 Requirements:\n${sections.requirements}\n\n🎯 Target Audience:\n${sections.audience}\n\n📝 Step-by-Step Setup Instructions:\n${sections.setup}\n\n🎯 Ready to automate? Import this template into your n8n instance and get started!\n  `.trim();\n\n  // 💌 HTML version for Email\n  const htmlEmail = `\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>${data.title}</title>\n<style>\n  body {font-family: 'Segoe UI', Arial, sans-serif; line-height:1.6; color:#333; background:#f5f5f5; padding:30px;}\n  .container {background:#fff; border-radius:10px; padding:40px; max-width:800px; margin:auto; box-shadow:0 2px 8px rgba(0,0,0,0.1);}\n  h1 {color:#1f2937;}\n  h2 {color:#4f46e5; border-bottom:2px solid #eee; padding-bottom:6px;}\n  .section {margin-bottom:30px;}\n  .highlight {background:#eef2ff; padding:15px; border-radius:6px;}\n  .benefit {background:#ecfdf5; padding:10px; border-left:4px solid #22c55e; margin-bottom:10px;}\n  .feature {background:#eff6ff; padding:10px; border-left:4px solid #3b82f6; margin-bottom:10px;}\n  .requirement {background:#fef3c7; padding:10px; border-left:4px solid #f59e0b; margin-bottom:10px;}\n  .audience {background:#fce7f3; padding:10px; border-left:4px solid #ec4899; margin-bottom:10px;}\n  .setup {background:#f9fafb; padding:10px; border-left:4px solid #6366f1; margin-bottom:10px;}\n  .footer {text-align:center; color:#888; font-size:14px; margin-top:30px;}\n</style>\n</head>\n<body>\n  <div class=\"container\">\n    <h1>${data.title}</h1>\n    <div class=\"section\"><h2>📋 Overview</h2><div class=\"highlight\">${sections.overview}</div></div>\n    <div class=\"section\"><h2>⚙️ What This Template Does</h2>${sections.what_does.split('\\n').map(l => `<div class=\"setup\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>🚀 Key Benefits</h2>${sections.benefits.split('\\n').map(l => `<div class=\"benefit\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>✨ Features</h2>${sections.features.split('\\n').map(l => `<div class=\"feature\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>🔐 Requirements</h2>${sections.requirements.split('\\n').map(l => `<div class=\"requirement\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>🎯 Target Audience</h2>${sections.audience.split('\\n').map(l => `<div class=\"audience\">${l}</div>`).join('')}</div>\n    <div class=\"section\"><h2>📝 Step-by-Step Setup Instructions</h2>${sections.setup.split('\\n').map(l => `<div class=\"setup\">${l}</div>`).join('')}</div>\n    <div class=\"footer\">🎯 Ready to automate? Import this template into your n8n instance and start building magic!</div>\n  </div>\n</body>\n</html>\n  `.trim();\n\n  // Return both\n  return {\n    json: {\n      title: data.title,\n      formatted_description: data.formatted_description,\n      html_email: htmlEmail,     // for Gmail\n      plain_text_email: plainText, // for Sheets\n      subject: `n8n Template: ${data.title}`,\n      preview_text: sections.overview.substring(0, 100) + '...'\n    }\n  };\n});\n\nreturn results;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "36faaf0f-90a2-42c8-909a-8544a48d621b",
      "name": "Note adhésive14",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1088,
        -16
      ],
      "parameters": {
        "height": 192,
        "content": "## 🧾 Step 12: Save to Google Sheets  \nStores the generated template title and formatted description in a spreadsheet for record-keeping.  \n\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "61d49f4e-e961-4359-8735-925a55eaa7f8",
      "name": "Enregistrer dans Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1120,
        -192
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "formatted_description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "formatted_description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1u_PoDeJHJnMyocSXmGH0sO9ybo5LrUszTkU6p3KzYAg/edit?usp=drivesdk",
          "cachedResultName": "JSON Data with Description"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "kpPEOLCGn963qpoh",
          "name": "automations@techdome.ai"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "d031644e-84ea-4121-84d2-41e9d05207b5",
      "name": "Envoyer l'e-mail avec description",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1568,
        -64
      ],
      "webhookId": "0f500fb4-094e-48b6-a98e-da066652481b",
      "parameters": {
        "sendTo": "your-email@example.com",
        "message": "={{ $json.html_email }}",
        "options": {},
        "subject": "={{ $json.subject }}"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "gEIaWCTvGfYjMSb3",
          "name": "Gmail credentials"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "8d655ca0-13d7-41ab-b3cf-e1387cdb61d0",
      "name": "Stocker le contexte IA (mémoire LangChain)",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        560,
        32
      ],
      "parameters": {
        "sessionKey": "\"json_review\"",
        "sessionIdType": "customKey",
        "contextWindowLength": 7
      },
      "typeVersion": 1.3
    },
    {
      "id": "3064a4d2-4329-4371-bc5d-47ee568205ef",
      "name": "Se connecter au modèle Azure OpenAI GPT",
      "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
      "position": [
        432,
        32
      ],
      "parameters": {
        "model": "gpt-4o",
        "options": {}
      },
      "credentials": {
        "azureOpenAiApi": {
          "id": "C3WzT18XqF8OdVM6",
          "name": "Azure Open AI account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ad5ee442-1644-4ab2-bdf9-cbf84447a5ff",
      "name": "Analyser la réponse IA en JSON structuré",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        688,
        32
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"title\": \"string\",\n  \"overview\": \"string\",\n  \"what_this_template_does\": [\"step1\", \"step2\", \"step3\"],\n  \"key_benefits\": [\"benefit1\", \"benefit2\", \"benefit3\"],\n  \"features\": [\"feature1\", \"feature2\", \"feature3\"],\n  \"requirements\": [\"requirement1\", \"requirement2\"],\n  \"target_audience\": [\"audience1\", \"audience2\"],\n  \"setup_instructions\": [\"instruction1\", \"instruction2\", \"instruction3\"]\n}\n"
      },
      "typeVersion": 1.3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f22edb61-a906-4778-9a79-8d50a8fb1b2d",
  "connections": {
    "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc": {
      "main": [
        [
          {
            "node": "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5e02aa21-b341-489c-82fb-feacb0747b13": {
      "main": [
        [
          {
            "node": "7c0fd462-7b25-4e1f-852d-5b526f16de0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "35a62d62-6ede-4b06-8d04-a4d3760e220f": {
      "main": [
        [],
        [
          {
            "node": "5e02aa21-b341-489c-82fb-feacb0747b13",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7c0fd462-7b25-4e1f-852d-5b526f16de0f": {
      "main": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "11f7b052-0cb4-4cfe-8aae-bf933d797a5a": {
      "main": [
        [
          {
            "node": "d031644e-84ea-4121-84d2-41e9d05207b5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "61d49f4e-e961-4359-8735-925a55eaa7f8": {
      "main": [
        [
          {
            "node": "11f7b052-0cb4-4cfe-8aae-bf933d797a5a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "016bff72-bd86-4eba-9c10-86853cd102cc": {
      "main": [
        [
          {
            "node": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c3f2e1e9-69db-4ccb-9022-2ebc4b45e88d": {
      "main": [
        [
          {
            "node": "61d49f4e-e961-4359-8735-925a55eaa7f8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d031644e-84ea-4121-84d2-41e9d05207b5": {
      "main": [
        [
          {
            "node": "35a62d62-6ede-4b06-8d04-a4d3760e220f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3064a4d2-4329-4371-bc5d-47ee568205ef": {
      "ai_languageModel": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "8d655ca0-13d7-41ab-b3cf-e1387cdb61d0": {
      "ai_memory": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "ddb41538-8446-4938-9233-7475b5a63fbb": {
      "main": [
        [
          {
            "node": "016bff72-bd86-4eba-9c10-86853cd102cc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ad5ee442-1644-4ab2-bdf9-cbf84447a5ff": {
      "ai_outputParser": [
        [
          {
            "node": "77e3adc9-3c23-4eb8-8c29-0cd630ccb8cc",
            "type": "ai_outputParser",
            "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é ?

Avancé - 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.

Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds27
Catégorie2
Types de nœuds12
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Rahul Joshi

Rahul Joshi

@rahul08

Rahul Joshi is a seasoned technology leader specializing in the n8n automation tool and AI-driven workflow automation. With deep expertise in building open-source workflow automation and self-hosted automation platforms, he helps organizations eliminate manual processes through intelligent n8n ai agent automation solutions.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34