8
n8n 中文网amn8n.com

GitHub 用户活动与数据抓取器(数据丰富引擎)

高级

这是一个Lead Generation领域的自动化工作流,包含 30 个节点。主要使用 Set, Code, Merge, Slack, SplitOut 等节点。 使用 BrowserAct 抓取详细 GitHub 个人资料到 Google Sheets

前置要求
  • Slack Bot Token 或 Webhook URL
  • Google Sheets API 凭证
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "d2wBhCQb4NmmVxvP",
  "meta": {
    "instanceId": "88804d8e264d231c18413147cc92e4245b20ae7b97d774bad847556f645c8192",
    "templateCredsSetupCompleted": true
  },
  "name": "GitHub 用户活动与数据抓取器(数据丰富引擎)",
  "tags": [],
  "nodes": [
    {
      "id": "9622f349-2793-4b86-8cf4-0892dc420273",
      "name": "点击\"执行工作流\"时",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        64,
        -16
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6920fa53-2dd0-4e7c-8c7c-59eda7951047",
      "name": "获取表中的行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        192,
        -16
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1185614504,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit#gid=1185614504",
          "cachedResultName": "Source Top GitHub Contributors by Language & Location"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/18sw7io0yJOTDzvcknGmjBBqtK154CLk3k0FoWJZbfI0/edit?usp=drivesdk",
          "cachedResultName": "Test For BrowserAct"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c5998bf0-55a7-4837-a6c2-fc2da9d63729",
      "name": "遍历项目",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        336,
        -16
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "9ffc5569-0d41-48ff-a3b0-9bd73a89d011",
      "name": "运行工作流任务",
      "type": "n8n-nodes-browseract-workflows.browserAct",
      "position": [
        496,
        0
      ],
      "parameters": {
        "workflowId": "57481883835648378",
        "inputParameters": {
          "parameters": [
            {
              "name": "Target_Page",
              "value": "={{ $json.URL }}"
            }
          ]
        },
        "additionalFields": {}
      },
      "credentials": {
        "browserActApi": {
          "id": "AzKMhR2eAlOjzDiJ",
          "name": "BrowserAct account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d1ec986d-a88c-4cfe-8657-8d66bd12ec54",
      "name": "获取工作流任务的详情",
      "type": "n8n-nodes-browseract-workflows.browserAct",
      "position": [
        656,
        0
      ],
      "parameters": {
        "taskId": "={{ $json.id }}",
        "operation": "getTask",
        "maxWaitTime": 900,
        "waitForFinish": true,
        "pollingInterval": 20
      },
      "credentials": {
        "browserActApi": {
          "id": "AzKMhR2eAlOjzDiJ",
          "name": "BrowserAct account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "769ae773-ce8c-4f47-b06f-4b7fc8a420e4",
      "name": "JavaScript 代码",
      "type": "n8n-nodes-base.code",
      "position": [
        832,
        0
      ],
      "parameters": {
        "jsCode": "// This code fixes malformed JSON strings and merges the contents into a single object.\n\n// 1. Get the raw, potentially broken string from the previous node.\nconst rawJsonString = $input.first().json.output.string;\n\n// 2. **CRITICAL FIX STEP**: Add missing quotes around keys.\n// This regex finds keys like {key: or ,key: and changes them to {\"key\":\n// This repairs the common error made by the agent.\nconst fixedJsonString = rawJsonString.replace(/([{,])\\s*([a-zA-Z0-9_]+)\\s*:/g, '$1\"$2\":');\n\nconst mergedObject = {};\n\ntry {\n  // 3. Parse the *fixed* string into a real JavaScript array.\n  const dataArray = JSON.parse(fixedJsonString);\n\n  // 4. Loop through the array and merge all objects into one.\n  for (const item of dataArray) {\n    Object.assign(mergedObject, item);\n  }\n\n  // 5. **Handle Nested Strings**: After merging, check all values.\n  // If any value is a string that looks like JSON, parse it too.\n  for (const key in mergedObject) {\n    const value = mergedObject[key];\n    if (typeof value === 'string') {\n      const trimmedValue = value.trim();\n      if ((trimmedValue.startsWith('[') && trimmedValue.endsWith(']')) || (trimmedValue.startsWith('{') && trimmedValue.endsWith('}'))) {\n        try {\n          // If it looks like JSON, parse it and replace the string.\n          mergedObject[key] = JSON.parse(trimmedValue);\n        } catch (e) {\n          // If parsing fails, it's not valid JSON. Leave it as a string.\n        }\n      }\n    }\n  }\n\n} catch (error) {\n  // If the string is still not valid JSON after the fix, this will prevent a crash.\n  throw new Error('The input text could not be parsed as JSON, even after attempting a fix. Error: ' + error.message);\n}\n\n// 6. Return the final, single, merged item.\nreturn [{\n  json: mergedObject\n}];"
      },
      "typeVersion": 2
    },
    {
      "id": "6a78e820-11aa-430b-8e42-b61a13604fbb",
      "name": "创建表格",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        992,
        -144
      ],
      "parameters": {
        "title": "={{ $json.Name }}",
        "options": {},
        "operation": "create",
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs/edit?usp=drivesdk",
          "cachedResultName": "Github User Extracted Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "9e702ed4-c37a-40d2-9745-48d386fdda92",
      "name": "合并",
      "type": "n8n-nodes-base.merge",
      "position": [
        1504,
        -16
      ],
      "parameters": {
        "mode": "chooseBranch",
        "useDataOfInput": 2
      },
      "typeVersion": 3.2
    },
    {
      "id": "bcf8c1b2-4e65-4449-9975-9185061734d5",
      "name": "分离",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1712,
        -96
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "Links"
      },
      "typeVersion": 1
    },
    {
      "id": "504c3e1f-e3ce-46df-b576-2bc7c785a45a",
      "name": "分离1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1712,
        -240
      ],
      "parameters": {
        "include": "selectedOtherFields",
        "options": {},
        "fieldToSplitOut": "Name",
        "fieldsToInclude": "Username, Summary, Location"
      },
      "typeVersion": 1
    },
    {
      "id": "07cca20e-cf62-466d-8318-324c9ddfe3a3",
      "name": "拆分输出2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1712,
        64
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "Repositories"
      },
      "typeVersion": 1
    },
    {
      "id": "2a344e96-bea8-4829-b272-8ae9c1c53f11",
      "name": "清空表格",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1216,
        -144
      ],
      "parameters": {
        "operation": "clear",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Code in JavaScript').item.json.Name }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs/edit?usp=drivesdk",
          "cachedResultName": "Github User Extracted Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.7
    },
    {
      "id": "b0e73398-0477-49c7-bb74-955f22c1aebb",
      "name": "编辑字段",
      "type": "n8n-nodes-base.set",
      "position": [
        1104,
        -144
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "871bd1a1-b2fd-447b-a50b-bddd7e5bd296",
              "name": "Name",
              "type": "string",
              "value": ""
            },
            {
              "id": "3fc833ec-3565-4a2e-9deb-db97cd53c883",
              "name": "Username",
              "type": "string",
              "value": ""
            },
            {
              "id": "431a0193-09b7-4bd5-9bb4-126a707823e6",
              "name": "Location",
              "type": "string",
              "value": ""
            },
            {
              "id": "80c0fff6-a932-488a-97ca-1731a115cc60",
              "name": "Site",
              "type": "string",
              "value": ""
            },
            {
              "id": "a031b9b9-0ba6-4816-ad53-1d894be77098",
              "name": "link",
              "type": "string",
              "value": ""
            },
            {
              "id": "2fa0be7b-a90c-4e94-a155-ed858a079bc3",
              "name": "Title",
              "type": "string",
              "value": ""
            },
            {
              "id": "f6179556-b5da-447f-bd9d-fa4f4fec010b",
              "name": "Summary",
              "type": "string",
              "value": ""
            },
            {
              "id": "181129b3-5bd9-4dec-8631-0f13efccd069",
              "name": "Date",
              "type": "string",
              "value": ""
            },
            {
              "id": "1de86602-919d-48e3-9d65-1e6e9157461a",
              "name": "Programing Language",
              "type": "string",
              "value": ""
            },
            {
              "id": "13a6a2db-41f7-4033-aafa-aff41eea112b",
              "name": "Stars",
              "type": "string",
              "value": ""
            }
          ]
        }
      },
      "executeOnce": true,
      "typeVersion": 3.4
    },
    {
      "id": "0429c95a-48d5-415e-b7e8-f3bf381a2258",
      "name": "在表格中追加行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1344,
        -144
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $('Edit Fields').item.json.Name }}",
            "Summary": "=",
            "Username": "={{ $('Edit Fields').item.json.Username }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Username",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Link",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Repositories_Name",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Repositories_Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Code in JavaScript').item.json.Name }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs/edit?usp=drivesdk",
          "cachedResultName": "Github User Extracted Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.7
    },
    {
      "id": "7138b038-224a-44a9-ab25-833d8a51efa3",
      "name": "合并1",
      "type": "n8n-nodes-base.merge",
      "position": [
        2176,
        16
      ],
      "parameters": {
        "numberInputs": 3
      },
      "typeVersion": 3.2
    },
    {
      "id": "bcb7fd00-f127-4d41-a16f-932b476f35c2",
      "name": "发送消息",
      "type": "n8n-nodes-base.slack",
      "position": [
        656,
        -160
      ],
      "webhookId": "2c3ff277-d680-4aad-99f3-7e7e96c2986b",
      "parameters": {
        "text": "Users Data Scrapped from Github",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C09KLV9DJSX",
          "cachedResultName": "all-browseract-workflow-test"
        },
        "otherOptions": {},
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "id": "5rQCkyObBqbHIbZA",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "caa62914-30ea-44f9-943a-f5fb6c692bd4",
      "name": "便签 - 介绍",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        224
      ],
      "parameters": {
        "width": 832,
        "height": 428,
        "content": "## 试试看!"
      },
      "typeVersion": 1
    },
    {
      "id": "df0792c8-a299-4d62-9514-8168de2f7558",
      "name": "Sticky Note - How to Use",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1152,
        224
      ],
      "parameters": {
        "width": 592,
        "height": 260,
        "content": "## How to use\n\n1.  **Set up Credentials:** Add your credentials for **BrowserAct**, **Google Sheets**, and **Slack**.\n\n2.  **Set up BrowserAct Template:** Ensure you Use the **“Scraping GitHub Users Activity & Data (Based on Source Top GitHub Contributors by Language & Location)”** template in your BrowserAct account.\n\n3.  **Prepare Your Input Sheet:** In the first 'Get row(s) in sheet' node, point it to your master list of candidates. This sheet must have a column named `URL` containing the link to each GitHub profile. You can use **\"Source Top GitHub Contributors by Language & Location\"** to Get User Data and Save it TO Google Sheet\n\n4.  **Set Slack Channel:** Update the **Channel ID** in the **Slack** node to your desired alerts channel.\n\n5.  **Activate Workflow:** Manually trigger the workflow or activate it to run on the defined schedule."
      },
      "typeVersion": 1
    },
    {
      "id": "2e7e3eae-b57f-4fd7-8cd2-5c7efa7607bd",
      "name": "Sticky Note - Need Help",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1152,
        496
      ],
      "parameters": {
        "width": 592,
        "height": 152,
        "content": "### Need Help?\n* #### [How to Find Your BrowseAct API Key & Workflow ID](https://www.youtube.com/watch?v=pDjoZWEsZlE)\n* #### [How to Connect n8n to Browseract](https://www.youtube.com/watch?v=RoYMdJaRdcQ)\n* #### [How to Use & Customize BrowserAct Templates](https://www.youtube.com/watch?v=CPZHFUASncY)\n* #### [How to Use the BrowserAct N8N Community Node](https://youtu.be/j0Nlba2pRLU)\n* #### [GitHub Data Mining: Extracting User Profiles & Repositories with N8N](https://youtu.be/YjINoZgqx0M)"
      },
      "typeVersion": 1
    },
    {
      "id": "542bbb49-18d1-4588-a64b-467f8072ee55",
      "name": "Sticky Note - Input & Loop",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -272
      ],
      "parameters": {
        "color": 6,
        "width": 384,
        "height": 184,
        "content": "### 📋 1. Input & Loop\n\n* **Trigger:** The workflow starts either manually or on a schedule.\n* **Google Sheets:** Fetches your master list of GitHub profiles to be processed.\n* **Loop Over Items:** This node processes each GitHub user one by one, ensuring a clean and organized execution for each profile."
      },
      "typeVersion": 1
    },
    {
      "id": "f4270a43-0996-4478-9b12-470bb5c044cc",
      "name": "Sticky Note - Scrape & Process",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -368
      ],
      "parameters": {
        "color": 5,
        "width": 496,
        "height": 184,
        "content": "### 🤖 2. Scrape & Consolidate Data\n\nThis section runs for each user in the loop.\n\n* **Slack:** Sends a notification that a new user scrape has begun.\n\n* **BrowserAct Nodes:** These execute the scraping task on the user's profile URL Link The Profile URL.\n\n* **Code Node:** This is a critical step. It takes the raw text output from the scraper, parses it, and merges all the data points into a single, structured object."
      },
      "typeVersion": 1
    },
    {
      "id": "7d7a78cb-1ea6-444e-9932-06eaaf495358",
      "name": "Sticky Note - Dynamic Sheet Creation",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        -368
      ],
      "parameters": {
        "color": 4,
        "width": 480,
        "height": 184,
        "content": "###  🤖 3. Dynamic Sheet Management\n\nThis is an advanced pattern for creating reports.\n\n* **Create sheet:** Dynamically creates a new tab in your output spreadsheet, named after the user being scraped.\n\n* **Edit/Clear/Append:** This chain of nodes prepares the new sheet by clearing it and adding a clean set of headers. This ensures a fresh report is generated every time the workflow runs."
      },
      "typeVersion": 1
    },
    {
      "id": "86ed956c-5e9d-4989-9127-a60f9e848ddb",
      "name": "Sticky Note - Data Output",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        -448
      ],
      "parameters": {
        "color": 3,
        "width": 400,
        "height": 184,
        "content": "### 📊 4. Split & Write Data\n\nThis final section formats the output.\n\n* **Split Out Nodes:** The consolidated data is split into three distinct categories: main profile info, social links, and repositories.\n\n* **Append row... Nodes:** Each category of data is then written to the user's dedicated sheet. This structures the final report with clear sections for easy reading."
      },
      "typeVersion": 1
    },
    {
      "id": "bd72ba82-be38-4f7e-8e9a-a76d9dca9587",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        448,
        -176
      ],
      "parameters": {
        "color": 5,
        "width": 496,
        "height": 320,
        "content": "确保您的表名与实际知识库结构匹配"
      },
      "typeVersion": 1
    },
    {
      "id": "238200a7-18cb-4cd5-a921-8e8e07aa9f01",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        976,
        -176
      ],
      "parameters": {
        "color": 4,
        "width": 480,
        "height": 176,
        "content": "确保您的表名与实际知识库结构匹配"
      },
      "typeVersion": 1
    },
    {
      "id": "71588de8-adde-4e39-92ce-a911cb5c2b37",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        -80
      ],
      "parameters": {
        "color": 6,
        "width": 384,
        "height": 224,
        "content": "确保您的表名与实际知识库结构匹配"
      },
      "typeVersion": 1
    },
    {
      "id": "49b8e675-7f59-4b55-a1f3-0f2c541e956c",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1680,
        -256
      ],
      "parameters": {
        "color": 3,
        "width": 400,
        "height": 464,
        "content": "确保您的表名与实际知识库结构匹配"
      },
      "typeVersion": 1
    },
    {
      "id": "62e4d5ab-196b-481f-9f72-bb3144945372",
      "name": "User Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1968,
        -240
      ],
      "parameters": {
        "columns": {
          "value": {
            "Name": "={{ $json.Name }}",
            "Summary": "={{ $json.Summary }}",
            "Location": "={{ $json.Location }}",
            "Username": "={{ $json.Username }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Username",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Repositories_Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Repositories_Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Programming Lang",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Programming Lang",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Stars",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Stars",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "Name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Code in JavaScript').item.json.Name }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs/edit?usp=drivesdk",
          "cachedResultName": "Github User Extracted Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "cba49174-9022-42a8-9bc4-7ccede5035e9",
      "name": "User Links",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1968,
        -96
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Username",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Site",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Site",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "link",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Repositories_Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Repositories_Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Programming Lang",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Programming Lang",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Stars",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Stars",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "Site"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Code in JavaScript').item.json.Name }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs/edit?usp=drivesdk",
          "cachedResultName": "Github User Extracted Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "cae70e9b-8f35-4f86-b975-5e00a3b52311",
      "name": "User Repositories",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1968,
        64
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $json.Date }}",
            "Stars": "={{ $json.Stars }}",
            "Programming Lang": "={{ $json[\"Programing Language\"] }}",
            "Repositories_Name": "={{ $json.Title }}"
          },
          "schema": [
            {
              "id": "Name",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Username",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Username",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Location",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Website",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Link",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "Link",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Repositories_Name",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Repositories_Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Programming Lang",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Programming Lang",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Stars",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Stars",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "Repositories_Name"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $('Code in JavaScript').item.json.Name }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1OPN-GHxA1jhulioo0v-x63ZiVhGjl-ed-QBIxH8KlVs/edit?usp=drivesdk",
          "cachedResultName": "Github User Extracted Data"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "wAMAqU43zjVjlpuA",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.7
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5887ba01-4132-42b0-81d6-cd47cde2cc5a",
  "connections": {
    "Merge": {
      "main": [
        [
          {
            "node": "Split Out1",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split Out2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "User Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User Data": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out1": {
      "main": [
        [
          {
            "node": "User Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out2": {
      "main": [
        [
          {
            "node": "User Repositories",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User Links": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Clear sheet": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "Clear sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create sheet": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Run a workflow task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "User Repositories": {
      "main": [
        [
          {
            "node": "Merge1",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Create sheet",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run a workflow task": {
      "main": [
        [
          {
            "node": "Get details of a workflow task",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get details of a workflow task": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Execute workflow’": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 潜在客户开发

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量30
分类1
节点类型10
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Madame AI Team | Kai

Madame AI Team | Kai

@madame-ai

I’m a PhD in Physics turned AI enthusiast, passionate about uncovering how AI is transforming content creation, business, and daily life.

外部链接
在 n8n.io 查看

分享此工作流