Créer un CV ATS à partir d'un JD

Avancé

Ceci est unMultimodal AIworkflow d'automatisation du domainecontenant 19 nœuds.Utilise principalement des nœuds comme Code, Html, Perplexity, FormTrigger, GoogleDrive. Générer un ATS CV spécifique au poste avec Perplexity AI et exportation PDF

Prérequis
  • Informations d'identification Google Drive API

Catégorie

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": "JgekNtar5mXcPtGd",
  "meta": {
    "instanceId": "fca4fa0e5ae247e39cd954acbd193c81c66eeb044912b56566983f18237c0bf6",
    "templateCredsSetupCompleted": true
  },
  "name": "ATS resume maker accoding to JD",
  "tags": [],
  "nodes": [
    {
      "id": "7f200ac3-741e-4c81-af61-b798c317801e",
      "name": "HTML en PDF",
      "type": "@custom-js/n8n-nodes-pdf-toolkit.html2Pdf",
      "position": [
        1664,
        112
      ],
      "parameters": {
        "htmlInput": "={{ $json.cleanedResponse }}"
      },
      "credentials": {
        "customJsApi": {
          "id": "4QZZxZEUk18tr3si",
          "name": "CustomJS account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d6b2bfdf-b0e3-4477-a340-d97235f0ed92",
      "name": "Téléverser un fichier",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2160,
        112
      ],
      "parameters": {
        "name": "NEW_RESUNME",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1vzNpRjBe1ylcLmJ2TKl4TN40BAeri-HD",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1vzNpRjBe1ylcLmJ2TKl4TN40BAeri-HD",
          "cachedResultName": "Resume"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "rEUMr90NJv8PD8bc",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "c78b7099-9c77-4ade-92b3-0677c5675dd1",
      "name": "Déclencheur de formulaire",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -1344,
        112
      ],
      "webhookId": "285117be-9acd-496f-8320-866d6124a9fe",
      "parameters": {
        "path": "resume-builder",
        "options": {},
        "formTitle": "resume builder",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Paste Resume text",
              "placeholder": "Resume plain text"
            },
            {
              "fieldType": "file",
              "fieldLabel": "Upload Resume PDF",
              "multipleFiles": false,
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            },
            {
              "fieldType": "file",
              "fieldLabel": "Upload JD PDF",
              "multipleFiles": false,
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            }
          ]
        },
        "responseMode": "lastNode"
      },
      "typeVersion": 1
    },
    {
      "id": "45e99a17-500f-4d4d-9c95-42a28c586427",
      "name": "Extraction CV1",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -400,
        112
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "={{ Object.keys($binary)[0] }}"
      },
      "typeVersion": 1,
      "alwaysOutputData": false
    },
    {
      "id": "825fd050-286c-4d9b-982a-b2028709e11b",
      "name": "Traitement d'un fichier binaire1",
      "type": "n8n-nodes-base.code",
      "position": [
        -848,
        112
      ],
      "parameters": {
        "jsCode": "let results = [];\n\nfor (let item of items) {\n    if (item.binary) {\n        // If there's binary data in the item, process each binary file\n        for (let key in item.binary) {\n            // Use the key as the file name\n            let binaryKey = key.replace(/\\s/g, 'Upload_Resume_PDF'); // Replace spaces with underscores for the key\n            results.push({\n                json: {\n                    fileName: binaryKey\n                },\n                binary: {\n                    [binaryKey]: item.binary[key] // Use the modified key for the binary data\n                }\n            });\n        }\n    }\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "86c96480-6969-4ea3-a839-8f235eb5c10c",
      "name": "Fusion CV + Offre1",
      "type": "n8n-nodes-base.code",
      "position": [
        48,
        112
      ],
      "parameters": {
        "jsCode": "return [\n  {\n    json: {\n      merged: $json.text + \" \" + $item(1).$json[\"text\"]\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "84779a64-ecb1-4bf9-b9c3-bd968b3b47cf",
      "name": "Personnaliser CV1",
      "type": "n8n-nodes-base.perplexity",
      "position": [
        528,
        112
      ],
      "parameters": {
        "model": "sonar-reasoning",
        "options": {},
        "messages": {
          "message": [
            {
              "role": "system",
              "content": "=System (paste exactly as-is):\n\nYou are a professional resume writer. Build a single, ATS-friendly resume by combining and aligning the candidate’s resume with the job description contained in:\n{{ $json.merged }}\n\nRules for content:\n\nTailor the resume to the JD while staying truthful to the candidate’s information. Prioritize skills/keywords the JD demands. Rephrase; do not invent facts.\n\nOmit sections that have no data instead of adding placeholders.\n\nPrefer the candidate’s details when resume and JD conflict; only adjust wording to match JD terminology.\n\nRules for layout & style:\n\nOutput one valid HTML document only (no Markdown, no code fences, no JSON, no citations, no comments, no <think> or similar tags, no text before or after).\n\nUse inline CSS inside <style> in the <head>; no external assets (fonts, scripts, images, icons, tables).\n\nPlain white background, black text, font: Arial, sans-serif.\n\nPage-friendly margins (32–40px), single-column layout, consistent spacing.\n\nName at top center, bold, ~26–30px. Contact line centered beneath, smaller.\n\nSection titles (Summary, Skills, Experience, Projects, Education, Certifications, Links) left-aligned, bold, ~18–20px, with clear top margin.\n\nUse <ul><li> bullet points for skills and achievements. In Experience/Projects, show role/company/location/dates, then concise accomplishment bullets (use metrics where present).\n\nKeep it clean and ATS-safe: no colors, graphics, or fancy layouts.\n\nOutput requirement (critical):\nReturn only:\n\n<!DOCTYPE html>\n<html>…full document with inline <style>…</html>"
            },
            {
              "content": "=Final User Prompt (Strict Version):\n\nYou are a professional resume writer.\nYour task is to generate a single ATS-friendly resume in plain HTML and CSS only.\n\nInput data (resume + job description) is provided here:\n{{ $json.merged }}\n\nMandatory Guidelines (must follow exactly):\n\nOutput only valid HTML and CSS wrapped inside <html>...</html>. No explanations, comments, or extra text outside the HTML.\n\nThe resume must be clean, minimal, and professional:\n\nWhite background, black text, single font (Arial, sans-serif).\n\nCandidate’s full name: top center, bold, font size 26–30px.\n\nContact information: below name, centered, smaller font.\n\nSection titles (Skills, Certifications, Projects, Experience, Education, etc.): bold, left-aligned, font size 18–20px.\n\nUse bullet points for lists (skills, certifications, responsibilities, achievements).\n\nMaintain consistent spacing (margin-top for sections, padding inside lists).\n\nNo colors, tables, or unnecessary design elements.\n\nResume must combine the resume and job description into a single tailored version that best fits the target role.\n\nThe output must be ATS-optimized (clean structure, clear hierarchy, no hidden elements).\n\nDo not include placeholders like <think>, comments, or explanations. Only deliver the final HTML + CSS resume."
            }
          ]
        },
        "simplify": true,
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "id": "jfeGy5zFESdZPlAv",
          "name": "Perplexity account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bda8efee-e4a6-4c00-86e9-dd9c8fd0ac07",
      "name": "Format HTML1",
      "type": "n8n-nodes-base.code",
      "position": [
        1184,
        112
      ],
      "parameters": {
        "jsCode": "// Get the response from Perplexity\nconst response = $json.message || $json.content || $json.text;\n\n// Extract content between <html> and </html> tags\nconst htmlMatch = response.match(/<html[\\s\\S]*?<\\/html>/i);\n\nif (htmlMatch) {\n  // Found HTML content - now remove all \\n characters\n  const cleanHtml = htmlMatch[0].replace(/\\n/g, '');\n  \n  return [{\n    json: {\n      cleanedResponse: cleanHtml,\n      originalResponse: response\n    }\n  }];\n} else {\n  // No HTML found, return original\n  return [{\n    json: {\n      cleanedResponse: response,\n      originalResponse: response,\n      error: \"No HTML tags found in response\"\n    }\n  }];\n}"
      },
      "typeVersion": 2
    },
    {
      "id": "d9a5f53e-6683-4311-9d3b-790097efbb88",
      "name": "Note adhésive",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1536,
        -480
      ],
      "parameters": {
        "color": 3,
        "width": 480,
        "height": 784,
        "content": "## Form Trigger Node Summary\n\nThe **Form Trigger** node in the *ATS Resume Maker according to JD* workflow initiates the process by providing a web form for users to submit their resume (text or PDF) and a job description (JD) PDF.\n\n- **Purpose**: Collects user inputs to start the resume tailoring process.\n- **Key Functions**:\n  - Creates a form at the path *resume-builder* with the title *resume builder*.\n  - Captures:\n    1. Optional plain text resume input.\n    2. Required resume PDF upload (accepts *.pdf* only).\n    3. Required JD PDF upload (accepts *.pdf* only).\n  - Uses *lastNode* response mode to wait for the workflow to complete.\n- **Output**: Sends text and binary (PDF) data to the next node (*Process one binary file1*).\n- **Role**: Acts as the workflow’s entry point, enabling user interaction.\n\n*Note*: This node is critical for gathering the raw data needed to generate an ATS-friendly resume. For more on n8n nodes, see [n8n Docs](https://.docs.n8n.io/workflows/components/)."
      },
      "typeVersion": 1
    },
    {
      "id": "c4c9e712-f353-460c-91d2-848ab373309f",
      "name": "Note adhésive1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        880
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "5de48c59-3453-4083-a31e-676294205864",
      "name": "Note adhésive2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -544,
        -480
      ],
      "parameters": {
        "color": 4,
        "width": 400,
        "height": 784,
        "content": "## Extracting resume1 Node Summary\n\nThe **Extracting resume1** node in the *ATS Resume Maker according to JD* workflow extracts text from the binary PDF files (resume and JD) processed by the *Process one binary file1* node.\n\n- **Purpose**: Converts PDF files into readable text for further processing.\n- **Key Functions**:\n  - Uses the *pdf* operation to extract text from the binary data.\n  - Dynamically selects the binary file using the expression `={{ Object.keys($binary)[0] }}` to target the first available binary key.\n- **Output**: Text extracted from the PDFs, passed to the *Merge Resume + JD1* node.\n- **Role**: Enables the workflow to access the content of the resume and JD for tailoring.\n\n*Note*: This node is crucial for transforming PDF inputs into text that can be merged and customized. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "46541729-54be-45f5-ba91-a1b294e854f3",
      "name": "Note adhésive3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        -480
      ],
      "parameters": {
        "color": 2,
        "width": 480,
        "height": 784,
        "content": "## Process one binary file1 Node Summary\n\nThe **Process one binary file1** node in the *ATS Resume Maker according to JD* workflow processes the binary data (PDF files) submitted through the *Form Trigger* node.\n\n- **Purpose**: Organizes and renames binary files (resume and JD PDFs) for further processing.\n- **Key Functions**:\n  - Uses JavaScript to iterate through input items and identify binary data (PDFs).\n  - Replaces spaces in binary file keys with *Upload_Resume_PDF* for consistent naming.\n  - Outputs:\n    1. JSON with the modified *fileName*.\n    2. Binary data mapped to the new key (e.g., *Upload_Resume_PDF*).\n- **Output**: Structured binary data passed to the *Extracting resume1* node for text extraction.\n- **Role**: Ensures clean, standardized file naming for downstream nodes.\n\n*Note*: This node prepares user-uploaded PDFs for text extraction, maintaining workflow efficiency. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes."
      },
      "typeVersion": 1
    },
    {
      "id": "00a054b3-a973-418c-840d-0796cc288b98",
      "name": "Note adhésive4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -480
      ],
      "parameters": {
        "color": 6,
        "width": 400,
        "height": 784,
        "content": "## Merge Resume + JD1 Node Summary\n\nThe **Merge Resume + JD1** node in the *ATS Resume Maker according to JD* workflow combines the extracted text from the candidate’s resume and the job description (JD) into a single text string.\n\n- **Purpose**: Merges resume and JD text to prepare for tailored resume generation.\n- **Key Functions**:\n  - Uses JavaScript to concatenate the resume text (`$json.text`) and JD text (`$item(1).$json[\"text\"]`) with a space separator.\n  - Outputs a single JSON object with a *merged* field containing the combined text.\n- **Output**: A unified text string passed to the *Customize resume1* node for further processing.\n- **Role**: Ensures both resume and JD content are combined for ATS-friendly customization.\n\n*Note*: This node sets the stage for tailoring the resume by providing a single text input. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes.\n\n*Timestamp*: 02:37 PM IST, Wednesday, August 20, 2025"
      },
      "typeVersion": 1
    },
    {
      "id": "cc1cd2d7-3315-4897-bc56-8d0d2c6606b4",
      "name": "Note adhésive5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        288,
        -480
      ],
      "parameters": {
        "color": 7,
        "width": 592,
        "height": 784,
        "content": "## AI Perplexity Node Summary\n\nThe **Customize resume1** node in the *ATS Resume Maker according to JD* workflow uses the *Perplexity AI* model to generate an ATS-friendly resume by tailoring the merged resume and job description (JD) text into a structured HTML format.\n\n- **Purpose**: Leverages *Perplexity AI* to create a customized, ATS-optimized resume based on the merged input.\n- **Key Functions**:\n  - Employs the *sonar-reasoning* model to process the combined text (`$json.merged`) from the previous node.\n  - *Perplexity AI* follows strict instructions to:\n    - Produce valid HTML with inline CSS (Arial, sans-serif, black text, white background).\n    - Structure the resume with the candidate’s name (bold, 26–30px, centered), contact info, and sections like Skills, Experience, and Education using bullet points.\n    - Prioritize JD keywords while rephrasing truthfully, avoiding invented facts.\n    - Ensure ATS compatibility by using a clean, single-column layout without colors or graphics.\n- **Output**: HTML resume content passed to the *HTML format1* node for further processing.\n- **Role**: Relies on *Perplexity AI* to intelligently align the resume with the JD, ensuring relevance and scannability.\n\n*Note*: The *Perplexity AI* model is central to tailoring the resume, making it both professional and ATS-friendly. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "e5c8c302-9207-46bb-9151-8dd1edfa445a",
      "name": "Note adhésive6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -480
      ],
      "parameters": {
        "width": 592,
        "height": 784,
        "content": "## HTML format1 Node Summary\n\nThe **HTML format1** node in the *ATS Resume Maker according to JD* workflow processes the HTML resume generated by the *Customize resume1* node to ensure it is clean and properly formatted.\n\n- **Purpose**: Cleans and formats the HTML output from the Perplexity AI model for downstream use.\n- **Key Functions**:\n  - Uses JavaScript to extract the content between `<html>` and `</html>` tags from the AI’s response (`$json.message`, `$json.content`, or `$json.text`).\n  - Removes all newline characters (`\\n`) from the HTML to create a compact, single-line string.\n  - Outputs a JSON object with:\n    - *cleanedResponse*: The cleaned HTML content.\n    - *originalResponse*: The original AI response.\n    - *error*: A message if no HTML tags are found.\n- **Output**: Cleaned HTML passed to the *HTML3* and *HTML to PDF* nodes for further processing.\n- **Role**: Ensures the HTML resume is properly formatted and free of unwanted characters for conversion to PDF.\n\n*Note*: This node refines the AI-generated HTML for consistency and compatibility with subsequent nodes. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes.\n\n*Timestamp*: 02:42 PM IST, Wednesday, August 20, 2025"
      },
      "typeVersion": 1
    },
    {
      "id": "b8d0caab-6392-4123-a180-d33665cd4c54",
      "name": "Note adhésive7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1184,
        640
      ],
      "parameters": {
        "color": 3,
        "width": 448,
        "height": 480,
        "content": "## Generate HTML Preview Node Summary\n\nThe **HTML3** node in the *ATS Resume Maker according to JD* workflow processes the cleaned HTML resume output from the *HTML format1* node for further handling or validation.\n\n- **Purpose**: Handles the formatted HTML resume to prepare it for potential display or additional processing.\n- **Key Functions**:\n  - Receives the cleaned HTML content (`$json.cleanedResponse`) from the *HTML format1* node.\n  - Uses the `n8n-nodes-base.html` node (version 1.2) to process the HTML, likely for rendering, validation, or storage purposes.\n- **Output**: The processed HTML, which may be used for visualization or debugging (specific output depends on workflow context).\n- **Role**: Acts as a processing step for the HTML resume, ensuring it’s ready for any additional use cases, such as display or logging.\n\n*Note*: This node ensures the HTML resume is properly handled before final output or conversion. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "dbe2e4c3-cb5d-4f04-84ed-8071cee8904b",
      "name": "Aperçu HTML",
      "type": "n8n-nodes-base.html",
      "position": [
        1344,
        480
      ],
      "parameters": {
        "html": "{{ $json.cleanedResponse }}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "438498a1-ea92-4b2e-833d-76b05cc25139",
      "name": "Note adhésive8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1504,
        -480
      ],
      "parameters": {
        "color": 3,
        "width": 416,
        "height": 784,
        "content": "## HTML to PDF Node Summary\n\nThe **HTML to PDF** node in the *ATS Resume Maker according to JD* workflow converts the cleaned HTML resume from the *HTML format1* node into a PDF file.\n\n- **Purpose**: Generates a PDF version of the tailored, ATS-friendly resume.\n- **Key Functions**:\n  - Uses the `@custom-js/n8n-nodes-pdf-toolkit.html2Pdf` node (version 1) to convert the HTML content (`$json.cleanedResponse`) into a PDF.\n  - Relies on credentials for a *CustomJS account* to access the PDF conversion service.\n- **Output**: A binary PDF file passed to the *Upload file* node for storage.\n- **Role**: Transforms the HTML resume into a downloadable PDF format, completing the resume creation process.\n\n*Note*: This node finalizes the resume as a PDF, making it ready for user download or storage. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "28c9b45a-9508-459a-94a1-a183c8a14280",
      "name": "Note adhésive9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1936,
        -480
      ],
      "parameters": {
        "color": 5,
        "width": 480,
        "height": 784,
        "content": "## Upload file Node Summary\n\nThe **Upload file** node in the *ATS Resume Maker according to JD* workflow uploads the generated PDF resume to Google Drive.\n\n- **Purpose**: Stores the ATS-friendly resume PDF in a specified Google Drive folder.\n- **Key Functions**:\n  - Uses the `n8n-nodes-base.googleDrive` node (version 3) to upload the PDF file.\n  - Configured to save the file as *NEW_RESUNME* in the *Resume* folder (`1vzNpRjBe1ylcLmJ2TKl4TN40BAeri-HD`) on *My Drive*.\n  - Authenticates using a *Google Drive account* credential.\n- **Output**: Confirmation of the file upload to Google Drive, completing the workflow.\n- **Role**: Ensures the final resume PDF is saved to the user’s Google Drive for easy access.\n\n*Note*: This node finalizes the workflow by storing the tailored resume PDF in a designated cloud location. See [n8n Docs](https://docs.n8n.io/workflows/components/) for more on n8n nodes.\n\n"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "51d3f7e1-1c0e-41d2-9a2e-de31374df1e9",
  "connections": {
    "7f200ac3-741e-4c81-af61-b798c317801e": {
      "main": [
        [
          {
            "node": "d6b2bfdf-b0e3-4477-a340-d97235f0ed92",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c78b7099-9c77-4ade-92b3-0677c5675dd1": {
      "main": [
        [
          {
            "node": "825fd050-286c-4d9b-982a-b2028709e11b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bda8efee-e4a6-4c00-86e9-dd9c8fd0ac07": {
      "main": [
        [
          {
            "node": "dbe2e4c3-cb5d-4f04-84ed-8071cee8904b",
            "type": "main",
            "index": 0
          },
          {
            "node": "7f200ac3-741e-4c81-af61-b798c317801e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "84779a64-ecb1-4bf9-b9c3-bd968b3b47cf": {
      "main": [
        [
          {
            "node": "bda8efee-e4a6-4c00-86e9-dd9c8fd0ac07",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "45e99a17-500f-4d4d-9c95-42a28c586427": {
      "main": [
        [
          {
            "node": "86c96480-6969-4ea3-a839-8f235eb5c10c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "86c96480-6969-4ea3-a839-8f235eb5c10c": {
      "main": [
        [
          {
            "node": "84779a64-ecb1-4bf9-b9c3-bd968b3b47cf",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "825fd050-286c-4d9b-982a-b2028709e11b": {
      "main": [
        [
          {
            "node": "45e99a17-500f-4d4d-9c95-42a28c586427",
            "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é ?

Avancé - 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œuds19
Catégorie1
Types de nœuds8
Description de la difficulté

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

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34