This workflow corresponds to n8n.io template #13437 — we link there as the canonical source.
This workflow follows the Form Trigger → Google Sheets 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": "uu7STiZmTXj-uSObYVWaU",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Skool Scraper with Olostep",
"tags": [
{
"id": "xRJNyiRIpAsEzL8y",
"name": "Olostep",
"createdAt": "2026-01-31T11:17:46.807Z",
"updatedAt": "2026-01-31T11:17:46.807Z"
}
],
"nodes": [
{
"id": "88b08ace-93e7-4c69-9c82-e3fa9df0ff3c",
"name": "Create a map",
"type": "n8n-nodes-olostep.olostepScrape",
"maxTries": 2,
"position": [
-192,
16
],
"parameters": {
"url": "={{ $json['Category URL'] }}",
"top_n": null,
"resource": "map"
},
"credentials": {
"olostepScrapeApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "8f4383d5-207b-4059-8246-9f6d8d3730a1",
"name": "Filter",
"type": "n8n-nodes-base.filter",
"position": [
224,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "e94043e9-805a-409e-9b8a-2b69802519b9",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json.urls }}",
"rightValue": "about"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "e7882890-981f-43e6-80f4-d19c49b18e6b",
"name": "Split Out1",
"type": "n8n-nodes-base.splitOut",
"position": [
48,
16
],
"parameters": {
"options": {},
"fieldToSplitOut": "urls"
},
"typeVersion": 1
},
{
"id": "d237bf1f-adb3-4d81-841c-6c1ad8a66857",
"name": "Edit Fields1",
"type": "n8n-nodes-base.set",
"position": [
432,
16
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "01cdea48-6eb3-4ffc-80c8-db26fc231e8c",
"name": "communities",
"type": "string",
"value": "={{ $json.urls.split(\"?\") [0] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "24d1a16e-cd40-444f-ba44-eb3c4ad07dfd",
"name": "On form submission",
"type": "n8n-nodes-base.formTrigger",
"position": [
-400,
16
],
"parameters": {
"options": {},
"formTitle": "Skool Scraper With Olostep",
"formFields": {
"values": [
{
"fieldLabel": "Category URL"
}
]
}
},
"typeVersion": 2.5
},
{
"id": "e4b93788-6168-44c6-8ad8-feb960311425",
"name": "Edit Fields2",
"type": "n8n-nodes-base.set",
"position": [
912,
0
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "bed5c3dd-027d-42a1-a091-b2e2a6abf5c1",
"name": "url",
"type": "string",
"value": "={{ $json.communities }}"
},
{
"id": "ad0efaed-b973-4457-8f65-1dee9ec22b69",
"name": "custom_id",
"type": "number",
"value": "={{ $json.numbers }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "72578c31-84bf-42f6-b95f-5040ea367d05",
"name": "Batch scrape urls",
"type": "n8n-nodes-olostep.olostepScrape",
"maxTries": 2,
"position": [
-208,
240
],
"parameters": {
"formats": "json",
"resource": "batch",
"batch_array": "={{ $json.last }}"
},
"credentials": {
"olostepScrapeApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "5c5ae78f-1b71-4a15-949d-ee631222e41b",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
640,
-208
],
"parameters": {
"options": {},
"fieldsToAggregate": {
"fieldToAggregate": [
{
"renameField": true,
"outputFieldName": "url",
"fieldToAggregate": "communities"
}
]
}
},
"typeVersion": 1
},
{
"id": "a299b39f-5ca1-4ab1-98e2-9e47a3da22d1",
"name": "Code in JavaScript",
"type": "n8n-nodes-base.code",
"position": [
1040,
-208
],
"parameters": {
"jsCode": "const targetNumber = $json.total ; // Replace with your expression\nconst newArray = [];\n\nfor (let i = 0; i < targetNumber; i++) {\n newArray.push(i);\n}\n\n// Return the result as a single item with the array\nreturn [{ json: { numbers: newArray } }];\n"
},
"typeVersion": 2
},
{
"id": "ddbf0c3e-e870-4305-8b49-366873d04878",
"name": "Edit Fields3",
"type": "n8n-nodes-base.set",
"position": [
832,
-208
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d68f6805-1fe8-4b05-b392-c27e635e6147",
"name": "total",
"type": "number",
"value": "={{ $json.url.length }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "775d13ef-b080-4d6a-8b14-e6aa1fcb0d7c",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
1232,
-208
],
"parameters": {
"options": {},
"fieldToSplitOut": "numbers"
},
"typeVersion": 1
},
{
"id": "b908eb27-57b9-452a-b391-9517482060c2",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
704,
0
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.2
},
{
"id": "878175de-fdfe-4807-8aa7-76f3ee200451",
"name": "Aggregate1",
"type": "n8n-nodes-base.aggregate",
"position": [
1328,
32
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "test"
},
"typeVersion": 1
},
{
"id": "2a5ac22f-320f-4d6d-9dda-0c095689654b",
"name": "Edit Fields4",
"type": "n8n-nodes-base.set",
"position": [
1536,
32
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a43c87e3-a2f1-471e-804a-ec6329867b44",
"name": "last",
"type": "string",
"value": "={{ $json.toJsonString() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f6f6260c-089c-43a2-8570-c438e301296e",
"name": "Edit Fields5",
"type": "n8n-nodes-base.set",
"position": [
1744,
32
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9c1bd6ff-e66a-40ef-9826-0ce652e065c4",
"name": "last",
"type": "string",
"value": "={{ '['.concat( $json.last.split(\"[\") [1].split(']') [0] ).concat(']') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8bc3b01a-b002-422d-830b-f5261863421c",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"maxTries": 2,
"position": [
160,
240
],
"parameters": {
"url": "=https://api.olostep.com/v1/batches/{{ $json.batch_id }}/items",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <token>"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.3
},
{
"id": "57582ccb-1287-4233-baf6-7d03b5f6fe36",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"maxTries": 2,
"position": [
1024,
256
],
"parameters": {
"url": "https://api.olostep.com/v1/retrieve",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "retrieve_id",
"value": "={{ $json.retrieve_id }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <token>"
}
]
}
},
"retryOnFail": true,
"typeVersion": 4.3
},
{
"id": "827cb8ec-3452-47c9-bf26-3bf81d87b9b7",
"name": "Split Out2",
"type": "n8n-nodes-base.splitOut",
"position": [
512,
256
],
"parameters": {
"options": {},
"fieldToSplitOut": "items"
},
"typeVersion": 1
},
{
"id": "35724b1c-a0c2-4e37-8566-0e814fa57699",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"position": [
704,
256
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "95a57bde-5a09-442f-bb7b-b6c85afa448a",
"name": "Wait",
"type": "n8n-nodes-base.wait",
"position": [
-32,
240
],
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "53e71bb9-0098-48ce-bb5b-4f597123f24a",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
336,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "ed5385a3-531c-4dc3-b7e1-cd7701687337",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.status }}",
"rightValue": ""
},
{
"id": "1c4e92c6-b060-4219-8e72-078cde98887d",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.status }}",
"rightValue": "completed"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "640bc4d1-4080-46f4-bb1f-65387d2550a6",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
1184,
464
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "d49a9709-d6fa-4da9-9c6e-a759cf7079eb",
"name": "Append row in sheet",
"type": "n8n-nodes-base.googleSheets",
"onError": "continueRegularOutput",
"maxTries": 2,
"position": [
1600,
256
],
"parameters": {
"columns": {
"value": {
"links": "={{ $json.output.links }}",
"owner": "={{ $json.output.owner }}",
"created_at": "={{ $json.output.created_at }}",
"membership": "={{ $json.output.membership }}",
"num_models": "={{ $json.output.num_models }}",
"page_title": "={{ $json.output.page_title }}",
"updated_at": "={{ $json.output.updated_at }}",
"description": "={{ $json.output.description }}",
"num_courses": "={{ $json.output.num_couses }}",
"total_posts": "={{ $json.output.total_posts }}",
"total_rules": "={{ $json.output.total_rules }}",
"total_admins": "={{ $json.output.total_admins }}",
"lpDescription": "={{ $json.output.lpDescription }}",
"total_members": "={{ $json.output.total_members }}",
"retention_video": "={{ $json.output.retention_video }}"
},
"schema": [
{
"id": "page_title",
"type": "string",
"display": true,
"required": false,
"displayName": "page_title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "description",
"type": "string",
"display": true,
"required": false,
"displayName": "description",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "owner",
"type": "string",
"display": true,
"required": false,
"displayName": "owner",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "links",
"type": "string",
"display": true,
"required": false,
"displayName": "links",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "lpDescription",
"type": "string",
"display": true,
"required": false,
"displayName": "lpDescription",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "membership",
"type": "string",
"display": true,
"required": false,
"displayName": "membership",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "num_courses",
"type": "string",
"display": true,
"required": false,
"displayName": "num_courses",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "num_models",
"type": "string",
"display": true,
"required": false,
"displayName": "num_models",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "retention_video",
"type": "string",
"display": true,
"required": false,
"displayName": "retention_video",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "total_admins",
"type": "string",
"display": true,
"required": false,
"displayName": "total_admins",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "total_members",
"type": "string",
"display": true,
"required": false,
"displayName": "total_members",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "total_posts",
"type": "string",
"display": true,
"required": false,
"displayName": "total_posts",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "total_rules",
"type": "string",
"display": true,
"required": false,
"displayName": "total_rules",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "created_at",
"type": "string",
"display": true,
"required": false,
"displayName": "created_at",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "updated_at",
"type": "string",
"display": true,
"required": false,
"displayName": "updated_at",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18D8rFRg8LKJEOYcQg6_e1tOJcnFu3D1pKdsVoNHnsDs/edit#gid=0",
"cachedResultName": "\u0627\u0644\u0648\u0631\u0642\u06291"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "18D8rFRg8LKJEOYcQg6_e1tOJcnFu3D1pKdsVoNHnsDs",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/18D8rFRg8LKJEOYcQg6_e1tOJcnFu3D1pKdsVoNHnsDs/edit?usp=drivesdk",
"cachedResultName": "Skool scraper"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 4.7
},
{
"id": "02887bae-8564-411a-adf8-e4be13ac506f",
"name": "Wait1",
"type": "n8n-nodes-base.wait",
"position": [
1808,
256
],
"parameters": {
"amount": 2
},
"typeVersion": 1.1
},
{
"id": "cddda4c3-3e7b-439d-a2ea-c085857d6661",
"name": "Loop Over Items1",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1120,
32
],
"parameters": {
"options": {},
"batchSize": 100
},
"typeVersion": 3
},
{
"id": "671cc074-9686-4689-9cf7-11448603c765",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"onError": "continueRegularOutput",
"maxTries": 2,
"position": [
1248,
256
],
"parameters": {
"text": "={{ $json.html_content }}",
"options": {
"systemPromptTemplate": "You are an expert extraction algorithm.\nOnly extract relevant information from the text.\nIf you do not know the value of an attribute asked to extract, you may omit the attribute's value."
},
"attributes": {
"attributes": [
{
"name": "page_title",
"required": true,
"description": "The title of the page/community."
},
{
"name": "description",
"required": true,
"description": "The description of the page or the primary SEO subtitle."
},
{
"name": "owner",
"required": true,
"description": "The name of the person who founded the group."
},
{
"name": "links",
"required": true,
"description": "A list of all external URLs found in the description or social link section."
},
{
"name": "lpDescription",
"required": true,
"description": "The full \"About\" text or long-form pitch found in the main body of the page."
},
{
"name": "membership",
"required": true,
"description": "The cost or pricing model listed for joining (e.g., \"$47/month\")."
},
{
"name": "num_courses",
"required": true,
"description": "The count of specific course modules mentioned in the curriculum or \"Classroom\" section."
},
{
"name": "num_models",
"required": true,
"description": "The total number of individual lessons or sub-modules listed within the training roadmap."
},
{
"name": "retention_video",
"required": true,
"description": "The URL or ID for the Mux/YouTube/Vimeo video used as the main sales header."
},
{
"name": "total_admins",
"required": true,
"description": "The numeric value representing how many administrators the group has."
},
{
"name": "total_members",
"required": true,
"description": "The total number of members currently in the group (e.g., 307)."
},
{
"name": "total_posts",
"required": true,
"description": "The total number of community discussions or posts (if visible in stats)."
},
{
"name": "total_rules",
"required": true,
"description": "The count of community guidelines or rules listed in the about section."
},
{
"name": "created_at",
"required": true,
"description": "The date the group was founded (if not visible, return \"null\")."
},
{
"name": "updated_at",
"required": true,
"description": "The date of the most recent update or live class mentioned."
}
]
}
},
"retryOnFail": true,
"typeVersion": 1.2
},
{
"id": "93337207-1222-4257-8ba4-421c9389af08",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1328,
-496
],
"parameters": {
"width": 832,
"height": 1552,
"content": "# Skool Community Scraper Using Olostep API \n\nThis n8n template automates scraping content from **Skool communities** using the Olostep API. \nIt collects structured data from Skool pages and stores it in a clean format, making it easy to analyze communities, extract insights, or build datasets for research and outreach.\n\n## Who\u2019s it for \n- Community builders researching Skool groups \n- Marketers analyzing competitor or niche communities \n- SaaS founders validating ideas through community data \n- Automation builders collecting structured social data \n- Anyone who wants Skool data without manual scraping \n\n## How it works / What it does \n1. **Trigger** \n - The workflow starts with a manual trigger or form input containing a Skool URL or query.\n\n2. **Skool Page Scraping** \n - The workflow uses the Olostep API to scrape Skool community pages. \n - Extracts structured data using LLM-based parsing.\n\n3. **Data Extraction** \n - Depending on configuration, the workflow can extract: \n - Community name \n - Post titles and content \n - Author names \n - Engagement metrics (likes, comments) \n - URLs to posts or discussions \n\n4. **Parse & Normalize** \n - The raw response is cleaned and split into individual items. \n - Ensures consistent fields across all scraped entries.\n\n5. **Deduplication** \n - Duplicate posts or entries are automatically removed.\n\n6. **Data Storage** \n - The final structured data is stored in a table (Google Sheets or n8n Data Table). \n - Ready for filtering, exporting, or further automation.\n\nThis workflow allows you to turn Skool communities into structured datasets without browser automation or manual copy/paste.\n\n## How to set up \n1. Import the template into your n8n workspace. \n2. Add your **Olostep API key**. \n3. Define the Skool page or community URL you want to scrape. \n4. Connect your storage destination (Google Sheets or Data Table). \n5. Run the workflow and collect structured Skool data automatically.\n\n## Requirements \n- n8n account (cloud or self-hosted) \n- Olostep API key \n- Google Sheets account or n8n Data Table \n\n## How to customize the workflow \n- Change extraction schema to capture more fields (timestamps, tags, replies). \n- Add pagination to scrape older posts. \n- Store data in Airtable, Notion, or a database. \n- Trigger scraping on a schedule instead of manually. \n- Combine with AI agents to summarize or analyze community discussions.\n\n---\n\n\ud83d\udc49 This template makes it easy to extract, analyze, and reuse Skool community data at scale.\n"
},
"typeVersion": 1
},
{
"id": "62a20d8e-62f3-4c23-b792-da32c13bf14a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-448,
-128
],
"parameters": {
"color": 7,
"width": 208,
"height": 288,
"content": "## Trigger \nStart the workflow manually or via form input entering a Skool category URL"
},
"typeVersion": 1
},
{
"id": "8cc01bfd-41fe-403d-9d33-fd55e888fa69",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-128
],
"parameters": {
"color": 7,
"height": 288,
"content": "## Olostep Map\nOlostep fetches and parses Skool category and gets all the community pages URLs."
},
"typeVersion": 1
},
{
"id": "58320524-d38a-4141-9322-812d51c058fa",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-128
],
"parameters": {
"color": 7,
"width": 592,
"height": 288,
"content": "## Parse & Normalize\nCleans raw data, filters it, and converts it into structured fields."
},
"typeVersion": 1
},
{
"id": "6a9ad658-37a2-4d7f-be67-3830ad31304d",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
-320
],
"parameters": {
"color": 7,
"width": 784,
"height": 272,
"content": "## Custom Id Generation\nGenerates an array of numbers from 0 to the number of the URLs - 1. Then combine it with the actual list of URLs so we can use it as a custom id for the Olostep /batches endpoint."
},
"typeVersion": 1
},
{
"id": "d0e0b0b8-b9dc-4da7-8363-171a2fcb0494",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
-48
],
"parameters": {
"color": 7,
"width": 448,
"height": 208,
"content": ""
},
"typeVersion": 1
},
{
"id": "eea566dc-c3fc-45af-ac49-5f29e97a9ffd",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1040,
-80
],
"parameters": {
"color": 7,
"width": 832,
"height": 240,
"content": "## Prepare For Batching\nDoing a loop to batch 100 URLs at a time not all the list at one run, and prepare the list for the Olostep batch process."
},
"typeVersion": 1
},
{
"id": "74ffb380-4e89-463f-9da4-05ca53f6d142",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
160
],
"parameters": {
"color": 7,
"width": 880,
"height": 288,
"content": "## Batch Creating\nCreates the batch and scrapes each community page URL from the list."
},
"typeVersion": 1
},
{
"id": "789f9ada-281e-4c3c-9f34-43828eced10d",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
160
],
"parameters": {
"color": 7,
"width": 1296,
"height": 288,
"content": "## Batch Creating\nParses and gets the content of each pages in markdown. Then passes the content of the page to an LLM to extract the most useful data from the community that you can use (page_title, owner, membership, etc)."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "3d115453-fc7a-40c0-bfe1-4297cb919b09",
"connections": {
"If": {
"main": [
[
{
"node": "Split Out2",
"type": "main",
"index": 0
}
],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"Wait1": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Filter": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
}
]
]
},
"Aggregate": {
"main": [
[
{
"node": "Edit Fields3",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Aggregate1": {
"main": [
[
{
"node": "Edit Fields4",
"type": "main",
"index": 0
}
]
]
},
"Split Out1": {
"main": [
[
{
"node": "Filter",
"type": "main",
"index": 0
}
]
]
},
"Split Out2": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Create a map": {
"main": [
[
{
"node": "Split Out1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields3": {
"main": [
[
{
"node": "Code in JavaScript",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields4": {
"main": [
[
{
"node": "Edit Fields5",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields5": {
"main": [
[
{
"node": "Batch scrape urls",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
],
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items1": {
"main": [
[],
[
{
"node": "Aggregate1",
"type": "main",
"index": 0
}
]
]
},
"Batch scrape urls": {
"main": [
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Code in JavaScript": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "Create a map",
"type": "main",
"index": 0
}
]
]
},
"Append row in sheet": {
"main": [
[
{
"node": "Wait1",
"type": "main",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "Append row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Google Gemini Chat Model": {
"ai_languageModel": [
[
{
"node": "Information Extractor",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
googlePalmApigoogleSheetsOAuth2ApiolostepScrapeApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n template automates scraping content from Skool communities using the Olostep API. It collects structured data from Skool pages and stores it in a clean format, making it easy to analyze communities, extract insights, or build datasets for research and outreach.…
Source: https://n8n.io/workflows/13437/ — 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.
It is ideal for businesses handling vendor invoices, reimbursement forms, or bulk document intake.
Customer Feedback Loop Analyzer. Uses formTrigger, lmChatGoogleGemini, gmail, slack. Event-driven trigger; 11 nodes.
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
This n8n workflow converts a YouTube video into a polished, email-ready newsletter. It scrapes the transcript, extracts a thumbnail/logo and brand color theme, uses multiple AI agents to (1) clean & s
This workflow automates the process of scraping real estate property listings from websites using ScrapeGraph AI, extracting structured data, and saving it to a Google Sheet. It is designed to handle