Building an AI-Powered News Aggregator: My First n8n Workflow

Joe Taylor
36 min readSep 11, 2024

--

TL;DR

  • Created an n8n workflow to aggregate and analyze tech news from multiple sources
  • Workflow fetches RSS feeds, filters for AI-related content, and generates detailed articles
  • Uses AI services like OpenAI’s GPT models for content analysis and article generation
  • Demonstrates the power of workflow automation for content curation and creation

Introduction

I recently discovered n8n, which piqued my interest in the world of workflow automation tools. While friends had previously mentioned Zappier and Make, I was hesitant to commit to another $20 monthly subscription.

n8n, however, caught my attention for two compelling reasons:

  1. It offers a self-hosted option
  2. It boasts an impressive 45,000+ GitHub stars

There’s also a paid version for those who prefer their hosting service, reminiscent of Supabase, which I’ve had positive experiences with. I’m particularly drawn to projects that allow me to host the core platform and tweak the code as needed.

Intrigued by n8n’s potential, I decided to create my first workflow to tackle a pressing issue: the overwhelming influx of AI-related news in my inbox.

My Gmail account was bursting at the seams with largely unopened email notifications.

My goal was to automate the process of collecting, filtering, and summarizing AI news. Join me as we explore how I leveraged n8n to tame my chaotic inbox and stay on top of the latest AI developments…

Quick Screen Shot of the Final Output:

The Dream of a Custom News Feed
Complete with AI summaries
That Will Cite Sources

What is n8n?

Before diving into the workflow details, let’s briefly discuss what n8n is. n8n (pronounced as “n-eight-n”) is an open-source workflow automation tool that allows you to connect various services and automate tasks without writing code. It provides a visual interface to create complex workflows by linking different nodes, each representing a specific action or service.

The Workflow Overview

Again, the task at hand was to clean up my gmail account, and a key use case that stood out to me was utilizing AI summarize all the key news headlines related to AI. I could then unsubscribe from all these notifications.

I decided to build an n8n workflow that would:

  1. Fetch RSS feeds from multiple news sources
  2. Parse the RSS content
  3. Filter for AI-related articles
  4. Perform a quick internet search on the topic
  5. Generate expanded articles using AI based on the internet search results
  6. Save the results to a database
  7. Publish to a website

Let’s break down each component of the workflow.

The Full Workflow

Fetching RSS Feeds

The workflow starts by fetching RSS feeds from several prominent tech news sources:

  • The New York Times (Technology section)
  • Financial Times
  • BBC News (Technology section)
  • The Washington Post (Technology section)
  • The Wall Street Journal (Tech section)

This is accomplished using the “HTTP Request” nodes, which are configured to fetch the XML content from each RSS feed URL.

Parsing RSS Content

After fetching the RSS feeds, the workflow uses “XML” nodes to parse the XML content into a structured format that can be easily processed in subsequent steps.

Filtering for AI-Related Content

One of the most interesting aspects of this workflow is its ability to filter for AI-related content. This is done using OpenAI’s GPT models. For each article in the RSS feed:

  1. The title and content snippet are extracted
  2. GPT4o-mini is prompted to determine if the article is AI-related
  3. If the article is deemed AI-related, it’s passed on to the next stage; otherwise, it’s skipped

This filtering step ensures that only relevant AI news makes it through the pipeline. I considered using Llama 3.1 70b via Groq but while I’m a big fan of Groq, the rate limiting makes the platform all but unusable. I’m really hoping they come out with their paid option which seems to only be available for paid enterprise accounts.

Generating Expanded Articles

For articles that pass the AI-related filter, the workflow goes a step further by generating expanded, more detailed articles. This is done using a combination of services:

  1. JinaAI Search is used — which I cannot speak more highly off. I’ve used their service in a number of projects without issue.
  2. The original article snippet, along with the search results, are fed into OpenAI GPT4o-mini. I did test other models and I didn’t observe much of a quality difference in the article output. Sure GPT-4o did better and so did Sonnet but not so much butter I would pay 16x-20x more.
  3. The AI then generates a comprehensive article, complete with:
  • A TL;DR section
  • Markdown formatting
  • Proper citations
  • A metadata section with keywords

This step transforms brief news snippets into full-fledged articles, providing readers (yours truly) with more context and depth.

Saving Results

The final step in the workflow involves saving the generated articles and metadata to a database. The workflow uses Supabase, my current prefered database option.

  • The original RSS item details
  • The AI-generated article content
  • Associated metadata like publication date, source, and image URLs

Workflow Scheduling

To keep the news feed fresh, the entire workflow is scheduled to run periodically using n8n’s “Schedule Trigger” node. This ensures that new articles are regularly fetched, processed, and added to the database.

Success?

So, after this I was able to run the workflow and review the results… and I was quite pleased. I ran the workflow and observed 53 articles drafted at a cost of $0.007 an article. I also didn’t notice any difference in substantive content within the AI Articles as compared to the actual article from the original publisher… with that, I don’t see how or why I would continue to spend $99 a month across these news outlets when I can just pass in the title and the results of a google search into the base model at OpenAI. This really begs the question on the future of what is the traditional journalism infrastructure.

Another article for another day on that topic.

Code:

{
"meta": {
"instanceId": "2b378d4b73951813863a038ece98d49c1d584c4e4ec592c16ed4a68cc5f28162"
},
"nodes": [
{
"parameters": {
"url": "https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml",
"options": {}
},
"id": "aeccb68b-d6da-4f28-988f-56252884351a",
"name": "HTTP Request1",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1060,
760
]
},
{
"parameters": {
"options": {}
},
"id": "1955e9a6-1063-4cba-b3ca-40df6fd390c0",
"name": "XML1",
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
1280,
760
]
},
{
"parameters": {
"fieldToSplitOut": "rss.channel.item",
"options": {}
},
"id": "144bfd63-7f64-49b8-bc11-1f309914d46b",
"name": "Split Out1",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1500,
760
]
},
{
"parameters": {
"options": {}
},
"id": "9f45e2b0-418d-4362-b8d6-28534522d300",
"name": "Loop Over Items2",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1740,
760
]
},
{
"parameters": {
"url": "=https://s.jina.ai/ {{ encodeURIComponent($json.title) }}",
"options": {}
},
"id": "69b20423-d9ed-4be7-b973-dc0f4ed0c8da",
"name": "JinaAI Search3",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3100,
800
]
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "d81fd6ae-ab6f-4239-9ed4-ce20f1704273",
"name": "OpenAI Chat Model5",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
3320,
1020
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "ai_articles",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "rss_feed_id",
"fieldValue": "={{ $('Supabase3').item.json.id }}"
},
{
"fieldId": "title",
"fieldValue": "={{ $('Supabase3').item.json.title }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.text }}"
}
]
}
},
"id": "857b7101-40f6-419f-91b6-02031c622e20",
"name": "Save Article3",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
3660,
800
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "83745ea7-fdb7-4c05-b4de-9965feed5585",
"name": "OpenAI Chat Model6",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
2340,
1060
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "rss_feed",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "title",
"fieldValue": "={{ $json.title }}"
},
{
"fieldId": "link",
"fieldValue": "={{ $json.link }}"
},
{
"fieldId": "pub_date",
"fieldValue": "={{ $json.pubDate }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "content_snippet",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "guid",
"fieldValue": "={{ $json.guid }}"
},
{
"fieldId": "categories",
"fieldValue": "={{ $json.category }}"
},
{
"fieldId": "img_url",
"fieldValue": "={{ $json['media:content'].url }}"
},
{
"fieldId": "source",
"fieldValue": "The New York Times"
}
]
}
},
"id": "e9ca40cd-43b1-40ba-80fa-ea501156ccba",
"name": "Create RSS Item2",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
1960,
780
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.text }}",
"rightValue": "true",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "9ac40e39-9621-489e-9df0-d252447f8b68",
"name": "If - Is AI2",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2640,
840
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.error }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "950f2e2e-db05-4925-9d02-8d8e80a65cfc",
"name": "If - Exists Already2",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2120,
780
]
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Create RSS Item2').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "should_draft_article",
"fieldValue": "True"
}
]
}
},
"id": "b7ae19a7-58a6-41b7-b674-b37f98c0dc84",
"name": "Supabase3",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2900,
800
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "*/30 8-20 * * *"
}
]
}
},
"id": "ec09f75c-4140-4309-8a4e-0421cbd2b415",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1.2,
"position": [
320,
-320
]
},
{
"parameters": {
"promptType": "define",
"text": "=Analyze the following article headline and content snippet. \n\nDetermin if it is AI related.\n\nout put single word as either true or false\n\ndo not output codeblocks or markdown, just the word true or false.\n\n<article_title>\n{{ $('Create RSS Item2').item.json.title }}\n</article_title>\n\n<article_snippet>\n{{ $('Create RSS Item2').item.json.content_snippet }}\n</article_snippet>",
"hasOutputParser": true
},
"id": "8a5caac9-a1a1-4e52-a232-c79d58cd23a6",
"name": "Is AI Related2",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
2320,
840
]
},
{
"parameters": {
"url": "https://www.ft.com/myft/following/6362d893-8d20-4ab6-b60f-4fcfc8c3e3fc.rss",
"options": {}
},
"id": "f7ec7c24-99f1-4dd6-b9e8-46286a7393c2",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1060,
1220
]
},
{
"parameters": {
"options": {}
},
"id": "6262922a-11b1-4a8f-a942-f38272f51a91",
"name": "XML",
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
1280,
1220
]
},
{
"parameters": {
"fieldToSplitOut": "rss.channel.item",
"options": {}
},
"id": "105bfd4d-34de-488c-94a2-bbe3f6ceff26",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1500,
1220
]
},
{
"parameters": {
"options": {}
},
"id": "9d8db46f-a393-41f3-aa0e-b6eb8ffbf3e8",
"name": "Loop Over Items3",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1740,
1220
]
},
{
"parameters": {
"url": "=https://s.jina.ai/ {{ encodeURIComponent($json.title) }}",
"options": {}
},
"id": "84b870bf-536b-4a8d-ae57-7fa74ab14764",
"name": "JinaAI Search4",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3340,
1260
]
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "51d2dd1a-8d9c-46ec-85c0-b73d2b4d5820",
"name": "OpenAI Chat Model7",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
3560,
1480
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "ai_articles",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "rss_feed_id",
"fieldValue": "={{ $('Supabase4').item.json.id }}"
},
{
"fieldId": "title",
"fieldValue": "={{ $('Supabase4').item.json.title }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.text }}"
}
]
}
},
"id": "db8701c4-dc15-492c-91d0-7ebb86794be3",
"name": "Save Article4",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
3900,
1260
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "0c90c9fb-a9b0-48a7-8560-78531663c04b",
"name": "OpenAI Chat Model8",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
2580,
1520
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "rss_feed",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "title",
"fieldValue": "={{ $json.title }}"
},
{
"fieldId": "link",
"fieldValue": "={{ $json.link }}"
},
{
"fieldId": "pub_date",
"fieldValue": "={{ $json.pubDate }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.descriptionText }}"
},
{
"fieldId": "content_snippet",
"fieldValue": "={{ $json.descriptionText }}"
},
{
"fieldId": "guid",
"fieldValue": "={{ $json.guid._ }}"
},
{
"fieldId": "img_url",
"fieldValue": "={{ $json.imageURL }}"
},
{
"fieldId": "source",
"fieldValue": "The Financial Times"
}
]
}
},
"id": "7185fa8c-b212-4742-9892-defc14a12c5e",
"name": "Create RSS Item3",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2180,
1240
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.text }}",
"rightValue": "true",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "77dfad1d-e155-4567-98b2-2a1818af9a05",
"name": "If - Is AI3",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2880,
1300
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.error }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "6dbed84f-77c3-4793-aab2-bac773d49362",
"name": "If - Exists Already3",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2360,
1240
]
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Create RSS Item3').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "should_draft_article",
"fieldValue": "True"
}
]
}
},
"id": "8a18cac2-3458-45f5-8b84-4b523c478fb3",
"name": "Supabase4",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
3140,
1260
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Analyze the following article headline and content snippet. \n\nDetermin if it is AI related.\n\nout put single word as either true or false\n\ndo not output codeblocks or markdown, just the word true or false.\n\n<article_title>\n{{ $('Create RSS Item3').item.json.title }}\n</article_title>\n\n<article_snippet>\n{{ $('Create RSS Item3').item.json.content_snippet }}\n</article_snippet>",
"hasOutputParser": true
},
"id": "d2131dfe-13dc-4966-b0d0-358b14925175",
"name": "Is AI Related3",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
2560,
1300
]
},
{
"parameters": {
"jsCode": "function processDescription(description) {\n const imgSrcRegex = /<img.*?src=\"(.*?)\"/;\n const imageURL = description.match(imgSrcRegex)?.[1] || '';\n\n const textRegex = /<img.*?>(.*?)<br/;\n const descriptionText = description.match(textRegex)?.[1]?.trim() || '';\n\n return { imageURL, descriptionText };\n}\n\nconst processedItems = items.map(item => {\n const { imageURL, descriptionText } = processDescription(item.json.description);\n \n return {\n ...item.json,\n imageURL,\n descriptionText\n };\n});\n\nreturn processedItems;"
},
"id": "af697f7f-ed41-47c9-a139-9ed15db669a3",
"name": "Extract Img and Description",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
1980,
1240
]
},
{
"parameters": {
"promptType": "define",
"text": "=You are an AI assistant tasked with writing a news article based on an RSS title, content snippet, and reference material from a Google search. Follow these instructions carefully:\n\n1. You will be provided with an RSS title and content snippet from a news feed:\n\n ```\n <rss_title>\n {{ $('Supabase4').item.json.title }}\n </rss_title>\n\n <content_snippet>\n {{ $('Supabase4').item.json.content_snippet }}\n </content_snippet>\n ```\n\n2. You will also be given content from a Google search related to the headline:\n\n ```\n <google_search_content>\n{{ JSON.stringify($json.data.substring(0, 400000)) }}\n </google_search_content>\n ```\n\n3. Write an article that expands on the RSS headline and content snippet, using information from the Google search content. The article should be:\n - Informative\n - Engaging\n - Well-structured\n\n4. Format the article using Markdown. Use appropriate Markdown syntax for:\n - Headings (use ## for the main title, ### for subheadings)\n - Paragraphs (separate with blank lines)\n - Bold and italic text where appropriate\n - Bullet points or numbered lists if needed\n - Blockquotes for any direct quotes from sources\n\n5. Incorporate information from both the RSS headline/snippet and the Google search content:\n - Use the headline to guide the main topic\n - Use the search content to provide additional details and context\n\n6. Maintain a neutral, journalistic tone throughout the article:\n - Present facts objectively\n - Do not include personal opinions or biases\n - Use third-person perspective\n\n7. Structure your article with:\n - Begin with a TL;DR section. Provide quick bullet points that capture the highlights of the article.\n - A compelling introduction that summarizes the key points\n - A conclusion that wraps up the article and potentially suggests future implications\n\n8. If applicable, include:\n - Relevant statistics or data points\n - Brief mentions of key stakeholders or experts\n - Context on why this news is important or impactful\n\n9. Use Wikipedia-style citations in Markdown format:\n - In the text, use footnote-style references like [^1], [^2], etc.\n - Use footnotes sequentially without skipping any numbers\n - At the end of the article, include a ## References section\n - Format each reference as follows:\n [^1]: Author Name (if available) (Date). \"[Article Title](URL)\". Publication Name. Retrieved [Current Date].\n - If an author name is not available, start with the article title\n - Ensure all article titles are clickable links using Markdown syntax\n - Include ALL sources provided in the Google search content in the References section, even if not directly cited in the text\n\n10. Begin your response with <article> and end it with </article>. The entire article, including the Markdown formatting and references, should be contained within these tags.\n\n11. After the article, provide a brief metadata section with:\n - Main keywords or tags (do not include links in this section)\n\n12. Double-check your footnotes before completing the article:\n - Ensure all footnote numbers used in the text have corresponding entries in the References section\n - Verify that footnote numbers are sequential (1, 2, 3, etc.) without any gaps\n\nRemember to adhere to journalistic standards and ethics in your writing. Stick to the facts presented in the provided sources and avoid sensationalism."
},
"id": "855cb2d2-4104-44b5-aa7b-d6ae67558d29",
"name": "Write Article4",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
3540,
1260
]
},
{
"parameters": {
"url": "https://feeds.bbci.co.uk/news/technology/rss.xml",
"options": {}
},
"id": "024fe7f0-30ee-4482-9533-23f2c953b72d",
"name": "HTTP Request2",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1060,
1680
]
},
{
"parameters": {
"options": {}
},
"id": "f8e1920b-4a32-4b0f-a8dd-bfd30b027089",
"name": "XML2",
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
1280,
1680
]
},
{
"parameters": {
"fieldToSplitOut": "rss.channel.item",
"options": {}
},
"id": "8dc0ce33-d166-4ec8-a990-d0d823689b6e",
"name": "Split Out2",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1500,
1680
]
},
{
"parameters": {
"options": {}
},
"id": "f699edfa-fd74-45aa-ac3f-3105ba10a509",
"name": "Loop Over Items4",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1740,
1680
]
},
{
"parameters": {
"url": "=https://s.jina.ai/ {{ encodeURIComponent($json.title) }}",
"options": {}
},
"id": "a5fa0411-9818-460f-8691-a9f18a8d29d5",
"name": "JinaAI Search5",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3180,
1720
]
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "011a4dd6-78e8-42d3-ad75-25045006b419",
"name": "OpenAI Chat Model9",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
3300,
1860
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "39c9512a-3536-49de-9f1c-bbba719bf4cd",
"name": "OpenAI Chat Model10",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
2300,
1840
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "rss_feed",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "title",
"fieldValue": "={{ $json.title }}"
},
{
"fieldId": "link",
"fieldValue": "={{ $json.link }}"
},
{
"fieldId": "pub_date",
"fieldValue": "={{ $json.pubDate }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "content_snippet",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "img_url",
"fieldValue": "={{ $json['media:thumbnail'].url }}"
},
{
"fieldId": "source",
"fieldValue": "BBC News"
},
{
"fieldId": "guid",
"fieldValue": "={{ $json.guid._ }}"
}
]
}
},
"id": "fbdd03b2-3676-47e3-a3bd-fa23a6d4dff7",
"name": "Create RSS Item4",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2000,
1700
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.text }}",
"rightValue": "true",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "246801e0-54a2-41f3-94df-7d59f6bf6c58",
"name": "If - Is AI4",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2720,
1760
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.error }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "6f539020-50ed-44de-845d-ebef97682965",
"name": "If - Exists Already4",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2200,
1700
]
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Create RSS Item4').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "should_draft_article",
"fieldValue": "True"
}
]
}
},
"id": "44753353-5591-4981-816b-b3bcaf42ada1",
"name": "Supabase5",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2980,
1720
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Analyze the following article headline and content snippet. \n\nDetermin if it is AI related.\n\nout put single word as either true or false\n\ndo not output codeblocks or markdown, just the word true or false.\n\n<article_title>\n{{ $('Create RSS Item4').item.json.title }}\n</article_title>\n\n<article_snippet>\n{{ $('Create RSS Item4').item.json.content_snippet }}\n</article_snippet>",
"hasOutputParser": true
},
"id": "1f77c84e-8097-4b0a-a4ae-139586365693",
"name": "Is AI Related4",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
2400,
1760
]
},
{
"parameters": {
"promptType": "define",
"text": "=You are an AI assistant tasked with writing a news article based on an RSS title, content snippet, and reference material from a Google search. Follow these instructions carefully:\n\n1. You will be provided with an RSS title and content snippet from a news feed:\n\n ```\n <rss_title>\n {{ $('Supabase5').item.json.title }}\n </rss_title>\n\n <content_snippet>\n {{ $('Supabase5').item.json.content_snippet }}\n </content_snippet>\n ```\n\n2. You will also be given content from a Google search related to the headline:\n\n ```\n <google_search_content>\n{{ JSON.stringify($json.data.substring(0, 300000)) }}\n </google_search_content>\n ```\n\n3. Write an article that expands on the RSS headline and content snippet, using information from the Google search content. The article should be:\n - Informative\n - Engaging\n - Well-structured\n\n4. Format the article using Markdown. Use appropriate Markdown syntax for:\n - Headings (use ## for the main title, ### for subheadings)\n - Paragraphs (separate with blank lines)\n - Bold and italic text where appropriate\n - Bullet points or numbered lists if needed\n - Blockquotes for any direct quotes from sources\n\n5. Incorporate information from both the RSS headline/snippet and the Google search content:\n - Use the headline to guide the main topic\n - Use the search content to provide additional details and context\n\n6. Maintain a neutral, journalistic tone throughout the article:\n - Present facts objectively\n - Do not include personal opinions or biases\n - Use third-person perspective\n\n7. Structure your article with:\n - Begin with a TL;DR section. Provide quick bullet points that capture the highlights of the article.\n - A compelling introduction that summarizes the key points\n - A conclusion that wraps up the article and potentially suggests future implications\n\n8. If applicable, include:\n - Relevant statistics or data points\n - Brief mentions of key stakeholders or experts\n - Context on why this news is important or impactful\n\n9. Use Wikipedia-style citations in Markdown format:\n - In the text, use footnote-style references like [^1], [^2], etc.\n - Use footnotes sequentially without skipping any numbers\n - At the end of the article, include a ## References section\n - Format each reference as follows:\n [^1]: Author Name (if available) (Date). \"[Article Title](URL)\". Publication Name. Retrieved [Current Date].\n - If an author name is not available, start with the article title\n - Ensure all article titles are clickable links using Markdown syntax\n - Include ALL sources provided in the Google search content in the References section, even if not directly cited in the text\n\n10. Begin your response with <article> and end it with </article>. The entire article, including the Markdown formatting and references, should be contained within these tags.\n\n11. After the article, provide a brief metadata section with:\n - Main keywords or tags (do not include links in this section)\n\n12. Double-check your footnotes before completing the article:\n - Ensure all footnote numbers used in the text have corresponding entries in the References section\n - Verify that footnote numbers are sequential (1, 2, 3, etc.) without any gaps\n\nRemember to adhere to journalistic standards and ethics in your writing. Stick to the facts presented in the provided sources and avoid sensationalism."
},
"id": "d2356b63-beec-4dfd-8a29-8ccd3e301b81",
"name": "Write Article5",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
3380,
1720
]
},
{
"parameters": {
"tableId": "ai_articles",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "rss_feed_id",
"fieldValue": "={{ $('Supabase5').item.json.id }}"
},
{
"fieldId": "title",
"fieldValue": "={{ $('Supabase5').item.json.title }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $('Write Article5').item.json.text }}"
}
]
}
},
"id": "c0c9e6f7-97b3-4d86-b4de-dfb1e20a41ad",
"name": "Save Article5",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
4080,
1720
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"url": "https://www.googleapis.com/customsearch/v1",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Supabase5').item.json.title }} "
},
{
"name": "cx",
"value": "{{ String($('Globals1').item.json.google_search_cx).trim() }}"
},
{
"name": "searchType",
"value": "image"
},
{
"name": "num",
"value": "1"
}
]
},
"options": {}
},
"id": "8958d252-26b9-460c-b7c1-ea954750084d",
"name": "Get Image",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3720,
1720
],
"credentials": {
"httpQueryAuth": {
"id": "",
"name": "Google Search Key"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Supabase5').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "img_url",
"fieldValue": "={{ $json.items[0].link }}"
}
]
}
},
"id": "5c68e57a-7713-4bb4-955f-08885c8edc86",
"name": "Supabase6",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
3900,
1720
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"content": "# NYT",
"height": 80,
"color": 5
},
"id": "05f3ca26-4611-4255-a4d0-5a60f2af34af",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
740,
760
]
},
{
"parameters": {
"content": "# FT",
"height": 80,
"color": 5
},
"id": "d4dd9943-1315-4ed6-90cc-f7a71f3bdda3",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
740,
1240
]
},
{
"parameters": {
"content": "# BBC",
"height": 80,
"color": 5
},
"id": "ccf15d80-a500-4368-b210-78c7d94a00d2",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
740,
1700
]
},
{
"parameters": {
"url": "https://feeds.washingtonpost.com/rss/business/technology",
"options": {}
},
"id": "462860b1-2f25-4103-9419-41c03045cf85",
"name": "HTTP Request5",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1060,
-220
]
},
{
"parameters": {
"options": {}
},
"id": "34a43fdb-ab78-4005-8639-046ff048c64b",
"name": "XML5",
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
1280,
-220
]
},
{
"parameters": {
"fieldToSplitOut": "rss.channel.item",
"options": {}
},
"id": "34bddc2c-0fc1-4baf-bb1c-ed1ec96b91bc",
"name": "Split Out5",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1500,
-220
]
},
{
"parameters": {
"options": {}
},
"id": "73937277-fb32-4591-9c0a-286607aaa4b1",
"name": "Loop Over Items7",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1740,
-220
]
},
{
"parameters": {
"url": "=https://s.jina.ai/ {{ encodeURIComponent($json.title) }}",
"options": {}
},
"id": "a21cc7bd-6c12-47c6-902b-86f85075b7a2",
"name": "JinaAI Search8",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3180,
-180
]
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "70de1d46-7b9d-4cc2-aa6c-4ef77cc994a1",
"name": "OpenAI Chat Model15",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
3380,
40
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "ai_articles",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "rss_feed_id",
"fieldValue": "={{ $('Supabase9').item.json.id }}"
},
{
"fieldId": "title",
"fieldValue": "={{ $('Supabase9').item.json.title }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $('Write Article8').item.json.text }}"
}
]
}
},
"id": "09a3c049-e17a-41eb-b45d-79dfcaebb667",
"name": "Save Article8",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
4100,
-180
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "fbc569d5-1c64-4526-bfed-6848761d1a3a",
"name": "OpenAI Chat Model16",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
2420,
80
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "rss_feed",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "title",
"fieldValue": "={{ $json.title }}"
},
{
"fieldId": "link",
"fieldValue": "={{ $json.link }}"
},
{
"fieldId": "pub_date",
"fieldValue": "={{ $json.pubDate }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "content_snippet",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "img_url",
"fieldValue": "="
},
{
"fieldId": "source",
"fieldValue": "The Washington Post"
},
{
"fieldId": "guid",
"fieldValue": "={{ $json.guid._ }}"
}
]
}
},
"id": "06c121d5-fbd8-41c3-819a-7819008372d9",
"name": "Create RSS Item7",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2000,
-200
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.text }}",
"rightValue": "true",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "b15a7a5a-fea8-4c9c-81eb-ffe16d160806",
"name": "If - Is AI7",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2720,
-140
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.error }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "7d651663-afc4-4e8a-9ed4-c554aa1dd575",
"name": "If - Exists Already7",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2200,
-200
]
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Create RSS Item7').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "should_draft_article",
"fieldValue": "True"
}
]
}
},
"id": "7fda4ea9-b458-463c-9b1f-c3100810ee18",
"name": "Supabase9",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2980,
-180
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"url": "https://www.googleapis.com/customsearch/v1",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Supabase9').item.json.title }} "
},
{
"name": "cx",
"value": "={{ String($('Globals1').item.json.google_search_cx).trim() }}"
},
{
"name": "searchType",
"value": "image"
},
{
"name": "num",
"value": "1"
}
]
},
"options": {}
},
"id": "87f48a74-5909-42e7-8449-385916815251",
"name": "Get Image3",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3740,
-180
],
"credentials": {
"httpQueryAuth": {
"id": "",
"name": "Google Search Key"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Supabase9').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "img_url",
"fieldValue": "={{ $json.items[0].link }}"
}
]
}
},
"id": "c4913f2c-aacb-4922-bfda-090d45f8ef87",
"name": "Supabase10",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
3920,
-180
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"content": "# Washington Post",
"height": 126.69426322803548,
"color": 5
},
"id": "88f0ed34-2190-4a3a-ac6b-03281360f57f",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
740,
-200
]
},
{
"parameters": {
"promptType": "define",
"text": "=Analyze the following article headline and content snippet. \n\nDetermin if it is AI related.\n\nout put single word as either true or false\n\ndo not output codeblocks or markdown, just the word true or false.\n\n<article_title>\n{{ $('Create RSS Item7').item.json.title }}\n</article_title>\n\n<article_snippet>\n{{ $('Create RSS Item7').item.json.content_snippet }}\n</article_snippet>",
"hasOutputParser": true
},
"id": "c006886f-aa7f-440e-bb3b-145b23f89450",
"name": "Is AI Related7",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
2400,
-140
]
},
{
"parameters": {
"promptType": "define",
"text": "=You are an AI assistant tasked with writing a news article based on an RSS title, content snippet, and reference material from a Google search. Follow these instructions carefully:\n\n1. You will be provided with an RSS title and content snippet from a news feed:\n\n ```\n <rss_title>\n {{ $('Supabase3').item.json.title }}\n </rss_title>\n\n <content_snippet>\n {{ $('Supabase3').item.json.content_snippet }}\n </content_snippet>\n ```\n\n2. You will also be given content from a Google search related to the headline:\n\n ```\n <google_search_content>\n{{ JSON.stringify($json.data.substring(0, 400000)) }}\n </google_search_content>\n ```\n\n3. Write an article that expands on the RSS headline and content snippet, using information from the Google search content. The article should be:\n - Informative\n - Engaging\n - Well-structured\n\n4. Format the article using Markdown. Use appropriate Markdown syntax for:\n - Headings (use ## for the main title, ### for subheadings)\n - Paragraphs (separate with blank lines)\n - Bold and italic text where appropriate\n - Bullet points or numbered lists if needed\n - Blockquotes for any direct quotes from sources\n\n5. Incorporate information from both the RSS headline/snippet and the Google search content:\n - Use the headline to guide the main topic\n - Use the search content to provide additional details and context\n\n6. Maintain a neutral, journalistic tone throughout the article:\n - Present facts objectively\n - Do not include personal opinions or biases\n - Use third-person perspective\n\n7. Structure your article with:\n - Begin with a TL;DR section. Provide quick bullet points that capture the highlights of the article.\n - A compelling introduction that summarizes the key points\n - A conclusion that wraps up the article and potentially suggests future implications\n\n8. If applicable, include:\n - Relevant statistics or data points\n - Brief mentions of key stakeholders or experts\n - Context on why this news is important or impactful\n\n9. Use Wikipedia-style citations in Markdown format:\n - In the text, use footnote-style references like [^1], [^2], etc.\n - Use footnotes sequentially without skipping any numbers\n - At the end of the article, include a ## References section\n - Format each reference as follows:\n [^1]: Author Name (if available) (Date). \"[Article Title](URL)\". Publication Name. Retrieved [Current Date].\n - If an author name is not available, start with the article title\n - Ensure all article titles are clickable links using Markdown syntax\n - Include ALL sources provided in the Google search content in the References section, even if not directly cited in the text\n\n10. Begin your response with <article> and end it with </article>. The entire article, including the Markdown formatting and references, should be contained within these tags.\n\n11. After the article, provide a brief metadata section with:\n - Main keywords or tags (do not include links in this section)\n\n12. Double-check your footnotes before completing the article:\n - Ensure all footnote numbers used in the text have corresponding entries in the References section\n - Verify that footnote numbers are sequential (1, 2, 3, etc.) without any gaps\n\nRemember to adhere to journalistic standards and ethics in your writing. Stick to the facts presented in the provided sources and avoid sensationalism."
},
"id": "947ad72b-ae1a-42b5-b95d-b6224266b432",
"name": "Write Article3",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
3300,
800
]
},
{
"parameters": {
"content": "# WSJ",
"height": 80,
"color": 5
},
"id": "2462e0a7-9353-4475-a72d-636cbd6013f1",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"typeVersion": 1,
"position": [
740,
300
]
},
{
"parameters": {
"url": "https://feeds.a.dj.com/rss/RSSWSJD.xml",
"options": {}
},
"id": "929c230b-64e3-4aa7-90d4-93efe1896c98",
"name": "HTTP Request6",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1040,
300
]
},
{
"parameters": {
"options": {}
},
"id": "0cb78450-1740-4990-a195-3a7fb5f36b68",
"name": "XML6",
"type": "n8n-nodes-base.xml",
"typeVersion": 1,
"position": [
1260,
300
]
},
{
"parameters": {
"fieldToSplitOut": "rss.channel.item",
"options": {}
},
"id": "1a3e047a-f10c-4131-a6b9-67bbeade641c",
"name": "Split Out6",
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1480,
300
]
},
{
"parameters": {
"options": {}
},
"id": "f2843d46-bd8e-4d03-886d-22ee6289f44c",
"name": "Loop Over Items",
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1720,
300
]
},
{
"parameters": {
"url": "=https://s.jina.ai/ {{ encodeURIComponent($json.title) }}",
"options": {}
},
"id": "87bae5cd-0247-4fa0-90e4-d6dd8a2fc827",
"name": "JinaAI Search",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3160,
340
]
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "6079624f-c65a-4a2b-94e5-87c6a72240f0",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
3360,
560
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "ai_articles",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "rss_feed_id",
"fieldValue": "={{ $('Supabase11').item.json.id }}"
},
{
"fieldId": "title",
"fieldValue": "={{ $('Supabase11').item.json.title }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $('Write Article').item.json.text }}"
}
]
}
},
"id": "aaac3a9d-2a6d-46c7-b347-b3da0e5c4b40",
"name": "Save Article",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
4080,
340
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"model": "gpt-4o-mini-2024-07-18",
"options": {}
},
"id": "1a5dcc98-6955-4732-8892-e56175f03e7b",
"name": "OpenAI Chat Model17",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1,
"position": [
2400,
600
],
"credentials": {
"openAiApi": {
"id": "",
"name": "OpenAi"
}
}
},
{
"parameters": {
"tableId": "rss_feed",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "title",
"fieldValue": "={{ $json.title }}"
},
{
"fieldId": "link",
"fieldValue": "={{ $json.link }}"
},
{
"fieldId": "pub_date",
"fieldValue": "={{ $json.pubDate }}"
},
{
"fieldId": "content",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "content_snippet",
"fieldValue": "={{ $json.description }}"
},
{
"fieldId": "img_url",
"fieldValue": "="
},
{
"fieldId": "source",
"fieldValue": "The Wall Street Journal"
},
{
"fieldId": "guid",
"fieldValue": "={{ $json.guid._ }}"
},
{
"fieldId": "img_url"
}
]
}
},
"id": "daaa556a-8d84-4e42-843f-afa0ea5acbfe",
"name": "Create RSS Item",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2000,
320
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.text }}",
"rightValue": "true",
"operator": {
"type": "string",
"operation": "contains"
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "3b5482b7-fb9b-4c80-99e8-e08c9ec6097a",
"name": "If - Is AI",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2700,
380
]
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict"
},
"conditions": [
{
"id": "8e8ff64b-e59c-415c-af8b-211d7a7d144c",
"leftValue": "={{ $json.error }}",
"rightValue": "",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"id": "aef6e1a2-73f5-4907-97f9-fa1a3a25be82",
"name": "If - Exists Already",
"type": "n8n-nodes-base.if",
"typeVersion": 2,
"position": [
2180,
320
]
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Create RSS Item').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "should_draft_article",
"fieldValue": "True"
}
]
}
},
"id": "7977b9f2-09da-4ccb-bcda-0d1f928cd3ef",
"name": "Supabase11",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
2960,
340
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"url": "https://www.googleapis.com/customsearch/v1",
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"sendQuery": true,
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Supabase11').item.json.title }} "
},
{
"name": "cx",
"value": "{{ String($('Globals1').item.json.google_search_cx).trim() }}"
},
{
"name": "searchType",
"value": "image"
},
{
"name": "num",
"value": "1"
}
]
},
"options": {}
},
"id": "aa933864-42f6-445a-9e40-fabacfa4adc6",
"name": "Get Image4",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
3720,
340
],
"credentials": {
"httpQueryAuth": {
"id": "",
"name": "Google Search Key"
}
}
},
{
"parameters": {
"operation": "update",
"tableId": "rss_feed",
"filters": {
"conditions": [
{
"keyName": "id",
"condition": "eq",
"keyValue": "={{ $('Supabase11').item.json.id }}"
}
]
},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "img_url",
"fieldValue": "={{ $json.items[0].link }}"
}
]
}
},
"id": "f57de610-5993-4f60-b8c8-458f1516aee3",
"name": "Supabase12",
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
3900,
340
],
"credentials": {
"supabaseApi": {
"id": "",
"name": "Supabase"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=Analyze the following article headline and content snippet. \n\nDetermin if it is AI related.\n\nout put single word as either true or false\n\ndo not output codeblocks or markdown, just the word true or false.\n\n<article_title>\n{{ $('Create RSS Item').item.json.title }}\n</article_title>\n\n<article_snippet>\n{{ $('Create RSS Item').item.json.content_snippet }}\n</article_snippet>",
"hasOutputParser": true
},
"id": "6735df27-f00d-4cac-b8f2-a4ccc7e42350",
"name": "Is AI Related",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
2380,
380
]
},
{
"parameters": {
"promptType": "define",
"text": "=You are an AI assistant tasked with writing a news article based on an RSS title, content snippet, and reference material from a Google search. Follow these instructions carefully:\n\n1. You will be provided with an RSS title and content snippet from a news feed:\n\n ```\n <rss_title>\n {{ $('Supabase9').item.json.title }}\n </rss_title>\n\n <context_snippet>\n {{ $('Supabase9').item.json.content_snippet }}\n </context_snippet>\n ```\n\n2. You will also be given content from a Google search related to the headline:\n\n ```\n <google_search_content>\n{{ JSON.stringify($json.data.substring(0, 300000)) }}\n </google_search_content>\n ```\n\n3. Write an article that expands on the RSS headline and content snippet, using information from the Google search content. The article should be:\n - Anchored on the Title and Context Snippet\n - Informative\n - Engaging\n - Well-structured\n\n4. Format the article using Markdown. Use appropriate Markdown syntax for:\n - Headings (use ## for the main title, ### for subheadings)\n - Paragraphs (separate with blank lines)\n - Bold and italic text where appropriate\n - Bullet points or numbered lists if needed\n - Blockquotes for any direct quotes from sources\n\n5. Incorporate information from both the RSS headline/snippet and the Google search content:\n - Use the headline to guide the main topic\n - Use the search content to provide additional details and context\n\n6. Maintain a neutral, journalistic tone throughout the article:\n - Present facts objectively\n - Do not include personal opinions or biases\n - Use third-person perspective\n\n7. Structure your article with:\n - Begin with a TL;DR section. Provide quick bullet points that capture the highlights of the article.\n - A compelling introduction that summarizes the key points\n - A conclusion that wraps up the article and potentially suggests future implications\n\n8. If applicable, include:\n - Relevant statistics or data points\n - Brief mentions of key stakeholders or experts\n - Context on why this news is important or impactful\n\n9. Use Wikipedia-style citations in Markdown format:\n - In the text, use footnote-style references like [^1], [^2], etc.\n - Use footnotes sequentially without skipping any numbers\n - At the end of the article, include a ## References section\n - Format each reference as follows:\n [^1]: Author Name (if available) (Date). \"[Article Title](URL)\". Publication Name. Retrieved [Current Date].\n - If an author name is not available, start with the article title\n - Ensure all article titles are clickable links using Markdown syntax\n - Include ALL sources provided in the Google search content in the References section, even if not directly cited in the text\n\n10. Begin your response with <article> and end it with </article>. The entire article, including the Markdown formatting and references, should be contained within these tags.\n\n11. After the article, provide a brief metadata section with:\n - Main keywords or tags (do not include links in this section)\n\n12. Double-check your footnotes before completing the article:\n - Ensure all footnote numbers used in the text have corresponding entries in the References section\n - Verify that footnote numbers are sequential (1, 2, 3, etc.) without any gaps\n\nRemember to adhere to journalistic standards and ethics in your writing. Stick to the facts presented in the provided sources and avoid sensationalism."
},
"id": "e5cabf00-0a9c-475a-ac0f-7f7085972ce2",
"name": "Write Article8",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
3380,
-180
]
},
{
"parameters": {
"promptType": "define",
"text": "=You are an AI assistant tasked with writing a news article based on an RSS title, context snippet, and reference material from a Google search. Follow these instructions carefully:\n\n1. You will be provided with an RSS title and content snippet from a news feed:\n\n ```\n <rss_title>\n {{ $('Supabase11').item.json.title }}\n </rss_title>\n\n <context_snippet>\n {{ $('Supabase11').item.json.content_snippet }}\n </context_snippet>\n ```\n\n2. You will also be given content from a Google search related to the headline:\n\n ```\n <google_search_content>\n{{ JSON.stringify($json.data.substring(0, 300000)) }}\n </google_search_content>\n ```\n\n3. Write an article that expands on the RSS headline and content snippet, using information from the Google search content. The article should be:\n - Anchored on the Title and Context Snippet\n - Informative\n - Engaging\n - Well-structured\n\n4. Format the article using Markdown. Use appropriate Markdown syntax for:\n - Headings (use ## for the main title, ### for subheadings)\n - Paragraphs (separate with blank lines)\n - Bold and italic text where appropriate\n - Bullet points or numbered lists if needed\n - Blockquotes for any direct quotes from sources\n\n5. Incorporate information from both the RSS headline/snippet and the Google search content:\n - Use the headline to guide the main topic\n - Use the search content to provide additional details and context\n\n6. Maintain a neutral, journalistic tone throughout the article:\n - Present facts objectively\n - Do not include personal opinions or biases\n - Use third-person perspective\n\n7. Structure your article with:\n - Begin with a TL;DR section. Provide quick bullet points that capture the highlights of the article.\n - A compelling introduction that summarizes the key points\n - A conclusion that wraps up the article and potentially suggests future implications\n\n8. If applicable, include:\n - Relevant statistics or data points\n - Brief mentions of key stakeholders or experts\n - Context on why this news is important or impactful\n\n9. Use Wikipedia-style citations in Markdown format:\n - In the text, use footnote-style references like [^1], [^2], etc.\n - Use footnotes sequentially without skipping any numbers\n - At the end of the article, include a ## References section\n - Format each reference as follows:\n [^1]: Author Name (if available) (Date). \"[Article Title](URL)\". Publication Name. Retrieved [Current Date].\n - If an author name is not available, start with the article title\n - Ensure all article titles are clickable links using Markdown syntax\n - Include ALL sources provided in the Google search content in the References section, even if not directly cited in the text\n\n10. Begin your response with <article> and end it with </article>. The entire article, including the Markdown formatting and references, should be contained within these tags.\n\n11. After the article, provide a brief metadata section with:\n - Main keywords or tags (do not include links in this section)\n\n12. Double-check your footnotes before completing the article:\n - Ensure all footnote numbers used in the text have corresponding entries in the References section\n - Verify that footnote numbers are sequential (1, 2, 3, etc.) without any gaps\n\nRemember to adhere to journalistic standards and ethics in your writing. Stick to the facts presented in the provided sources and avoid sensationalism."
},
"id": "dcda847d-aeac-4fef-8e88-5704506af2ce",
"name": "Write Article",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.4,
"position": [
3360,
340
]
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "62266f8c-0f97-494a-adb6-4b5c082cc1c1",
"name": "google_search_cx",
"value": "",
"type": "string"
}
]
},
"options": {}
},
"id": "2b0fe2a4-36ee-4a38-9642-269e9cf8b283",
"name": "Globals1",
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
500,
-320
]
}
],
"connections": {
"HTTP Request1": {
"main": [
[
{
"node": "XML1",
"type": "main",
"index": 0
}
]
]
},
"XML1": {
"main": [
[
{
"node": "Split Out1",
"type": "main",
"index": 0
}
]
]
},
"Split Out1": {
"main": [
[
{
"node": "Loop Over Items2",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items2": {
"main": [
null,
[
{
"node": "Create RSS Item2",
"type": "main",
"index": 0
}
]
]
},
"JinaAI Search3": {
"main": [
[
{
"node": "Write Article3",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model5": {
"ai_languageModel": [
[
{
"node": "Write Article3",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save Article3": {
"main": [
[
{
"node": "Loop Over Items2",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model6": {
"ai_languageModel": [
[
{
"node": "Is AI Related2",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create RSS Item2": {
"main": [
[
{
"node": "If - Exists Already2",
"type": "main",
"index": 0
}
]
]
},
"If - Is AI2": {
"main": [
[
{
"node": "Supabase3",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items2",
"type": "main",
"index": 0
}
]
]
},
"If - Exists Already2": {
"main": [
[
{
"node": "Loop Over Items2",
"type": "main",
"index": 0
}
],
[
{
"node": "Is AI Related2",
"type": "main",
"index": 0
}
]
]
},
"Supabase3": {
"main": [
[
{
"node": "JinaAI Search3",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Globals1",
"type": "main",
"index": 0
}
]
]
},
"Is AI Related2": {
"main": [
[
{
"node": "If - Is AI2",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "XML",
"type": "main",
"index": 0
}
]
]
},
"XML": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Loop Over Items3",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items3": {
"main": [
null,
[
{
"node": "Extract Img and Description",
"type": "main",
"index": 0
}
]
]
},
"JinaAI Search4": {
"main": [
[
{
"node": "Write Article4",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model7": {
"ai_languageModel": [
[
{
"node": "Write Article4",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save Article4": {
"main": [
[
{
"node": "Loop Over Items3",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model8": {
"ai_languageModel": [
[
{
"node": "Is AI Related3",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create RSS Item3": {
"main": [
[
{
"node": "If - Exists Already3",
"type": "main",
"index": 0
}
]
]
},
"If - Is AI3": {
"main": [
[
{
"node": "Supabase4",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items3",
"type": "main",
"index": 0
}
]
]
},
"If - Exists Already3": {
"main": [
[
{
"node": "Loop Over Items3",
"type": "main",
"index": 0
}
],
[
{
"node": "Is AI Related3",
"type": "main",
"index": 0
}
]
]
},
"Supabase4": {
"main": [
[
{
"node": "JinaAI Search4",
"type": "main",
"index": 0
}
]
]
},
"Is AI Related3": {
"main": [
[
{
"node": "If - Is AI3",
"type": "main",
"index": 0
}
]
]
},
"Extract Img and Description": {
"main": [
[
{
"node": "Create RSS Item3",
"type": "main",
"index": 0
}
]
]
},
"Write Article4": {
"main": [
[
{
"node": "Save Article4",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request2": {
"main": [
[
{
"node": "XML2",
"type": "main",
"index": 0
}
]
]
},
"XML2": {
"main": [
[
{
"node": "Split Out2",
"type": "main",
"index": 0
}
]
]
},
"Split Out2": {
"main": [
[
{
"node": "Loop Over Items4",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items4": {
"main": [
null,
[
{
"node": "Create RSS Item4",
"type": "main",
"index": 0
}
]
]
},
"JinaAI Search5": {
"main": [
[
{
"node": "Write Article5",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model9": {
"ai_languageModel": [
[
{
"node": "Write Article5",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"OpenAI Chat Model10": {
"ai_languageModel": [
[
{
"node": "Is AI Related4",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create RSS Item4": {
"main": [
[
{
"node": "If - Exists Already4",
"type": "main",
"index": 0
}
]
]
},
"If - Is AI4": {
"main": [
[
{
"node": "Supabase5",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items4",
"type": "main",
"index": 0
}
]
]
},
"If - Exists Already4": {
"main": [
[
{
"node": "Loop Over Items4",
"type": "main",
"index": 0
}
],
[
{
"node": "Is AI Related4",
"type": "main",
"index": 0
}
]
]
},
"Supabase5": {
"main": [
[
{
"node": "JinaAI Search5",
"type": "main",
"index": 0
}
]
]
},
"Is AI Related4": {
"main": [
[
{
"node": "If - Is AI4",
"type": "main",
"index": 0
}
]
]
},
"Write Article5": {
"main": [
[
{
"node": "Get Image",
"type": "main",
"index": 0
}
]
]
},
"Save Article5": {
"main": [
[
{
"node": "Loop Over Items4",
"type": "main",
"index": 0
}
]
]
},
"Get Image": {
"main": [
[
{
"node": "Supabase6",
"type": "main",
"index": 0
}
]
]
},
"Supabase6": {
"main": [
[
{
"node": "Save Article5",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request5": {
"main": [
[
{
"node": "XML5",
"type": "main",
"index": 0
}
]
]
},
"XML5": {
"main": [
[
{
"node": "Split Out5",
"type": "main",
"index": 0
}
]
]
},
"Split Out5": {
"main": [
[
{
"node": "Loop Over Items7",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items7": {
"main": [
null,
[
{
"node": "Create RSS Item7",
"type": "main",
"index": 0
}
]
]
},
"JinaAI Search8": {
"main": [
[
{
"node": "Write Article8",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model15": {
"ai_languageModel": [
[
{
"node": "Write Article8",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save Article8": {
"main": [
[
{
"node": "Loop Over Items7",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model16": {
"ai_languageModel": [
[
{
"node": "Is AI Related7",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create RSS Item7": {
"main": [
[
{
"node": "If - Exists Already7",
"type": "main",
"index": 0
}
]
]
},
"If - Is AI7": {
"main": [
[
{
"node": "Supabase9",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items7",
"type": "main",
"index": 0
}
]
]
},
"If - Exists Already7": {
"main": [
[
{
"node": "Loop Over Items7",
"type": "main",
"index": 0
}
],
[
{
"node": "Is AI Related7",
"type": "main",
"index": 0
}
]
]
},
"Supabase9": {
"main": [
[
{
"node": "JinaAI Search8",
"type": "main",
"index": 0
}
]
]
},
"Get Image3": {
"main": [
[
{
"node": "Supabase10",
"type": "main",
"index": 0
}
]
]
},
"Supabase10": {
"main": [
[
{
"node": "Save Article8",
"type": "main",
"index": 0
}
]
]
},
"Is AI Related7": {
"main": [
[
{
"node": "If - Is AI7",
"type": "main",
"index": 0
}
]
]
},
"Write Article3": {
"main": [
[
{
"node": "Save Article3",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request6": {
"main": [
[
{
"node": "XML6",
"type": "main",
"index": 0
}
]
]
},
"XML6": {
"main": [
[
{
"node": "Split Out6",
"type": "main",
"index": 0
}
]
]
},
"Split Out6": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
null,
[
{
"node": "Create RSS Item",
"type": "main",
"index": 0
}
]
]
},
"JinaAI Search": {
"main": [
[
{
"node": "Write Article",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Write Article",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Save Article": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model17": {
"ai_languageModel": [
[
{
"node": "Is AI Related",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Create RSS Item": {
"main": [
[
{
"node": "If - Exists Already",
"type": "main",
"index": 0
}
]
]
},
"If - Is AI": {
"main": [
[
{
"node": "Supabase11",
"type": "main",
"index": 0
},
{
"node": "JinaAI Search",
"type": "main",
"index": 0
}
],
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"If - Exists Already": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
],
[
{
"node": "Is AI Related",
"type": "main",
"index": 0
}
]
]
},
"Supabase11": {
"main": [
[
{
"node": "JinaAI Search",
"type": "main",
"index": 0
}
]
]
},
"Get Image4": {
"main": [
[
{
"node": "Supabase12",
"type": "main",
"index": 0
}
]
]
},
"Supabase12": {
"main": [
[
{
"node": "Save Article",
"type": "main",
"index": 0
}
]
]
},
"Is AI Related": {
"main": [
[
{
"node": "If - Is AI",
"type": "main",
"index": 0
}
]
]
},
"Write Article8": {
"main": [
[
{
"node": "Get Image3",
"type": "main",
"index": 0
}
]
]
},
"Write Article": {
"main": [
[
{
"node": "Get Image4",
"type": "main",
"index": 0
}
]
]
},
"Globals1": {
"main": [
[
{
"node": "HTTP Request5",
"type": "main",
"index": 0
},
{
"node": "HTTP Request6",
"type": "main",
"index": 0
},
{
"node": "HTTP Request1",
"type": "main",
"index": 0
},
{
"node": "HTTP Request",
"type": "main",
"index": 0
},
{
"node": "HTTP Request2",
"type": "main",
"index": 0
}
]
]
}
},
"pinData": {}
}

--

--