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": "wf001-topic-discovery-000000000",
"name": "WF-001-topic-discovery",
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * 1,4"
}
]
}
},
"id": "c2000000-0001-0001-0001-000000000001",
"name": "Schedule 09:00 UTC",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
240,
1100
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "aa01",
"name": "feed_url",
"value": "https://techcrunch.com/feed/",
"type": "string"
},
{
"id": "aa02",
"name": "source_name",
"value": "TechCrunch",
"type": "string"
},
{
"id": "aa03",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000101",
"name": "In \u2014 TechCrunch",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
200
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub004-rss-ingestion-00000000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000102",
"name": "RSS \u2014 TechCrunch",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
200
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ab01",
"name": "feed_url",
"value": "https://www.technologyreview.com/feed/",
"type": "string"
},
{
"id": "ab02",
"name": "source_name",
"value": "MIT Technology Review",
"type": "string"
},
{
"id": "ab03",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000103",
"name": "In \u2014 MIT Tech Review",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
380
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub004-rss-ingestion-00000000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000104",
"name": "RSS \u2014 MIT Tech Review",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
380
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ac01",
"name": "feed_url",
"value": "https://venturebeat.com/feed/",
"type": "string"
},
{
"id": "ac02",
"name": "source_name",
"value": "VentureBeat",
"type": "string"
},
{
"id": "ac03",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000105",
"name": "In \u2014 VentureBeat",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
560
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub004-rss-ingestion-00000000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000106",
"name": "RSS \u2014 VentureBeat",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
560
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ad01",
"name": "feed_url",
"value": "https://www.theverge.com/rss/index.xml",
"type": "string"
},
{
"id": "ad02",
"name": "source_name",
"value": "The Verge",
"type": "string"
},
{
"id": "ad03",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000107",
"name": "In \u2014 The Verge",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
740
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub004-rss-ingestion-00000000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000108",
"name": "RSS \u2014 The Verge",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
740
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ae01",
"name": "feed_url",
"value": "https://feeds.arstechnica.com/arstechnica/index",
"type": "string"
},
{
"id": "ae02",
"name": "source_name",
"value": "Ars Technica",
"type": "string"
},
{
"id": "ae03",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000109",
"name": "In \u2014 Ars Technica",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
920
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub004-rss-ingestion-00000000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000110",
"name": "RSS \u2014 Ars Technica",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
920
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ba01",
"name": "subreddit",
"value": "MachineLearning",
"type": "string"
},
{
"id": "ba02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000111",
"name": "In \u2014 MachineLearning",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
1100
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub005-reddit-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000112",
"name": "Reddit \u2014 MachineLearning",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
1100
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "bb01",
"name": "subreddit",
"value": "artificial",
"type": "string"
},
{
"id": "bb02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000113",
"name": "In \u2014 artificial",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
1280
]
},
{
"parameters": {
"resume": "timeInterval",
"amount": 15,
"unit": "seconds"
},
"id": "c2000000-0001-0001-0001-000000000113w",
"name": "Wait 15s (artificial)",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
590,
1280
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub005-reddit-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000114",
"name": "Reddit \u2014 artificial",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
1280
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "bc01",
"name": "subreddit",
"value": "ChatGPT",
"type": "string"
},
{
"id": "bc02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000115",
"name": "In \u2014 ChatGPT",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
1460
]
},
{
"parameters": {
"resume": "timeInterval",
"amount": 30,
"unit": "seconds"
},
"id": "c2000000-0001-0001-0001-000000000115w",
"name": "Wait 30s (ChatGPT)",
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
590,
1460
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub005-reddit-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000116",
"name": "Reddit \u2014 ChatGPT",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
1460
],
"onError": "continueRegularOutput"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ca01",
"name": "keyword",
"value": "AI automation",
"type": "string"
},
{
"id": "ca02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000117",
"name": "In \u2014 AI automation",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
1640
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub006-trends-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000118",
"name": "Trends \u2014 AI automation",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
1640
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cb01",
"name": "keyword",
"value": "AI agent",
"type": "string"
},
{
"id": "cb02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000119",
"name": "In \u2014 AI agent",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
1820
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub006-trends-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000120",
"name": "Trends \u2014 AI agent",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
1820
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cc01",
"name": "keyword",
"value": "ChatGPT business",
"type": "string"
},
{
"id": "cc02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000121",
"name": "In \u2014 ChatGPT business",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
2000
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub006-trends-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000122",
"name": "Trends \u2014 ChatGPT business",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
2000
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cd01",
"name": "keyword",
"value": "AI layoffs",
"type": "string"
},
{
"id": "cd02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000123",
"name": "In \u2014 AI layoffs",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
2180
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub006-trends-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000124",
"name": "Trends \u2014 AI layoffs",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
2180
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "ce01",
"name": "keyword",
"value": "AI cost",
"type": "string"
},
{
"id": "ce02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000125",
"name": "In \u2014 AI cost",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
2360
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub006-trends-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000126",
"name": "Trends \u2014 AI cost",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
2360
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "cf01",
"name": "keyword",
"value": "automation ROI",
"type": "string"
},
{
"id": "cf02",
"name": "channel_id",
"value": 1,
"type": "number"
}
]
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000127",
"name": "In \u2014 automation ROI",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
480,
2540
]
},
{
"parameters": {
"workflowId": {
"__rl": true,
"value": "sub006-trends-ingestion-0000000",
"mode": "id"
},
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000128",
"name": "Trends \u2014 automation ROI",
"type": "n8n-nodes-base.executeWorkflow",
"typeVersion": 1.1,
"position": [
700,
2540
]
},
{
"parameters": {
"aggregate": "aggregateAllItemData",
"destinationFieldName": "source_results",
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000200",
"name": "Collect All Results",
"type": "n8n-nodes-base.aggregate",
"typeVersion": 1,
"position": [
980,
1370
]
},
{
"parameters": {
"operation": "executeQuery",
"query": "={{ `INSERT INTO workflow_logs (workflow_name, workflow_id, execution_id, status, input_summary, output_summary, created_at) VALUES ('WF-001-topic-discovery', 'wf001-topic-discovery-000000000', '${$execution.id}', 'completed', '{}', '${JSON.stringify({ total_sources: $json.source_results.length, results: $json.source_results.map(r => ({ source: r.feed_url || r.subreddit || r.keyword, inserted: r.items_inserted || 0 })) }).replace(/'/g,\"''\")}', NOW()) RETURNING id` }}",
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000201",
"name": "Log Execution",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
1200,
1370
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "INSERT INTO topics (channel_id, title, description, source, source_url, status, created_at, updated_at) SELECT DISTINCT ON (rr.content_title) 1, rr.content_title, rr.content_text, rr.source_type::text::research_source_type, rr.source_url, 'discovered', NOW(), NOW() FROM raw_research rr WHERE rr.created_at >= NOW() - INTERVAL '2 hours' AND rr.content_title IS NOT NULL AND NOT EXISTS (SELECT 1 FROM topics t WHERE t.title = rr.content_title) RETURNING id, title",
"options": {}
},
"id": "c2000000-0001-0001-0001-000000000202",
"name": "Create Topics",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
1420,
1370
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "executeQuery",
"query": "UPDATE raw_research rr SET topic_id = t.id FROM topics t WHERE rr.content_title = t.title AND rr.topic_id IS NULL RETURNING rr.id",
"options": {}
},
"id": "c3000000-0001-0001-0001-000000000099",
"name": "Link Raw Research",
"type": "n8n-nodes-base.postgres",
"typeVersion": 2.5,
"position": [
1660,
1370
],
"credentials": {
"postgres": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Schedule 09:00 UTC": {
"main": [
[
{
"node": "In \u2014 TechCrunch",
"type": "main",
"index": 0
},
{
"node": "In \u2014 MIT Tech Review",
"type": "main",
"index": 0
},
{
"node": "In \u2014 VentureBeat",
"type": "main",
"index": 0
},
{
"node": "In \u2014 The Verge",
"type": "main",
"index": 0
},
{
"node": "In \u2014 Ars Technica",
"type": "main",
"index": 0
},
{
"node": "In \u2014 MachineLearning",
"type": "main",
"index": 0
},
{
"node": "In \u2014 artificial",
"type": "main",
"index": 0
},
{
"node": "In \u2014 ChatGPT",
"type": "main",
"index": 0
},
{
"node": "In \u2014 AI automation",
"type": "main",
"index": 0
},
{
"node": "In \u2014 AI agent",
"type": "main",
"index": 0
},
{
"node": "In \u2014 ChatGPT business",
"type": "main",
"index": 0
},
{
"node": "In \u2014 AI layoffs",
"type": "main",
"index": 0
},
{
"node": "In \u2014 AI cost",
"type": "main",
"index": 0
},
{
"node": "In \u2014 automation ROI",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 TechCrunch": {
"main": [
[
{
"node": "RSS \u2014 TechCrunch",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 MIT Tech Review": {
"main": [
[
{
"node": "RSS \u2014 MIT Tech Review",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 VentureBeat": {
"main": [
[
{
"node": "RSS \u2014 VentureBeat",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 The Verge": {
"main": [
[
{
"node": "RSS \u2014 The Verge",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 Ars Technica": {
"main": [
[
{
"node": "RSS \u2014 Ars Technica",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 MachineLearning": {
"main": [
[
{
"node": "Reddit \u2014 MachineLearning",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 artificial": {
"main": [
[
{
"node": "Wait 15s (artificial)",
"type": "main",
"index": 0
}
]
]
},
"Wait 15s (artificial)": {
"main": [
[
{
"node": "Reddit \u2014 artificial",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 ChatGPT": {
"main": [
[
{
"node": "Wait 30s (ChatGPT)",
"type": "main",
"index": 0
}
]
]
},
"Wait 30s (ChatGPT)": {
"main": [
[
{
"node": "Reddit \u2014 ChatGPT",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 AI automation": {
"main": [
[
{
"node": "Trends \u2014 AI automation",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 AI agent": {
"main": [
[
{
"node": "Trends \u2014 AI agent",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 ChatGPT business": {
"main": [
[
{
"node": "Trends \u2014 ChatGPT business",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 AI layoffs": {
"main": [
[
{
"node": "Trends \u2014 AI layoffs",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 AI cost": {
"main": [
[
{
"node": "Trends \u2014 AI cost",
"type": "main",
"index": 0
}
]
]
},
"In \u2014 automation ROI": {
"main": [
[
{
"node": "Trends \u2014 automation ROI",
"type": "main",
"index": 0
}
]
]
},
"RSS \u2014 TechCrunch": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"RSS \u2014 MIT Tech Review": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"RSS \u2014 VentureBeat": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"RSS \u2014 The Verge": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"RSS \u2014 Ars Technica": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Reddit \u2014 MachineLearning": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Reddit \u2014 artificial": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Reddit \u2014 ChatGPT": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Trends \u2014 AI automation": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Trends \u2014 AI agent": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Trends \u2014 ChatGPT business": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Trends \u2014 AI layoffs": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Trends \u2014 AI cost": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Trends \u2014 automation ROI": {
"main": [
[
{
"node": "Collect All Results",
"type": "main",
"index": 0
}
]
]
},
"Collect All Results": {
"main": [
[
{
"node": "Log Execution",
"type": "main",
"index": 0
}
]
]
},
"Log Execution": {
"main": [
[
{
"node": "Create Topics",
"type": "main",
"index": 0
}
]
]
},
"Create Topics": {
"main": [
[
{
"node": "Link Raw Research",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
}
}
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.
postgres
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
WF-001-topic-discovery. Uses postgres. Scheduled trigger; 35 nodes.
Source: https://github.com/navin-labs/content-factory-os/blob/main/n8n/workflows/main/WF-001-topic-discovery.json — 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.
Disparador 1.8. Uses itemLists, postgres, emailSend, httpRequest. Scheduled trigger; 85 nodes.
공유회_알림톡_크론. Uses postgres, httpRequest, n8n-nodes-solapi. Scheduled trigger; 39 nodes.
QuepasaAutomatic. Uses postgres, postgresTrigger, httpRequest. Scheduled trigger; 39 nodes.
QuepasaAutomatic. Uses postgres, postgresTrigger, httpRequest. Scheduled trigger; 39 nodes.
QuepasaAutomatic. Uses postgres, postgresTrigger, httpRequest. Scheduled trigger; 39 nodes.