职位抓取器
Avancé
Ceci est uncontenant 20 nœuds.Utilise principalement des nœuds comme If, Code, Merge, FormTrigger, HttpRequest. AI职位相关性评分器:utilisationGPT-4o-minirechercheLinkedIn职位并保存àGoogle Sheets
Prérequis
- •Peut nécessiter les informations d'identification d'authentification de l'API cible
- •Informations d'identification Google Sheets API
- •Clé API OpenAI
Nœuds utilisés (20)
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": "xqRJgn9kLzy60dnX",
"meta": {
"instanceId": "86964b8d0664d9ba346a233f6936cccbf83e087b0b9c3cb22f6eaa1a271cad0d",
"templateCredsSetupCompleted": true
},
"name": "jobs_scraper",
"tags": [],
"nodes": [
{
"id": "ecd0d08a-44ca-4390-9eff-01f0719abc61",
"name": "existing_jobs",
"type": "n8n-nodes-base.googleSheets",
"position": [
1824,
160
],
"parameters": {
"options": {
"dataLocationOnSheet": {
"values": {
"range": "C:C",
"rangeDefinition": "specifyRangeA1"
}
}
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Jobs Tracker"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('On form submission').first().json[\"Link to your Google Sheet (jobs will be added here)\"] }}"
}
},
"executeOnce": true,
"notesInFlow": true,
"typeVersion": 4.7,
"alwaysOutputData": true
},
{
"id": "3ccf8c71-7ad0-47a3-b006-bc1fa5e60023",
"name": "Compile_parm_sets",
"type": "n8n-nodes-base.code",
"position": [
96,
0
],
"parameters": {
"jsCode": "// Get values from input item\nlet contractType = $input.first().json[\"Contract Type\"];\nlet experienceLevel = $input.first().json[\"Experience Level\"]; \nlet workType = $input.first().json[\"Working Mode\"];\nlet publishedAt = $input.first().json[\"Date Posted\"];\n\n// Mapping functions\nfunction mapContractType(value) {\n if (!value) return null;\n switch (value) {\n case \"Full-time\": return \"F\";\n case \"Part-time\": return \"P\";\n case \"Contract\": return \"C\";\n case \"Temporary\": return \"T\";\n case \"Internship\": return \"I\";\n case \"Volunteer\": return \"V\";\n default: return null;\n }\n}\n\nfunction mapExperienceLevel(value) {\n if (!value) return null;\n switch (value) {\n case \"Internship\": return \"1\";\n case \"Entry-level\": return \"2\";\n case \"Associate\": return \"3\";\n case \"Mid-senior level\": return \"4\";\n case \"Director\": return \"5\";\n default: return null;\n }\n}\n\nfunction mapWorkType(value) {\n if (!value) return null;\n switch (value) {\n case \"On-site\": return \"1\";\n case \"Remote\": return \"2\";\n case \"Hybrid\": return \"3\";\n default: return null;\n }\n}\n\nfunction mapPublishedAt(value) {\n if (!value) return null;\n switch (value) {\n case \"Past 24 hours\": return \"r86400\";\n case \"Past Week\": return \"r604800\";\n case \"Past Month\": return \"r2592000\";\n default: return null;\n }\n}\n\n// Map all to codes\ncontractType = mapContractType(contractType);\nexperienceLevel = mapExperienceLevel(experienceLevel);\nworkType = mapWorkType(workType);\npublishedAt = mapPublishedAt(publishedAt);\n\nconst rowMap = {\n r86400: 100,\n r604800: 300,\n r2592000: 600,\n};\n\n// Build output, excluding nulls\nconst output = {\n title: $input.first().json.title,\n location: $input.first().json.location,\n rows: rowMap[publishedAt] || 100,\n};\n\nif (contractType !== null) output.contractType = contractType;\nif (experienceLevel !== null) output.experienceLevel = experienceLevel;\nif (workType !== null) output.workType = workType;\nif (publishedAt !== null) output.publishedAt = publishedAt;\n\nreturn [{ json: output }];\n"
},
"typeVersion": 2,
"alwaysOutputData": false
},
{
"id": "aceab631-3ca5-4cc3-923f-6406ad426b81",
"name": "rm_existing_jobs",
"type": "n8n-nodes-base.merge",
"notes": "from input 1",
"position": [
1952,
0
],
"parameters": {
"mode": "combine",
"options": {
"fuzzyCompare": true
},
"joinMode": "keepNonMatches",
"outputDataFrom": "input1",
"fieldsToMatchString": "id"
},
"notesInFlow": true,
"typeVersion": 3.2,
"alwaysOutputData": true
},
{
"id": "eb80bc2e-04a4-42e3-afba-6472fdcbac5b",
"name": "filtering jobs",
"type": "n8n-nodes-base.code",
"position": [
1360,
-16
],
"parameters": {
"jsCode": "// Get all GPT output items\nconst gptOutput = $input.all().map(item => item.json);\nconst targetScore = $('On form submission').first().json[\"Target Relevancy Score(out of 100)\"];\n\n// Extract jobs, filter by relevancy_score, and format\nconst filtered = gptOutput\n .map(entry => entry.message?.content)\n .filter(job => job && job.relevancy_score >= targetScore)\n .map(job => ({\n json: {\n id: job.id,\n relevancy_score: job.relevancy_score\n }\n }));\n\nreturn filtered;\n"
},
"notesInFlow": true,
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "e24fe095-02be-48d0-a94d-cb36ea80b2ae",
"name": "Filtrer & Dedup Jobs",
"type": "n8n-nodes-base.code",
"position": [
656,
0
],
"parameters": {
"jsCode": "const blacklisted_companies = [\"Jobot\", \"TieTalent\", \"Pryor Associates Executive Search\"];\n\nconst jobs = $input.all().map(item => item.json);\n\n// Deduplicate by id\nconst uniqueJobs = Array.from(\n new Map(jobs.map(job => [job.id, job])).values()\n);\n\n// Filter out blacklisted companies and jobs without companyUrl\nconst filteredJobs = uniqueJobs.filter(\n job => job.companyUrl && !blacklisted_companies.includes(job.companyName)\n);\n\n// Deduplicate by title + companyName (keep first only)\nconst seen = new Set();\nconst finalJobs = filteredJobs.filter(job => {\n const key = job.title + \"|\" + job.companyName;\n if (seen.has(key)) return false; // skip duplicates\n seen.add(key);\n return true; // keep first\n});\n\nreturn finalJobs.map(job => ({ json: job }));"
},
"notesInFlow": true,
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "0f335618-d674-4012-8511-2de6cc356a6e",
"name": "Add Jobs",
"type": "n8n-nodes-base.googleSheets",
"position": [
2320,
-16
],
"parameters": {
"columns": {
"value": {
"id": "={{ $json.id }}",
"Score": "={{ $json.relevancy_score }}",
"Salary": "={{ $json.salary }}",
"HR Name": "={{ $json.posterFullName }}",
"Job URL": "={{ $json.applyUrl }}",
"Job URL2": "={{ $json.jobUrl }}",
"Job Title": "={{ $json.title }}",
"Date Posted": "={{ $json.publishedAt }}",
"HR LinkedIn": "={{ $json.posterProfileUrl }}",
"Company Name": "={{ $json.companyName }}",
"Job Location": "={{ $json.location }}",
"Company Profile": "={{ $json.companyUrl }}"
},
"schema": [
{
"id": "Job URL",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Job URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job URL2",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Job URL2",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Salary",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Salary",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Profile",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Company Profile",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Working Model",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Working Model",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Location",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Job Location",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Posted",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date Posted",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Application Status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Application Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Date Applied",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date Applied",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Feedback",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Feedback",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Cover Letter",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Cover Letter",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Resume",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Resume",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "HR Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "HR Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "HR LinkedIn",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "HR LinkedIn",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Jobs Tracker"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "={{ $('On form submission').first().json[\"Link to your Google Sheet (jobs will be added here)\"] }}"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "udbu9Gbjt5CAnxWD",
"name": "Google Sheets account"
}
},
"notesInFlow": true,
"typeVersion": 4.7
},
{
"id": "6afd2b41-f733-45b3-85c6-5faba765e35e",
"name": "Fetch LinkedIn Jobs",
"type": "n8n-nodes-base.httpRequest",
"position": [
384,
0
],
"parameters": {
"url": "https://api.apify.com/v2/acts/BHzefUZlZRKWxkTck/run-sync-get-dataset-items",
"method": "POST",
"options": {},
"jsonBody": "={{ $json }}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "=Bearer <your_apify_api>"
}
]
}
},
"notesInFlow": true,
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "0208b796-b40e-47f0-a67c-5f437f02f301",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-192,
0
],
"webhookId": "8dbd31ae-e835-42cd-979e-88f8dd6ffded",
"parameters": {
"options": {
"path": "jobs-scraper",
"buttonLabel": "Find Jobs",
"appendAttribution": false,
"respondWithOptions": {
"values": {
"formSubmittedText": "Your request processed successfully."
}
}
},
"formTitle": "Jobs Scraper",
"formFields": {
"values": [
{
"fieldLabel": "title",
"placeholder": "e.g Data Analyst, Data Enginner, Software Engineer",
"requiredField": true
},
{
"fieldLabel": "location",
"placeholder": "e.g Austin, United States",
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Contract Type",
"fieldOptions": {
"values": [
{
"option": "All"
},
{
"option": "Full-time"
},
{
"option": "Part-time"
},
{
"option": "Contract"
},
{
"option": "Temporary"
},
{
"option": "Internship"
},
{
"option": "Volunteer"
}
]
}
},
{
"fieldType": "dropdown",
"fieldLabel": "Experience Level",
"fieldOptions": {
"values": [
{
"option": "All"
},
{
"option": "Internship"
},
{
"option": "Entry-level"
},
{
"option": "Associate"
},
{
"option": "Mid-senior level"
},
{
"option": "Director"
}
]
}
},
{
"fieldType": "dropdown",
"fieldLabel": "Working Mode",
"fieldOptions": {
"values": [
{
"option": "all"
},
{
"option": "On-site"
},
{
"option": "Remote"
},
{
"option": "Hybrid"
}
]
}
},
{
"fieldType": "dropdown",
"fieldLabel": "Date Posted",
"fieldOptions": {
"values": [
{
"option": "Past 24 hours"
},
{
"option": "Past Week"
},
{
"option": "Past Month"
}
]
}
},
{
"fieldType": "number",
"fieldLabel": "Target Relevancy Score(out of 100)",
"placeholder": "how relevant the jobs should be to your resume",
"requiredField": true
},
{
"fieldLabel": "Link to your Google Sheet (jobs will be added here)",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Your Resume",
"placeholder": "Paste Your Resume",
"requiredField": true
},
{
"fieldType": "textarea",
"fieldLabel": "Your Job Instructions/Preferences",
"placeholder": "Enter Your Job Preferences or any criteria to rank relevant jobs for you",
"requiredField": true
}
]
},
"responseMode": "lastNode",
"formDescription": "Provide your preferences to extract the relevant jobs. The Google Sheet should follow this template: https://docs.google.com/spreadsheets/d/1oOigTwntedPCYiXwW-98oHDj4slYepsFFV-LLP-77uc/edit?gid=0#gid=0"
},
"notesInFlow": true,
"typeVersion": 2.3
},
{
"id": "b3e1bb3a-b77e-472e-b86a-b585df277088",
"name": "Note adhésive",
"type": "n8n-nodes-base.stickyNote",
"position": [
-272,
-208
],
"parameters": {
"color": 5,
"width": 272,
"height": 352,
"content": "* Collects user input such as resume, preferences, and Google Sheet link via a public form.\n\n* The form automatically triggers the workflow when submitted."
},
"typeVersion": 1
},
{
"id": "395c6d0a-eb70-4e36-b0f9-4db3a823c9e7",
"name": "Note adhésive1",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
-208
],
"parameters": {
"color": 6,
"width": 272,
"height": 352,
"content": "Converts the form selections (contract type, experience, etc.) into API-ready parameters for Apify’s LinkedIn Jobs Scraper."
},
"typeVersion": 1
},
{
"id": "08eebd8a-4b77-44a2-9fa7-6cbbd8c28f77",
"name": "Note adhésive2",
"type": "n8n-nodes-base.stickyNote",
"position": [
304,
-208
],
"parameters": {
"color": 5,
"width": 272,
"height": 352,
"content": "* Calls the Apify API to fetch job listings based on your parameters.\n\n* Requires your Apify API key and the LinkedIn Jobs actor rented from Apify."
},
"typeVersion": 1
},
{
"id": "ab00b3bd-25b6-45a2-920a-cbc09a8edd90",
"name": "If Jobs",
"type": "n8n-nodes-base.if",
"position": [
880,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c6fa73ec-5859-48c4-9085-68e04ba07b21",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": "running"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c666e264-2ea8-4c73-b0a5-b38bae070da1",
"name": "Note adhésive3",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
-208
],
"parameters": {
"color": 6,
"width": 448,
"height": 352,
"content": "Removes duplicates, filters out blacklisted companies, and excludes listings without a valid company profile."
},
"typeVersion": 1
},
{
"id": "201b0934-417f-4d00-9fd3-7986df544192",
"name": "If Jobs1",
"type": "n8n-nodes-base.if",
"position": [
1504,
-16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4c35b5be-ac2e-4843-9cbb-420afdb8f0f3",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c512a004-186e-45ea-a8ef-fa616e8f676f",
"name": "Note adhésive4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-208
],
"parameters": {
"color": 5,
"width": 592,
"height": 352,
"content": "## Score and Filter Jobs by Relevance\n* Sends each job listing, along with your resume and preferences, to the GPT-4o-mini model.\n* The model returns a relevance score (0–100) for each job.\n* Keeps only the jobs that meet or exceed your target relevancy score (defined in the form)."
},
"typeVersion": 1
},
{
"id": "58b7114e-a45a-41f2-aae2-31c4edbe1e94",
"name": "Enrich input 1",
"type": "n8n-nodes-base.merge",
"position": [
1760,
-16
],
"parameters": {
"mode": "combine",
"options": {
"fuzzyCompare": true,
"clashHandling": {
"values": {
"resolveClash": "preferLast",
"overrideEmpty": true
}
},
"multipleMatches": "first"
},
"joinMode": "enrichInput1",
"fieldsToMatchString": "id"
},
"notesInFlow": true,
"typeVersion": 3.2
},
{
"id": "3be05870-9c10-4a9b-b8dc-0052833d3448",
"name": "If Jobs2",
"type": "n8n-nodes-base.if",
"position": [
2112,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "162163ba-1211-4255-aeed-038a40d0522b",
"operator": {
"type": "object",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json }}",
"rightValue": "running"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "05163604-3788-4147-a8d4-9be81426ae5a",
"name": "Note adhésive5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1664,
-208
],
"parameters": {
"color": 6,
"width": 784,
"height": 528,
"content": "## Add New jobs to the Google Sheet\n* Fetches all job IDs already present in your Google Sheet to prevent duplicates.\n* Compares new jobs with existing ones in your Google Sheet.\n* Only keeps jobs that are not yet in your sheet."
},
"typeVersion": 1
},
{
"id": "ed9af293-d933-4a67-8ba7-fd9a816d0a22",
"name": "Scoring Jobs",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1088,
-16
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {
"temperature": 0.4
},
"messages": {
"values": [
{
"role": "system",
"content": "=You are an expert recruiter and job relevance evaluator. Please find a relevancy score for a given job against the Candidate Resume and Preferences. \n\nCandidate Resume:\n{{ $('On form submission').first().json['Your Resume'] }}\n\nCandidate Preferences:\n{{ $('On form submission').first().json[\"Your Job Instructions/Preferences\"] }}\n\nImportant Notes:\n- If salary is not given under job details, check it in the job_description or job_position.\n- When giving the relevancy score, be strict and give a good score(>80) to only those jobs that are highly relevant for the candidate.\n\n⚠️ Output format requirement:\nAlways return only a JSON array with exactly one object, in this structure:\n[\n {\n \"id\": \"...\",\n \"relevancy_score\": <integer 0-100>\n }\n]\nNo other text, comments, or formatting.\n"
},
{
"content": "=Evaluate this job against the candidate resume + preferences.\n\nJob details:\n- id: {{ $json.id }}\n- job_position: {{ $json.title }}\n- salary: {{ $json.salary }}\n- job_description: {{ $json.description }}\n"
}
]
},
"jsonOutput": true
},
"executeOnce": false,
"retryOnFail": true,
"typeVersion": 1.8,
"waitBetweenTries": 5000
},
{
"id": "f4540ed0-bc13-4472-b09f-87f09e892de0",
"name": "Note adhésive6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1072,
-208
],
"parameters": {
"width": 736,
"height": 688,
"content": "## 🧠 AI-Powered Job Scraper & Relevance Evaluator\n\nThis workflow automates the process of finding and ranking the most relevant job opportunities based on your resume, career preferences, and custom filters.\n\nIt uses Apify’s LinkedIn Jobs API to fetch fresh job listings, then applies OpenAI GPT models to assign a relevance score (0–100) for each job.\nOnly jobs that meet or exceed your target score are appended to your Google Sheet, while duplicates are automatically skipped.\n\n### ⚙️ How to Set Up\n\n1. **Connect Accounts**\n * Add credentials for:\n * Google Sheets (OAuth2)\n * OpenAI API\n * Apify API (replace <your_apify_api> with your key)\n\n2. **Prepare Your Google Sheet**\n * Copy the template: 📄 [Google Sheet Template](https://docs.google.com/spreadsheets/d/1Pabh4GDMc0CBK5S6gn8FxpRgLbyXZVN656JNkBH6f7Y/edit?gid=0#gid=0)\n * Enable Edit Access for anyone with the link.\n\n3. **Run the Workflow**\n * Open your public form (auto-generated webhook link).\n * Fill in your resume, preferences, and target relevancy score.\n * Submit — within minutes, new, high-relevance jobs will appear in your Google Sheet."
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "bddb5d81-b4a0-49ce-b31e-49f5b7467321",
"connections": {
"ab00b3bd-25b6-45a2-920a-cbc09a8edd90": {
"main": [
[
{
"node": "ed9af293-d933-4a67-8ba7-fd9a816d0a22",
"type": "main",
"index": 0
}
]
]
},
"0f335618-d674-4012-8511-2de6cc356a6e": {
"main": [
[]
]
},
"201b0934-417f-4d00-9fd3-7986df544192": {
"main": [
[
{
"node": "ecd0d08a-44ca-4390-9eff-01f0719abc61",
"type": "main",
"index": 0
},
{
"node": "58b7114e-a45a-41f2-aae2-31c4edbe1e94",
"type": "main",
"index": 0
}
],
[]
]
},
"3be05870-9c10-4a9b-b8dc-0052833d3448": {
"main": [
[
{
"node": "0f335618-d674-4012-8511-2de6cc356a6e",
"type": "main",
"index": 0
}
],
[]
]
},
"ed9af293-d933-4a67-8ba7-fd9a816d0a22": {
"main": [
[
{
"node": "eb80bc2e-04a4-42e3-afba-6472fdcbac5b",
"type": "main",
"index": 0
}
]
]
},
"ecd0d08a-44ca-4390-9eff-01f0719abc61": {
"main": [
[
{
"node": "aceab631-3ca5-4cc3-923f-6406ad426b81",
"type": "main",
"index": 1
}
]
]
},
"58b7114e-a45a-41f2-aae2-31c4edbe1e94": {
"main": [
[
{
"node": "aceab631-3ca5-4cc3-923f-6406ad426b81",
"type": "main",
"index": 0
}
]
]
},
"eb80bc2e-04a4-42e3-afba-6472fdcbac5b": {
"main": [
[
{
"node": "201b0934-417f-4d00-9fd3-7986df544192",
"type": "main",
"index": 0
}
]
]
},
"aceab631-3ca5-4cc3-923f-6406ad426b81": {
"main": [
[
{
"node": "3be05870-9c10-4a9b-b8dc-0052833d3448",
"type": "main",
"index": 0
}
]
]
},
"3ccf8c71-7ad0-47a3-b006-bc1fa5e60023": {
"main": [
[
{
"node": "6afd2b41-f733-45b3-85c6-5faba765e35e",
"type": "main",
"index": 0
}
]
]
},
"0208b796-b40e-47f0-a67c-5f437f02f301": {
"main": [
[
{
"node": "3ccf8c71-7ad0-47a3-b006-bc1fa5e60023",
"type": "main",
"index": 0
}
]
]
},
"6afd2b41-f733-45b3-85c6-5faba765e35e": {
"main": [
[
{
"node": "Filter & Dedup Jobs",
"type": "main",
"index": 0
}
]
]
},
"Filter & Dedup Jobs": {
"main": [
[
{
"node": "ab00b3bd-25b6-45a2-920a-cbc09a8edd90",
"type": "main",
"index": 0
},
{
"node": "58b7114e-a45a-41f2-aae2-31c4edbe1e94",
"type": "main",
"index": 1
}
]
]
}
}
}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é
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
Explorer les nœuds n8n dans la bibliothèque de références visuelles
Explorer les nœuds n8n dans la base de références visuelles
If
Ftp
Set
+
If
Ftp
Set
113 NœudsI versus AI
Autres
Découverte des lacunes en matière de recherche de marché et de référencement (SEO) par analyse du contenu concurrent
utilisation InfraNodus GraphRAG analyse竞争对手网站contenu空白,助力 SEO
If
Code
Wait
+
If
Code
Wait
37 NœudsInfraNodus
Intelligence Artificielle
工作日日志记录
AI工时表générateur - intégrationGmail、日历etGitHubàGoogle表格
If
Set
Code
+
If
Set
Code
31 NœudsLuka Zivkovic
Productivité personnelle
Création et téléchargement de vidéos AI vers Instagram, TikTok et YouTube
Création de vidéos pilotée par l'IA depuis Google Drive, téléchargement sur Instagram, TikTok et YouTube
If
Set
Code
+
If
Set
Code
53 NœudsDevCode Journey
Création de contenu
Génération de prospects basée sur l'IA (Apollo, recherche LinkedIn et email de personnalisation en 4 étapes)
Génération de prospects basée sur l'IA : Utilisation d'Apollo, de la recherche LinkedIn et d'un email de personnalisation en 4 étapes
If
Set
Code
+
If
Set
Code
30 NœudsGain FLow AI
Génération de leads
intelligent资金gestion器
基于Telegram、Google SheetsetOpenAIdeAI驱动收据et支出追踪器
If
Set
Code
+
If
Set
Code
50 NœudsKhairul Muhtadin
Finance
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds20
Catégorie-
Types de nœuds8
Description de la difficulté
Auteur
Yasir
@deonix-aiLiens externes
Voir sur n8n.io →
Partager ce workflow