Generated by Rank Math SEO, this is an llms.txt file designed to help LLMs better understand and index this website. # Serve Vision ## Sitemaps [XML Sitemap](https://servevision.com/sitemap_index.xml): Includes all crawlable and indexable pages. ## Pages - [Marketplace Advertising & PPC Optimization](https://servevision.com/marketplace-advertising-ppc-optimization/): Unlock your marketplace’s full potential, drive more sales, increase visibility, and achieve measurable growth that takes your business to the next level. - [Ethics Policy](https://servevision.com/ethics-policy/): At Serve Vision, we uphold the highest standards of integrity and professionalism, ensuring ethical behavior guides every interaction, project, and service across our digital solutions and operations. - [Terms & Conditions](https://servevision.com/terms-conditions/): Ensure safe and responsible use of Serve Vision’s services by understanding our terms. Read carefully before accessing our digital solutions. - [Privacy Policy](https://servevision.com/privacy-policy/): Your privacy is our priority. Learn how Serve Vision collects, uses, and protects your information securely and transparently. - [AI & Agents](https://servevision.com/ai-agents/): Automate tasks, boost efficiency, and scale growth with Serve Vision’s intelligent AI & Agents—designed to transform business operations seamlessly. - [SEO](https://servevision.com/seo/): Our SEO solutions help businesses rank higher, increase website traffic, and achieve long-term online success efficiently. - [Local Marketing](https://servevision.com/local-marketing/): Enhance your local presence with expert strategies in SEO, listings, and geo-targeted targeting. - [Web Development](https://servevision.com/web-development/): Turn Your Website Into a Growth Machine—Engage Visitors, Boost Conversions, and Outperform Competitors Online Instantly. - [Marketplace Management](https://servevision.com/marketplace-management/): From clicks to loyal customers—optimize your Marketplace store, skyrocket sales, and unlock true e-commerce success today. - [Our Services](https://servevision.com/our-services/): Unlock powerful solutions that streamline your business, reduce costs, and drive growth with our customized services—delivering real, measurable results. - [Contact Us](https://servevision.com/contact-us/): Reach out to Serve Vision today to discuss your digital goals, strategies, and innovative solutions for success. - [About Us](https://servevision.com/about-us/): Get insights into Serve Vision’s mission, vision, and expert team delivering exceptional digital solutions today. - [Home](https://servevision.com/): We’ve helped 54+ businesses across multiple industries grow from scratch to 7 & 8 figures. Yours could be next. If you don’t grow, you don’t pay. That’s our promise. ## Templates - [Footer](https://servevision.com/?elementskit_template=footer): One partnership, one opportunity — and we’ll prove why Serve Vision means unstoppable, measurable, long-term success. Let’s get on a call to know each other better. - [Header](https://servevision.com/?elementskit_template=header): Home Our Services Marketplace Management Marketplace Advertising & PPC Optimization Web Development Local Marketing AI & Agents SEO About Us Contact Us X Get Started ## - [Custom Chatbot Designed for Your Business Needs](https://servevision.com/?p=1999): Copy JSON { "name": "Custom Chatbot Designed for Your Business Needs", "nodes": }, "options": {} }, "type": "n8n-nodes-base.formTrigger", "typeVersion": 2.2, "position": , "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": , "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 (https://docs.n8n.io/advanced-ai/rag-in-n8n/).", "height": 300, "width": 440, "color": 4 }, "type": "n8n-nodes-base.stickyNote", "position": , "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": , "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": , "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": , "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 = \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": , "id": "579aed76-9644-42d1-ac13-7369059ff1c2", "name": "AI Agent" }, { "parameters": { "options": {} }, "type": "@n8n/n8n-nodes-langchain.chatTrigger", "typeVersion": 1.1, "position": , "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": , "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": , "typeVersion": 1, "id": "0cf8c647-418c-4d1a-8952-766145afca72", "name": "Sticky Note3" }, { "parameters": {}, "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini", "typeVersion": 1, "position": , "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": , "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": , "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": ] }, "Default Data Loader": { "ai_document": ] }, "Query Data Tool": { "ai_tool": ] }, "When chat message received": { "main": ] }, "Embeddings Google Gemini": { "ai_embedding": ] }, "Google Gemini Chat Model": { "ai_languageModel": ] }, "Daily Expense": { "ai_tool": ] } }, "active": false, "settings": { "executionOrder": "v1" }, "versionId": "8fe6a330-c2fe-44bd-8dc3-5c0f08445f54", "meta": { "templateId": "rag-starter-template", "templateCredsSetupCompleted": true, "instanceId": "1f1785d995b3fa32ab6b8219168659331dbe1459fee9ca0c94987e0285ae2676" }, "id": "XMzrW1DpKCxRdodE", "tags": } - [Keyword-Based Article Generation via Google Sheets](https://servevision.com/?p=1991): Copy JSON { "name": "Keyword-Based Article Generation via Google Sheets", "nodes": , "id": "019cddd8-29dd-46d1-9269-696ec3cef37a", "name": "Loop Over Items" }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "loose", "version": 2 }, "conditions": , "combinator": "and" }, "looseTypeValidation": true, "options": {} }, "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": , "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": }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": , "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": , "schema": , "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": , "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": , "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": , "schema": , "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": , "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": , "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": }, "jsonOutput": true, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": , "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": }, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": , "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": , "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": , "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": , "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(/(*?)/i);\n\n// Title preference: from content first, else fall back to provided title field\nlet title = h1Match ? stripTags(h1Match) : 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*/i, \"\").trim();\n} else {\n content = (html || \"\").trim();\n}\n\n// Output\nreturn ;\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "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": , "schema": , "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": , "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": , "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": , "id": "2aaa0031-8189-47c1-8946-62068490e79e", "name": "Webhook", "webhookId": "a1889360-e1bf-4b53-a96b-5eafa4b165a1" } ], "pinData": {}, "connections": { "Loop Over Items": { "main": , ] }, "If": { "main": , ] }, "Get New Articles": { "main": ] }, "Update Processing": { "main": ] }, "Fetch HTML": { "main": ] }, "Update Error": { "main": ] }, "Article Creator": { "main": ] }, "Article Summarizer": { "main": ] }, "Create a Draft": { "main": ] }, "Format Article": { "main": ] }, "Update Draft Details": { "main": ] }, "Webhook": { "main": ] } }, "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": } - [Article Generation and Publishing Automation](https://servevision.com/?p=1388): Copy JSON { "name": "Article Generation and Publishing Automation", "nodes": ;\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 \"+)/);\n const title = titleMatch ? titleMatch.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(/\\]+\\.(jpg|png|jpeg|webp))\\]/);\n const imageUrl = urlMatch ? urlMatch : 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": , "id": "c781d8ad-8a38-41f6-8e00-96c271e0f809", "name": "Images" }, { "parameters": { "jsCode": "const titles = items.json.youtube_vid_title || ;\nconst urls = items.json.youtube_vid_url || ;\n\nconst output = ;\n\nfor (let i = 0; i < titles.length; i++) {\n if (titles && urls) {\n output.push({\n json: {\n vidTitle: titles,\n vidUrl: urls\n }\n });\n }\n}\n\nreturn output;\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "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": , "id": "a6d40956-a3f3-46a0-be2f-8e8c4ee7a548", "name": "GET All Images" }, { "parameters": { "options": { "reset": false } }, "type": "n8n-nodes-base.splitInBatches", "typeVersion": 3, "position": , "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": , "id": "6524f176-bd5d-49f9-b8ec-3e1f3face261", "name": "Aggregate" }, { "parameters": { "numberInputs": 4 }, "type": "n8n-nodes-base.merge", "typeVersion": 3.2, "position": , "id": "9fa12718-b378-49b5-99b8-22f8c6fc4135", "name": "Merge" }, { "parameters": { "aggregate": "aggregateAllItemData", "options": {} }, "type": "n8n-nodes-base.aggregate", "typeVersion": 1, "position": , "id": "15431bf2-7836-4f12-aa2a-902d06593a73", "name": "Aggregate2" }, { "parameters": { "rule": { "interval": } }, "type": "n8n-nodes-base.scheduleTrigger", "typeVersion": 1.2, "position": , "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": }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": , "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;\nconst isSourceURLValid = sourceURL && sourceURL.trim() !== ''; // true if SourceURL has value, false if empty or not found\n\nreturn ;" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "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": , "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('/'); // e.g., \"beebom.com\"\n\n// Optional: Get domain without TLD\nconst sourceWebsiteName = domain.split('.'); // e.g., \"beebom\"\n\nreturn {\n json: {\n ...$json,\n domain,\n sourceWebsiteName\n }\n};\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "id": "459aef92-2c4d-48ef-9ce5-7c1d107e8256", "name": "Get Website Name" }, { "parameters": { "conditions": { "options": { "caseSensitive": true, "leftValue": "", "typeValidation": "strict", "version": 2 }, "conditions": , "combinator": "and" }, "options": {} }, "type": "n8n-nodes-base.if", "typeVersion": 2.2, "position": , "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": , "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": }, "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": , "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": , "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.6, "position": , "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": , "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": }, "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": , "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 ;\n}\n\n// Find YouTube embed URL\nconst match = content.match(/https:\\/\\/www\\.youtube\\.com\\/embed\\/+/);\n\nif (match) {\n const embedUrl = match;\n const iframe = ``;\n\n // Replace the YouTube URL with the iframe\n const newContent = content.replace(embedUrl, iframe);\n\n return ;\n} else {\n // No match\n return ;\n}\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "id": "dddb1a40-87e2-496c-bc34-4e0a06cc7161", "name": "Update Embedding" }, { "parameters": {}, "type": "n8n-nodes-base.limit", "typeVersion": 1, "position": , "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": , "id": "54f16c3d-6798-44ec-91c4-b96ee1c6339c", "name": "fetch Article HTML" }, { "parameters": { "operation": "extractHtmlContent", "extractionValues": { "values": }, "options": { "cleanUpText": true } }, "type": "n8n-nodes-base.html", "typeVersion": 1.2, "position": , "id": "ec33b62b-fa9d-421e-baf8-760fef41d9c0", "name": "Clean HTML" }, { "parameters": { "assignments": { "assignments": }}", "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": , "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": +$/, \"\") }}.jpg" }, { "name": "content-type", "value": "={{ $binary.data.mimeType }}" } ] }, "sendBody": true, "contentType": "binaryData", "inputDataFieldName": "data", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": , "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": , "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?.json?.data;\n if (Array.isArray(videos)) {\n console.log(`Video Data Found at items:`, 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`, video);\n }\n });\n } else {\n console.log(`No video data found or data is not an array at items`);\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?.json?.imgData;\n if (Array.isArray(images)) {\n console.log(`Image Data Found at items:`, 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`, image);\n }\n });\n } else {\n console.log(`No image data found or imgData is not an array at items`);\n }\n}\n\n\n// **Extract Article Outline and Metadata**\narticleOutline = items?.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?.json?.articlePubdate || 'No publication date available';\narticleTitle = items?.json?.articleTitle || 'No title available';\narticleURL = items?.json?.articleURL || 'No URL available';\narticleCategorie = items?.json?.articleCategorie || 'No category available';\nsourceWebsiteName = items?.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" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "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": }, "options": { "temperature": 0.7 } }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": , "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": }, "jsonOutput": true, "options": {} }, "type": "@n8n/n8n-nodes-langchain.openAi", "typeVersion": 1.8, "position": , "id": "4f7361dc-eddf-46be-babc-67a3825dba29", "name": "Ready Article", "credentials": { "openAiApi": { "id": "jtLWrEq6HGCqOhD7", "name": "OpenAi account" } } }, { "parameters": { "jsCode": "const title = $json;\nconst content = $json;\n\n// Extract the first URL inside square brackets \nconst urlMatch = content.match(/\\]+)\\]/);\n\nlet featureImage = null;\nlet cleanedContent = content;\n\nif (urlMatch) {\n featureImage = urlMatch;\n // Remove the first occurrence of the URL including brackets\n cleanedContent = content.replace(urlMatch, \"\");\n}\n\nreturn ;\n" }, "type": "n8n-nodes-base.code", "typeVersion": 2, "position": , "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": +$/, \"\") }}.jpg" }, { "name": "content-type", "value": "={{ $binary.data.mimeType }}" } ] }, "sendBody": true, "contentType": "binaryData", "inputDataFieldName": "data", "options": {} }, "type": "n8n-nodes-base.httpRequest", "typeVersion": 4.2, "position": , "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": , "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": , "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": , "id": "af8f95a7-c711-42ef-870e-923ad7227261", "name": "Sticky Note2" } ], "pinData": {}, "connections": { "Images": { "main": ] }, "Videos": { "main": ] }, "GET All Images": { "main": ] }, "Loop Over Items": { "main": , ] }, "Aggregate": { "main": ] }, "Merge": { "main": ] }, "Aggregate2": { "main": ] }, "Schedule Trigger1": { "main": ] }, "Filter by URL": { "main": ] }, "Duplicate ArticleCheck": { "main": ] }, "RSS Read": { "main": ] }, "Get Website Name": { "main": ] }, "If": { "main": ] }, "Get Category ID": { "main": ] }, "Update New Data": { "main": ] }, "Publish Article": { "main": ] }, "Set New Category": { "main": ] }, "Update Embedding": { "main": ] }, "Limit Article": { "main": ] }, "fetch Article HTML": { "main": ] }, "Clean HTML": { "main": ] }, "Take Websites data": { "main": ] }, "Upload F img to WP": { "main": ] }, "GET F Image": { "main": ] }, "Structure the data": { "main": ] }, "Outline of article": { "main": ] }, "Ready Article": { "main": ] }, "Content & Title": { "main": ] }, "Upload Img to WP": { "main": ] } }, "active": true, "settings": { "executionOrder": "v1" }, "versionId": "aba5a79e-80c7-4ba4-b6a5-27de6d4de79d", "meta": { "templateCredsSetupCompleted": true, "instanceId": "1f1785d995b3fa32ab6b8219168659331dbe1459fee9ca0c94987e0285ae2676" }, "id": "Sx9MOcD0HnAk7o7E", "tags": } - [Let’s Talk Growth!](https://servevision.com/?p=1385): Let's Talk Growth! Your Name* Your Email* Phone* Message (optional)