07 - Motor de filtrado automático de empleos

Intermedio

Este es unHRflujo de automatización del dominio deautomatización que contiene 10 nodos.Utiliza principalmente nodos como Code, Filter, HttpRequest, GoogleSheets, ScheduleTrigger. Automatización de búsqueda y filtrado de empleos con JSearch API y Google Sheets

Requisitos previos
  • Pueden requerirse credenciales de autenticación para la API de destino
  • Credenciales de API de Google Sheets
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "49jPs7OkPU0PqODZ",
  "meta": {
    "instanceId": "c91c5b6efe2709e07c37996245857ac5d863d575d07e0072127351337c204c40",
    "templateCredsSetupCompleted": true
  },
  "name": "07 - Automated Job Curation Engine",
  "tags": [],
  "nodes": [
    {
      "id": "c4d4a93c-2aca-4090-88b7-3b8e75ed7984",
      "name": "⏰ Programar: Activación Diaria",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -340,
        440
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "32968ac3-397b-419c-a3f4-fd8192030515",
      "name": "📄 Leer Rol de Trabajo Pendiente de la Hoja",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -120,
        440
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": true
        },
        "filtersUI": {
          "values": [
            {
              "lookupValue": "Pending",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit#gid=0",
          "cachedResultName": "Your_Sheet_No"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit?usp=drivesdk",
          "cachedResultName": "Job Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "LJQH5glroAM1SiFe",
          "name": "Google Sheets account - (DEV)"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "f5f29814-a6b2-4178-a84b-9646130340d8",
      "name": "🌐 Buscar Empleos vía JSearch API",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        100,
        440
      ],
      "parameters": {
        "url": "https://jsearch.p.rapidapi.com/search",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "query",
              "value": "={{ $json.Position + ' in ' + $json.Location }}"
            },
            {
              "name": "page",
              "value": "1"
            },
            {
              "name": "num_pages",
              "value": "1"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-RapidAPI-Key",
              "value": "YOUR_RAPIDAPI_KEY"
            },
            {
              "name": "X-RapidAPI-Host",
              "value": "jsearch.p.rapidapi.com"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "cfd205db-f9b1-4906-8b42-3529a7d7bffe",
      "name": "🧠 Extraer Datos del Empleo de la Respuesta API",
      "type": "n8n-nodes-base.code",
      "position": [
        320,
        440
      ],
      "parameters": {
        "jsCode": "const allItems = [];\n\nfor (const item of items) {\n  const jobs = item.json.data || [];\n  for (const job of jobs) {\n    allItems.push({\n      json: {\n        title: job.job_title,\n        company: job.employer_name,\n        location: `${job.job_city}, ${job.job_country}`,\n        apply_link: job.job_apply_link,\n        is_remote: job.job_is_remote,\n        posted_date: job.job_posted_at_datetime_utc,\n      }\n    });\n  }\n}\n\nreturn allItems;"
      },
      "typeVersion": 2
    },
    {
      "id": "a54cfdfd-b0f9-4027-9309-3aae34ff3564",
      "name": "🔍 Filtrar Listados de Empleos Válidos",
      "type": "n8n-nodes-base.filter",
      "position": [
        540,
        440
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "579057db-1ec8-4a3b-8dca-7169d9699521",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.title }}",
              "rightValue": "="
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "bdd89987-6256-408b-8bd5-0cd0154dd300",
      "name": "📊 Escribir Empleos en la Hoja de Salida",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        760,
        440
      ],
      "parameters": {
        "columns": {
          "value": {
            "Title": "={{ $json.title }}",
            "Company": "={{ $json.company }}",
            "Location": "={{ $json.location }}",
            "Is Remote": "={{ $json.is_remote }}",
            "Posted On": "={{ $json.posted_date }}",
            "Apply Link": "={{ $json.apply_link }}"
          },
          "schema": [
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Apply Link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Apply Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Is Remote",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Is Remote",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Posted On",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Posted On",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Apply Link"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit#gid=0",
          "cachedResultName": "Your_Sheet_No"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "Your_Sheet_ID",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit?usp=drivesdk",
          "cachedResultName": "Job Listing"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "LJQH5glroAM1SiFe",
          "name": "Google Sheets account - (DEV)"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "b834f983-9319-4c96-bf9f-7adbee871647",
      "name": "✅ Marcar Empleo como Raspado en la Hoja de Origen",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        980,
        440
      ],
      "parameters": {
        "columns": {
          "value": {
            "Status": "Scraped",
            "row_number": "={{ $('📄 Read Pending Job Role from Sheet').item.json.row_number }}"
          },
          "schema": [
            {
              "id": "Position",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Position",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "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/{{Your_Sheet_ID}}/edit#gid=0",
          "cachedResultName": "Your_Sheet_No"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/{{Your_Sheet_ID}}/edit?usp=drivesdk",
          "cachedResultName": "Job Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "LJQH5glroAM1SiFe",
          "name": "Google Sheets account - (DEV)"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.6
    },
    {
      "id": "b9c7a999-6c09-48e5-aea8-b5a14e30ed51",
      "name": "Nota Adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -380,
        200
      ],
      "parameters": {
        "width": 420,
        "height": 520,
        "content": "## Trigger & Input\n\n• Triggers the workflow on a defined hourly interval.\n• Fetches a single row from the \"Job Scraper\" sheet where Status = \"Pending\".\n• This row includes 'Position' and 'Location' values for the job search.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c987a1d7-03a7-40b1-99d3-57d9049b3c32",
      "name": "Nota Adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        200
      ],
      "parameters": {
        "color": 3,
        "width": 620,
        "height": 520,
        "content": "## Job Search & Processing\n\n• Sends query (Position + Location) to the JSearch API.\n• Parses the API response and extracts individual job listings.\n• Filters out empty or invalid results to ensure clean output.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8c5c5acc-6b1b-4ece-b4c2-af47bda1ecd2",
      "name": "Nota Adhesiva2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        720,
        200
      ],
      "parameters": {
        "color": 4,
        "width": 460,
        "height": 520,
        "content": "## Output & Status Update\n\n• Writes valid jobs to the \"Job Listing\" sheet with fields like title, location, company, etc.\n• Marks the original row in the source sheet as \"Scraped\" using the row number for tracking.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5e71e30c-da84-4500-bea9-ce72b5596424",
  "connections": {
    "a54cfdfd-b0f9-4027-9309-3aae34ff3564": {
      "main": [
        [
          {
            "node": "bdd89987-6256-408b-8bd5-0cd0154dd300",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c4d4a93c-2aca-4090-88b7-3b8e75ed7984": {
      "main": [
        [
          {
            "node": "32968ac3-397b-419c-a3f4-fd8192030515",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "bdd89987-6256-408b-8bd5-0cd0154dd300": {
      "main": [
        [
          {
            "node": "b834f983-9319-4c96-bf9f-7adbee871647",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f5f29814-a6b2-4178-a84b-9646130340d8": {
      "main": [
        [
          {
            "node": "cfd205db-f9b1-4906-8b42-3529a7d7bffe",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "32968ac3-397b-419c-a3f4-fd8192030515": {
      "main": [
        [
          {
            "node": "f5f29814-a6b2-4178-a84b-9646130340d8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cfd205db-f9b1-4906-8b42-3529a7d7bffe": {
      "main": [
        [
          {
            "node": "a54cfdfd-b0f9-4027-9309-3aae34ff3564",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Recursos Humanos

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Flujos de trabajo relacionados recomendados

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos10
Categoría1
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Avkash Kakdiya

Avkash Kakdiya

@itechnotion

🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders. 💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers. 🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools. 📬 Let’s automate what slows you down.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34