This workflow corresponds to n8n.io template #5814 — we link there as the canonical source.
This workflow follows the Google Sheets → HTTP Request recipe pattern — see all workflows that pair these two integrations.
The workflow JSON
Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →
{
"id": "77rHmiPUDfM2b5GU",
"name": "GitHub Node Tracker",
"tags": [],
"nodes": [
{
"id": "b5976683-f376-46b0-a645-8d2fdc228fef",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-1100,
75
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d2c2ba08-2201-4885-bd09-413988e06488",
"name": "Get Repository Contents",
"type": "n8n-nodes-base.httpRequest",
"position": [
-660,
75
],
"parameters": {
"url": "https://api.github.com/repos/n8n-io/n8n/contents/packages/nodes-base/nodes",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "githubApi"
},
"typeVersion": 4.2
},
{
"id": "b3a765a0-6f9d-465b-8a10-f00d86cfa75e",
"name": "Get Directory Contents",
"type": "n8n-nodes-base.httpRequest",
"position": [
-220,
0
],
"parameters": {
"url": "={{$json[\"url\"]}}",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "githubApi"
},
"typeVersion": 4.2
},
{
"id": "81b77950-986e-49f5-a2b4-4d4821759a18",
"name": "Filter Node Files",
"type": "n8n-nodes-base.code",
"position": [
0,
0
],
"parameters": {
"jsCode": "return items\n .filter(item => item.json.name.endsWith('.node.json'))\n .map(item => ({ json: { download_url: item.json.download_url } }));\n"
},
"typeVersion": 2
},
{
"id": "8317f7ce-5204-48e3-9fb9-787fe6f7a615",
"name": "Download Node File",
"type": "n8n-nodes-base.httpRequest",
"position": [
220,
0
],
"parameters": {
"url": "={{$json[\"download_url\"]}}",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "githubApi"
},
"retryOnFail": true,
"typeVersion": 4.2
},
{
"id": "4824efd4-72b7-4cdf-ac57-1adf047fe0f4",
"name": "Append to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
880,
0
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "node",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "node",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "nodeVersion",
"type": "string",
"display": true,
"required": false,
"displayName": "nodeVersion",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "codexVersion",
"type": "string",
"display": true,
"required": false,
"displayName": "codexVersion",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "categories",
"type": "string",
"display": true,
"required": false,
"displayName": "categories",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "resources",
"type": "string",
"display": true,
"required": false,
"displayName": "resources",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "details",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "details",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "alias",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "alias",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "subcategories",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "subcategories",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": [
"node"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_DOCUMENT_ID/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_DOCUMENT_ID/edit",
"cachedResultName": "Node Tracker"
}
},
"typeVersion": 4.6
},
{
"id": "5798af97-3f0a-4646-9f41-21bb8492d8ea",
"name": "Parse JSON Data",
"type": "n8n-nodes-base.code",
"position": [
440,
0
],
"parameters": {
"jsCode": "let obj;\ntry {\n obj = typeof $json.data === 'string' ? JSON.parse($json.data) : $json.data;\n} catch (e) {\n obj = {};\n}\nreturn [{ json: obj }];\n"
},
"executeOnce": false,
"typeVersion": 2
},
{
"id": "8b219e76-f904-4371-8b05-4d5d1721130e",
"name": "Process in Batches",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-440,
75
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "6711691f-d06a-4d09-aeb1-a454ee60712d",
"name": "Clear Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
-880,
75
],
"parameters": {
"operation": "clear",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_DOCUMENT_ID/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_DOCUMENT_ID/edit",
"cachedResultName": "Node Tracker"
}
},
"typeVersion": 4.6
},
{
"id": "fd3c5069-03ff-4c6b-b220-329f25462eb4",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
1100,
75
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "ce99d911-3bac-468d-8fba-d04a7b28ad09",
"name": "Format Data",
"type": "n8n-nodes-base.set",
"position": [
660,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7b2d5bbd-7e05-467d-91a0-265068725b85",
"name": "node",
"type": "string",
"value": "={{ $json.node }}"
},
{
"id": "c3e8a928-57b9-4087-b3fc-3ed8aeb8ff17",
"name": "nodeVersion",
"type": "string",
"value": "={{ $json.nodeVersion }}"
},
{
"id": "ba800404-034c-48ba-9324-7bf6bef79b65",
"name": "codexVersion",
"type": "string",
"value": "={{ $json.codexVersion }}"
},
{
"id": "488b89ec-80f3-47d2-ac9d-eae7bb298e3f",
"name": "categories",
"type": "string",
"value": "={{ $json.categories[0] }}, {{ $json.categories[1] }}"
},
{
"id": "34d98f83-ba03-421e-aa85-6831291344df",
"name": "credentialDocumentation",
"type": "string",
"value": "={{ $json.resources.credentialDocumentation[0].url }}"
},
{
"id": "b148a39c-cddf-480a-af78-ca564f143ec8",
"name": "primaryDocumentation",
"type": "string",
"value": "={{ $json.resources.primaryDocumentation[0].url }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "sticky-start",
"name": "\ud83d\ude80 WORKFLOW START",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1300,
-180
],
"parameters": {
"color": 1,
"width": 360,
"height": 200,
"content": "## GitHub Node Tracker\n\n**Purpose:** Automatically scan n8n's GitHub repository for node definitions and export them to Google Sheets for tracking and analysis.\n\n**Trigger:** Manual execution\n**Output:** Structured data in Google Sheets"
},
"typeVersion": 1
},
{
"id": "sticky-preparation",
"name": "\ud83d\udccb DATA PREPARATION",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1020,
-180
],
"parameters": {
"color": 2,
"width": 340,
"height": 200,
"content": "## Step 1: Setup\n\n1. **Clear existing data** from Google Sheets to ensure fresh start\n2. **Fetch repository structure** from GitHub API\n3. **Process in batches** to handle large number of directories efficiently"
},
"typeVersion": 1
},
{
"id": "sticky-extraction",
"name": "\ud83d\udd0d DATA EXTRACTION",
"type": "n8n-nodes-base.stickyNote",
"position": [
-380,
-200
],
"parameters": {
"color": 3,
"width": 340,
"height": 220,
"content": "## Step 2: Extract Node Data\n\n1. **Browse each directory** to find node files\n2. **Filter for .node.json files** only\n3. **Download individual files** containing node metadata\n4. **Parse JSON** to extract structured data"
},
"typeVersion": 1
},
{
"id": "sticky-processing",
"name": "\u2699\ufe0f DATA PROCESSING",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
-180
],
"parameters": {
"color": 4,
"width": 340,
"height": 200,
"content": "## Step 3: Format & Export\n\n1. **Format data** for Google Sheets compatibility\n2. **Map fields** to spreadsheet columns\n3. **Append to Google Sheets** with structured data\n4. **Rate limiting** with wait nodes to respect API limits"
},
"typeVersion": 1
},
{
"id": "sticky-loop",
"name": "\ud83d\udd04 BATCH PROCESSING",
"type": "n8n-nodes-base.stickyNote",
"position": [
-600,
250
],
"parameters": {
"color": 5,
"width": 320,
"height": 180,
"content": "## Batch Loop Logic\n\nThis workflow processes directories in batches to:\n- **Avoid API rate limits**\n- **Handle large repositories**\n- **Ensure reliable execution**\n\nThe loop continues until all directories are processed."
},
"typeVersion": 1
},
{
"id": "sticky-output",
"name": "\ud83d\udcca OUTPUT FORMAT",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
-180
],
"parameters": {
"color": 6,
"width": 320,
"height": 220,
"content": "## Google Sheets Columns\n\n- **node**: Node name\n- **nodeVersion**: Version number\n- **codexVersion**: Codex version\n- **categories**: Node categories\n- **resources**: Documentation URLs\n- **details**: Additional metadata\n- **alias**: Alternative names\n- **subcategories**: Sub-classification"
},
"typeVersion": 1
},
{
"id": "sticky-requirements",
"name": "\u26a0\ufe0f REQUIREMENTS",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1300,
250
],
"parameters": {
"color": 7,
"width": 360,
"height": 220,
"content": "## Setup Requirements\n\n**Before running:**\n1. Configure GitHub API credentials\n2. Set up Google Sheets credentials\n3. Replace YOUR_GOOGLE_SHEETS_DOCUMENT_ID with actual document ID\n4. Replace YOUR_WEBHOOK_ID with actual webhook ID\n\n**Permissions needed:**\n- GitHub: Read repository contents\n- Google Sheets: Edit spreadsheet"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "520b4030-b5a0-4274-91e3-653968ffd046",
"connections": {
"Wait": {
"main": [
[
{
"node": "Process in Batches",
"type": "main",
"index": 0
}
]
]
},
"Format Data": {
"main": [
[
{
"node": "Append to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Manual Trigger": {
"main": [
[
{
"node": "Clear Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Parse JSON Data": {
"main": [
[
{
"node": "Format Data",
"type": "main",
"index": 0
}
]
]
},
"Filter Node Files": {
"main": [
[
{
"node": "Download Node File",
"type": "main",
"index": 0
}
]
]
},
"Download Node File": {
"main": [
[
{
"node": "Parse JSON Data",
"type": "main",
"index": 0
}
]
]
},
"Process in Batches": {
"main": [
[],
[
{
"node": "Get Directory Contents",
"type": "main",
"index": 0
}
]
]
},
"Clear Google Sheets": {
"main": [
[
{
"node": "Get Repository Contents",
"type": "main",
"index": 0
}
]
]
},
"Get Directory Contents": {
"main": [
[
{
"node": "Filter Node Files",
"type": "main",
"index": 0
}
]
]
},
"Append to Google Sheets": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Get Repository Contents": {
"main": [
[
{
"node": "Process in Batches",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow automatically retrieves and processes metadata from the official n8n GitHub repository, filters all available files, parses their structure, and appends structured information into a Google Sheet. Perfect for developers, community managers, and technical writers…
Source: https://n8n.io/workflows/5814/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
This template is ideal for solo store owners, eCommerce marketers, automation beginners, or anyone using Shopify and Gmail who wants to recover lost revenue without coding.
PCN. Uses googleSheets, httpRequest, @n-octo-n/n8n-nodes-json-database, itemLists. Event-driven trigger; 60 nodes.
The workflow automates the process of gathering extensive keyword data for a "Main Keyword." It starts by reading initial parameters from a Google Sheets template, creates a new dedicated Google Sheet
🔥 March Sale – n8n Community Members Get ideoGener8r for Just $27! (Reg. $47) Use Coupon Code: (Valid until 3/31/2025 for n8n community members)
📄 Documentation: Notion Guide