Workflow: 💡🌐 Essential Multipage Website Scraper with Jina.ai
Integrations: code, filter, googleDrive, httpRequest, limit, manualTrigger, set, splitInBatches, splitOut, stickyNote, wait, xml

{"id": "xEij0kj2I1DHbL3I", "meta": {"instanceId": "workflow-04c44e27", "versionId": "1.0.0", "createdAt": "2025-09-29T07:08:00.010660", "updatedAt": "2025-09-29T07:08:00.010680", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "\ud83d\udca1\ud83c\udf10 Essential Multipage Website Scraper with Jina.ai", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "3a503859-ef0a-492d-81c6-37e4f0c4c25e", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [-840, 0], "parameters": {"color": 3, "width": 340, "height": 320, "content": "## Jina.ai Web Scraper\n### No API Key Required\n"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "c5217a1a-f074-409b-8340-72afdc5fc8b5", "name": "When clicking \u2018Test workflow\u2019", "type": "n8n-nodes-base.manualTrigger", "position": [-1500, -300], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow."}, {"id": "72af3b00-2632-4877-a0b6-7477e2f468f7", "name": "Loop Over Items", "type": "n8n-nodes-base.splitInBatches", "position": [-1080, 20], "parameters": {"options": {}}, "typeVersion": 3, "notes": "This splitInBatches node performs automated tasks as part of the workflow."}, {"id": "11f0fa02-51f8-41cc-b789-5c452b6899aa", "name": "Wait", "type": "n8n-nodes-base.wait", "position": [80, 220], "webhookId": "081ce124-0cbf-4a21-a1e7-2c465f460448", "parameters": {}, "typeVersion": 1.1, "notes": "This wait node performs automated tasks as part of the workflow."}, {"id": "cf3b5887-8ff2-46e0-ab33-384ab0987cbb", "name": "Limit", "type": "n8n-nodes-base.limit", "position": [80, -300], "parameters": {"maxItems": 20}, "typeVersion": 1, "notes": "This limit node performs automated tasks as part of the workflow."}, {"id": "c4f04d82-aa33-46cf-a8e2-0b4e717e754a", "name": "Get List of Website URLs", "type": "n8n-nodes-base.httpRequest", "position": [-780, -300], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "7f507c38-1e9e-4c46-8dea-bd6daf65dc55", "name": "Convert to JSON", "type": "n8n-nodes-base.xml", "position": [-560, -300], "parameters": {"options": {}}, "typeVersion": 1, "notes": "This xml node performs automated tasks as part of the workflow."}, {"id": "e21b55c2-8b0d-4c7c-ba91-a2d563a4c966", "name": "Create List of Website URLs", "type": "n8n-nodes-base.splitOut", "position": [-340, -300], "parameters": {"options": {}, "fieldToSplitOut": "urlset.url"}, "typeVersion": 1, "notes": "This splitOut node performs automated tasks as part of the workflow."}, {"id": "61555239-8a16-424e-8a60-700f6ebaa270", "name": "Filter By Topics or Pages", "type": "n8n-nodes-base.filter", "position": [-120, -300], "parameters": {"options": {}, "conditions": {"options": {"version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict"}, "combinator": "or", "conditions": [{"id": "d66c304d-879a-4dc4-908f-ab0665093672", "operator": {"name": "filter.operator.equals", "type": "string", "operation": "equals"}, "leftValue": "={{ $json.loc }}", "rightValue": "={{ $env.WEBHOOK_URL }}"}, {"id": "3c930950-bee4-442b-82e6-4437fd39a933", "operator": {"type": "string", "operation": "contains"}, "leftValue": "={{ $json.loc.toLowerCase() }}", "rightValue": "agent"}, {"id": "aaeaf34e-ad5a-4673-b3bd-8bddf3500988", "operator": {"type": "string", "operation": "contains"}, "leftValue": "={{ $json.loc.toLowerCase() }}", "rightValue": "tool"}]}}, "typeVersion": 2.2, "notes": "This filter node performs automated tasks as part of the workflow."}, {"id": "dd25fb57-64a3-4c47-be04-6eb66d16520a", "name": "Set Website URL", "type": "n8n-nodes-base.set", "position": [-1080, -300], "parameters": {"options": {}, "assignments": {"assignments": [{"id": "1601dc3e-8024-4e19-b592-93a4e4f77641", "name": "sitemap_url", "type": "string", "value": "{{ $env.WEBHOOK_URL }}"}]}}, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "14ac1c87-29fe-44c8-9c1e-f247a292dde5", "name": "Jina.ai Web Scraper", "type": "n8n-nodes-base.httpRequest", "position": [-720, 120], "parameters": {"url": "{{ $env.BASE_URL }}", "options": {}}, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"id": "be253ec2-f088-4895-8ef2-61a3720cf68b", "name": "Save Webpage Contents to Google Drive", "type": "n8n-nodes-base.googleDrive", "position": [-120, 120], "parameters": {"name": "={{ $('Loop Over Items').item.json.loc }} - {{ $json.title }}", "content": "={{ $json.markdown }}", "driveId": {"__rl": true, "mode": "list", "value": "My Drive"}, "options": {}, "folderId": {"__rl": true, "mode": "list", "value": "root", "cachedResultName": "/ (Root folder)"}, "operation": "createFromText"}, "credentials": {"googleDriveOAuth2Api": {"id": "UhdXGYLTAJbsa0xX", "name": "Google Drive account"}}, "typeVersion": 3, "notes": "This googleDrive node performs automated tasks as part of the workflow."}, {"id": "95d808c7-a3ca-4f59-a385-cc77bdff322e", "name": "Extract Title & Markdown Content", "type": "n8n-nodes-base.code", "position": [-380, 120], "parameters": {"jsCode": "// Get the text output from the previous node\nconst data = $input.first().json.data;\n\n// Regular expression to capture the title line\nconst titleRegex = /^Title:\\s*(.+)$/m;\n// Regular expression to capture everything after \"Markdown Content:\"\nconst markdownRegex = /Markdown Content:\\n([\\s\\S]+)/;\n\n// Extract the title using the first capture group\nconst titleMatch = data.match(titleRegex);\nconst title = titleMatch ? titleMatch[1].trim() : '';\n\n// Extract the markdown content using the first capture group\nconst markdownMatch = data.match(markdownRegex);\nconst markdown = markdownMatch ? markdownMatch[1].trim() : '';\n\n// Return a single object with title and markdown as unique values\nreturn { title, markdown };"}, "typeVersion": 2, "notes": "This code node performs automated tasks as part of the workflow."}, {"id": "2fb86c81-c144-4450-908c-559855deadef", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [-1240, -580], "parameters": {"color": 7, "width": 1540, "height": 1080, "content": "# \ud83d\udca1\ud83c\udf10 Essential Multipage Website Scraper with Jina.ai\n## Scrape entire websites with this workflow\n**Use responsibly and follow local rules and regulations**"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "b470b294-95d0-4e51-a9cc-2fe17316a771", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [-1580, -400], "parameters": {"color": 4, "width": 280, "height": 300, "content": "## \ud83d\udc4dTry Me!"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "fafd0623-a423-4e73-9609-cee8e81f5c13", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [-1180, -400], "parameters": {"width": 300, "height": 300, "content": "## \ud83d\udc47Add Website Sitemap URL"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "2e815787-d83b-4ab7-a959-2f33006a37a5", "connections": {"c4f04d82-aa33-46cf-a8e2-0b4e717e754a": {"main": [[{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-1ee96261", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-c775da5c", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-ca3272bf", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-b0f3ca94", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-1b14e7fc", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-7454d54b", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-2598e77a", "type": "main", "index": 0}], [{"node": "error-handler-c4f04d82-aa33-46cf-a8e2-0b4e717e754a-7b2ef08c", "type": "main", "index": 0}]]}, "14ac1c87-29fe-44c8-9c1e-f247a292dde5": {"main": [[{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-9a4b7306", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-7d84321f", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-5681731e", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-bb8d8ea1", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-607b5065", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-15edd02c", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-05bd3d80", "type": "main", "index": 0}], [{"node": "error-handler-14ac1c87-29fe-44c8-9c1e-f247a292dde5-5845323f", "type": "main", "index": 0}]]}, "be253ec2-f088-4895-8ef2-61a3720cf68b": {"main": [[{"node": "error-handler-be253ec2-f088-4895-8ef2-61a3720cf68b-e767a983", "type": "main", "index": 0}]]}}, "description": "Automated workflow: \ud83d\udca1\ud83c\udf10 Essential Multipage Website Scraper with Jina.ai. This workflow integrates 13 different services: stickyNote, httpRequest, filter, wait, code. It contains 21 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: \ud83d\udca1\ud83c\udf10 Essential Multipage Website Scraper with Jina.ai. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}