{
  "name": "Scrape Skool community data using the Olostep API and Google Sheets",
  "nodes": [
    {
      "id": "88b08ace-93e7-4c69-9c82-e3fa9df0ff3c",
      "name": "Create a map",
      "type": "n8n-nodes-olostep.olostepScrape",
      "position": [
        -192,
        16
      ]
    },
    {
      "id": "8f4383d5-207b-4059-8246-9f6d8d3730a1",
      "name": "Filter",
      "type": "n8n-nodes-base.filter",
      "position": [
        224,
        16
      ]
    },
    {
      "id": "e7882890-981f-43e6-80f4-d19c49b18e6b",
      "name": "Split Out1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        48,
        16
      ]
    },
    {
      "id": "d237bf1f-adb3-4d81-841c-6c1ad8a66857",
      "name": "Edit Fields1",
      "type": "n8n-nodes-base.set",
      "position": [
        432,
        16
      ]
    },
    {
      "id": "24d1a16e-cd40-444f-ba44-eb3c4ad07dfd",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -400,
        16
      ]
    },
    {
      "id": "e4b93788-6168-44c6-8ad8-feb960311425",
      "name": "Edit Fields2",
      "type": "n8n-nodes-base.set",
      "position": [
        912,
        0
      ]
    },
    {
      "id": "72578c31-84bf-42f6-b95f-5040ea367d05",
      "name": "Batch scrape urls",
      "type": "n8n-nodes-olostep.olostepScrape",
      "position": [
        -208,
        240
      ]
    },
    {
      "id": "5c5ae78f-1b71-4a15-949d-ee631222e41b",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        640,
        -208
      ]
    },
    {
      "id": "a299b39f-5ca1-4ab1-98e2-9e47a3da22d1",
      "name": "Code in JavaScript",
      "type": "n8n-nodes-base.code",
      "position": [
        1040,
        -208
      ]
    },
    {
      "id": "ddbf0c3e-e870-4305-8b49-366873d04878",
      "name": "Edit Fields3",
      "type": "n8n-nodes-base.set",
      "position": [
        832,
        -208
      ]
    },
    {
      "id": "775d13ef-b080-4d6a-8b14-e6aa1fcb0d7c",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1232,
        -208
      ]
    },
    {
      "id": "b908eb27-57b9-452a-b391-9517482060c2",
      "name": "Merge",
      "type": "n8n-nodes-base.merge",
      "position": [
        704,
        0
      ]
    },
    {
      "id": "878175de-fdfe-4807-8aa7-76f3ee200451",
      "name": "Aggregate1",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1328,
        32
      ]
    },
    {
      "id": "2a5ac22f-320f-4d6d-9dda-0c095689654b",
      "name": "Edit Fields4",
      "type": "n8n-nodes-base.set",
      "position": [
        1536,
        32
      ]
    },
    {
      "id": "f6f6260c-089c-43a2-8570-c438e301296e",
      "name": "Edit Fields5",
      "type": "n8n-nodes-base.set",
      "position": [
        1744,
        32
      ]
    },
    {
      "id": "8bc3b01a-b002-422d-830b-f5261863421c",
      "name": "HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        160,
        240
      ]
    },
    {
      "id": "57582ccb-1287-4233-baf6-7d03b5f6fe36",
      "name": "HTTP Request1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1024,
        256
      ]
    },
    {
      "id": "827cb8ec-3452-47c9-bf26-3bf81d87b9b7",
      "name": "Split Out2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        512,
        256
      ]
    },
    {
      "id": "35724b1c-a0c2-4e37-8566-0e814fa57699",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        704,
        256
      ]
    },
    {
      "id": "95a57bde-5a09-442f-bb7b-b6c85afa448a",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        -32,
        240
      ]
    },
    {
      "id": "53e71bb9-0098-48ce-bb5b-4f597123f24a",
      "name": "If",
      "type": "n8n-nodes-base.if",
      "position": [
        336,
        320
      ]
    },
    {
      "id": "640bc4d1-4080-46f4-bb1f-65387d2550a6",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1184,
        464
      ]
    },
    {
      "id": "d49a9709-d6fa-4da9-9c6e-a759cf7079eb",
      "name": "Append row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1600,
        256
      ]
    },
    {
      "id": "02887bae-8564-411a-adf8-e4be13ac506f",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        1808,
        256
      ]
    },
    {
      "id": "cddda4c3-3e7b-439d-a2ea-c085857d6661",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1120,
        32
      ]
    },
    {
      "id": "671cc074-9686-4689-9cf7-11448603c765",
      "name": "Information Extractor",
      "type": "@n8n/n8n-nodes-langchain.informationExtractor",
      "position": [
        1248,
        256
      ]
    },
    {
      "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 "
      }
    },
    {
      "id": "62a20d8e-62f3-4c23-b792-da32c13bf14a",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -448,
        -128
      ],
      "parameters": {
        "width": 208,
        "height": 288,
        "content": "## Trigger \nStart the workflow manually or via form input entering a Skool category URL"
      }
    },
    {
      "id": "8cc01bfd-41fe-403d-9d33-fd55e888fa69",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        -128
      ],
      "parameters": {
        "width": null,
        "height": 288,
        "content": "## Olostep Map\nOlostep fetches and parses Skool category and gets all the community pages URLs."
      }
    },
    {
      "id": "58320524-d38a-4141-9322-812d51c058fa",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        -128
      ],
      "parameters": {
        "width": 592,
        "height": 288,
        "content": "## Parse & Normalize\nCleans raw data, filters it, and converts it into structured fields."
      }
    },
    {
      "id": "6a9ad658-37a2-4d7f-be67-3830ad31304d",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        592,
        -320
      ],
      "parameters": {
        "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 endpoi"
      }
    },
    {
      "id": "d0e0b0b8-b9dc-4da7-8363-171a2fcb0494",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        592,
        -48
      ],
      "parameters": {
        "width": 448,
        "height": 208,
        "content": ""
      }
    },
    {
      "id": "eea566dc-c3fc-45af-ac49-5f29e97a9ffd",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1040,
        -80
      ],
      "parameters": {
        "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."
      }
    },
    {
      "id": "74ffb380-4e89-463f-9da4-05ca53f6d142",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        160
      ],
      "parameters": {
        "width": 880,
        "height": 288,
        "content": "## Batch Creating\nCreates the batch and scrapes each community page URL from the list."
      }
    },
    {
      "id": "789f9ada-281e-4c3c-9f34-43828eced10d",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        640,
        160
      ],
      "parameters": {
        "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, "
      }
    }
  ],
  "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
          }
        ]
      ]
    }
  }
}