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)可能需要您自行付费。
相关工作流推荐
从任何网站抓取并导入产品到 Shopify(含变体和图片)(针对鞋类优化 - NIKE 到 Shopify)
使用 BrowserAct 抓取并导入鞋类产品到 Shopify(含变体和图片)
Set
Code
Merge
+9
25 节点Madame AI Team | Kai
杂项
使用 BrowserAct 和 Gemini 查找并筛选有资金支持的线索
通过 BrowserAct 和 Gemini 查找并筛选有资金支持的潜在客户
If
Code
Merge
+9
29 节点Madame AI Team | Kai
潜在客户开发
高级WooCommerce产品对账与同步
使用Google Gemini AI和BrowserAct同步WooCommerce库存并创建产品
If
Code
Merge
+9
31 节点Madame AI Team | Kai
客户关系管理
潜在客户开发与邮件工作流
使用Google Maps、SendGrid和AI自动化B2B潜在客户开发与邮件营销
If
Set
Code
+21
141 节点Ezema Kingsley Chibuzo
潜在客户开发
使用BrowserAct实现电商店铺新品自动监控
使用BrowserAct和Slack警报监控Shopify店铺新品
If
Code
Merge
+6
24 节点Madame AI Team | Kai
市场调研
使用BrowserAct和Slack的实时MAP执行和价格违规警报
Google表格、BrowserAct和Slack的实时MAP执行和价格违规警报
If
Code
Merge
+6
20 节点Madame AI Team | Kai
市场调研
工作流信息
难度等级
高级
节点数量30
分类1
节点类型10
作者
Madame AI Team | Kai
@madame-aiI’m a PhD in Physics turned AI enthusiast, passionate about uncovering how AI is transforming content creation, business, and daily life.
外部链接
在 n8n.io 查看 →
分享此工作流