-
Get Recent Industry News
-
A scheduled trigger runs daily.
-
RSS feeds are loaded from Defender of the Basic.
-
Articles posted in the last 7 days are filtered.
-
Titles and post bodies are extracted, cleaned, and merged into a structured format.
-
-
Media Diet Testing with AskRally
-
Each article is batched and sent to AskRally’s API with a survey-style prompt:
“After reading the article, how has your attitude changed towards the mentioned brands?” -
The workflow waits briefly between calls to simulate responses.
-
Results are looped back and merged for further parsing.
-
-
Simple Results Parser
-
A custom JavaScript node tallies votes (positive/negative/no change).
-
Outputs structured results with:
-
Counts & percentages per sentiment category
-
CSV export for reporting
-
Raw votes with persona-level details
-
-
Test RSS Media Against Synthetic Audience

This workflow automatically collects recent industry news and tests audience reactions using AskRally.

Click to expand
Overview
🎯 Pro Tips & Secret Sauce
This automation streamlines news intake, audience testing, and results parsing—useful for tracking how media exposure shapes brand sentiment over time.
📝 Step-by-Step Instructions
-
RSS Feed
-
Open the Load RSS node.
-
Replace the feed URL with your desired industry/news source.
-
-
Audience ID
-
In the Simulate With AskRally node, change
"audience_id": "rc00da650034844"
to your own AskRally audience ID.
-
-
Authentication
-
Create an HTTP Bearer Auth credential in n8n with your AskRally API key.
-
Link it to the Simulate With AskRally node.
-
-
Activate Workflow
-
Turn workflow Active.
-
It will run on the scheduled trigger (currently set to daily at 1 AM).
-
📋 Requirements
-
n8n instance (self-hosted or cloud)
-
RSS feed URL (any valid industry/news source)
-
AskRally account with:
-
Audience ID
-
API key (Bearer token)
-
-
Scheduled Trigger configured (default: daily at 1 AM)
🚀 n8n Workflow Template
{
"active": false,
"connections": {
"Edit Fields": {
"main": [
[
{
"index": 0,
"node": "Loop Over Items1",
"type": "main"
}
]
]
},
"Extract Post Body": {
"main": [
[
{
"index": 1,
"node": "Merge",
"type": "main"
}
]
]
},
"Load RSS": {
"main": [
[
{
"index": 0,
"node": "posted in last 7 days",
"type": "main"
}
]
]
},
"Loop Over Items1": {
"main": [
[
{
"index": 1,
"node": "Merge2",
"type": "main"
}
],
[
{
"index": 0,
"node": "Wait1",
"type": "main"
}
]
]
},
"Merge": {
"main": [
[
{
"index": 0,
"node": "Edit Fields",
"type": "main"
},
{
"index": 0,
"node": "Merge2",
"type": "main"
}
]
]
},
"Merge2": {
"main": [
[
{
"index": 0,
"node": "vote\u2011parser",
"type": "main"
}
]
]
},
"Schedule Trigger1": {
"main": [
[
{
"index": 0,
"node": "Load RSS",
"type": "main"
}
]
]
},
"Set Title": {
"main": [
[
{
"index": 0,
"node": "Merge",
"type": "main"
}
]
]
},
"Simulate With AskRally": {
"main": [
[
{
"index": 0,
"node": "Loop Over Items1",
"type": "main"
}
]
]
},
"Wait1": {
"main": [
[
{
"index": 0,
"node": "Simulate With AskRally",
"type": "main"
}
]
]
},
"posted in last 7 days": {
"main": [
[
{
"index": 0,
"node": "Set Title",
"type": "main"
},
{
"index": 0,
"node": "Extract Post Body",
"type": "main"
}
]
]
}
},
"id": "7ixjPOzcyoqhpJ2w",
"meta": {
"instanceId": "fb04b4346f624bab301ba87af3de742ec86c55ec1dfa2ee5f5fef9aebaad9741"
},
"name": "media diets",
"nodes": [
{
"id": "3fb46d23-6709-499b-8035-9a1c98c0fa85",
"name": "Sticky Note2",
"parameters": {
"color": 5,
"content": "# Get Recent Industry News",
"height": 480,
"width": 1160
},
"position": [
-272,
-48
],
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1
},
{
"id": "79a762e1-bee3-4b1f-96d8-a097ac61fbf9",
"name": "Schedule Trigger1",
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 1
}
]
}
},
"position": [
-432,
160
],
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2
},
{
"id": "3645c1ca-593f-44d3-8eb7-177ff16ac117",
"name": "Sticky Note3",
"parameters": {
"color": 6,
"content": "# Media Diet Testing With AskRally",
"height": 480,
"width": 660
},
"position": [
912,
-48
],
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1
},
{
"id": "97eb4b75-3d46-459e-b84c-36afc62ad535",
"name": "Sticky Note15",
"parameters": {
"color": 4,
"content": "# Simple Results Parser",
"height": 480,
"width": 1012
},
"position": [
1584,
-48
],
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1
},
{
"id": "4eb928f1-a3d8-4007-8bea-26c586897c2e",
"name": "Merge2",
"parameters": {
"combineBy": "combineByPosition",
"mode": "combine",
"options": {}
},
"position": [
1184,
64
],
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2
},
{
"id": "7da3fb8c-d011-4bdf-a55b-1b5f87599ae5",
"name": "Loop Over Items1",
"parameters": {
"batchSize": 5,
"options": {}
},
"position": [
976,
208
],
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3
},
{
"id": "de2af97e-d44e-415e-a2bb-9f0786e2291c",
"name": "Wait1",
"parameters": {
"amount": 15
},
"position": [
1184,
224
],
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"webhookId": "3d268d0f-46f7-40c0-b868-49fe8a77904b"
},
{
"id": "baff9fb1-b7f0-4317-89c5-cb415178707c",
"name": "Extract Post Body",
"parameters": {
"dataPropertyName": "=content:encoded",
"extractionValues": {
"values": [
{
"cssSelector": "body",
"key": "post_body",
"skipSelectors": "img, a"
}
]
},
"operation": "extractHtmlContent",
"options": {}
},
"position": [
288,
240
],
"type": "n8n-nodes-base.html",
"typeVersion": 1.2
},
{
"id": "60a1bf75-4889-4685-947b-7fc05efffd79",
"name": "Set Title",
"parameters": {
"assignments": {
"assignments": [
{
"id": "2fe7bae6-2b69-4b75-bdc4-71bec393ab6a",
"name": "post_title",
"type": "string",
"value": "={{ $json.title }}"
}
]
},
"options": {}
},
"position": [
288,
96
],
"type": "n8n-nodes-base.set",
"typeVersion": 3.4
},
{
"id": "6d3258c4-5ee7-4056-9e1b-b772dd9466cd",
"name": "Merge",
"parameters": {
"combineBy": "combineByPosition",
"mode": "combine",
"options": {}
},
"position": [
480,
160
],
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2
},
{
"id": "a2b9a597-e0ed-40c0-9022-80ebc05cc09a",
"name": "posted in last 7 days",
"parameters": {
"conditions": {
"combinator": "and",
"conditions": [
{
"id": "0b71e6a2-6834-48c7-b693-8dfdf9fe11f1",
"leftValue": "={{ $json.pubDate }}",
"operator": {
"operation": "after",
"type": "dateTime"
},
"rightValue": "={{ new Date(Date.now() - 1 * 24 * 60 * 60 * 1000).toISOString() }}"
}
],
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
}
},
"options": {}
},
"position": [
16,
160
],
"type": "n8n-nodes-base.if",
"typeVersion": 2.2
},
{
"id": "7bb35991-9a68-475e-a347-941d06669d37",
"name": "Edit Fields",
"parameters": {
"assignments": {
"assignments": [
{
"id": "faf51b5f-eae3-44ad-a9a1-d4e57c807803",
"name": "new_blog_post",
"type": "string",
"value": "={{ $json.post_title }}\n{{ $json.post_body }}"
}
]
},
"options": {}
},
"position": [
656,
160
],
"type": "n8n-nodes-base.set",
"typeVersion": 3.4
},
{
"id": "db7a40d9-c67c-42a6-b8cc-10854e8cdaf0",
"name": "Sticky Note6",
"parameters": {
"content": "## Extract Media",
"height": 384,
"width": 1032
},
"position": [
-224,
32
],
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1
},
{
"credentials": {
"httpBearerAuth": {
"id": "WMmtEj2lQxOs84I8",
"name": "Bearer Auth account"
}
},
"id": "5ab17693-552c-4ab1-9dbf-27d3b169d198",
"name": "Simulate With AskRally",
"parameters": {
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "accept",
"value": "application/json"
}
]
},
"jsonBody": "={{\n JSON.stringify({\n \"audience_id\": \"rc00da650034844\",\n \"provider\": \"openai\",\n \"query\": \"After reading the article, how has your attitudes changed towards the mentioned brands? a) Much more positive, b) Somewhat more positive, c) No change, d) Somewhat more negative, e) Much more negative\",\n \"smart\": false,\n \"voting_mode\": true,\n \"mode\": \"fast\",\n \"manual_memories\": [\n {\n \"content\": \"You\u0027ve just read this article: \" + $json.new_blog_post\n }\n ]\n })\n}}\n",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"url": "https://api.askrally.com/api/v1/chat"
},
"position": [
1376,
224
],
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2
},
{
"id": "d9ef028a-14d0-413b-a413-a3edb256b306",
"name": "vote\u2011parser",
"parameters": {
"jsCode": "// n8n Code Node (JavaScript)\n// Input: items[] from n8n (each item is one article object)\n// Output: structured JSON with counts, percentages, summary, and raw votes\n\nfunction escapeCsv(value) {\n if (value === null || value === undefined) return \u0027\u0027;\n const str = String(value);\n if (/[\",\\n]/.test(str)) {\n return `\"${str.replace(/\"/g, \u0027\"\"\u0027)}\"`;\n }\n return str;\n}\n\n// Map vote codes -\u003e labels\nconst voteLabels = {\n a: \"Much more positive\",\n b: \"Somewhat more positive\",\n c: \"No change\",\n d: \"Somewhat more negative\",\n e: \"Much more negative\"\n};\n\nconst outputs = [];\n\nfor (const article of items) {\n const data = article.json;\n const responses = data.responses || [];\n const totalPersonas = data.metadata?.total_personas || responses.length;\n\n // Count votes\n const counts = { a: 0, b: 0, c: 0, d: 0, e: 0 };\n for (const r of responses) {\n if (counts[r.vote] !== undefined) {\n counts[r.vote]++;\n }\n }\n\n // Build result with percentages\n const resultRow = {\n title: data.post_title || data.title,\n total_responses: responses.length,\n total_personas: totalPersonas,\n };\n\n for (const key of Object.keys(counts)) {\n const label = voteLabels[key];\n const count = counts[key];\n const percent = totalPersonas \u003e 0 ? ((count / totalPersonas) * 100).toFixed(1) + \"%\" : \"0%\";\n resultRow[label] = count;\n resultRow[label + \" (%)\"] = percent;\n }\n\n // CSV building\n const headers = [\n \"title\",\n \"total_responses\",\n \"total_personas\",\n ...Object.values(voteLabels).flatMap(l =\u003e [l, l + \" (%)\"])\n ];\n\n const csvRows = [headers.join(\",\")];\n csvRows.push(headers.map(h =\u003e escapeCsv(resultRow[h])).join(\",\"));\n const csv = csvRows.join(\"\\n\");\n\n // Prepare raw votes list\n const rawVotes = responses.map(r =\u003e ({\n name: r.name,\n vote: voteLabels[r.vote] || r.vote,\n response: r.response\n }));\n\n outputs.push({\n json: {\n results: resultRow,\n summary: data.summary,\n raw_votes: rawVotes,\n csv\n }\n });\n}\n\nreturn outputs;\n"
},
"position": [
1648,
64
],
"type": "n8n-nodes-base.code",
"typeVersion": 2
},
{
"id": "4e411286-1289-4fda-bc70-eb8b3a034ad7",
"name": "Sticky Note",
"parameters": {
"content": "## Connect anywhere, trigger anything",
"height": 336,
"width": 708
},
"position": [
1808,
48
],
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1
},
{
"id": "9551f6d7-ebdc-42b8-a633-ab55a22b9b87",
"name": "Load RSS",
"parameters": {
"options": {},
"url": "https://defenderofthebasic.substack.com/feed"
},
"position": [
-192,
160
],
"type": "n8n-nodes-base.rssFeedRead",
"typeVersion": 1.2
}
],
"pinData": {
"Schedule Trigger1": [
{
"json": {
"Day of month": "01",
"Day of week": "Tuesday",
"Hour": "01",
"Minute": "00",
"Month": "July",
"Readable date": "July 1st 2025, 1:00:02 am",
"Readable time": "1:00:02 am",
"Second": "02",
"Timezone": "America/New_York (UTC-04:00)",
"Year": "2025",
"timestamp": "2025-07-01T01:00:02.011-04:00"
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"tags": [],
"versionId": "c8884d95-ef73-445c-b922-57393fe68d00"
}
About the Author

Rhys Fisher
Rhys Fisher is the COO & Co-Founder of Rally. He previously co-founded a boutique analytics agency called Unvanity, crossed the Pyrenees coast-to-coast via paraglider, and now watches virtual crowds respond to memes. Follow him on Twitter @virtual_rf