Workflow to n8n Workflow to Dataforge Lite Ai Url Data Extractor
Workflow to n8n Workflow to Dataforge Lite Ai Url Data Extractor is a verified WORKFLOW blueprint on Promptally in n8n Automation Blueprints optimized for leading AI models. Multi-step automated node blueprint for n8n Workflow to Dataforge Lite Ai Url Data Extractor. Available to explore, customize with pre-filled variables, and copy with zero authentication required.
Technical Specifications
| Specification | Value |
|---|---|
| Artifact type | WORKFLOW (n8n Automation Blueprints) |
| Compatible engines | Universal / Model Agnostic |
| Input variables | None (pre-filled) |
| Approximate tokens | 1,334 |
| Source file | DataForge Lite - AI URL Data Extractor.json |
| Access tier | Free public (MIT) |
Pre-Filled Template
{
"name": "DataForge Lite \u2014 Single URL AI Scraper",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "dataforge-lite",
"responseMode": "responseNode",
"options": {}
},
"id": "trigger",
"name": "Scrape URL",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
200,
400
],
"webhookId": "dataforge-lite"
},
{
"parameters": {
"jsCode": "try {\n const b = $input.first().json.body || $input.first().json;\n if (!b.url) throw new Error('URL is required.');\n return [{ json: { url: b.url, extractFields: b.extract_fields || 'price,features,description', name: b.name || '' } }];\n} catch (e) { throw new Error('Invalid input: ' + e.message); }"
},
"id": "validate",
"name": "Validate",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
400,
400
]
},
{
"parameters": {
"method": "GET",
"url": "={{ $json.url }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (compatible; DataForge/1.0)"
}
]
},
"options": {
"timeout": 20000
}
},
"id": "fetch",
"name": "Fetch Page",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
600,
400
],
"retryOnFail": true,
"maxTries": 2,
"continueOnFail": true
},
{
"parameters": {
"jsCode": "try {\n const url = $('Validate').first().json;\n const r = $input.first().json;\n const html = typeof r === 'string' ? r : (r.data || r.body || JSON.stringify(r));\n const text = html.replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi,'').replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi,'').replace(/<[^>]+>/g,' ').replace(/\\s+/g,' ').trim().substring(0,4000);\n return [{ json: { ...url, pageText: text } }];\n} catch(e) { throw new Error('Extract failed: ' + e.message); }"
},
"id": "extract",
"name": "Extract Text",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
400
]
},
{
"parameters": {
"model": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "system",
"content": "=Extract from the page: {{ $json.extractFields }}. Also: title, description, stats, sentiment. JSON: { \"title\": \"\", \"description\": \"\", \"extractedData\": {}, \"statistics\": [], \"sentiment\": \"\" }"
},
{
"role": "user",
"content": "=URL: {{$json.url}}\nExtract: {{$json.extractFields}}\n\nContent:\n{{$json.pageText}}"
}
]
},
"options": {
"temperature": 0.2,
"maxTokens": 800,
"responseFormat": "json_object"
}
},
"id": "ai",
"name": "AI: Extract Data",
"type": "n8n-nodes-base.openAi",
"typeVersion": 1.8,
"position": [
1020,
400
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 2000
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ $input.first().json.message?.content || $input.first().json.content || '{}' }}"
},
"id": "respond",
"name": "Respond",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
1240,
400
]
},
{
"parameters": {
"content": "## DataForge Lite\nPOST a URL, get structured data.\nNo Sheets, no schedule.",
"width": 260,
"height": 100,
"color": 6
},
"id": "note",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
120,
220
]
}
],
"connections": {
"Scrape URL": {
"main": [
[
{
"node": "Validate",
"type": "main",
"index": 0
}
]
]
},
"Validate": {
"main": [
[
{
"node": "Fetch Page",
"type": "main",
"index": 0
}
]
]
},
"Fetch Page": {
"main": [
[
{
"node": "Extract Text",
"type": "main",
"index": 0
}
]
]
},
"Extract Text": {
"main": [
[
{
"node": "AI: Extract Data",
"type": "main",
"index": 0
}
]
]
},
"AI: Extract Data": {
"main": [
[
{
"node": "Respond",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true
},
"tags": [
{
"name": "DataForge",
"id": "dataforge"
},
{
"name": "AutoFlow",
"id": "autoflow"
},
{
"name": "Lite",
"id": "lite"
}
],
"meta": {
"instanceId": "dataforge-lite-v1"
}
}Workflow Node & Step Summary
| Step | Type | Configuration |
|---|---|---|
| Scrape URL | n8n-nodes-base.webhook | parameters, typeVersion, position, webhookId |
| Validate | n8n-nodes-base.code | parameters, typeVersion, position |
| Fetch Page | n8n-nodes-base.httpRequest | parameters, typeVersion, position, retryOnFail, maxTries |
| Extract Text | n8n-nodes-base.code | parameters, typeVersion, position |
| AI: Extract Data | n8n-nodes-base.openAi | parameters, typeVersion, position, retryOnFail, maxTries |
| Respond | n8n-nodes-base.respondToWebhook | parameters, typeVersion, position |
| Sticky Note | n8n-nodes-base.stickyNote | parameters, typeVersion, position |
Raw workflow JSON
{
"name": "DataForge Lite \u2014 Single URL AI Scraper",
"nodes": [
{
"parameters": {
"httpMethod": "POST",
"path": "dataforge-lite",
"responseMode": "responseNode",
"options": {}
},
"id": "trigger",
"name": "Scrape URL",
"type": "n8n-nodes-base.webhook",
"typeVersion": 2,
"position": [
200,
400
],
"webhookId": "dataforge-lite"
},
{
"parameters": {
"jsCode": "try {\n const b = $input.first().json.body || $input.first().json;\n if (!b.url) throw new Error('URL is required.');\n return [{ json: { url: b.url, extractFields: b.extract_fields || 'price,features,description', name: b.name || '' } }];\n} catch (e) { throw new Error('Invalid input: ' + e.message); }"
},
"id": "validate",
"name": "Validate",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
400,
400
]
},
{
"parameters": {
"method": "GET",
"url": "={{ $json.url }}",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "User-Agent",
"value": "Mozilla/5.0 (compatible; DataForge/1.0)"
}
]
},
"options": {
"timeout": 20000
}
},
"id": "fetch",
"name": "Fetch Page",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
600,
400
],
"retryOnFail": true,
"maxTries": 2,
"continueOnFail": true
},
{
"parameters": {
"jsCode": "try {\n const url = $('Validate').first().json;\n const r = $input.first().json;\n const html = typeof r === 'string' ? r : (r.data || r.body || JSON.stringify(r));\n const text = html.replace(/<script[^>]*>[\\s\\S]*?<\\/script>/gi,'').replace(/<style[^>]*>[\\s\\S]*?<\\/style>/gi,'').replace(/<[^>]+>/g,' ').replace(/\\s+/g,' ').trim().substring(0,4000);\n return [{ json: { ...url, pageText: text } }];\n} catch(e) { throw new Error('Extract failed: ' + e.message); }"
},
"id": "extract",
"name": "Extract Text",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
800,
400
]
},
{
"parameters": {
"model": "gpt-4o-mini",
"messages": {
"values": [
{
"role": "system",
"content": "=Extract from the page: {{ $json.extractFields }}. Also: title, description, stats, sentiment. JSON: { \"title\": \"\", \"description\": \"\", \"extractedData\": {}, \"statistics\": [], \"sentiment\": \"\" }"
},
{
"role": "user",
"content": "=URL: {{$json.url}}\nExtract: {{$json.extractFields}}\n\nContent:\n{{$json.pageText}}"
}
]
},
"options": {
"temperature": 0.2,
"maxTokens": 800,
"responseFormat": "json_object"
}
},
"id": "ai",
"name": "AI: Extract Data",
"type": "n8n-nodes-base.openAi",
"typeVersion": 1.8,
"position": [
1020,
400
],
"retryOnFail": true,
"maxTries": 3,
"waitBetweenTries": 2000
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={{ $input.first().json.message?.content || $input.first().json.content || '{}' }}"
},
"id": "respond",
"name": "Respond",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1.1,
"position": [
1240,
400
]
},
{
"parameters": {
"content": "## DataForge Lite\nPOST a URL, get structured data.\nNo Sheets, no schedule.",
"width": 260,
"height": 100,
"color": 6
},
"id": "note",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
120,
220
]
}
],
"connections": {
"Scrape URL": {
"main": [
[
{
"node": "Validate",
"type": "main",
"index": 0
}
]
]
},
"Validate": {
"main": [
[
{
"node": "Fetch Page",
"type": "main",
"index": 0
}
]
]
},
"Fetch Page": {
"main": [
[
{
"node": "Extract Text",
"type": "main",
"index": 0
}
]
]
},
"Extract Text": {
"main": [
[
{
"node": "AI: Extract Data",
"type": "main",
"index": 0
}
]
]
},
"AI: Extract Data": {
"main": [
[
{
"node": "Respond",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1",
"saveManualExecutions": true
},
"tags": [
{
"name": "DataForge",
"id": "dataforge"
},
{
"name": "AutoFlow",
"id": "autoflow"
},
{
"name": "Lite",
"id": "lite"
}
],
"meta": {
"instanceId": "dataforge-lite-v1"
}
}