{
  "nodes": [
    {
      "id": "bee233ee-7212-4fbd-b151-0bb49919ca42",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        280
      ],
      "parameters": {
        "color": 4,
        "width": 1289,
        "height": 4398,
        "content": "LinkedIn \uc791\uc5c5 \ub370\uc774\ud130 \uc2a4\ud06c\ub798\ud37c\ub97c Google Sheets\ub85c\n\nLinkedIn\uc5d0\uc11c Bright Data\ub97c \ud1b5\ud574 \uc2e4\uc2dc\uac04 \uc791\uc5c5 \uac8c\uc2dc\ubb3c\uc744 \uc2a4\ud06c\ub798\ud551\ud558\uace0, \uc774\ub97c \uc815\ub9ac\ud55c \ud6c4 Google Sheets\ub85c \ubcf4\ub0b4\uae30. \uc0ac\uc6a9 \ubaa9\uc801:\n\u2705 \uc791\uc5c5 \uc218\uc0c9 \u2014 \uc2e0\uc120\ud558\uace0 \ud544\ud130\ub9c1\ub41c \uc5ed\ud560\n\u2705 \ud310\ub9e4 \uc7a0\uc7ac \uace0\uac1d \ud0d0\uc0c9 \u2014 \ucc44\uc6a9 \uc911\uc778 \ud68c\uc0ac \ucc3e\uae30 (\uc989, \uc131\uc7a5 \uc911\uc778 \ud68c\uc0ac)\n\u2699\ufe0f \uc0ac\uc6a9\ub41c \ub3c4\uad6c\nn8n \ub178\ub4dc: Form \u2192 HTTP Request \u2192 Wait \u2192 If \u2192 Code \u2192 Google Sheets\n\uc678\ubd80 \ub3c4\uad6c:\n\nBright Data \u2013 \ub370\uc774\ud130\uc14b API\nGoogle Sheets \u2013 \ud15c\ud50c\ub9bf \ubcf5\uc0ac\n\n\ud83d\udd11 \uc124\uc815 \u2013 \ud544\uc694\ud55c \uc790\uaca9 \uc99d\uba85\n\nBright Data API \ud0a4 \u2192 HTTP \ud5e4\ub354\uc5d0 \ucd94\uac00: Authorization: Bearer YOUR_KEY\nGoogle Sheets OAuth2 \u2192 n8n\uc5d0\uc11c \uacc4\uc815 \uc5f0\uacb0\n\n\ud83d\udcdd \uc785\ub825 \ud3fc \u2013 \ud544\ub4dc\n\uc2a4\ud06c\ub798\ud551\ud560 \uc791\uc5c5 \ub370\uc774\ud130\ub97c \uc815\uc758\ud558\ub294 \ub370 \uc0ac\uc6a9.\n\ud544\ub4dc\uc124\uba85\uc608\uc2dcLocation\ub3c4\uc2dc/\uc9c0\uc5edNew York, BerlinKeyword\uac80\uc0c9\ud560 \uc5ed\ud560CMO, Data AnalystCountry2\uc790\ub9ac ISO \ucf54\ub4dcUS, UK, DETime Range\uc791\uc5c5\uc758 \ucd5c\uadfc\uc131\"Past 24 hours\" \ub610\ub294 \"Last 7 days\" (\uad8c\uc7a5)Job Type\ud480\ud0c0\uc784 / \ud30c\ud2b8\ud0c0\uc784 / \uacc4\uc57d(\uc120\ud0dd\uc0ac\ud56d)Experience\uacbd\ub825 \ub2e8\uacc4Entry, Mid, Senior(\uc120\ud0dd\uc0ac\ud56d)Remote\uc6d0\uaca9 \uce5c\ud654\uc801 \uc5ed\ud560\ub85c \ud544\ud130\ub9c1(\uc120\ud0dd\uc0ac\ud56d)Company\ud2b9\uc815 \uace0\uc6a9\uc8fc\ub85c \ud544\ud130\ub9c1(\uc120\ud0dd\uc0ac\ud56d)\n\ud83d\ude80 \uc6cc\ud06c\ud50c\ub85c \ub2e8\uacc4\n\n\uc0ac\uc6a9\uc790\uac00 \uc785\ub825 \ud3fc\uc744 \uc791\uc131\nBright Data \ub370\uc774\ud130\uc14b API\ub97c \ud1b5\ud574 \ud2b8\ub9ac\uac70 \uc2a4\ub0c5\uc0f7\nWait \ub178\ub4dc + \ud3f4\ub9c1\uc774 \ub370\uc774\ud130 \uc900\ube44 \uc5ec\ubd80 \ud655\uc778 (~1\u20133\ubd84)\n\uc815\ub9ac \ub2e8\uacc4:\n\n\uc911\ucca9 \ud544\ub4dc(\uc791\uc5c5_\ud3ec\uc2a4\ud130, \uae30\ubcf8_\uae09\uc5ec \ub4f1)\ub97c \ud3c9\ud0c4\ud654\n\uc791\uc5c5 \uc124\uba85\uc5d0\uc11c HTML \uc81c\uac70\n\n\nGoogle \uc2dc\ud2b8\ub85c \ubcf4\ub0b4\uae30\n\n\uc2dc\ud2b8\ub294 \ubbf8\ub9ac \uc5f0\uacb0\ub418\uc5b4 \uc788\uc73c\uba70, \uc791\uc5c5 1\uac1c\ub2f9 \ud589 1\uac1c\n\uc608\uc2dc \uc5f4: job_title, company_name, location, salary_min, apply_link, job_description_plain\n\n\n\ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uc138\uc694\n\n\uc791\uc5c5 \uc218\uc0c9\uc790 \u2192 \ube60\ub974\uac8c \uc9c0\uc6d0\n\uc601\uc5c5\uc778 \u2192 \uad6c\ub9e4\uc790\ub97c \uc2dd\ubcc4\ud558\uace0 \ub3c4\uc6c0 \uc81c\uacf5\n\n\n\n\ud83d\udca1 \ud504\ub85c \ud301\n\n\ub354 \uc2e0\uc120\ud55c \uacb0\uacfc\ub97c \uc704\ud574 \"Past 24 hours\" \ub610\ub294 \"Last 7 days\" \uc0ac\uc6a9\n\ud544\ud130\ub97c \ube44\uc6cc\ub450\uba74 Bright Data\uac00 \ub354 \ub113\uc740 \uacb0\uacfc\ub97c \ubc18\ud658\n\uc815\ub9ac\ub41c \ub370\uc774\ud130\ub97c \uc0ac\uc6a9\ud558\uc5ec:\n\n\ucf5c\ub4dc \uc774\uba54\uc77c \uac1c\uc778\ud654\nLinkedIn \uc544\uc6c3\ub9ac\uce58\nICP \uae30\ubc18 \ub9ac\ub4dc \ubaa9\ub85d \uad6c\ucd95\n\n\n\n\ud83e\uddea \uc608\uc2dc API \ubcf8\ubb38\njson[ \n  { \n    \"location\": \"New York\", \n    \"keyword\": \"Marketing Manager\", \n    \"country\": \"US\", \n    \"time_range\": \"Past 24 hours\", \n    \"job_type\": \"Part-time\", \n    \"experience_level\": \"\", \n    \"remote\": \"\", \n    \"company\": \"\" \n  } \n]\n\ud83d\udcc4 \ud15c\ud50c\ub9bf \ubc0f \ub9ac\uc18c\uc2a4\n\n\ud83d\udccb Google \uc2dc\ud2b8 \ud15c\ud50c\ub9bf (\ubcf5\uc0ac\ud558\uae30)\n\ud83d\udcd8 Bright Data API \ucc38\uc870\n\n\ud83d\udee0\ufe0f \ucee4\uc2a4\ud130\ub9c8\uc774\uc988\ud558\uae30\n\nHTTP \ubcf8\ubb38\uc5d0 \ud544\ud130 \ucd94\uac00 (remote, experience_level \ub4f1)\nBright Data\uac00 \ub290\ub9b4 \uacbd\uc6b0 \ud3f4\ub9c1 \uac04\uaca9 \ubcc0\uacbd\n\ubaa9\ub85d\uc744 \uc810\uc218\ud654/\uc6b0\uc120\uc21c\uc704\ud654\ud558\ub294 \uc0ac\uc6a9\uc790 \uc815\uc758 \ub85c\uc9c1 \ucd94\uac00\n\ud544\ud130\ub9c1\ub41c \ubaa9\ub85d\uc744 CRM, Slack \ub4f1\uc73c\ub85c \ubcf4\ub0b4\uae30\n\n\uc774\uac83\uc740 \ucc44\uc6a9 \uc2e0\ud638\uc758 \uc2e4\uc2dc\uac04 \uc2a4\ud2b8\ub9bc\uc744 \uc81c\uacf5\ud569\ub2c8\ub2e4 \u2014 \uc791\uc5c5\uc744 \ucc3e\uac70\ub098 \uc11c\ube44\uc2a4\ub97c \uc81c\uc548\ud558\ub294 \uacbd\uc6b0. \ud558\ub098\uc758 \ud3fc. \ud558\ub098\uc758 \ud074\ub9ad. \uc644\uc804\ud788 \uc790\ub3d9\ud654."
      },
      "typeVersion": 1
    },
    {
      "id": "0fa9d0fe-b3ba-48be-99b9-2bc3aeb18b43",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -60
      ],
      "parameters": {
        "color": 4,
        "width": 1300,
        "height": 320,
        "content": "=======================================  \n            \uc6cc\ud06c\ud50c\ub85c\uc6b0 \uc9c0\uc6d0  \n=======================================  \n\uc9c8\ubb38\uc774\ub098 \uc9c0\uc6d0\uc774 \ud544\uc694\ud558\uc2dc\uba74, \ub2e4\uc74c\uc73c\ub85c \uc5f0\ub77d\ud574\uc8fc\uc138\uc694:  \n    Yaron@nofluff.online  \n  \n\uc5ec\uae30\uc5d0\uc11c \ub354 \ub9ce\uc740 \ud301\uacfc \ud29c\ud1a0\ub9ac\uc5bc\uc744 \ud0d0\uc0c9\ud558\uc138\uc694:  \n   - YouTube: https://www.youtube.com/@YaronBeen/videos  \n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/  \n======================================="
      },
      "typeVersion": 1
    },
    {
      "id": "33cb416e-a7ff-4b55-9701-9b9e95d76f12",
      "name": "Snapshot Progress",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2840,
        360
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/progress/{{ $('HTTP Request- Post API call to Bright Data').item.json.snapshot_id }}",
        "options": {},
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <YOUR_BRIGHT_DATA_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "6b8c9405-8f8c-4a24-85ca-343d33e06141",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        3680,
        140
      ],
      "parameters": {
        "width": 195,
        "height": 646,
        "content": "\uc774 \uc6cc\ud06c\ud50c\ub85c\uc6b0\uc5d0\uc11c \uacb0\uacfc\ub97c \uc800\uc7a5\ud558\uae30 \uc704\ud574 Google Sheets\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.\n\n\ub354 \ube60\ub974\uac8c \uc2dc\uc791\ud558\uae30 \uc704\ud574 \ub0b4 \ud15c\ud50c\ub9bf\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:\n\n1. [\ud15c\ud50c\ub9bf\uc744 \uac00\uc838\uc624\uae30 \uc704\ud574 \uc774 \ub9c1\ud06c\ub97c \ud074\ub9ad\ud558\uc138\uc694](https://docs.google.com/spreadsheets/d/1_jbr5zBllTy_pGbogfGSvyv1_0a77I8tU-Ai7BjTAw4/edit?usp=sharing)\n2. Sheets\uc758 \ubcf5\uc0ac\ubcf8\uc744 \ub9cc\ub4dc\uc138\uc694\n3. \uc774 \ub178\ub4dc\uc5d0 URL\uc744 \ucd94\uac00\ud558\uc138\uc694"
      },
      "typeVersion": 1
    },
    {
      "id": "3d3cd92a-9ea7-4a4f-a9b5-aae689f719e5",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1320,
        -60
      ],
      "parameters": {
        "width": 480,
        "height": 2240,
        "content": "# \ud83d\udd0d LinkedIn Jobs API \u2013 \ub9e4\uac1c\ubcc0\uc218 \uac00\uc774\ub4dc\n\n\uc774 \uac1d\uccb4\ub97c \uc0ac\uc6a9\ud558\uc5ec LinkedIn \uad6c\uc778 \ubaa9\ub85d\uc744 \uc870\ud68c\ud558\uc138\uc694.  \n\uac01 \ud544\ub4dc\ub97c \ud1b5\ud574 \ub2e4\uc591\ud55c \uae30\uc900\uc5d0 \ub530\ub77c \uacb0\uacfc\ub97c \ud544\ud130\ub9c1\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n```json\n{\n  \"location\": \"{{ $json.Location }}\",\n  \"keyword\": \"{{ $json.Keyword }}\",\n  \"country\": \"{{ $json.Country }}\",\n  \"time_range\": \"\uc9c0\ub09c 24\uc2dc\uac04\",\n  \"job_type\": \"\uc544\ub974\ubc14\uc774\ud2b8\",\n  \"experience_level\": \"\",\n  \"remote\": \"\",\n  \"company\": \"\"\n}\n```\n\n## \ud83e\uddfe \ud544\ub4dc \uc124\uba85 \ubc0f \uc720\ud6a8 \uc635\uc158\n\n### \ud83d\uddfa\ufe0f location\n\uad6c\uc778 \uc704\uce58\uc758 \ub3c4\uc2dc \ub610\ub294 \uc9c0\uc5ed.\n\ub3c4\uc2dc \ub610\ub294 \uc9c0\uc5ed \uc774\ub984\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.\n\u2705 \uc608\uc2dc: \"Berlin\", \"New York\"\n\n### \ud83e\udde0 keyword\n\uad6c\uc9c1 \uc81c\ubaa9 \ub610\ub294 \uac80\uc0c9 \ud0a4\uc6cc\ub4dc.\n\uc5ed\ud560 \uc774\ub984\uc774\ub098 \uae30\uc220\uacfc \uac19\uc740 \uc6a9\uc5b4\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.\n\u2705 \uc608\uc2dc: \"Data Scientist\", \"Growth Marketing\"\n\n### \ud83c\udf0d country\nISO 3166-1 alpha-2 \ud615\uc2dd\uc758 \uad6d\uac00 \ucf54\ub4dc.\n\u2705 \uc608\uc2dc: \"US\", \"DE\", \"IL\"\n\n### \u23f1\ufe0f time_range\n\uac8c\uc2dc \ub0a0\uc9dc \ud544\ud130.\n\uad6c\uc778\uc774 \uac8c\uc2dc\ub41c \ucd5c\uadfc \uc815\ub3c4\uc5d0 \ub530\ub77c \uacb0\uacfc\ub97c \uc81c\ud55c\ud569\ub2c8\ub2e4.\n\ud5c8\uc6a9\ub418\ub294 \uac12:\n- \ubaa8\ub4e0 \uae30\uac04\n- \uc9c0\ub09c 24\uc2dc\uac04\n- \uc9c0\ub09c \uc8fc\n- \uc9c0\ub09c \ub2ec\n\u2705 \uc608\uc2dc: \"\uc9c0\ub09c \uc8fc\"\n\n### \ud83d\udcbc job_type\n\uace0\uc6a9 \uc720\ud615.\n\ub2e8\uc77c \uac12 \ub610\ub294 \uc27c\ud45c\ub85c \uad6c\ubd84\ub41c \ubaa9\ub85d\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.\n\ud5c8\uc6a9\ub418\ub294 \uac12:\n- \uc815\uaddc\uc9c1\n- \uc544\ub974\ubc14\uc774\ud2b8\n- \uacc4\uc57d\uc9c1\n- \uc784\uc2dc\uc9c1\n- \uc778\ud134\uc2ed\n- \uc790\uc6d0\ubd09\uc0ac\n- \uae30\ud0c0\n\u2705 \uc608\uc2dc: \"\uc815\uaddc\uc9c1,\uacc4\uc57d\uc9c1\"\n\n### \ud83c\udfaf experience_level\n\uad6c\uc9c1\uc758 \uacbd\ub825 \uc218\uc900.\n\ud5c8\uc6a9\ub418\ub294 \uac12:\n- \uc778\ud134\uc2ed\n- \ucd08\ubcf4\uc790\n- \uc900\uc804\ubb38\uac00\n- \uc911\uac04-\uace0\uae09 \uc218\uc900\n- \uc774\uc0ac\uae09\n- \uacbd\uc601\uc9c4\n\u2705 \uc608\uc2dc: \"\uc911\uac04-\uace0\uae09 \uc218\uc900\"\n\n### \ud83c\udf10 remote\n\uadfc\ubb34 \ud615\ud0dc.\n\ud5c8\uc6a9\ub418\ub294 \uac12:\n- \uc6d0\uaca9\n- \ud604\uc7a5\n- \ud558\uc774\ube0c\ub9ac\ub4dc\n- (\uc120\ud638\ud558\uc9c0 \uc54a\uc74c\uc73c\ub85c \ube44\uc6cc\ub450\uc138\uc694)\n\u2705 \uc608\uc2dc: \"\uc6d0\uaca9\"\n\n### \ud83c\udfe2 company\n\ud68c\uc0ac \uc774\ub984\uc73c\ub85c \ud544\ud130\ub9c1.\n\uc120\ud0dd\uc0ac\ud56d. \uc77c\ubc18 \ud14d\uc2a4\ud2b8\ub97c \uc0ac\uc6a9\ud558\uc138\uc694.\n\u2705 \uc608\uc2dc: \"Google\", \"Spotify\"\n\n## \u2705 \uc804\uccb4 \uc608\uc2dc\n\n```json\n{\n  \"location\": \"New York\",\n  \"keyword\": \"UI Designer\",\n  \"country\": \"US\",\n  \"time_range\": \"\uc9c0\ub09c \uc8fc\",\n  \"job_type\": \"\uc815\uaddc\uc9c1,\uacc4\uc57d\uc9c1\",\n  \"experience_level\": \"\uc911\uac04-\uace0\uae09 \uc218\uc900\",\n  \"remote\": \"\ud558\uc774\ube0c\ub9ac\ub4dc\",\n  \"company\": \"Spotify\"\n}\n```"
      },
      "typeVersion": 1
    },
    {
      "id": "1d7a7bb0-1531-4516-9373-5e85a090b143",
      "name": "On form submission - Discover Jobs",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        1700,
        580
      ],
      "parameters": {
        "options": {},
        "formTitle": "Linkedin High Intent Prospects And Job Post Hunt",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Job Location",
              "placeholder": "example: new york",
              "requiredField": true
            },
            {
              "fieldLabel": "Keyword",
              "placeholder": "example: CMO, AI architect",
              "requiredField": true
            },
            {
              "fieldLabel": "Country (2 letters)",
              "placeholder": "example: US,UK,IL",
              "requiredField": true
            }
          ]
        },
        "formDescription": "This form lets you customize your job search / prospecting by choosing:\n\nLocation (city or region)\n\nJob title or keywords\n\nCountry code\n\nFilters like posting date, job type, experience level, and remote options\n\nYou can also optionally narrow results by company name.\n\n\ud83e\udde0 Tip: Leave fields blank if you want broader results."
      },
      "typeVersion": 2.2
    },
    {
      "id": "aea569df-eedd-441f-aba5-c3c26a50fa87",
      "name": "HTTP Request- Post API call to Bright Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2260,
        620
      ],
      "parameters": {
        "url": "https://api.brightdata.com/datasets/v3/trigger",
        "method": "POST",
        "options": {},
        "jsonBody": "=[\n  {\n    \"location\": \"{{ $json['Job Location'] }}\",\n    \"keyword\": \"{{ $json.Keyword }}\",\n    \"country\": \"{{ $json['Country (2 letters)'] }}\",\n    \"time_range\": \"Past 24 hours\",\n    \"job_type\": \"Part-time\",\n    \"experience_level\": \"\",\n    \"remote\": \"\",\n    \"company\": \"\"\n  }\n] ",
        "sendBody": true,
        "sendQuery": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "queryParameters": {
          "parameters": [
            {
              "name": "dataset_id",
              "value": "gd_lpfll7v5hcqtkxl6l"
            },
            {
              "name": "endpoint",
              "value": "https://yaron-nofluff.app.n8n.cloud/webhook-test/8c42463d-a631-4a17-a084-4bcbbb3bfc68"
            },
            {
              "name": "notify",
              "value": "https://yaron-nofluff.app.n8n.cloud/webhook-test/8c42463d-a631-4a17-a084-4bcbbb3bfc68"
            },
            {
              "name": "format",
              "value": "json"
            },
            {
              "name": "uncompressed_webhook",
              "value": "true"
            },
            {
              "name": "type",
              "value": "discover_new"
            },
            {
              "name": "discover_by",
              "value": "=keyword"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <YOUR_BRIGHT_DATA_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "8837f055-7243-44b6-87a2-e679d75839d0",
      "name": "Wait - Polling Bright Data",
      "type": "n8n-nodes-base.wait",
      "position": [
        2600,
        360
      ],
      "parameters": {
        "unit": "minutes"
      },
      "executeOnce": false,
      "typeVersion": 1.1
    },
    {
      "id": "1f0ebefa-42a1-450c-b30a-64edabdaedaf",
      "name": "If - Checking status of Snapshot - if data is ready or not",
      "type": "n8n-nodes-base.if",
      "position": [
        3040,
        360
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "7932282b-71bb-4bbb-ab73-4978e554de7e",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "running"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "e17b4da0-3f9c-45d5-acdf-ab634acfef97",
      "name": "HTTP Request - Getting data from Bright Data",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        3320,
        380
      ],
      "parameters": {
        "url": "=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "format",
              "value": "json"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "Authorization",
              "value": "Bearer <YOUR_BRIGHT_DATA_API_KEY>"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "b5bd6a55-f80d-46f9-a59a-beff28de9da7",
      "name": "Code - Cleaning Up",
      "type": "n8n-nodes-base.code",
      "position": [
        3600,
        400
      ],
      "parameters": {
        "jsCode": "// Helper function to strip HTML tags\nfunction stripHtml(html) {\n  return html\n    .replace(/<[^>]+>/g, '')    // remove all HTML tags\n    .replace(/&nbsp;/g, ' ')     // decode HTML entities\n    .replace(/&[a-z]+;/g, '')    // remove other HTML entities\n    .replace(/\\s+/g, ' ')        // normalize whitespace\n    .trim();\n}\n\nreturn items.map(item => {\n  const data = item.json;\n\n  // Flatten job_poster\n  if (data.job_poster) {\n    data.job_poster_name = data.job_poster.name || '';\n    data.job_poster_title = data.job_poster.title || '';\n    data.job_poster_url = data.job_poster.url || '';\n    delete data.job_poster;\n  }\n\n  // Flatten base_salary\n  if (data.base_salary) {\n    data.salary_min = data.base_salary.min_amount || '';\n    data.salary_max = data.base_salary.max_amount || '';\n    data.salary_currency = data.base_salary.currency || '';\n    data.salary_period = data.base_salary.payment_period || '';\n    delete data.base_salary;\n  }\n\n  // Clean up job description HTML\n  if (data.job_description_formatted) {\n    data.job_description_plain = stripHtml(data.job_description_formatted);\n  }\n\n  return { json: data };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "70f4a4a0-b9ce-4b7a-b232-86014a7f8a3f",
      "name": "Google Sheets - Adding All Job Posts",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        3940,
        440
      ],
      "parameters": {
        "columns": {
          "value": {
            "country_code": "={{ $json.country_code }}"
          },
          "schema": [
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_posting_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_posting_id",
              "defaultMatch": false,
              "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": "job_location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_description_plain",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_description_plain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_poster_name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_poster_name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_poster_title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_poster_title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_poster_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_poster_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "salary_min",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "salary_min",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "salary_max",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "salary_max",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "salary_currency",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "salary_currency",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "salary_period",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "salary_period",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "application_availability",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "application_availability",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_posted_date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_posted_date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_logo",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_logo",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "country_code",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "country_code",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "timestamp",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "timestamp",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "company_url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "company_url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_posted_time",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_posted_time",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_num_applicants",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_num_applicants",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "discovery_input",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "discovery_input",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "apply_link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "apply_link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title_id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title_id",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_description_formatted",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_description_formatted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "input",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "input",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_seniority_level",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_seniority_level",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_function",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_function",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_employment_type",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_employment_type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_industries",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_industries",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "job_base_pay_range",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "job_base_pay_range",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "row_number"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {
          "handlingExtraData": "insertInNewColumn"
        },
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_jbr5zBllTy_pGbogfGSvyv1_0a77I8tU-Ai7BjTAw4/edit#gid=0",
          "cachedResultName": "input"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1_jbr5zBllTy_pGbogfGSvyv1_0a77I8tU-Ai7BjTAw4",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1_jbr5zBllTy_pGbogfGSvyv1_0a77I8tU-Ai7BjTAw4/edit?usp=drivesdk",
          "cachedResultName": "NoFluff-N8N-Sheet-Template-Job Scraping WIth Bright Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3,
      "alwaysOutputData": true
    },
    {
      "id": "297d778f-afa5-4d2d-baea-3b1fb199f77c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1940,
        -40
      ],
      "parameters": {
        "width": 300,
        "height": 880,
        "content": "\ud83e\udde0 Bright Data Trigger \u2013 \uc791\uc5c5 \ucffc\ub9ac \uc0ac\uc6a9\uc790 \uc815\uc758\n\n\uc774 HTTP \uc694\uccad\uc740 Bright Data\uc5d0 POST \ud638\ucd9c\uc744 \ubcf4\ub0b4 \uc0ac\uc6a9\uc790\uc758 \ud544\ud130\uc5d0 \uae30\ubc18\ud55c \uc0c8\ub85c\uc6b4 \ub370\uc774\ud130\uc14b \uc2a4\ub0c5\uc0f7\uc744 \uc2dc\uc791\ud569\ub2c8\ub2e4.\n\n\ud83d\udc4b Form Trigger\ub97c \uc0ac\uc6a9\ud558\uace0 \uc2f6\uc9c0 \uc54a\ub2e4\uba74, \uc774 \ub178\ub4dc\uc5d0\uc11c \uc9c1\uc811 \ud544\ud130\ub97c \uc870\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n\uc0ac\uc6a9\uc790 \uc815\uc758\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4:\n\n\"location\" \u2192 \ub3c4\uc2dc, \uc9c0\uc5ed, \ub610\ub294 \ud0a4\uc6cc\ub4dc (\uc608: \"New York\", \"Remote\")\n\n\"keyword\" \u2192 \uc9c1\ubb34 \uc81c\ubaa9 \ub610\ub294 \uc5ed\ud560 (\uc608: \"CMO\", \"AI Engineer\")\n\n\"country\" \u2192 2\uc790\ub9ac \uad6d\uac00 \ucf54\ub4dc (\uc608: \"US\", \"UK\")\n\n\"time_range\" \u2192 \"\uc9c0\ub09c 24\uc2dc\uac04\", \"\uc9c0\ub09c 7\uc77c\" \ub4f1\n\n\"job_type\", \"experience_level\", \"remote\", \"company\" \u2192 \uc120\ud0dd\uc801 \ud544\ud130\n\n\ud83d\udccc \ud301:\n\"\uc9c0\ub09c 24\uc2dc\uac04\" \ub610\ub294 \"\uc9c0\ub09c 7\uc77c\"\uc744 \uc0ac\uc6a9\ud558\uc5ec \uac00\uc7a5 \ucd5c\uc2e0\uc758 \uacb0\uacfc\ub97c \uc5bb\uc73c\uc138\uc694."
      },
      "typeVersion": 1
    },
    {
      "id": "54303791-b269-4930-85b5-33e50ae08f33",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2320,
        220
      ],
      "parameters": {
        "color": 4,
        "width": 940,
        "height": 360,
        "content": "\ube0c\ub77c\uc774\ud2b8 \ub370\uc774\ud130 \uc77c\uc790\ub9ac \uc5bb\uae30"
      },
      "typeVersion": 1
    },
    {
      "id": "cccb03cb-0432-43ff-9c3a-233de510a775",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        1920,
        580
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "12067869-0249-4cd2-b9e2-8e4055a0d917",
              "name": "",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "connections": {
    "Edit Fields": {
      "main": [
        [
          {
            "node": "HTTP Request- Post API call to Bright Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Snapshot Progress": {
      "main": [
        [
          {
            "node": "If - Checking status of Snapshot - if data is ready or not",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code - Cleaning Up": {
      "main": [
        [
          {
            "node": "Google Sheets - Adding All Job Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait - Polling Bright Data": {
      "main": [
        [
          {
            "node": "Snapshot Progress",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission - Discover Jobs": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request- Post API call to Bright Data": {
      "main": [
        [
          {
            "node": "Wait - Polling Bright Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request - Getting data from Bright Data": {
      "main": [
        [
          {
            "node": "Code - Cleaning Up",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If - Checking status of Snapshot - if data is ready or not": {
      "main": [
        [
          {
            "node": "Wait - Polling Bright Data",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "HTTP Request - Getting data from Bright Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}