About Us

Get insights into Serve Vision’s mission, vision, and expert team delivering exceptional digital solutions today.

Unveiling Serve Vision’s True Purpose

Serve Vision exists to empower businesses with innovative digital solutions that drive measurable growth. 

By combining expert strategies in SEO, web development, AI automation, and digital marketing, we help brands enhance online visibility, attract targeted audiences, and achieve long-term success. 

Our mission is to bridge the gap between technology and business goals, delivering results that matter. With a skilled team, data-driven insights, and a focus on innovation, Serve Vision transforms ideas into actionable strategies, enabling businesses to thrive in today’s competitive digital landscape.

Our Promise To Transform Ideas Into Results

Optimizing e-commerce and Amazon strategies to maximize sales and customer engagement.

Crafting flawless web development solutions that ensure performance, speed, and scalability.

Driving visibility and growth for businesses in targeted geographic markets effectively.

Leveraging AI tools to streamline processes and boost operational efficiency reliably.

Implementing SEO strategies that enhance rankings, traffic, and organic growth consistently.

Continuously exploring new technologies and methods to deliver cutting-edge digital solutions.

Experts Behind Serve Vision

Navneet Kumar

Director

Tejas Goel

CEO

Mohit Kamboj

Team Manager

Aman Khokhar

Web Designer

Shubham Kumar

AI & Data Science Expert

Sunita Mahata

Outreach & SEO Expert

{ "name": "Custom Chatbot Designed for Your Business Needs", "nodes": [ { "parameters": { "formTitle": "Upload your data to test RAG", "formFields": { "values": [ { "fieldLabel": "Upload your file(s)", "fieldType": "file", "acceptFileTypes": ".pdf, .csv", "requiredField": true } ] }, "options": {} }, "type": "n8n-nodes-base.formTrigger", "typeVersion": 2.2, "position": [ -128, 0 ], "id": "f7a656ec-83fc-4ed2-a089-57a9def662b7", "name": "Upload your file here", "webhookId": "82848bc4-5ea2-4e5a-8bb6-3c09b94a8c5d" }, { "parameters": { "dataType": "binary", "options": {} }, "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader", "typeVersion": 1.1, "position": [ 320, 160 ], "id": "94aecac0-03f9-4915-932b-d14a2576607b", "name": "Default Data Loader" }, { "parameters": { "content": "### Readme\nLoad your data into a vector database with the 📚 **Load Data** flow, and then use your data as chat context with the 🐕 **Retriever** flow.\n\n**Quick start**\n1. Click on the `Execute Workflow` button to run the 📚 **Load Data** flow.\n2. Click on `Open Chat` button to run the 🐕 **Retriever** flow. Then ask a question about content from your document(s)\n\n\nFor more info, check [our docs on RAG in n8n](https://docs.n8n.io/advanced-ai/rag-in-n8n/).", "height": 300, "width": 440, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "position": [ -656, -64 ], "typeVersion": 1, "id": "0d07742b-0b36-4c2e-990c-266cbe6e2d4d", "name": "Sticky Note" }, { "parameters": { "content": "### 📚 Load Data Flow", "height": 460, "width": 700, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "position": [ -176, -64 ], "typeVersion": 1, "id": "d19d04f3-5231-4e47-bed7-9f24a4a8f582", "name": "Sticky Note1" }, { "parameters": { "mode": "insert", "memoryKey": { "__rl": true, "value": "vector_store_key", "mode": "list", "cachedResultName": "vector_store_key" } }, "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", "typeVersion": 1.2, "position": [ 64, -16 ], "id": "bf50a11f-ca6a-4e04-a6d2-42fee272b260", "name": "Insert Data to Store" }, { "parameters": { "mode": "retrieve-as-tool", "toolName": "knowledge_base", "toolDescription": "Use this knowledge base to answer questions from the user", "memoryKey": { "__rl": true, "mode": "list", "value": "vector_store_key" } }, "type": "@n8n/n8n-nodes-langchain.vectorStoreInMemory", "typeVersion": 1.2, "position": [ 1008, 224 ], "id": "09c0db62-5413-440e-8c13-fb6bb66d9b6a", "name": "Query Data Tool" }, { "parameters": { "options": { "systemMessage": "=You are an intelligent assistant that helps users manage and query their daily expenses through two primary tools:\n\n**AVAILABLE TOOLS:**\n1. **RAG System** - For general knowledge questions and expense-related advice\n2. **Daily Expense Google Sheet** - For specific expense data queries\n\n**GOOGLE SHEET STRUCTURE:**\n- **Timestamp**: Date and time of expense entry\n- **Email address**: User's email identifier\n- **Amount**: Expense amount\n- **Description**: What the expense was for\n- **Month**: Month of the expense\n\n**QUERY PROCESSING LOGIC:**\n\n**USE RAG SYSTEM WHEN:**\n- User asks general financial advice\n- Questions about budgeting tips\n- Expense categorization best practices\n- General knowledge questions unrelated to specific expense data\n- \"How to\" questions about expense management\n\n**USE GOOGLE SHEET WHEN:**\n- User queries about specific expense records\n- Requests for spending totals or summaries\n- Filtering expenses by time period, amount, or description\n- Analysis of spending patterns\n- Specific data retrieval requests\n\n**EXPENSE QUERY EXAMPLES AND RESPONSES:**\n\n**For Total Calculations:**\n- \"What were my total expenses in January?\" → Sum Amount where Month = \"January\"\n- \"How much did I spend on food last month?\" → Sum Amount where Description contains \"food\" and Month = [previous month]\n\n**For Specific Records:**\n- \"Show me all expenses over $100\" → Filter records where Amount > 100\n- \"What did I spend on December 15th?\" → Filter by Timestamp date\n\n**For Monthly Analysis:**\n- \"Compare my spending between January and February\" → Group by Month, sum Amount\n- \"Which month had the highest expenses?\" → Group by Month, find max total\n\n**RESPONSE GUIDELINES:**\n1. **Be specific** about the time period and criteria used\n2. **Format numbers** clearly (e.g., $150.50)\n3. **Provide context** - if showing partial data, mention the scope\n4. **Suggest insights** - point out patterns or trends when relevant\n5. **Offer next steps** - suggest related queries the user might find useful\n\n**ERROR HANDLING:**\n- If data isn't found, suggest alternative timeframes or criteria\n- If query is ambiguous, ask clarifying questions\n- If technical issues occur, explain simply and suggest retrying\n\n**TONE AND STYLE:**\n- Professional but friendly\n- Data-driven and accurate\n- Helpful and proactive in offering additional insights\n\nAlways determine which tool is appropriate based on whether the user needs specific data from their expense records or general knowledge/advice.\n\n\nNow Date and Time: {{ $now.setZone(\"Asia/Kolkata\").toFormat(\"dd-MMM-yyyy HH:mm:ss\") }}" } }, "type": "@n8n/n8n-nodes-langchain.agent", "typeVersion": 2, "position": [ 944, -16 ], "id": "579aed76-9644-42d1-ac13-7369059ff1c2", "name": "AI Agent" }, { "parameters": { "options": {} }, "type": "@n8n/n8n-nodes-langchain.chatTrigger", "typeVersion": 1.1, "position": [ 720, -16 ], "id": "9c30de61-935a-471f-ae88-ec5f67beeefc", "name": "When chat message received", "webhookId": "4091fa09-fb9a-4039-9411-7104d213f601" }, { "parameters": { "content": "### 🐕 2. Retriever Flow", "height": 460, "width": 680, "color": 7 }, "type": "n8n-nodes-base.stickyNote", "position": [ 608, -64 ], "typeVersion": 1, "id": "28bc73a1-e64a-47bf-ac1c-ffe644894ea5", "name": "Sticky Note2" }, { "parameters": { "content": "### Embeddings\n\nThe Insert and Retrieve operation use the same embedding node.\n\nThis is to ensure that they are using the **exact same embeddings and settings**.\n\nDifferent embeddings might not work at all, or have unintended consequences.\n", "height": 240, "width": 320, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "position": [ 672, 448 ], "typeVersion": 1, "id": "0cf8c647-418c-4d1a-8952-766145afca72", "name": "Sticky Note3" }, { "parameters": {}, "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini", "typeVersion": 1, "position": [ 528, 448 ], "id": "48c33670-e565-452c-9fd5-802966e37e72", "name": "Embeddings Google Gemini", "credentials": { "googlePalmApi": { "id": "wSEQ0R08soazpR6k", "name": "Joydeep Gemeni APi" } } }, { "parameters": { "options": {} }, "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini", "typeVersion": 1, "position": [ 768, 192 ], "id": "fd44f4b5-d046-414c-ab82-afd100632859", "name": "Google Gemini Chat Model", "credentials": { "googlePalmApi": { "id": "wSEQ0R08soazpR6k", "name": "Joydeep Gemeni APi" } } }, { "parameters": { "authentication": "serviceAccount", "documentId": { "__rl": true, "value": "1vWze14yL2qD8yvj7cHV1n9FxifcEhoQiGQ1mm3sZeQ0", "mode": "list", "cachedResultName": "SV cash Expense", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vWze14yL2qD8yvj7cHV1n9FxifcEhoQiGQ1mm3sZeQ0/edit?usp=drivesdk" }, "sheetName": { "__rl": true, "value": 1296457484, "mode": "list", "cachedResultName": "Expense Form", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1vWze14yL2qD8yvj7cHV1n9FxifcEhoQiGQ1mm3sZeQ0/edit#gid=1296457484" }, "combineFilters": "OR", "options": {} }, "type": "n8n-nodes-base.googleSheetsTool", "typeVersion": 4.7, "position": [ 1344, 224 ], "id": "dd684fa0-0777-4ca6-a97e-952dd60d4c28", "name": "Daily Expense", "credentials": { "googleApi": { "id": "gLgJ7G0Yvh27paYT", "name": "Data-analyst Google Service Account account" } } } ], "pinData": {}, "connections": { "Upload your file here": { "main": [ [ { "node": "Insert Data to Store", "type": "main", "index": 0 } ] ] }, "Default Data Loader": { "ai_document": [ [ { "node": "Insert Data to Store", "type": "ai_document", "index": 0 } ] ] }, "Query Data Tool": { "ai_tool": [ [ { "node": "AI Agent", "type": "ai_tool", "index": 0 } ] ] }, "When chat message received": { "main": [ [ { "node": "AI Agent", "type": "main", "index": 0 } ] ] }, "Embeddings Google Gemini": { "ai_embedding": [ [ { "node": "Query Data Tool", "type": "ai_embedding", "index": 0 }, { "node": "Insert Data to Store", "type": "ai_embedding", "index": 0 } ] ] }, "Google Gemini Chat Model": { "ai_languageModel": [ [ { "node": "AI Agent", "type": "ai_languageModel", "index": 0 } ] ] }, "Daily Expense": { "ai_tool": [ [ { "node": "AI Agent", "type": "ai_tool", "index": 0 } ] ] } }, "active": false, "settings": { "executionOrder": "v1" }, "versionId": "8fe6a330-c2fe-44bd-8dc3-5c0f08445f54", "meta": { "templateId": "rag-starter-template", "templateCredsSetupCompleted": true, "instanceId": "1f1785d995b3fa32ab6b8219168659331dbe1459fee9ca0c94987e0285ae2676" }, "id": "XMzrW1DpKCxRdodE", "tags": [] }
{ "name": "Keyword-Based Article Generation via Google Sheets", "nodes": [ { "parameters": { "options": {} }, "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ -736, 384 ], "id": "019cddd8-29dd-46d1-9269-696ec3cef37a", "name": "Loop Over Items" }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "loose", "version": 2 }, "conditions": [ { "id": "3f3244e8-d845-48b1-8355-07295725cb85", "leftValue": "={{ $json.data }}", "rightValue": "", "operator": { "type": "string", "operation": "exists", "singleValue": true } } ], "combinator": "and" }, "looseTypeValidation": true, "options": {} }, "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ -64, 144 ], "id": "8ba87150-8d5d-4684-b91d-161e7e7d730a", "name": "If", "alwaysOutputData": false }, { "parameters": { "documentId": { "__rl": true, "value": "1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw", "mode": "list", "cachedResultName": "n8n Newspress Article Workflow", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit?usp=drivesdk" }, "sheetName": { "__rl": true, "value": 2027275420, "mode": "list", "cachedResultName": "Cheapnail", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit#gid=2027275420" }, "filtersUI": { "values": [ { "lookupColumn": "Flow Status", "lookupValue": "New" } ] }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": [ -960, 384 ], "id": "7650e708-bb75-4472-88b2-5bf6384f2369", "name": "Get New Articles", "credentials": { "googleSheetsOAuth2Api": { "id": "Br9lRn5gAnnRLFmy", "name": "Google Sheets account 2" } } }, { "parameters": { "operation": "update", "documentId": { "__rl": true, "value": "1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw", "mode": "list", "cachedResultName": "n8n Newspress Article Workflow", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit?usp=drivesdk" }, "sheetName": { "__rl": true, "value": 2027275420, "mode": "list", "cachedResultName": "Cheapnail", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit#gid=2027275420" }, "columns": { "mappingMode": "defineBelow", "value": { "Topic": "={{ $json.Topic }}", "Source": "={{ $json.Source }}", "Publish Status": "Processing", "Flow Timing": "={{ $now.setZone(\"Asia/Kolkata\").toFormat(\"dd-MMM-yyyy HH:mm:ss\") }}", "row_number": "={{ $json.row_number }}" }, "matchingColumns": [ "row_number" ], "schema": [ { "id": "Topic", "displayName": "Topic", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Source", "displayName": "Source", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Publish Status", "displayName": "Publish Status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Publish Link", "displayName": "Publish Link", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Flow Status", "displayName": "Flow Status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Flow Timing", "displayName": "Flow Timing", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Run Flow", "displayName": "Run Flow", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "row_number", "displayName": "row_number", "required": false, "defaultMatch": false, "display": true, "type": "number", "canBeUsedToMatch": true, "readOnly": true, "removed": false } ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": [ -512, 144 ], "id": "dfa0ca22-4b60-4215-9f82-5fc0bc0d125d", "name": "Update Processing", "credentials": { "googleSheetsOAuth2Api": { "id": "Br9lRn5gAnnRLFmy", "name": "Google Sheets account 2" } } }, { "parameters": { "url": "={{ $json.Source }}", "options": { "timeout": 10000 } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ -288, 144 ], "id": "ba43343e-ac56-4cdb-9877-c3f23458df0f", "name": "Fetch HTML", "onError": "continueRegularOutput" }, { "parameters": { "operation": "update", "documentId": { "__rl": true, "value": "1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw", "mode": "list", "cachedResultName": "n8n Newspress Article Workflow", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit?usp=drivesdk" }, "sheetName": { "__rl": true, "value": 2027275420, "mode": "list", "cachedResultName": "Cheapnail", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit#gid=2027275420" }, "columns": { "mappingMode": "defineBelow", "value": { "Flow Status": "Error", "Publish Status": "Not Processed Because of an Error", "Publish Link": "={{ $('Fetch HTML').item.json.error.status }}", "row_number": "={{ $('Update Processing').item.json.row_number }}" }, "matchingColumns": [ "row_number" ], "schema": [ { "id": "Topic", "displayName": "Topic", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Source", "displayName": "Source", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Publish Status", "displayName": "Publish Status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Publish Link", "displayName": "Publish Link", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Flow Status", "displayName": "Flow Status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Flow Timing", "displayName": "Flow Timing", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Run Flow", "displayName": "Run Flow", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "row_number", "displayName": "row_number", "required": false, "defaultMatch": false, "display": true, "type": "number", "canBeUsedToMatch": true, "readOnly": true, "removed": false } ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": [ 224, 240 ], "id": "d4d5aceb-8065-415a-8bfe-7a9cb5df8bcd", "name": "Update Error", "credentials": { "googleSheetsOAuth2Api": { "id": "Br9lRn5gAnnRLFmy", "name": "Google Sheets account 2" } } }, { "parameters": { "content": "## 🤖 These Two AI Brother is creating the Article ✌\n- Article Summarizer\n- Article Creator", "height": 224, "width": 640, "color": 6 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 128, -64 ], "id": "69aff7d4-a5d8-4bc7-93a6-a66ca684528b", "name": "Sticky Note" }, { "parameters": { "modelId": { "__rl": true, "value": "gpt-4.1-mini", "mode": "list", "cachedResultName": "GPT-4.1-MINI" }, "messages": { "values": [ { "content": "=Generate a news article about the given Source Data\nThe article should follow this format and structure:\n- **Headline:** Create an SEO-optimized headline that includes the keywords from the topic title.\n- **Location Line:** Immediately after the headline, include a **location line** (e.g., **\"San Francisco, CA –\"**) and **bold the location**.\n- **Introduction:** Write a strong, engaging introduction summarizing the key point of the article in one to two paragraphs. Make sure it captures the reader's attention.\n- **Main Headings Based on Content:**\n - Instead of predefined subheadings, **generate the main headings** based on the **content of the article**. For example:\n 1. If the article is about a **discovery**, the main heading might be something like: **\"The Unexpected Discovery\"** or **\"How the Discovery Was Made\"**.\n 2. If the article focuses on **reactions**, the main heading could be: **\"Community Reactions and Expert Opinions\"** or **\"Public and Expert Responses\"**.\n 3. For articles related to **future implications** or **next steps**, the heading could be: **\"What Happens Next?\"** or **\"Implications for the Future\"**.\n - The key here is that the main headings should be **created based on the content** in the body, rather than following a rigid structure.\n- **Body Content:**\n - The body of the article should flow logically, based on the content collected from the source. Each section should expand on the corresponding headings.\n - Ensure each section is fact-based, concise, well-researched, and provides relevant information. Use the extracted expert quotes where appropriate.\n- **Bold Key Points:** Make sure to bold any important names, figures, dates, or key terms that require emphasis. Additionally, bold around 15% of the most important words in the article to highlight the key information and ensure clarity.\n- **Bullet Points:** Use bullet points to highlight key facts, data, trends, or recommendations within the article. Bullet points should break down complex information into digestible chunks.\n- **Blockquotes:** Include blockquotes for any expert opinions, quotes, or statements that should be emphasized.\n- **Source Integration:** Integrate the provided **source link** **only once** within the article body. It should be referenced naturally, in a relevant section like background information, expert quotes, or statistics.\n- **Customized Call-to-Action (CTA):** At the end of the article, include a **customized CTA** based on the article's content. For example, if the article is about a discovery, the CTA could be:\n - **\"What do you think about this discovery? Have you ever visited Crater of Diamonds State Park? Share your thoughts in the comments below!\"**\n- **SEO Optimization:** Ensure the article includes relevant keywords naturally throughout the text, in headings and body content, to avoid keyword stuffing while making sure the text flows naturally.", "role": "system" }, { "content": "**Output Format:**\n\n```json\n{\n \"title\": \"the original title here\",\n \"content\": \"the fully written HTML article here\"\n}\n```", "role": "system" }, { "content": "=Source Data :{{ $json.message.content }}\nsource link: {{ $('Loop Over Items').item.json.Source }}" } ] }, "jsonOutput": true, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 512, 48 ], "id": "175955b0-d9ba-4c52-96ae-9c02763a6cd5", "name": "Article Creator", "credentials": { "openAiApi": { "id": "jNGTDQUn7rhCJPBy", "name": "OpenAi account 2" } } }, { "parameters": { "modelId": { "__rl": true, "value": "gpt-4.1-mini", "mode": "list", "cachedResultName": "GPT-4.1-MINI" }, "messages": { "values": [ { "content": "=You are a data extraction AI tasked with processing HTML content. Your goal is to identify and extract the title and the main text content from the provided HTML document. Follow these specific instructions:\n\n1. **Input Format:** You will receive a well-formed HTML document as input.\n2. **Output Format:** Your output should be in Markdown format.\n3. **Content Extraction:**\n - Extract the title of the article from the `` tag or the main heading tag (e.g., `<h1>`).\n - Extract the main body of the article excluding any images, external links, or other media. Focus solely on the text content.\n4. **Markdown Guidelines:**\n - The title should be formatted as a top-level heading (using `#`).\n - The main body text should follow the title in plain Markdown format, preserving paragraphs, lists, and any other textual formatting present in the HTML.\n5. **Restrictions:**\n - Do not include any images, external links, or HTML tags in your output.\n - Ensure that the extracted text is coherent and maintains the context of the original content.\n\nExample Input:\n```html\n<html>\n<head>\n<title>Sample Article Title\n\n\n

Sample Article Title

\n

This is the first paragraph of the article.

\n

This is the second paragraph with an external link.

\n\"Sample\n\n\n```\n\nExpected Output:\n```\n# Sample Article Title\n\nThis is the first paragraph of the article with information.\n\nThis is the second paragraph of the article with information.\n```\n\nProcess the provided HTML input according to these instructions and generate the desired Markdown output.", "role": "system" }, { "content": "=The HTML is provided as follows:\n{{ $('Fetch HTML').item.json.data }}\n\n\nPlease process the HTML and return the Markdown formatted output." } ] }, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 160, 48 ], "id": "e7b6c39b-1b55-41c6-9626-6c18da2253fb", "name": "Article Summarizer", "credentials": { "openAiApi": { "id": "jNGTDQUn7rhCJPBy", "name": "OpenAi account 2" } } }, { "parameters": { "content": "## 🕸 Fetch the article information from web", "height": 240, "width": 640 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -560, 64 ], "id": "411f871c-ce66-4c8f-81eb-b81a816a7445", "name": "Sticky Note1" }, { "parameters": { "content": "## 📑 Get 'New' Articles data from G Sheet\n", "height": 240, "width": 576, "color": 5 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -1184, 304 ], "id": "e7a86256-c59c-4f71-9035-39e93192fc6e", "name": "Sticky Note2" }, { "parameters": { "title": "={{ $json.title }}", "additionalFields": { "authorId": 12, "content": "={{ $json.content }}", "status": "draft" } }, "type": "n8n-nodes-base.wordpress", "typeVersion": 1, "position": [ 1088, 48 ], "id": "fb65aa96-048d-4145-a7e7-499ecb81715f", "name": "Create a Draft", "credentials": { "wordpressApi": { "id": "a7Cx6j0h8rI7LX2v", "name": "WP Cheapnail" } } }, { "parameters": { "jsCode": "// Pull the incoming payload\nconst msg = $input.first().json.message || {};\nconst rawContent = msg.content;\n\n// Normalise inputs: html body + a separately provided title (if any)\nlet html = \"\";\nlet providedTitle = \"\";\n\nif (typeof rawContent === \"string\") {\n // Sometimes the HTML is directly in message.content\n html = rawContent;\n} else if (rawContent && typeof rawContent === \"object\") {\n // Common shape: message.content = { title, content }\n html = (rawContent.content || \"\").toString();\n providedTitle = (rawContent.title || \"\").toString().trim();\n}\n\n// Helper: strip tags for the final title value\nconst stripTags = (s) => s.replace(/<[^>]*>/g, \"\").trim();\n\n// Try to extract

from the HTML body (allow attributes, any casing)\nconst h1Match = html.match(/]*>([\\s\\S]*?)<\\/h1>/i);\n\n// Title preference:

from content first, else fall back to provided title field\nlet title = h1Match ? stripTags(h1Match[1]) : providedTitle;\n\n// Build the content: remove the first

if present; otherwise keep HTML as-is\nlet content = html;\nif (h1Match) {\n content = html.replace(/]*>[\\s\\S]*?<\\/h1>\\s*/i, \"\").trim();\n} else {\n content = (html || \"\").trim();\n}\n\n// Output\nreturn [\n {\n json: {\n title,\n content\n }\n }\n];\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ 864, 48 ], "id": "6d4b278b-39e4-431e-aeca-e9192b813faa", "name": "Format Article" }, { "parameters": { "operation": "update", "documentId": { "__rl": true, "value": "1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw", "mode": "list", "cachedResultName": "n8n Newspress Article Workflow", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit?usp=drivesdk" }, "sheetName": { "__rl": true, "value": 2027275420, "mode": "list", "cachedResultName": "Cheapnail", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1CnYbGz4Xq0D0eI6T4jelZkL1c3ZY5hKB2wjhWtmjAOw/edit#gid=2027275420" }, "columns": { "mappingMode": "defineBelow", "value": { "Publish Link": "={{ $json.link }}", "Publish Status": "={{ $json.status }}", "Flow Status": "Flow Complete", "row_number": "={{ $('Update Processing').item.json.row_number }}" }, "matchingColumns": [ "row_number" ], "schema": [ { "id": "Topic", "displayName": "Topic", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Source", "displayName": "Source", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Publish Status", "displayName": "Publish Status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Publish Link", "displayName": "Publish Link", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Flow Status", "displayName": "Flow Status", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": false }, { "id": "Flow Timing", "displayName": "Flow Timing", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "Run Flow", "displayName": "Run Flow", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true, "removed": true }, { "id": "row_number", "displayName": "row_number", "required": false, "defaultMatch": false, "display": true, "type": "number", "canBeUsedToMatch": true, "readOnly": true, "removed": false } ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": [ 1312, 224 ], "id": "18d6447a-cb7a-49c6-9baa-4339c5601f8a", "name": "Update Draft Details", "credentials": { "googleSheetsOAuth2Api": { "id": "Br9lRn5gAnnRLFmy", "name": "Google Sheets account 2" } } }, { "parameters": { "content": "## 📂 Make Draft Article and Update the Google Sheet", "height": 416, "width": 624, "color": 2 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 832, -32 ], "id": "021f2b33-1f7a-4cba-90de-e56e6acc105a", "name": "Sticky Note3" }, { "parameters": { "path": "a1889360-e1bf-4b53-a96b-5eafa4b165a1", "options": {} }, "type": "n8n-nodes-base.webhook", "typeVersion": 2.1, "position": [ -1168, 384 ], "id": "2aaa0031-8189-47c1-8946-62068490e79e", "name": "Webhook", "webhookId": "a1889360-e1bf-4b53-a96b-5eafa4b165a1" } ], "pinData": {}, "connections": { "Loop Over Items": { "main": [ [], [ { "node": "Update Processing", "type": "main", "index": 0 } ] ] }, "If": { "main": [ [ { "node": "Article Summarizer", "type": "main", "index": 0 } ], [ { "node": "Update Error", "type": "main", "index": 0 } ] ] }, "Get New Articles": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Update Processing": { "main": [ [ { "node": "Fetch HTML", "type": "main", "index": 0 } ] ] }, "Fetch HTML": { "main": [ [ { "node": "If", "type": "main", "index": 0 } ] ] }, "Update Error": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Article Creator": { "main": [ [ { "node": "Format Article", "type": "main", "index": 0 } ] ] }, "Article Summarizer": { "main": [ [ { "node": "Article Creator", "type": "main", "index": 0 } ] ] }, "Create a Draft": { "main": [ [ { "node": "Update Draft Details", "type": "main", "index": 0 } ] ] }, "Format Article": { "main": [ [ { "node": "Create a Draft", "type": "main", "index": 0 } ] ] }, "Update Draft Details": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Webhook": { "main": [ [ { "node": "Get New Articles", "type": "main", "index": 0 } ] ] } }, "active": true, "settings": { "executionOrder": "v1", "timezone": "Asia/Kolkata", "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": "ipTcrzGbKoHF6UKi" }, "versionId": "dcb3a423-5356-4732-855f-419db73e8c89", "meta": { "templateCredsSetupCompleted": true, "instanceId": "1f1785d995b3fa32ab6b8219168659331dbe1459fee9ca0c94987e0285ae2676" }, "id": "9LKLgEkXV10DszQ1", "tags": [ { "createdAt": "2025-07-23T09:03:28.998Z", "updatedAt": "2025-07-23T09:03:28.998Z", "id": "0TIhg6ju9FxO2Lcp", "name": "Wordpress" }, { "createdAt": "2025-09-01T09:43:28.145Z", "updatedAt": "2025-09-01T09:43:28.145Z", "id": "KNKC6Mt3juYzghT4", "name": "Newsbreak" }, { "createdAt": "2025-09-03T07:38:33.128Z", "updatedAt": "2025-09-03T07:38:33.128Z", "id": "j70AoEIxmOT3oVGW", "name": "🟢 Active" } ] }

{ "name": "Article Generation and Publishing Automation", "nodes": [ { "parameters": { "jsCode": "const results = [];\n\n// Get the image list from the cleaned HTML node\nconst imageList = $('Clean HTML').first().json.images;\n\n// Log the image list to check its full content\nconsole.log(\"Image List Length:\", imageList.length); // How many items are in the array?\nconsole.log(\"Image List Data:\", imageList); // Log full array content\n\n// Check if imageList is an array\nif (Array.isArray(imageList)) {\n // Loop through all the images and extract title and URL\n for (const raw of imageList) {\n console.log(\"Processing image data:\", raw); // Log each image data for debugging\n\n // Extract title: first text before any \"[\" or just the beginning\n const titleMatch = raw.match(/^([^\\[]+)/);\n const title = titleMatch ? titleMatch[1].trim() : null;\n\n // Extract .jpg or .webp URLs starting with \"https://www.whats-on-netflix.com/wp-content/uploads\"\n const urlMatch = raw.match(/\\[(https:\\/\\/www\\.whats-on-netflix\\.com\\/wp-content\\/uploads[^\\]]+\\.(jpg|png|jpeg|webp))\\]/);\n const imageUrl = urlMatch ? urlMatch[1] : null;\n\n // If both title and image URL are found, add it to the result\n if (title && imageUrl) {\n console.log(\"Found Image:\", title, imageUrl); // Log the image title and URL\n results.push({\n json: {\n title,\n imageUrl\n }\n });\n } else {\n console.log('Missing image title or URL:', raw); // Log missing data\n }\n }\n} else {\n console.log('No image data found or imgData is not an array');\n}\n\n// Return the results\nreturn results;\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -416, 640 ], "id": "c781d8ad-8a38-41f6-8e00-96c271e0f809", "name": "Images" }, { "parameters": { "jsCode": "const titles = items[0].json.youtube_vid_title || [];\nconst urls = items[0].json.youtube_vid_url || [];\n\nconst output = [];\n\nfor (let i = 0; i < titles.length; i++) {\n if (titles[i] && urls[i]) {\n output.push({\n json: {\n vidTitle: titles[i],\n vidUrl: urls[i]\n }\n });\n }\n}\n\nreturn output;\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -416, 448 ], "id": "5df81021-cf31-468c-bd25-bf11d40df0ea", "name": "Videos" }, { "parameters": { "url": "={{ $json.imageUrl }}", "options": { "response": { "response": { "responseFormat": "file" } } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ -208, 640 ], "id": "a6d40956-a3f3-46a0-be2f-8e8c4ee7a548", "name": "GET All Images" }, { "parameters": { "options": { "reset": false } }, "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": [ 80, 640 ], "id": "0bd85188-dab5-4fd9-a751-cc325e08ce63", "name": "Loop Over Items", "alwaysOutputData": false }, { "parameters": { "aggregate": "aggregateAllItemData", "destinationFieldName": "imgData", "include": "specifiedFields", "fieldsToInclude": "title, guid", "options": {} }, "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": [ 448, 640 ], "id": "6524f176-bd5d-49f9-b8ec-3e1f3face261", "name": "Aggregate" }, { "parameters": { "numberInputs": 4 }, "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": [ 720, 416 ], "id": "9fa12718-b378-49b5-99b8-22f8c6fc4135", "name": "Merge" }, { "parameters": { "aggregate": "aggregateAllItemData", "options": {} }, "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": [ 448, 448 ], "id": "15431bf2-7836-4f12-aa2a-902d06593a73", "name": "Aggregate2" }, { "parameters": { "rule": { "interval": [ { "field": "hours", "hoursInterval": 6 } ] } }, "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": [ -2336, 448 ], "id": "80a434c8-37d5-4c67-a4fc-f39232ce617d", "name": "Schedule Trigger1" }, { "parameters": { "documentId": { "__rl": true, "value": "1YZM59IZjDFPMszFE9Dk3opa7qrPN90HDPqg1QGk1nDE", "mode": "id" }, "sheetName": { "__rl": true, "value": 94180956, "mode": "list", "cachedResultName": "Article", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YZM59IZjDFPMszFE9Dk3opa7qrPN90HDPqg1QGk1nDE/edit#gid=94180956" }, "filtersUI": { "values": [ { "lookupColumn": "Source URL", "lookupValue": "={{ $json.link }}" } ] }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": [ -1568, 448 ], "id": "55e9b7b5-fa51-4ed0-845c-1eab0c5c3965", "name": "Filter by URL", "alwaysOutputData": true, "executeOnce": true, "credentials": { "googleSheetsOAuth2Api": { "id": "4zobG6lG0OtqxOPJ", "name": "Google Sheets account" } } }, { "parameters": { "jsCode": "const count = items.length;\n\n// Check if 'SourceURL' has a valid value in the last item\nconst sourceURL = $input.last().json['Source URL'];\nconst isSourceURLValid = sourceURL && sourceURL.trim() !== ''; // true if SourceURL has value, false if empty or not found\n\nreturn [{\n json: {\n row_number: $input.last().json.row_number,\n pubDate: $input.last().json.Date,\n Title: $input.last().json.Title,\n SourceURL: sourceURL,\n isSourceURLValid: isSourceURLValid ? false : true // Will return true if SourceURL has value, false if empty or not found\n }\n}];" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -1360, 448 ], "id": "04cfcc6e-95f3-42c6-a47b-409a637acbc9", "name": "Duplicate ArticleCheck", "alwaysOutputData": true }, { "parameters": { "url": "https://www.whats-on-netflix.com/feed/", "options": { "ignoreSSL": false } }, "type": "n8n-nodes-base.rssFeedRead", "typeVersion": 1.1, "position": [ -2160, 448 ], "id": "50371625-755a-4c9e-9f74-0007b826508c", "name": "RSS Read" }, { "parameters": { "jsCode": "const inputUrl = $input.first().json.link || ''; // Replace 'url' with your actual field\n\n// Remove protocol (http:// or https://)\nconst noProtocol = inputUrl.replace(/^https?:\\/\\//, '').replace(/^www\\./, '');\n\n// Get domain only\nconst domain = noProtocol.split('/')[0]; // e.g., \"beebom.com\"\n\n// Optional: Get domain without TLD\nconst sourceWebsiteName = domain.split('.')[0]; // e.g., \"beebom\"\n\nreturn {\n json: {\n ...$json,\n domain,\n sourceWebsiteName\n }\n};\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -1760, 448 ], "id": "459aef92-2c4d-48ef-9ce5-7c1d107e8256", "name": "Get Website Name" }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": [ { "id": "43eeeab9-82a6-4400-8fc7-a803272faa61", "leftValue": "={{ $json.isSourceURLValid }}", "rightValue": "\"true\"", "operator": { "type": "boolean", "operation": "true", "singleValue": true } } ], "combinator": "and" }, "options": {} }, "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": [ -1168, 448 ], "id": "dbb58262-bc05-4c49-b73c-c5f68983d5f4", "name": "If" }, { "parameters": { "url": "=https://www.keeperfacts.com/wp-json/wp/v2/categories?search={{ $('Structure the data').item.json.articleCategorie }}", "authentication": "predefinedCredentialType", "nodeCredentialType": "wordpressApi", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 1888, 448 ], "id": "c0fdc749-f2f5-46dd-90a4-2083a34fb2bd", "name": "Get Category ID", "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } } }, { "parameters": { "method": "POST", "url": "=https://keeperfacts.com/wp-json/wp/v2/posts/{{ $('Publish Article').item.json.id }}", "authentication": "predefinedCredentialType", "nodeCredentialType": "wordpressApi", "sendBody": true, "bodyParameters": { "parameters": [ { "name": "featured_media", "value": "={{ $json.id }}" } ] }, "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 2880, 448 ], "id": "20a4806b-e12c-45a9-9f45-b6347a9ba351", "name": "Update Feature Img", "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } } }, { "parameters": { "operation": "append", "documentId": { "__rl": true, "value": "1YZM59IZjDFPMszFE9Dk3opa7qrPN90HDPqg1QGk1nDE", "mode": "id" }, "sheetName": { "__rl": true, "value": 94180956, "mode": "list", "cachedResultName": "Article", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1YZM59IZjDFPMszFE9Dk3opa7qrPN90HDPqg1QGk1nDE/edit#gid=94180956" }, "columns": { "mappingMode": "defineBelow", "value": { "Our URL": "={{ $json.link }}", "Our Title": "={{ $json.title.raw }}", "Our Website Name": "Keeperfact", "Pub date": "={{ $json.date }}", "Source Website Name": "=whats-on-netflix", "Title": "={{ $('Structure the data').item.json.articleTitle }}", "Source URL": "={{ $('Structure the data').item.json.articleURL }}", "Date": "={{ $('Structure the data').item.json.articlePubdate }}" }, "matchingColumns": [], "schema": [ { "id": "Date", "displayName": "Date", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Source Website Name", "displayName": "Source Website Name", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Title", "displayName": "Title", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Source URL", "displayName": "Source URL", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Pub date", "displayName": "Pub date", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Our Website Name", "displayName": "Our Website Name", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Our Title", "displayName": "Our Title", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true }, { "id": "Our URL", "displayName": "Our URL", "required": false, "defaultMatch": false, "display": true, "type": "string", "canBeUsedToMatch": true } ], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": [ 2288, 448 ], "id": "4501fb84-bb17-4ed9-9c9b-0be92b96d408", "name": "Update New Data", "alwaysOutputData": true, "credentials": { "googleSheetsOAuth2Api": { "id": "4zobG6lG0OtqxOPJ", "name": "Google Sheets account" } }, "onError": "continueRegularOutput" }, { "parameters": { "title": "={{ $('Ready Article').item.json.message.content.title }}", "additionalFields": { "authorId": 123, "content": "={{ $('Ready Article').item.json.message.content.content }}", "status": "publish", "categories": "={{ $json.id }}" } }, "type": "n8n-nodes-base.wordpress", "typeVersion": 1, "position": [ 2080, 448 ], "id": "74106d51-5aeb-405b-bafb-188c7dfef77d", "name": "Publish Article", "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } } }, { "parameters": { "method": "POST", "url": "https://www.keeperfacts.com/wp-json/wp/v2/categories", "authentication": "predefinedCredentialType", "nodeCredentialType": "wordpressApi", "sendBody": true, "bodyParameters": { "parameters": [ { "name": "name", "value": "={{ $('Structure the data').item.json.articleCategorie }}" } ] }, "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 1680, 448 ], "id": "fb4ce853-1931-40be-8382-cd13c5a3cb34", "name": "Set New Category", "alwaysOutputData": true, "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } }, "onError": "continueRegularOutput" }, { "parameters": { "jsCode": "// Get the item\nconst item = $input.first().json;\n\n// Extract content safely as a string\nconst content = item?.message?.content;\nif (typeof content !== 'string') {\n return [{ json: { ...item, error: 'Content is not a string' } }];\n}\n\n// Find YouTube embed URL\nconst match = content.match(/https:\\/\\/www\\.youtube\\.com\\/embed\\/[a-zA-Z0-9_-]+/);\n\nif (match) {\n const embedUrl = match[0];\n const iframe = ``;\n\n // Replace the YouTube URL with the iframe\n const newContent = content.replace(embedUrl, iframe);\n\n return [{ json: { ...item, article: newContent } }];\n} else {\n // No match\n return [{ json: { ...item, article: content, note: 'No YouTube embed URL found' } }];\n}\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ 1488, 448 ], "id": "dddb1a40-87e2-496c-bc34-4e0a06cc7161", "name": "Update Embedding" }, { "parameters": {}, "type": "n8n-nodes-base.limit", "typeVersion": 1, "position": [ -1968, 448 ], "id": "1a6c4849-e36a-4c77-a19d-4468f3acf9ee", "name": "Limit Article" }, { "parameters": { "url": "={{ $('Get Website Name').item.json.link }}", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ -896, 448 ], "id": "54f16c3d-6798-44ec-91c4-b96ee1c6339c", "name": "fetch Article HTML" }, { "parameters": { "operation": "extractHtmlContent", "extractionValues": { "values": [ { "key": "Title", "cssSelector": "h1.post-title" }, { "key": "content", "cssSelector": "div#article-body.entry" }, { "key": "feature_img", "cssSelector": "img.size-full", "returnValue": "attribute", "attribute": "data-lazy-src" }, { "key": "youtube_vid_title", "cssSelector": ".rll-youtube-player", "returnValue": "attribute", "attribute": "data-alt", "returnArray": true }, { "key": "youtube_vid_url", "cssSelector": ".rll-youtube-player", "returnValue": "attribute", "attribute": "data-src", "returnArray": true }, { "key": "images", "cssSelector": "div#article-body.entry div.entry-inner picture", "skipSelectors": "src", "returnArray": true } ] }, "options": { "cleanUpText": true } }, "type": "n8n-nodes-base.html", "typeVersion": 1.2, "position": [ -704, 448 ], "id": "ec33b62b-fa9d-421e-baf8-760fef41d9c0", "name": "Clean HTML" }, { "parameters": { "assignments": { "assignments": [ { "id": "5652d57e-5034-4112-8925-09abf403093d", "name": "articlePubdate", "value": "={{ $('Get Website Name').item.json.pubDate }}", "type": "string" }, { "id": "f29eeeb4-9e81-4e48-91f4-cb8c92e9512d", "name": "articleTitle", "value": "={{ $('Get Website Name').item.json.title }}", "type": "string" }, { "id": "8cf984c6-ccd7-4d22-8232-ca1ced4d1e9f", "name": "feature_img", "value": "={{ $json.feature_img }}", "type": "string" }, { "id": "6d66b50c-2652-4bec-a5c0-2b0607c3ca9e", "name": "articleURL", "value": "={{ $('Get Website Name').item.json.link }}", "type": "string" }, { "id": "c8d5f29f-e48c-45ea-9738-c3fc242c332f", "name": "articleCategorie", "value": "={{ $('Get Website Name').item.json.categories[0] }}", "type": "string" }, { "id": "8df7bd30-3f08-4b3f-a574-a9a329d76713", "name": "sourceWebsiteName", "value": "={{ $('Get Website Name').item.json.sourceWebsiteName }}", "type": "string" } ] }, "options": {} }, "type": "n8n-nodes-base.set", "typeVersion": 3.4, "position": [ 0, 0 ], "id": "e2efb81c-ff38-46c7-acce-3d5b35c30c64", "name": "Take Websites data" }, { "parameters": { "method": "POST", "url": "https://keeperfacts.com//wp-json/wp/v2/media", "authentication": "predefinedCredentialType", "nodeCredentialType": "wordpressApi", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "content-disposition", "value": "=attachment;filename= {{ $binary.data.fileName.replace(/\\.[^/.]+$/, \"\") }}.jpg" }, { "name": "content-type", "value": "={{ $binary.data.mimeType }}" } ] }, "sendBody": true, "contentType": "binaryData", "inputDataFieldName": "data", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 2688, 448 ], "id": "1af03886-aea6-4a19-89b1-1fd5c2536c77", "name": "Upload F img to WP", "executeOnce": true, "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } } }, { "parameters": { "url": "={{ $('Structure the data').item.json.featureImage }}", "options": { "response": { "response": { "responseFormat": "file" } } } }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 2480, 448 ], "id": "c7bcdc2a-fcd5-4693-96c8-dcb17fe420dd", "name": "GET F Image" }, { "parameters": { "jsCode": "// Initialize variables for video, image data, and article outline\nlet videoData = '';\nlet imageData = '';\nlet articleOutline = '';\n\n// Initialize the variables for the article's metadata\nlet articlePubdate = '';\nlet articleTitle = '';\nlet articleURL = '';\nlet articleCategorie = '';\n\n// Debugging: Log the entire input data to inspect its structure\nconsole.log(\"Input data:\", items);\n\n// **Extract Video Data Dynamically**\nfor (let i = 0; i < items.length; i++) {\n const videos = items[i]?.json?.data;\n if (Array.isArray(videos)) {\n console.log(`Video Data Found at items[${i}]:`, videos); // Log video data to check structure\n videos.forEach((video, index) => {\n if (video.vidTitle && video.vidUrl) {\n videoData += `${index + 1}. \"${video.vidTitle}\": \"${video.vidUrl}\",\\n`; // Add index and construct the string for video data\n } else {\n console.log(`Missing video title or URL in items[${i}]`, video);\n }\n });\n } else {\n console.log(`No video data found or data is not an array at items[${i}]`);\n }\n}\n\n// **Extract Image Data Dynamically**\nlet featureImage = ''; // First image URL\nlet isFirstImageCaptured = false;\n\nfor (let i = 0; i < items.length; i++) {\n const images = items[i]?.json?.imgData;\n if (Array.isArray(images)) {\n console.log(`Image Data Found at items[${i}]:`, images); // Log image data to check structure\n images.forEach((image) => {\n if (image.title && image.guid && image.guid.rendered) {\n if (!isFirstImageCaptured) {\n featureImage = image.guid.rendered; // Capture only the first image URL\n isFirstImageCaptured = true;\n } else {\n imageData += `\"${image.title.rendered}\": \"${image.guid.rendered}\",\\n`; // Add to imageData\n }\n } else {\n console.log(`Missing image title or URL in items[${i}]`, image);\n }\n });\n } else {\n console.log(`No image data found or imgData is not an array at items[${i}]`);\n }\n}\n\n\n// **Extract Article Outline and Metadata**\narticleOutline = items[1]?.json?.message?.content || 'No content available';\nconsole.log('Article Outline:', articleOutline);\n\n// Extract article metadata (assuming they are in the first item)\narticlePubdate = items[0]?.json?.articlePubdate || 'No publication date available';\narticleTitle = items[0]?.json?.articleTitle || 'No title available';\narticleURL = items[0]?.json?.articleURL || 'No URL available';\narticleCategorie = items[0]?.json?.articleCategorie || 'No category available';\nsourceWebsiteName = items[0]?.json?.sourceWebsiteName || 'No source available';\n\n// Prepare the structured output with indexed data\nconst output = {\n articleOutline: articleOutline.trim(),\n videoData: videoData.trim(),\n imageData: imageData.trim(),\n featureImage: featureImage.trim(),\n articlePubdate: articlePubdate.trim(),\n articleTitle: articleTitle.trim(),\n articleURL: articleURL.trim(),\n articleCategorie: articleCategorie.trim(),\n};\n\n// Return the structured output\nreturn [{\n json: output\n}];\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ 928, 448 ], "id": "9b5bd3c6-56ec-458e-a2ae-9dde42ca662a", "name": "Structure the data" }, { "parameters": { "modelId": { "__rl": true, "value": "gpt-4.1-mini", "mode": "list", "cachedResultName": "GPT-4.1-MINI" }, "messages": { "values": [ { "content": "=You are an expert content strategist specializing in entertainment and streaming platforms, especially Netflix. I will provide you with a Netflix-related article. Your task is to carefully analyze the content and generate a clear and organized **article outline** that captures its core structure, key sections, and important discussion points.\n\n**Guidelines:**\n\n* The outline should maintain the **original intent and theme** of the article.\n* Identify and list the **main headings and subheadings** that can be used to rewrite or expand the article.\n* Keep the outline **SEO-friendly**, focusing on relevant topics, release titles, dates, and viewer interest points.\n* Avoid rewriting the article itself—just give a **detailed and usable outline** for content creation.\n* The article should be in markdown format.\n* **No need of adding numbering in headings**.\n* **Don't start the article with an H2 tag—begin with a catchy line without any heading or title.**\n\n\nStart the response with a short identification of the **article category** (e.g., \"Upcoming Releases,\" \"Weekly Roundup,\" \"Original Series Reviews,\" etc.).", "role": "system" }, { "content": "=The Title of article : \"{{ $json.title }}\"\n\nThe Content of article: \n\"{{ $json.cleanedContent }}\"" } ] }, "options": { "temperature": 0.7 } }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 288, 240 ], "id": "47684886-b45a-4374-9eed-a073b51f7d43", "name": "Outline of article", "credentials": { "openAiApi": { "id": "jtLWrEq6HGCqOhD7", "name": "OpenAi account" } } }, { "parameters": { "modelId": { "__rl": true, "value": "gpt-4.1-mini", "mode": "list", "cachedResultName": "GPT-4.1-MINI" }, "messages": { "values": [ { "content": "=You are a professional SEO content strategist and entertainment writer for **Keeperfact**, a leading site in streaming, web series, and pop culture.\n\nYou will receive three specific data inputs:\n\n1. **Article Outline** (use this as the sole structure for the article):\n\n2. **YouTube Trailer/Teaser URLs**:\n\n3. **Image URLs**:\n\n\n---\n\n**Instructions:**\n\n1. **Article Construction**\n\n * Rely entirely on the provided **article outline** for structure and flow.\n * Use **only** the YouTube trailer/teaser URLs and image URLs provided—do not add anything extra.\n * For each section and subheading, integrate relevant YouTube trailer links and image URLs by **matching them with section titles/subtitles** where possible.\n\n2. **Multimedia Embedding**\n\n * **Images:** Insert every image URL once using `\"RELEVANT_TITLE\"` directly after or within the corresponding outline section, ensuring the alt text is descriptive and matches the heading or subheading.\n\n3. **Formatting & Output**\n\n * Deliver the final article as **clean, WordPress-ready HTML**.\n * Use: `

`, `

`, `
    `, `
  • `, ``, ``, and `

    `.\n * No external links unless explicitly provided.\n * Do **not** conduct any extra research or include any commentary/explanation—just the finished article HTML. \n * **YouTube URLs:** Don't embedd the youtube link only palce the you link in different line don't embedd it.\n\n4. **Tone, Style & Audience**\n\n * Determine if the outline’s intent is **informational**, **editorial**, or **entertainment news**; write in a matching, fan-friendly, and engaging style.\n * Value for Netflix, web series, or pop culture fans should be clear throughout.\n * Avoid keyword stuffing—keep it natural and flowing.\n\n5. **Conclusion**\n\n * End with a strong **Call to Action** for \"Keeperfact\" readers (stream, comment, or explore more).\n\n---\n\n**Output:**\n\n* Return **only** the completed HTML article with all sections, images, and YouTube URLs properly placed and formatted.\n* Ensure the article is ready to be pasted directly into WordPress.\n* Do not include any extra commentary or formatting explanation.\n\n**Output Structure**\n\n```json\n{\n \"title\": \"the original title here\",\n \"content\": \"the rephrased HTML content here\"\n}\n```\n\n\n", "role": "system" }, { "content": "=1. The Outline of article: \n{{ $json.articleOutline }}\n\n2. YouTube trailer/teaser URLs:\n{{ $json.videoData }}\n\n3. Image URLs:\n{{ $json.imageData }}" } ] }, "jsonOutput": true, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": [ 1120, 448 ], "id": "4f7361dc-eddf-46be-babc-67a3825dba29", "name": "Ready Article", "credentials": { "openAiApi": { "id": "jtLWrEq6HGCqOhD7", "name": "OpenAi account" } } }, { "parameters": { "jsCode": "const title = $json[\"Title\"];\nconst content = $json[\"content\"];\n\n// Extract the first URL inside square brackets []\nconst urlMatch = content.match(/\\[(https?:\\/\\/[^\\]]+)\\]/);\n\nlet featureImage = null;\nlet cleanedContent = content;\n\nif (urlMatch) {\n featureImage = urlMatch[1];\n // Remove the first occurrence of the URL including brackets\n cleanedContent = content.replace(urlMatch[0], \"\");\n}\n\nreturn [\n {\n json: {\n title,\n featureImage,\n cleanedContent\n }\n }\n];\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": [ -416, 240 ], "id": "6253a062-a05d-4c96-9ac0-35092ede503e", "name": "Content & Title" }, { "parameters": { "method": "POST", "url": "https://keeperfacts.com//wp-json/wp/v2/media", "authentication": "predefinedCredentialType", "nodeCredentialType": "wordpressApi", "sendHeaders": true, "headerParameters": { "parameters": [ { "name": "content-disposition", "value": "=attachment;filename= {{ $binary.data.fileName.replace(/\\.[^/.]+$/, \"\") }}.jpg" }, { "name": "content-type", "value": "={{ $binary.data.mimeType }}" } ] }, "sendBody": true, "contentType": "binaryData", "inputDataFieldName": "data", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": [ 224, 752 ], "id": "e79ef2d3-feac-49fc-bc35-6c6376d77eb2", "name": "Upload Img to WP", "executeOnce": true, "credentials": { "wordpressApi": { "id": "8qCR4kNx0Vvnkq0y", "name": "Keeperfacts wp acc" } } }, { "parameters": { "content": "**Title:** RSS Article Filtering & Deduplication\n\n**Process Flow:**\n1. **Trigger & Fetch:** A scheduled trigger automatically runs this workflow to fetch the latest articles from an RSS feed.\n2. **Limit & Enrich:** The flow limits the number of articles processed to avoid overload, then extracts the website name from each article's URL for better organization.\n3. **Filter & Deduplicate:** Articles are first filtered by URL rules to remove unwanted sources. Then, each article is checked against a Google Sheet database to identify duplicates.\n4. **Decision Point:** If an article is new (not in the sheet), the workflow continues for further processing (e.g., posting, notification). If it's a duplicate, the branch stops, doing nothing.\n\n**Key Purpose:** To automatically collect, clean, and check new articles from an RSS feed, ensuring only unique content is processed further, preventing redundant actions.", "height": 416, "width": 1360 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -2368, 192 ], "id": "10839cba-9eb7-472f-b482-375f1dde79c8", "name": "Sticky Note" }, { "parameters": { "content": "**Purpose:** Processes unique articles by extracting content, images, and metadata, then formats and publishes to WordPress.\n\n**Key Steps:**\n1. **Content Extraction:** Pulls full article title, HTML content, and all images from the source URL.\n2. **Structuring:** Analyzes the article to create an outline/message structure.\n3. **Aggregation:** Combines all extracted data into a final, formatted payload.\n4. **Publication:** Automatically uploads the complete article as a new post to the WordPress site.\n\n**Final Result:** A fully formatted blog post published automatically from the RSS feed.", "height": 256, "width": 944 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ -384, -240 ], "id": "a43bcc3a-3ebb-46bb-8148-e05eea6b7c6d", "name": "Sticky Note1" }, { "parameters": { "content": "### Final Step - Structuring & Logging\n\n**Purpose:** Formats the final data and publishes it, then logs the action for record-keeping.\n\n**Actions:**\n1. **Structure Data:** Prepares and organizes all extracted content (title, HTML, images) into the correct format for WordPress.\n2. **Publish to WordPress:** Sends a POST request to create a new post on the specified WordPress site.\n3. **Log to Sheets & DB:** Appends a record of the published post to a Google Sheet creating a complete audit trail.\n\n**Result:** The article is now live on the website and its details are saved for tracking and analysis.", "height": 304, "width": 800 }, "type": "n8n-nodes-base.stickyNote", "typeVersion": 1, "position": [ 1744, 80 ], "id": "af8f95a7-c711-42ef-870e-923ad7227261", "name": "Sticky Note2" } ], "pinData": {}, "connections": { "Images": { "main": [ [ { "node": "GET All Images", "type": "main", "index": 0 } ] ] }, "Videos": { "main": [ [ { "node": "Aggregate2", "type": "main", "index": 0 } ] ] }, "GET All Images": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] }, "Loop Over Items": { "main": [ [ { "node": "Aggregate", "type": "main", "index": 0 } ], [ { "node": "Upload Img to WP", "type": "main", "index": 0 } ] ] }, "Aggregate": { "main": [ [ { "node": "Merge", "type": "main", "index": 3 } ] ] }, "Merge": { "main": [ [ { "node": "Structure the data", "type": "main", "index": 0 } ] ] }, "Aggregate2": { "main": [ [ { "node": "Merge", "type": "main", "index": 2 } ] ] }, "Schedule Trigger1": { "main": [ [ { "node": "RSS Read", "type": "main", "index": 0 } ] ] }, "Filter by URL": { "main": [ [ { "node": "Duplicate ArticleCheck", "type": "main", "index": 0 } ] ] }, "Duplicate ArticleCheck": { "main": [ [ { "node": "If", "type": "main", "index": 0 } ] ] }, "RSS Read": { "main": [ [ { "node": "Limit Article", "type": "main", "index": 0 } ] ] }, "Get Website Name": { "main": [ [ { "node": "Filter by URL", "type": "main", "index": 0 } ] ] }, "If": { "main": [ [ { "node": "fetch Article HTML", "type": "main", "index": 0 } ] ] }, "Get Category ID": { "main": [ [ { "node": "Publish Article", "type": "main", "index": 0 } ] ] }, "Update New Data": { "main": [ [ { "node": "GET F Image", "type": "main", "index": 0 } ] ] }, "Publish Article": { "main": [ [ { "node": "Update New Data", "type": "main", "index": 0 } ] ] }, "Set New Category": { "main": [ [ { "node": "Get Category ID", "type": "main", "index": 0 } ] ] }, "Update Embedding": { "main": [ [ { "node": "Set New Category", "type": "main", "index": 0 } ] ] }, "Limit Article": { "main": [ [ { "node": "Get Website Name", "type": "main", "index": 0 } ] ] }, "fetch Article HTML": { "main": [ [ { "node": "Clean HTML", "type": "main", "index": 0 } ] ] }, "Clean HTML": { "main": [ [ { "node": "Take Websites data", "type": "main", "index": 0 }, { "node": "Images", "type": "main", "index": 0 }, { "node": "Content & Title", "type": "main", "index": 0 }, { "node": "Videos", "type": "main", "index": 0 } ] ] }, "Take Websites data": { "main": [ [ { "node": "Merge", "type": "main", "index": 0 } ] ] }, "Upload F img to WP": { "main": [ [ { "node": "Update Feature Img", "type": "main", "index": 0 } ] ] }, "GET F Image": { "main": [ [ { "node": "Upload F img to WP", "type": "main", "index": 0 } ] ] }, "Structure the data": { "main": [ [ { "node": "Ready Article", "type": "main", "index": 0 } ] ] }, "Outline of article": { "main": [ [ { "node": "Merge", "type": "main", "index": 1 } ] ] }, "Ready Article": { "main": [ [ { "node": "Update Embedding", "type": "main", "index": 0 } ] ] }, "Content & Title": { "main": [ [ { "node": "Outline of article", "type": "main", "index": 0 } ] ] }, "Upload Img to WP": { "main": [ [ { "node": "Loop Over Items", "type": "main", "index": 0 } ] ] } }, "active": true, "settings": { "executionOrder": "v1" }, "versionId": "aba5a79e-80c7-4ba4-b6a5-27de6d4de79d", "meta": { "templateCredsSetupCompleted": true, "instanceId": "1f1785d995b3fa32ab6b8219168659331dbe1459fee9ca0c94987e0285ae2676" }, "id": "Sx9MOcD0HnAk7o7E", "tags": [ { "createdAt": "2025-07-23T09:03:28.998Z", "updatedAt": "2025-07-23T09:03:28.998Z", "id": "0TIhg6ju9FxO2Lcp", "name": "Wordpress" }, { "createdAt": "2025-07-23T09:03:28.999Z", "updatedAt": "2025-07-23T09:03:28.999Z", "id": "EytiJJPwSOxyW6Jx", "name": "Article Post" } ] }

Let's Talk Growth!