# templates

name: Auto Categorise Outlook Emails with AI
author_name: Wayne Simpson
author_username: nocodecreative
categories: []
created_at: 2024-10-06T15:45:53.304Z
updated_at: 2024-10-06T15:45:53.304Z
url: https://n8n.io/workflows/2454
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:31
description:
  Automate your email management with this workflow, designed for freelancers and business professionals who receive high volumes of emails. By leveraging AI-powered categorisation and dynamic email processing, this template helps you organise your inbox and streamline communication for better efficiency and productivity.


  Check out the YouTube video for step-by-step set up instructions!

  How it works:

  Fetch & Filter Emails: The workflow retrieves emails from your Microsoft Outlook account, filtering out flagged emails and those already categorised.
  Content Preparation: Each email is cleaned up and converted to a structured format using Markdown, making it easier for AI processing.
  AI Categorization: The content is analysed using an AI model, which categorises the emails into predefined categories (e.g., Action, Junk, Business, SaaS) based on the context and content.
  Email Categorization & Folder Management: The categorised emails are updated in Microsoft Outlook and moved to respective folders such as "Junk Email" or "Receipts" based on the AI's classification.
  Conditional Processing & Final Checks: Additional checks and conditions ensure that only unread emails are processed, and errors are gracefully managed to maintain workflow stability.

  Set up steps:

  Connect Microsoft Outlook: Link your Microsoft Outlook account using the built-in credentials node to enable email fetching, updating, and folder management.
  Configure AI Model (Ollama API): Set up the AI model by connecting to the Ollama API and choosing your desired language model for categorisation.
  Modify Email Categories (Optional): Customize the categories and subcategories within the workflow to suit your unique email management needs.
  Set Up Error Handling: Review the error handling node settings to ensure smooth workflow execution.

  This template offers a robust solution for managing and organising your inbox, helping you save time and keep your focus on important emails.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOllama","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.splitInBatches","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.markdown","n8n-nodes-base.set","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.filter","n8n-nodes-base.if","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.microsoftOutlook","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.microsoftOutlook","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.merge","n8n-nodes-base.switch"]

workflow_json_compressed:
  [encoded data, 8028 characters]

metadata_json:
  {"categories":["automation","email management","productivity","AI integration"],"complexity":"medium","use_cases":["Automatic email triage and prioritisation","Move and organise emails into folders (e.g., Junk, Receipts)","Reduce inbox noise by filtering and categorising messages","Convert email content to structured Markdown for downstream processing","Batch-processing unread emails and applying conditional rules"],"estimated_setup_minutes":15,"required_services":["Microsoft Outlook account","Ollama API (or local Ollama model)","n8n (workflow runtime)"],"key_features":["Fetch and filter Outlook emails (exclude flagged/already categorised)","Clean and convert email content to Markdown for AI processing","AI-powered categorisation into customizable labels (Action, Junk, Business, SaaS, etc.)","Update Outlook message categories and move emails to appropriate folders","Batch processing and conditional checks to only handle unread messages and manage errors gracefully','Configurable categories and subcategories within the workflow"],"target_audience":["freelancers","business professionals","small business owners and office admins who handle high email volumes"]}


name: Check for Bargain Flights and get notified using Amadeus and Gmail
author_name: Jay Hartley
author_username: jay
categories: []
created_at: 2024-10-07T19:14:34.037Z
updated_at: 2024-10-07T19:14:34.037Z
url: https://n8n.io/workflows/2455
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  What this template does
  This workflow uses the Amadeus API, every day to check for bargain flights for an itinerary and price target of your choice. It then automatically emails you once it found a match.

  Setup
  Create an api account on https://developers.amadeus.com/
  In Amadeus Flight Search, connect to Oauth2 API:
    -- Grant Type - Client Credentials
    -- Access Token URL - https://test.api.amadeus.com/v1/security/oauth2/token
    -- Client ID/Secret - from your account
  Set your details in Gmail
  Set your desired Origin/Destination airports in FromTo
  Set the dates ahead you wish to search in Get Dates (default is 7 days and 14 days)
  Set the price target in Under Price

  How to test it
  After completing the setup steps above, just hit 'Test workflow'!

nodes_used:
  ["n8n-nodes-base.code","n8n-nodes-base.gmail","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.splitInBatches","n8n-nodes-base.wait","n8n-nodes-base.filter","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.httpRequest"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","notifications","travel","monitoring"],"complexity":"medium","use_cases":["Automatically monitor flight prices for a specific itinerary","Notify users when flight prices drop below a target","Automate daily travel deal searches","Alert travel agents or users about bargain fares"],"estimated_setup_minutes":20,"required_services":["Amadeus API (developer account, OAuth2 Client Credentials)","Gmail (to send notification emails)","n8n (workflow runner)"],"key_features":["Scheduled daily checks for flight prices","Configurable origin/destination and search date windows","Price threshold filter to trigger notifications","OAuth2 integration with Amadeus Flight Search API","Automatic email notifications via Gmail"],"target_audience":["frequent travelers / bargain hunters","travel agents and agents’ assistants","product managers or ops automating alerts for travel deals"]}


name: Text automations using Apple Shortcuts
author_name: Agent Studio
author_username: agentstudio
categories: []
created_at: 2024-10-08T10:31:27.965Z
updated_at: 2024-10-08T10:31:27.965Z
url: https://n8n.io/workflows/2456
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Overview
  This workflow answers user requests sent via Mac Shortcuts
  Several Shortcuts call the same webhook, with a query and a type of query
  Types of query are:
    translate to english
    translate to spanish
    correct grammar (without changing the actual content)
    make content shorter
    make content longer

  How it works
  Select a text you are writing
  Launch the shortcut
  The text is sent to the webhook
  Depending on the type of request, a different prompt is used
  Each request is sent to an OpenAI node
  The workflow responds to the request with the response from GPT
  Shortcut replace the selected text with the new one

  For a demo and setup instructions:

  How to use it
  Activate the workflow
  Download this Shortcut template
  Install the shortcut
  In step 2 of the shortcut, change the url of the Webhook
  In Shortcut details, "add Keyboard Shortcut" with the key you want to use to launch the shortcut
  Go to settings, advanced, check "Allow running scripts"
  You are ready to use the shortcut. Select a text and hit the keyboard shortcut you just defined

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.switch","n8n-nodes-base.respondToWebhook","n8n-nodes-base.webhook","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","text processing","productivity"],"complexity":"medium","use_cases":["Translate selected text to English or Spanish","Grammar correction without altering meaning","Shorten or lengthen content on demand","Inline text editing from macOS Shortcuts","Automating repetitive text editing tasks"],"estimated_setup_minutes":10,"required_services":["n8n instance with a reachable webhook endpoint (or tunneling like ngrok)","OpenAI (GPT) API access/key","macOS Shortcuts (on a Mac with Shortcut keyboard shortcut enabled)"],"key_features":["Accepts text from multiple Shortcuts via a single webhook","Switches prompts based on request type (translate, correct, shorten, lengthen)","Sends each request to OpenAI and returns the model response","Shortcut replaces the selected text with the returned text","Simple setup: change webhook URL in Shortcut and enable running scripts"],"target_audience":["writers and editors","content creators and translators","macOS power users who use Shortcuts for productivity automation"]}


name: Multi-Agent PDF-to-Blog Content Generation
author_name: Derek Cheung
author_username: derekcheungsa
categories: []
created_at: 2024-10-09T03:22:17.862Z
updated_at: 2024-10-09T03:22:17.862Z
url: https://n8n.io/workflows/2457
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:31
description:
  Purpose of workflow:

  The purpose of this workflow is to automatically transform complex, lengthy PDFs into concise, insightful blog posts. This process aims to make dense information more accessible and understandable to a broader audience.

  How it works:

  Multi-agent team:

  Working together to transform PDF to insightful blog
  Content Analyst: Extracts key information and structure from the PDF.
  Project Planner: Organizes the workflow and ensures efficient processing.
  Writers: Multiple agents that craft engaging content based on the analyzed information.
  Editor: Polishes the final output for accuracy, reliability, and readability.


  Step by step
  User inputs parameters via a n8n form (tone, word count, sections, PDF file).
  System extracts text from the PDF.
  Content Analyst AI agent analyzes the extracted text, identifying main topics and key points.
  Project Planner AI agent organizes the workflow, creating a structure for the blog post.
  Multiple Writer AI agents (based on the number of sections specified) each write a portion of the blog post.
  Editor AI agent combines all sections and polishes the final draft.
  Generates a title for the blog post.
  Final content is uploaded to a publishing Ghost platform

nodes_used:
  ["n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.formTrigger","n8n-nodes-base.extractFromFile","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.ghost","n8n-nodes-base.splitOut","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE62YTY/bNhCG/4qhs2fLjyE58qlB2i0KtE2AFu0hCIohOdxVY0sLWUETLPa/F3I2seuVvVbTiw/26OWjdz5I+r7ayMDV6r5q2u3AbZIfc7WqTDCWLXvrtNWSS4raa2WLzZgjcy7WOxJLPmLwpqY6xYK1M5RTijnmalkNsrlb8/CopylUD8uq7bJsq9Wb+6oZv45ZQgw5ArrkATla4KAcWEdKqSQlSqqWVcsbqVbVz9LfyCLd8t0g/XYxNMNaFtzmxSAfhnHFj3djWEst7NaByFu52oxPVcvqrts2Q9O11eqNMaSW6NXbZXXHPW9k1KtW9w+fNH6XfrsLNFf6YfmIqlSolTERhNkAko5AKRAU8mY0yqOLe9TrpuX1gvuhSWs5z5e6fIzn8CK8PZwRnZTCDGjZAUYKUItVECWaYkxGT3YP11K7uO76zeK3vrm5kf4kWun6zT7mgNCqz4B/S7ztune7JBdLxqhgwPrRouIYqAhBYoxO22Idjtm82HJj0JciNZCnAuhJQR2CAhujSyQYTaH9W33/Yeg5DYvSd5vFdbOWk68lnyKv+27zGHfwarO9ZyKbHTJoWzJgHTNESQUCx8xidMr+oIZf3Un74sfFy1seFj93WdZ6j/ltS+03e9Y1tzfplpv2ar0Z43ePNseJQLX0OANXigucSgGrMgJibSGWrAHJW40xK3YHpfLDbbc9Xbo3j78eAjk/0z8MdcEw+ucpADoiICQHOdSWS/LBhbwH+k7WcsODLIZu8Uff7NRP4W3v1s3w6v0RoZ5NqCPr6EgAtdKAFgmiKgpYcW2iLkjKH9RhboauvyCrfCPtEZsJF7Jd+S90gepktMrgCTVgcgpq5QKIK1lrTCqHsKd72cvOvXF2XsC4+/xpvTlKsrmwSa7wC2a2niRKAltyBnTsgAUDZOMMx2yjdfpMm3xVl4S5TaJQBaojQZJcAI1kiEkC6OAkJPY6MR942rWDtMPiRcvrj4ftMif1/yHzXhF5FQsUGwygdgIcigIXFEU2hpM5oHzdd39JGhav19y2ckmBdhNWaj23e0jFwMo7yMmEsYVqiEobiBLQUpLszcEU/3Vo0ruPi1+64fT83u5iHkMOR7dRSzsrzTYl0oYhB4mANRWgUisgo7NzXoVi/JmaNF9VlJrmj+7ai9QIGusa0EYNkUWgRFSCmjTletJJPdtKred6ybloZXOEjGPLhOKgtuPMtIJsmQJqPQln5sMFmglnxNpsMII2lEY4BZwzgzKoa61qnaOZhLOz4YxTM+GQxGrLBXJxEZAoABXWUJvsszjKrvaTcDgbzpq5cIKWFSsBCbUGNLWDGGKA7GxMFIrCwxP6kx15zgTUdHK09DL0H1+119ysq9XQv5czU5Fy1EIxAkanAH2xEEURaI6SYtHRRDVpp5ttJ9hLu+Ttskpd20oanxxDPh8TVvfVhptR7M397nZ0co/ehS2rps3yoVqph7dvH5ZfDJ+SufC6NKn7L4Qp8aOD4bTI0b44pXNyV5pUPI6eUjx7QpxUfXIfmpI9c72YFH0aP5nqU0eHSc2np6LVfcXNn2NbvecbefzuEv0nTx2vNXGDnbTl6LR7Gbd+FvxY9xzv8pnOefZdJ3b25/ieVNazi0zV5f/WtvrAhMuK/vwyU2Dn/tOYWOLh4R96Zr1YXBIAAA==

metadata_json:
  {"categories":["automation","content-generation","document-processing","integration"],"complexity":"complex","use_cases":["Convert long technical or research PDFs into concise blog posts","Automated content repurposing and summarization","Multi-author collaborative content generation","Automated publishing to Ghost CMS","Knowledge distillation for marketing or product teams"],"estimated_setup_minutes":60,"required_services":["LLM provider (e.g., OpenAI / other lmChat API)","Ghost CMS (publishing)","PDF storage/access (n8n file, S3, Google Drive, etc.)","n8n platform (for workflow orchestration)"],"key_features":["Multi-agent orchestration (analyst, planner, multiple writers, editor)","PDF text extraction and preprocessing","User-configurable inputs (tone, word count, sections)","Parallel section writing and merge/edit pipeline","Title generation and final polishing by an editor agent"],"target_audience":["Content teams and bloggers","Marketers and growth teams","Technical writers and researchers wanting to repurpose content into blogs"]}


name: Automated Agentic News Event Monitoring with perplexity.ai
author_name: Derek Cheung
author_username: derekcheungsa
categories: []
created_at: 2024-10-10T02:57:48.188Z
updated_at: 2024-10-10T02:57:48.188Z
url: https://n8n.io/workflows/2458
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  Purpose of workflow:
  The purpose of this workflow is to create a news reporter AI agent that automatically monitors specific news events and sends summary emails to the user. 

  This tool aims to keep users up-to-date with the latest happenings on topics of interest without the need to constantly check multiple news sources manually. It's particularly useful for investors or researchers who must stay informed about specific events that may impact their work or investments.

  How it works:
  It leverages the power of large language models, specifically Perplexity's (perplexity.ai) online models accessed through Open Router (openrouter.ai), to understand and summarize up-to-date news. 

  The workflow is scheduled to run at predetermined intervals (e.g., daily at 7 AM), automatically scanning for news on the specified topic, generating a summary, and sending it via email to the user.

  Setup:
  Sign up and generate an API key from Openrouter.ai This provides access to Perplexity's online language models
  Update Perplexity node with Openrouter.ai API key
  Specify the event/topic to monitor in the News Reporter node
  Activate workflow to turn on scheduling feature 

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.gmail","n8n-nodes-base.markdown","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent"]

workflow_json_compressed:
  H4sIAAAAAAAAE5WUTWvcMBCG/0rQ2drqy7LsU0uhpdAkpS29hKWMpNHGxJYX2yFZFv/34u0SO/sRNhdf5p3Xz4xmZktq7IEUW1LGrofo8JsnBRGZkCBBy5RLjj44yzVnMkivvAXwQerUoDTaqkyL3OTOBpWnwnjnrLeeDAmJjceOFHdbUo6WITOapUFR572lynBHjXCCGq9dyLRJJbMkIRFqJAX55e7RP1Z49bstVytsSUL6zXqMRBPpzppa6HDR7YWTbt10ZV82kRR3RrFEGrZMyBpaqLHHtiPFdvhv9gfbbqfjCzEke0zNuLVeaOo5MKocB2oyyKi1yljpNTqNE+bXGsrqLNtqH50RCSYuQhIL/oIkNXeZQkUzx1OqjFHUgvWUZ9JmeYoO2AzpGtoH3zzFs1T1JJiBcXUZ2ITlGQQmNacaFafK5UhNbh21wYJXPHDIZlg/sF1X+Fz2mwnsYzTxw0RXQVy5eyjjoqo/30N/u8b4qTzA5IIlmr0DU6bCYwBGg0wVVTl3FGTqqfcCchWkSVM5Yf4u+wovINx9v1f1AZ2+dODUxGfBppnMaBZyS5UVSC0LnqrcSsyUsrkUs73oS/ewubppekzP78RONGpe4+2eWLyjd47nIQgdqHFWU8V9Ti3njCotuJJCogM+sd3gU3f1E9dN288X9mwPYYWxP2ggO9vAFvt2cxu/jCtV9O0jHvVUD8uEuCZGdKPdmLd/z2JLaijHH9xtd3fpeHV38YSU0eMzKdiwXA7JtEunDA5G5aTBbOqLLYHy71j9I6zwuvFYvWV3pJ1ZJy9JZ1r+VvKO63XeqeqOz8jJAo/u9CmvM5QnDIfhH4qx3+WRBgAA

metadata_json:
  {"categories":["automation","integration","monitoring","AI/ML","data processing"],"complexity":"medium","use_cases":["Automated news monitoring and summarization","Investor/market event tracking","Research literature and breaking news alerts","PR/brand/competitive intelligence monitoring","Daily briefing/email digests"],"estimated_setup_minutes":20,"required_services":["OpenRouter (openrouter.ai) — to access Perplexity models","Perplexity.ai (online LLM models)","Email service (SMTP/Gmail/SendGrid or n8n Communication credentials)","n8n instance"],"key_features":["Scheduled scanning of news/events","Agentic LLM (Perplexity via OpenRouter) for understanding and summarization","Configurable event/topic to monitor","Automatic summary email delivery","Markdown-formatted summaries and internal notes (stickyNote/markdown nodes)"],"target_audience":["Investors and financial analysts","Researchers and academics","Journalists and newsroom teams seeking automated briefs`,`PR/marketing and competitive intelligence teams`,`Operations or product managers who need alerting on specific events"]}


name: Overlay or Watermark Images by Merging with Another Image
author_name: Marcel Claus-Ahrens
author_username: geckse
categories: []
created_at: 2024-10-10T19:40:59.737Z
updated_at: 2024-10-10T19:40:59.737Z
url: https://n8n.io/workflows/2459
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Instructions

  This automation overlays a background image with another image, making it easy to add watermarks or logos.

  You can use this automation to watermark your images by overlaying them with a transparent version of your logo. If you'd like to place your logo in a specific corner, feel free to adjust the position of the overlay image in the code node.

  How it Works

  Both images are downloaded, so we can process binary files (you can modify the source, tho.)
  We extract metadata, focusing on the dimensions of each image.
  The position of the overlay image is calculated (default: dead center of the background image).
  The two images are composited together.

  Limitations and Optimisation Opportunities

  The overlay image must be the same size or smaller than the background image for proper alignment.
  The overlay image does not automatically scale to match the proportions of the background image.

    
  Enjoy the workflow! ❤️  
  let the work flow — Workflow Automation & Development

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.editImage","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.editImage","n8n-nodes-base.editImage","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["image processing","automation","media"],"complexity":"medium","use_cases":["Add watermarks or logos to images","Batch overlaying for product photos or marketing assets","Automated image compositing in content pipelines","Positioning logos in specific corners or centers"],"estimated_setup_minutes":15,"required_services":["Accessible image sources (public URLs or file storage like S3/Google Drive)","Optional: HTTP/Webhook endpoints to receive images","n8n instance"],"key_features":["Downloads and processes binary images","Extracts image metadata (dimensions)","Calculates overlay position (default center, adjustable in code)","Composites/merges overlay onto background preserving transparency","Configurable for corner placement or custom positioning"],"target_audience":["Developers","Marketers","Content creators and designers producing branded assets for web or commerce"]}


name: Telegram Payment, Invoicing and Refund Workflow for Stars
author_name: Victor Gold
author_username: victorlucky
categories: []
created_at: 2024-10-12T20:46:43.895Z
updated_at: 2024-10-12T20:46:43.895Z
url: https://n8n.io/workflows/2461
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  This workflow provides a complete solution for handling Telegram Stars payments, invoicing and refunds using n8n. It automates the process of sending invoices, managing pre-checkout approvals, recording transactions, and processing refunds for stars, making it ideal for businesses using Telegram Stars for digital payments.

  What are Telegram Stars? Learn more here.

  Key Features

  Payment Handling**: Automate invoice creation and sending via Telegram, with pre-checkout approval for smooth payment processing.
  Refund Management: Simplify the refund process using user IDs and payment charge IDs from successful **Telegram Stars transactions.
  Transaction Recording**: Record all payment details, such as user information and payment charge IDs, in Google Sheets for transparent financial tracking.

  Who Can Use This Workflow?

  Developers and Businesses: Looking to implement **Telegram Stars as a payment system within Telegram.
  Service Providers**: Managing subscriptions, donations, or digital sales through Telegram automation.
  Use Cases

  Subscription Sales Automation**: Use the workflow to issue invoices and automatically process payments for recurring subscriptions.
  Infopreneurs and Marketers: Use the workflow for delivering lead magnets, tripwires, and further automating sales via **Telegram Stars.
  Course Sales Automation**: Automate invoicing and refunds for educational platforms selling online courses.
  Developers and Businesses: Looking to implement **Telegram Stars as a payment system within Telegram.
  Service Providers**: Managing subscriptions, donations, or digital sales through Telegram automation.
  Online Educational Platforms**: Automate billing for courses and handle refunds easily.

  Setup Instructions

  Replace the Telegram API credentials with your bot API token from BotFather.
  Customize invoice details, including product name, description, and payment amount.
  Connect your Google Sheets for storing transaction logs.
  Configure refund steps for easy processing of star refunds when needed.

  Note: The setup is very simple—just follow the instructions provided on the yellow sticky notes within the workflow and insert your data. All other nodes are pre-configured and require no additional customization. The entire setup process takes just 1 minute. I provided a short Loom record with an explanation.

  Extensibility

  This workflow can be further customized to include user profile management, payment analytics, or integration with external services like CRMs or accounting tools. Additional modules can be easily connected to manage advanced features like Telegram User Registration.

  Available Templates

  Telegram Bot Starter Template: A foundational setup for creating custom Telegram bots.
  Telegram User Registration Workflow: Automate user registration and data collection via Telegram.
  Telegram Payment and Refund Workflow for Stars**: Streamline your Telegram payment processing with stars, invoices, and refunds.

  Support and Updates

  This workflow is supported and regularly updated to stay compatible with the latest Telegram features and n8n improvements. If you encounter any issues, technical support is available to ensure smooth integration and setup.



  Key terms: Telegram Stars payment workflow, Telegram refund automation, n8n payment template, Google Sheets transaction logging, Telegram bot for payments, automated refunds on Telegram, Telegram Stars invoice workflow.

  Please reach out to Victor if you need further assistance with your n8n workflows and automation!

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.telegram","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.telegramTrigger","n8n-nodes-base.executeWorkflow","n8n-nodes-base.switch"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","payments","integration","chatbot"],"complexity":"medium","use_cases":["Subscription sales automation (recurring billing)","Donations and tipping via Telegram Stars","Infoproduct sales and lead-magnet delivery","Course sales and automated invoicing/refunds","General digital product sales and one-off purchases"],"estimated_setup_minutes":100,"required_services":["Telegram Bot API (BotFather token)","Google Sheets (for transaction logging)","n8n instance"],"key_features":["Create and send Telegram invoices with pre-checkout approval","Process and record Telegram Stars payments (capture payment charge IDs)","Automated refund handling using user IDs and payment charge IDs","Transaction logging to Google Sheets for auditing","Pre-configured nodes and sticky-note setup guidance for fast installability"],"target_audience":["Developers integrating Telegram payments","Small businesses and service providers using Telegram","Marketers and infopreneurs automating sales funnels and lead delivery/fulfillment"]}


name: Angie, Personal AI Assistant with Telegram Voice and Text
author_name: Derek Cheung
author_username: derekcheungsa
categories: []
created_at: 2024-10-14T19:22:24.351Z
updated_at: 2024-10-14T19:22:24.351Z
url: https://n8n.io/workflows/2462
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 19:30:33
description:
  How it works:

  This project creates a personal AI assistant named Angie that operates through Telegram. Angie can summarize daily emails, look up calendar entries, remind users of upcoming tasks, and retrieve contact information. The assistant can interact with users via both voice and text inputs. 

  Step-by-step:

  Telegram Trigger: The workflow starts with a Telegram trigger that listens for incoming message events. The system determines if the incoming message is voice or text. If voice, the voice file is retrieved and transcribed to text using OpenAI's API Speech to Text

  AI Assistant: The telegram request is passed to the AI assistant (Angie).

  Tools Integration: The AI assistant is equipped with several tools:

  Get Email: Uses Gmail API to fetch recent emails, filtering by date.
  Get Calendar: Retrieves calendar entries for specified dates.
  Get Tasks: Connects to a Baserow (open-source Airtable alternative) database to fetch to-do list items.
  Get Contacts: Also uses Baserow to retrieve contact information.

  Response Generation: The AI formulates a response based on the gathered information and sends back to the user on Telegram

nodes_used:
  ["n8n-nodes-base.googleCalendarTool","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.gmailTool","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.telegramTrigger","n8n-nodes-base.telegram","n8n-nodes-base.if","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.set","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.baserowTool","n8n-nodes-base.baserowTool","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE8VZa24cNxK+CpcJYBtojvvBfg0QJONXos3KMiLFsdcyDHazOEOrm5w02ZImygB7gUWwJ8jvxR5hb7MnyBEW7J63ZhwFiXd/SdNTXUV+9dXHKs4NrsEyPLzBUhnLVAlHHA9xmIYRi1gSxUEUABdlESSBH4mIU14wxkWUxBlEWVLQNAnzLC8LQfM4zHhZFrzgeO5hpTkYPHxzg6VzWaZ+GCXASB6wglCgKSkSkZAkYqkPHGIeldjDitWAh/hLrccVoMesAsVZgz1sZ1P3hcoU6TyTghkYjDu7pdmZ1hX28FQbaaVWePgm8H3fSzL/rYenrGE1WGiM266eOovuXyGh4gYP8WfSQm3um7auWTPzkLGssfc5s3Ama3jwwK1C1nAslTO+uflUNLoeHd0/x87mHHvn2E4AuQ+ICQsNuprIcoKsRgKs+2cCqAZj2BgMkgoJ3dTMotevX78mx8fkyZOzr74aHh8PT0/P8YP53KFYLhEY3uB375oKD23TgodrzR0clTQWe/iSVa37yKGBi3ICrRob9sW4ZrIalLrGzk85Af4NmLayz3uMDxnPPayn0LAeQjwGO6qqbi0NcFBWsqrDbRv7k1FrJ+FoKjsyuYx/f539mb94RY/iVxd5SZOD2UWsLHWrLJ7P+zy/hMZ0wYNBMPcW7ngYZmkBjHDHHRpkPskAEhLHnLIiYFnO2TrEd1JxfYUetUJAg46h1s1szaIvVKYerqlUMTUuJ0yqQd0Z9m/1Lrb5lCb76WTAuBV/DbOeGujT+/f+Io2FLslIqlLXUo0RXIKy5t6DgZCNsfcfDN4b7aJ2nBg4Pg0kR/M59pYuj/hZv+ayNVbXLsJtlMIVSoLlcZxGAclccVGgnGSJTwlnRSzikANk6UYiwKKnLvGHC8x9e7uusmw/DkJWy38rVkB15ArrDT56/ujkFfbwt8+/eTp6gt96uAHGTy2zrSu8VrmP2D0tQV4CH7nq+d8V2d3o7pDoWb6iuNXvT6Y/PP3+2bTh16dbFHfWh4kdbhCbJnEQCJqSIMlSQssCCAMakBKK0I+BByII1o5PpqBGR+jxhFl0rDlUd2B1VTvz7k25nceE7s9j3Xke4vHUEqpJLZV7cS2a89v46M79pgDE+jVkj6/fp5U8eTH6+mK9iSdOetDZnoJfoZJQAZTygjAR5IRGUJBciIBw8FkashwSGq8dHq61g8y2UMG4YfVZI8djaLZxIUHie1HigLmCYqL1RXcuRmHISwgyIvIICBVZQoq8CEgU+XEc5EWaRRTvYtlOHVm7Oljw0hUA47wLxqpni/NnH6jLRW7CenLp++WZb+mEjp7Zv/prFM4W1h8Q1BW+EMWlT4UgzI99QuOEkqwMChIXYVjEcZKlobjt+VfRdCxRT5tGu/IttbJStdB9PmnttLU7x3OYLWHexszCtV0qaSeRunu7V8ZywmyXjj9GaPdkwq3GwLvFIXvMmguur5SznU5B8ZG1jSzafhOCVQb+F6nbkAxI84BTkZGwdMVRBpSwNAAS5cynIgwhp3Tt+0gcTJsU2wkJ/f352Kh8z6W1R2y3k7pcyZuHKxD25aIt6foPA6egXKBLWDYx3f5YJflSfI1tZGk78dV1IRWzHY+YcofDZthlV8n8QuSpwyBMQ0LdmceKqCDAWSLSglLBM7wUeN11UQsgXCg1xtviD/XUujbBSDWuYLF8t9b59obWvFwyyhG2p1Mjx5P1zudv92j/+riOCx6kWcZIxP2MUCgikoEfkaiELBSU8pBtHNenU4D+qDtz9fHrwq/3SX54hxQ3YHTblM45a7nUOzjZhilTNrKAPQflH3MQDKIVSEWSspDlEYmDtCA0yYEwxiiJwpKGYRr4KY3WLl9qWQLSzQ5GO8Q3sCNFdD8qYiUJXY/dU28RyfYBeibdosbnS2583pPjxx/ROT7HjiTzt/Pdw3Rr89EGQ7LAj8soFyQH1x3QkpI8DGJSRGmaCr+gQUK3G7oegGeygruo9QYE0QExFrKCO+utm6G2xfbSrWfgnLxbSu4GvdzzPST6mOqZxnmRp7EgPEhLQqMsISwuIhKENIiEHyWB2IB0pMYSPDQ6QiNjpBuSLfrl53/885eff/r3f/72919+/ulfd6hENga1w7j0rmffWls2tNbMjIX6eNFQDPFnr3WLWAOIoQlUU9FWiC3XOzhX5+pMcza7Z/rOWRrk3Ct9hebz7usvW8mhkgrM8FwR9N3EZdg11F12XTdrPNS390i3FjE1Q9NG17o/OhcmA7R6uR+j5Q+b70tVVi0HdAqKQ+OhxfK7NXnItMV7KK2HmOKoaCSIhZMZ0qL3MXDupeia/NZAg7jkSGmLzBRKKWaILfanOpMGvm/BWIdEW4N7NOsxMhduWY7B1sHivH5rALniaPQVslpXTmaZMlfQoM6JAx6xwu3dMnNhVhvtjZy/Xbvl8L6oji38+kfIuj6ea3XPIjadVjMX1a186WqA0DPdILhm9bQCb+s7l8U+0MLZaj8e0qqaoQacxytpJ7csBuhJF7R2NacVEq1tG1iaSYGkvWdQrRuHGlMoQFcAF4hdsW7+dJmf2sVkykFIBXvG0mR9zsVRWqZpSoTvR4QmaUQKmjFC8zxifhn4cbhRzqdWlhcz9FzbwxJmOpuFyVYH44V7iqrUlTv+Yw9fSW4neEjzZBDGHp6AO6/xMEyzQRp3XYZ1pTrEn3yCXjS6BGPQSl++6Ql1rm7vdj3P+ZCHSZqTgqaM0DCISFGEEYlExv0soXEuwg3pclw6uMsFIfdcbAXh/snNsqJX6ygNg5R6bmxmzo17FtCE5slmy3vyoZFuEX1Tg9+b8eix8l9ej17oJ/7TjY08WtTOHWaPOPWZn7gbwDgNXNdTkpwLINQPKS1i5hfhxlXOY60sKz8wyR0GKTww3m6DlO4HiYNrcTp8FkSvmWpZN3BrXT1Zf42H+FsDTnJdfY3BWqcGZb9uJFV/BXGrmhey6HqV6UQrQKqtC2jMAP/fM5SKIuB5zAjLeEKoT32Sh2lA4iBPwzwpIN28bNuo1/g3FyxxDWkY3qFkoywZ5GEeUhrkaZ4n+bp6oywfpFmYZK4Z9CPf5W+rkk/dXS6aQANDdGphSopZ9xe91q1tC0BnrdWNZBUaumvfoTsS3/zpzaNWVtwlkynXAbyAxnSn3aoVeHt/Yu3UDB8+lPV4MOuduWvUh5fy4fTVe331okxehuah4RwEays7eD8dP1i/1r0yKGDT+MFefXnbbUlBueoBjkR3V8PchfQb15f28+qhJrAz9LBUHK7x0J+/9dbv/KYu55Yj18/2Qja8wUy+c/WxtaTf5H7pYDfCSgg+ZpD1lejHjLI9pOxL4ubQvhfvnSzv83FoXtzrb8d4n7/fT5Ld33U+Jsa3b0r7aK4pb9kYFs9+R9htT7vx9/4E0S+hXnz4HbHr5U8a20E/cBG6L6MHhuW9ubvLCvfFuH13uMf9fP5fuqgXeYscAAA=

metadata_json:
  {"categories":["automation"],"complexity":"medium","use_cases":["Process automation"],"estimated_setup_minutes":30,"required_services":[],"key_features":["Workflow automation"],"target_audience":["developers"]}


name: Enrich Company Data from Google Sheet with OpenAI Agent and ScrapingBee
author_name: Dataki
author_username: dataki
categories: []
created_at: 2024-10-16T15:54:36.622Z
updated_at: 2024-10-16T15:54:36.622Z
url: https://n8n.io/workflows/2463
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-30 08:33:37
description:
  This workflow demonstrates how to enrich data from a list of companies in a spreadsheet. While this workflow is production-ready if all steps are followed, adding error handling would enhance its robustness.

  Important notes

  Check legal regulations**: This workflow involves scraping, so make sure to check the legal regulations around scraping in your country before getting started. Better safe than sorry!
  Mind those tokens**: OpenAI tokens can add up fast, so keep an eye on usage unless you want a surprising bill that could knock your socks off! 💸

  Main Workflow

  Node 1 - Webhook
  This node triggers the workflow via a webhook call. You can replace it with any other trigger of your choice, such as form submission, a new row added in Google Sheets, or a manual trigger.

  Node 2 - Get Rows from Google Sheet
  This node retrieves the list of companies from your spreadsheet. 
  here is the Google Sheet Template you can use.
  The columns in this Google Sheet are:

  Company**: The name of the company
  Website**: The website URL of the company  
    These two fields are required at this step.

  Business Area**: The business area deduced by OpenAI from the scraped data
  Offer**: The offer deduced by OpenAI from the scraped data
  Value Proposition**: The value proposition deduced by OpenAI from the scraped data
  Business Model**: The business model deduced by OpenAI from the scraped data
  ICP**: The Ideal Customer Profile deduced by OpenAI from the scraped data
  Additional Information**: Information related to the scraped data, including:
    Information Sufficiency:
      Description: Indicates if the information was sufficient to provide a full analysis.
      Options: "Sufficient" or "Insufficient"
    Insufficient Details:
      Description: If labeled "Insufficient," specifies what information was missing or needed to complete the analysis.
    Mismatched Content:
      Description: Indicates whether the page content aligns with that of a typical company page.
    Suggested Actions:
      Description: Provides recommendations if the page content is insufficient or mismatched, such as verifying the URL or searching for alternative sources.

  Node 3 - Loop Over Items
  This node ensures that, in subsequent steps, the website in "extra workflow input" corresponds to the row being processed. You can delete this node, but you'll need to ensure that the "query" sent to the scraping workflow corresponds to the website of the specific company being scraped (rather than just the first row).

  Node 4 - AI Agent
  This AI agent is configured with a prompt to extract data from the content it receives. The node has three sub-nodes:
    
    OpenAI Chat Model: The model used is currently gpt4-o-mini.
    Call n8n Workflow: This sub-node calls the workflow to use ScrapingBee and retrieves the scraped data.
    Structured Output Parser: This parser structures the output for clarity and ease of use, and then adds rows to the Google Sheet.

  Node 5 - Update Company Row in Google Sheet
  This node updates the specific company's row in Google Sheets with the enriched data.

  Scraper Agent Workflow

  Node 1 - Tool Called from Agent
  This is the trigger for when the AI Agent calls the Scraper. A query is sent with:
  Company name
  Website (the URL of the website)

  Node 2 - Set Company URL
  This node renames a field, which may seem trivial but is useful for performing transformations on data received from the AI Agent.

  Node 3 - ScrapingBee: Scrape Company's Website
  This node scrapes data from the URL provided using ScrapingBee. You can use any scraper of your choice, but ScrapingBee is recommended, as it allows you to configure scraper behavior directly. Once configured, copy the provided "curl" command and import it into n8n.

  Node 4 - HTML to Markdown
  This node converts the scraped HTML data to Markdown, which is then sent to OpenAI. The Markdown format generally uses fewer tokens than HTML.

  Improving the Workflow
  It's always a pleasure to share workflows, but creators sometimes want to keep some magic to themselves ✨. Here are some ways you can enhance this workflow:

  Handle potential errors
  Configure the scraper tool to scrape other pages on the website. Although this will cost more tokens, it can be useful (e.g., scraping "Pricing" or "About Us" pages in addition to the homepage).
  Instead of Google Sheets, connect directly to your CRM to enrich company data.
  Trigger the workflow from form submissions on your website and send the scraped data about the lead to a Slack or Teams channel.

nodes_used:
  ["@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.splitInBatches","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.set","n8n-nodes-base.markdown","n8n-nodes-base.webhook"]

workflow_json_compressed:
  [encoded data, 6908 characters]

metadata_json:
  {"categories":["automation","integration","data enrichment","web scraping","AI/ML"],"complexity":"medium","use_cases":["Enrich company records from a spreadsheet","Lead enrichment for sales/marketing","Data augmentation for research and market intelligence","Automated web data extraction and consolidation"],"estimated_setup_minutes":45,"required_services":["Google Sheets","OpenAI (GPT) or compatible LLM","ScrapingBee (or other scraping service)","n8n"],"key_features":["Read company list from a Google Sheet","Use an OpenAI agent to interpret/enrich company info","Scrape target websites via ScrapingBee to gather public data","Batch processing (splitInBatches) and structured output parsing","Write enriched data back to the spreadsheet and orchestrate subworkflows"],"target_audience":["data engineers","growth marketers","sales operations teams (lead enrichment)」、「analysts"]}


name: Scale Deal Flow with a Pitch Deck AI Vision, Chatbot and QDrant Vector Store
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2024-10-17T10:06:00.333Z
updated_at: 2024-10-17T10:06:00.333Z
url: https://n8n.io/workflows/2464
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  Are you a popular tech startup accelerator (named after a particular higher order function) overwhelmed with 1000s of pitch decks on a daily basis? Wish you could filter through them quickly using AI but the decks are unparseable through conventional means? Then you're in luck!

  This n8n template uses Multimodal LLMs to parse and extract valuable data from even the most overly designed pitch decks in quick fashion. Not only that, it'll also create the foundations of a RAG chatbot at the end so you or your colleagues can drill down into the details if needed. With this template, you'll scale your capacity to find interesting companies you'd otherwise miss!

  Requires n8n v1.62.1+

  How It Works

  Airtable is used as the pitch deck database and PDF decks are downloaded from it.
  An AI Vision model is used to transcribe each page of the pitch deck into markdown.
  An Information Extractor is used to generate a report from the transcribed markdown and update required information back into pitch deck database.
  The transcribed markdown is also uploaded to a vector store to build an AI chatbot which can be used to ask questions on the pitch deck.

  Check out the sample Airtable here: https://airtable.com/appCkqc2jc3MoVqDO/shrS21vGqlnqzzNUc

  How To Use
  This template depends on the availability of the Airtable - make a duplicate of the airtable (link) and its columns before running the workflow.
  When a new pitchdeck is received, enter the company name into the Name column and upload the pdf into the File column. Leave all other columns blank.
  If you have the Airtable trigger active, the execution should start immediately once the file is uploaded. Otherwise, click the manual test trigger to start the workflow.
  When manually triggered, all "new" pitch decks will be handled by the workflow as separate executions.

  Requirements
  OpenAI for LLM
  Airtable For Database and Interface
  Qdrant for Vector Store

  Customising This Workflow

  Extend this starter template by adding more AI agents to validate claims made in the pitch deck eg. Linkedin Profiles, Page visits, Reviews etc.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.sort","n8n-nodes-base.httpRequest","n8n-nodes-base.compression","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.editImage","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.embeddingsOpenAi","n8n-nodes-base.httpRequest","n8n-nodes-base.merge","n8n-nodes-base.airtable","n8n-nodes-base.airtable","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.executeWorkflow","n8n-nodes-base.noOp","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.extractFromFile","n8n-nodes-base.convertToFile","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolVectorStore","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.informationExtractor","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.airtableTrigger","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.informationExtractor","@n8n/n8n-nodes-langchain.vectorStoreQdrant","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.stickyNote","n8n-nodes-base.airtableTool","@n8n/n8n-nodes-langchain.chatTrigger","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 15580 characters]

metadata_json:
  {"categories":["automation","integration","document processing","AI/ML","retrieval-augmented-generation"],"complexity":"complex","use_cases":["Automated ingestion and parsing of PDF pitch decks","Extract structured data from unstructured slide content","Build a RAG chatbot for drill‑down Q&A on decks","Scale screening/filtering of startup applications for accelerators or VCs","Populate and update Airtable records from AI-extracted data"],"estimated_setup_minutes":45,"required_services":["OpenAI (Multimodal LLM + embeddings)","Airtable","Qdrant (vector store)"],"key_features":["Multimodal OCR/vision -> transcribe deck pages to markdown","Information extraction to produce structured reports and update Airtable","Generate embeddings and store in Qdrant for similarity search","Create foundations of a RAG chatbot to query individual decks","Supports manual or Airtable-triggered batch processing"],"target_audience":["startup accelerators and incubators","venture scouts and investors","program managers screening applications/DEI teams handling intake volumes larger datasets)] } సహ Unexpected trailing text?richment"]}


name: Building Your First WhatsApp Chatbot
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2024-10-17T10:20:43.714Z
updated_at: 2024-10-17T10:20:43.714Z
url: https://n8n.io/workflows/2465
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 19:21:14
description:
  This n8n template builds a simple WhatsApp chabot acting as a Sales Agent. The Agent is backed by a product catalog vector store to better answer user's questions.

  This template is intended to help introduce n8n users interested in building with WhatsApp.

  How it works
  This template is in 2 parts: creating the product catalog vector store and building the WhatsApp AI chatbot.
  A product brochure is imported via HTTP request node and its text contents extracted.
  The text contents are then uploaded to the in-memory vector store to build a knowledgebase for the chatbot.
  A WhatsApp trigger is used to capture messages from customers where non-text messages are filtered out.
  The customer's message is sent to the AI Agent which queries the product catalogue using the vector store tool.
  The Agent's response is sent back to the user via the WhatsApp node.

  How to use

  Once you've setup and configured your WhatsApp account and credentials
  First, populate the vector store by clicking the "Test Workflow" button.
  Next, activate the workflow to enable the WhatsApp chatbot.
  Message your designated WhatsApp number and you should receive a message from the AI sales agent.
  Tweak datasource and behaviour as required.

  Requirements
  WhatsApp Business Account
  OpenAI for LLM

  Customising this workflow

  Upgrade the vector store to Qdrant for persistance and production use-cases.
  Handle different WhatsApp message types for a more rich and engaging experience for customers.

nodes_used:
  ["n8n-nodes-base.whatsAppTrigger","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.toolVectorStore","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.manualTrigger","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","n8n-nodes-base.extractFromFile","n8n-nodes-base.httpRequest","n8n-nodes-base.whatsApp","n8n-nodes-base.whatsApp","@n8n/n8n-nodes-langchain.vectorStoreInMemory","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.vectorStoreInMemory","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent"]

workflow_json_compressed:
  [encoded data, 6484 characters]

metadata_json:
  {"categories":["automation"],"complexity":"medium","use_cases":["Process automation"],"estimated_setup_minutes":30,"required_services":[],"key_features":["Workflow automation"],"target_audience":["developers"]}


name: Respond to WhatsApp Messages with AI Like a Pro!
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2024-10-17T10:39:09.932Z
updated_at: 2024-10-17T10:39:09.932Z
url: https://n8n.io/workflows/2466
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 19:27:09
description:
  This n8n template demonstrates the beginnings of building your own n8n-powered WhatsApp chatbot! Under the hood, utilise n8n's powerful AI features to handle different message types and use an AI agent to respond to the user. A powerful tool for any use-case!

  How it works
  Incoming WhatsApp Trigger provides a way to get messages into the workflow.
  The message received is extracted and sent through 1 of 4 branches for processing.
  Each processing branch uses AI to analyse, summarize or transcribe the message so that the AI agent can understand it. The supported types are text, image, audio (voice notes) and video.
  The AI Agent is used to generate a response generally and uses a wikipedia tool for more complex queries.
  Finally, the response message is sent back to the WhatsApp user using the WhatsApp node.

  How to use
  Once you have setup and configured your WhatsApp account, you'll need to activate your workflow to start processing messages.

  Good to know: Large media files may negatively impact workflow performance.

  Requirements
  WhatsApp Buisness account
  Google Gemini for LLM. Gemini is used specifically because it can accept audio and video files whereas at time of writing, many other providers like OpenAI's GPT, do not.

  Customising this workflow
  For performance reasons, consider detecting large audio and video before sending to the LLM. Pre-processing such files may allow your agent to perform better.
  Go beyond and create rich and engagement customer experiences by responding using images, audio and video instead of just text!

nodes_used:
  ["n8n-nodes-base.whatsAppTrigger","n8n-nodes-base.whatsApp","n8n-nodes-base.whatsApp","n8n-nodes-base.whatsApp","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.set","n8n-nodes-base.splitOut","@n8n/n8n-nodes-langchain.toolWikipedia","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.whatsApp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.set","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.agent"]

workflow_json_compressed:
  [encoded data, 7204 characters]

metadata_json:
[cell repeats an earlier one in this file: 210 characters]


name: Narrating over a Video using Multimodal AI
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2024-10-17T10:45:39.624Z
updated_at: 2024-10-17T10:45:39.624Z
url: https://n8n.io/workflows/2467
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  This n8n template takes a video and extracts frames from it which are used with a multimodal LLM to generate a script. The script is then passed to the same multimodal LLM to generate a voiceover clip.

  This template was inspired by Processing and narrating a video with GPT's visual capabilities and the TTS API

  How it works
  Video is downloaded using the HTTP node.
  Python code node is used to extract the frames using OpenCV.
  Loop node is used o batch the frames for the LLM to generate partial scripts.
  All partial scripts are combined to form the full script which is then sent to OpenAI to generate audio from it.
  The finished voiceover clip is uploaded to Google Drive.

  Sample the finished product here: https://drive.google.com/file/d/1-XCoii0leGB2MffBMPpCZoxboVyeyeIX/view?usp=sharing

  Requirements

  OpenAI for LLM
  Ideally, a mid-range (16GB RAM) machine for acceptable performance!

  Customising this workflow

  For larger videos, consider splitting into smaller clips for better performance
  Use a multimodal LLM which supports fully video such as Google's Gemini.

nodes_used:
  ["@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.httpRequest","n8n-nodes-base.convertToFile","n8n-nodes-base.manualTrigger","n8n-nodes-base.aggregate","n8n-nodes-base.googleDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.splitInBatches","n8n-nodes-base.editImage","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.chainLlm"]

workflow_json_compressed:
  [encoded data, 6856 characters]

metadata_json:
  {"categories":["automation","multimedia processing","AI/ML","content creation"],"complexity":"complex","use_cases":["Generate narrated voiceovers for videos","Automated content repurposing for social media","Accessibility audio descriptions for visuals","Batch processing of video segments with LLM-driven scripts","Rapid prototyping of narrated video content"],"estimated_setup_minutes":45,"required_services":["OpenAI API or another multimodal LLM with vision and TTS (e.g., Gemini)","Google Drive API (for uploading finished audio)","HTTP-accessible video source (or hosting)","n8n instance with Python execution capability","Machine with Python + OpenCV installed (recommended: ~16 GB RAM)"],"key_features":["Download video via HTTP and extract frames with OpenCV","Batch frames and invoke a multimodal LLM to generate partial scripts","Aggregate partial scripts into a full narration","Use LLM/TTS to synthesize voiceover audio","Upload finished voiceover to Google Drive from n8n"],"target_audience":["Video creators and editors","Content marketers and social media managers","Developers and automation engineers building AI workflows\",\"Accessibility specialists and producers of descriptive audio"]}


name: Automate Customer Support Issue Resolution using AI Text Classifier
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2024-10-17T12:00:39.983Z
updated_at: 2024-10-17T12:00:39.983Z
url: https://n8n.io/workflows/2468
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:31
description:
  This n8n template is designed to assist and improve customer support team member capacity by automating the resolution of long-lived and forgotten JIRA issues.

  How it works

  Schedule Trigger runs daily to check for long-lived unresolved issues and imports them into the workflow.
  Each Issue is handled as a separate subworkflow by using an execute workflow node. This allows parallel processing.
  A report is generated from the issue using its comment history allowing the issue to be classified by AI - determining the state and progress of the issue.
  If determined to be resolved, sentiment analysis is performed to track customer satisfaction. If negative, a slack message is sent to escalate, otherwise the issue is closed automatically.
  If no response has been initiated, an AI agent will attempt to search and resolve the issue itself using similar resolved issues or from the notion database. If a solution is found, it is posted to the issue and closed.
  If the issue is blocked and waiting for responses, then a reminder message is added.

  How to use

  This template searches for JIRA issues which are older than 7 days which are not in the "Done" status. Ensure there are some issues that meet this criteria otherwise adjust the search query to suit.
  Works best if you frequently have long-lived issues that need resolving.
  Ensure the notion tool is configured as to not read documents you didn't intend it to ie. private and/or internal documentation.

  Requirements

  JIRA for issues management
  OpenAI for LLM
  Slack for notifications

  Customising this workflow

  Why not try classifying issues as they are created? One use-case may be for quality control such as ensuring reporting criteria is adhered to, summarising and rephrasing issue for easier reading or adjusting priority.

nodes_used:
  ["@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.jira","n8n-nodes-base.jira","n8n-nodes-base.jira","n8n-nodes-base.aggregate","n8n-nodes-base.jira","n8n-nodes-base.jira","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.jira","n8n-nodes-base.if","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.set","n8n-nodes-base.slack","n8n-nodes-base.jira","n8n-nodes-base.jira","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.sentimentAnalysis","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.stickyNote","n8n-nodes-base.jiraTool","n8n-nodes-base.notionTool","n8n-nodes-base.slack","@n8n/n8n-nodes-langchain.textClassifier"]

workflow_json_compressed:
  [encoded data, 9968 characters]

metadata_json:
  {"categories":["automation","integration","AI-assisted support","ticketing/issue management"],"complexity":"complex","use_cases":["Automatically identify and resolve long-lived JIRA issues","AI classification and triage of issue progress/state","Automated sentiment analysis and escalation of negative customer responses","Auto-closing issues when solved and posting solutions from knowledge base","Reminding stakeholders for blocked or awaiting-response issues"],"estimated_setup_minutes":60,"required_services":["JIRA","OpenAI (LLM API)","Slack","Notion (or other knowledge-base)","n8n platform"],"key_features":["Daily scheduled scan for unresolved/old JIRA issues","Parallel per-issue subworkflows (executeWorkflow)","AI-generated issue reports and state classification","Sentiment analysis to decide escalation vs auto-close","AI agent that searches resolved issues and Notion for solutions and posts them back to JIRA when found"],"target_audience":["Customer support teams","Support managers and triage owners","SRE/engineering teams handling backlog cleanup due to long-lived issues`,`Automation engineers and n8n users implementing workflow orchestration"]}


name: Nightly n8n backup to Google Drive
author_name: Jeyson Orozco
author_username: jeyson-orozco
categories: []
created_at: 2024-10-18T23:12:10.766Z
updated_at: 2024-10-18T23:12:10.766Z
url: https://n8n.io/workflows/2469
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  Description
  This template creates a nightly backup of all n8n workflows and saves them to a Google Drive folder. Each night, the previous night's backups are moved to an “n8n_old” folder and renamed with the corresponding date.

  Backups older than a specified age are automatically deleted (this feature is active for 30 days, you can remove it if you don't want the backups to be deleted).

  Prerequisites

  Google Drive account and credentials Get from the following link. Link
  n8n version from v 1.63.4 to 1.70.1 or higher
  N8n api key Guide from the following link. Link
  A destination folder for backups:
  “n8n_old”
  “n8n_backups”
  (if it doesn't exist, create it)

  Configuration
  Update all Google Drive nodes with your credentials.
  Edit the Schedule Trigger node with the desired time to run the backup.

  If you want to automatically purge old backups.
  Edit the “PURGE DAYS” node to specify the age of the backups you want to delete.
  Enable the “PURGE DAYS” node and the 3 subsequent nodes.
  Enable the workflow to run on the specified schedule.

  Last updated
  January 2025

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.moveBinaryData","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.filter","n8n-nodes-base.googleDrive","n8n-nodes-base.googleDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.googleDrive","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.if","n8n-nodes-base.googleDrive","n8n-nodes-base.merge","n8n-nodes-base.googleDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.googleDrive","n8n-nodes-base.googleDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.itemLists","n8n-nodes-base.splitInBatches","n8n-nodes-base.splitInBatches","n8n-nodes-base.n8n","n8n-nodes-base.googleDrive","n8n-nodes-base.googleDrive","n8n-nodes-base.itemLists","n8n-nodes-base.splitInBatches","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.scheduleTrigger"]

workflow_json_compressed:
  [encoded data, 5760 characters]

metadata_json:
  {"categories":["backup","automation","integration","operations"],"complexity":"medium","use_cases":["Automated nightly backups of n8n workflows","Offsite storage of workflow exports to Google Drive","Retention and cleanup of old backups","Disaster recovery and versioned backups"],"estimated_setup_minutes":15,"required_services":["Google Drive account (Drive API/credentials)","n8n instance (v1.63.4 to v1.70.1 or higher) with API key"],"key_features":["Scheduled nightly export of all n8n workflows","Saves backups to a specified Google Drive folder","Moves previous backups to an \"n8n_old\" folder and appends date to filenames","Configurable automatic purge of backups older than specified days","Configurable schedule and purge period via nodes"],"target_audience":["n8n administrators","DevOps / SREs","Platform engineers managing n8n deployments"]}


name: create single new masked email address with fastmail
author_name: Vitali
author_username: vquie
categories: []
created_at: 2024-10-19T18:36:55.889Z
updated_at: 2024-10-19T18:36:55.889Z
url: https://n8n.io/workflows/2471
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:33
description:
  Template Description
  This n8n workflow template allows you to create a masked email address using the Fastmail API, triggered by a webhook. This is especially useful for generating disposable email addresses for privacy-conscious users or for testing purposes.

  Workflow Details:
  Webhook Trigger: The workflow is initiated by sending a POST request to a specific webhook. You can include state and description in your request body to customize the masked email's state and description.
  Session Retrieval: The workflow makes an HTTP request to the Fastmail API to retrieve session information. It uses this data to authenticate further requests.
  Create Masked Email: Using the retrieved session data, the workflow sends a POST request to Fastmail's JMAP API to create a masked email. It uses the provided state and description from the webhook payload.
  Prepare Output: Once the masked email is successfully created, the workflow extracts the email address and attaches the description for further processing.
  Respond to Webhook: Finally, the workflow responds to the original POST request with the newly created masked email and its description.

  Requirements:
  Fastmail API Access**: You will need valid API credentials for Fastmail configured with HTTP Header Authentication.
  Authorization Setup**: Optionally set up authorization if your webhook is exposed to the internet to prevent misuse.
  Custom Webhook Request**: Use a tool like curl or create a shortcut on macOS/iOS to send the POST request to the webhook with the necessary JSON payload, like so:
    
      curl -X POST -H 'Content-Type: application/json' https://your-n8n-instance/webhook/87f9abd1-2c9b-4d1f-8c7f-2261f4698c3c -d '{"state": "pending", "description": "my mega fancy masked email"}'
    
  This template simplifies the process of integrating masked email functionality into your projects or workflows and can be extended for various use cases.

  Feel free to use the companion shortcut I've also created. Please update the authorization header in the shortcut if needed.

  https://www.icloud.com/shortcuts/ac249b50eab34c04acd9fb522f9f7068

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.respondToWebhook","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.webhook"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["integration","automation","email","privacy"],"complexity":"medium","use_cases":["Create disposable/masked email addresses for privacy","On-demand masked email generation for testing","Automated signup workflows that require per-user masked emails","Integrating Fastmail masked emails into apps or shortcuts"],"estimated_setup_minutes":15,"required_services":["Fastmail API (JMAP) with valid API credentials","n8n instance (publicly reachable webhook or tunneling like ngrok)","Optional: webhook security/authorization layer"],"key_features":["Webhook-triggered creation of a single masked email","Session retrieval from Fastmail to authenticate JMAP requests","Customizable masked email state and description via webhook payload","Returns the created masked email and description in the webhook response","Easily extensible within n8n for further processing"],"target_audience":["Developers","Automation engineers","Privacy-conscious users integrating masked emails into apps/shortcuts"]}


name: Generate SEO Seed Keywords Using AI
author_name: simonscrapes
author_username: simonscrapes
categories: []
created_at: 2024-10-20T15:48:43.894Z
updated_at: 2024-10-20T15:48:43.894Z
url: https://n8n.io/workflows/2473
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:31
description:
  What this workflow does:
  This flow uses an AI node to generate Seed Keywords to focus SEO efforts on based on your ideal customer profile. You can use these keywords to form part of your SEO strategy.

  Outputs:
  List of 20 Seed Keywords

  Setup
  Fill the Set Ideal Customer Profile (ICP)
  Connect with your credentials
  Replace the Connect to your own database with your own database

  Pre-requisites / Dependencies
  You know your ideal customer profile (ICP)
  An AI API account (either OpenAI or Anthropic recommended)

  More templates and n8n workflows &gt;&gt;&gt; @simonscrapes

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatAnthropic","n8n-nodes-base.splitOut","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger"]

workflow_json_compressed:
  [encoded data, 4200 characters]

metadata_json:
  {"categories":["marketing","SEO","AI-driven automation","data processing"],"complexity":"medium","use_cases":["Seed keyword generation for SEO","Keyword research to inform content strategy","PPC keyword discovery and targeting","Audience/ICP-driven keyword ideation"],"estimated_setup_minutes":15,"required_services":["OpenAI API or Anthropic API account","Your own database (e.g., Postgres, MySQL, or other)","n8n account with appropriate credentials configured"],"key_features":["Generates a list of 20 seed keywords using AI","Uses Ideal Customer Profile (ICP) input to focus suggestions","Integrates with user database to store/retrieve data","Includes Set, Aggregate and Split nodes to shape output","Manual trigger and noOp nodes for control/testing"],"target_audience":["SEO specialists","Digital marketers and content strategists","Growth marketers and PPC managers\",\"Small business owners and agencies"]}


name: Get Google Search Results (SERPs) for SEO Research
author_name: simonscrapes
author_username: simonscrapes
categories: []
created_at: 2024-10-20T16:18:22.066Z
updated_at: 2024-10-20T16:18:22.066Z
url: https://n8n.io/workflows/2475
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:31
description:
  Use Case
  Research search engine rankings for SEO analysis:
  You need to track keyword rankings for your website
  You want to analyze competitor positions in search results
  You need data for SEO competition analysis
  You want to monitor SERP changes over time

  What this Workflow Does
  The workflow uses ScrapingRobot API to fetch Google search results:
  Retrieves SERP data for your target keywords
  Captures URL rankings and page titles
  Processes up to 5000 searches with free account
  Organizes results for SEO analysis

  Setup
  Create a ScrapingRobot account and get your API key
  Add your ScrapingRobot API key to the HTTP Request node's GET SERP token parameter
  Either connect your keyword database (column name "Keyword") or use the "Set Keywords" node
  Configure your preferred output database connection

  How to Adjust it to Your Needs
  Modify keyword source to pull from different databases
  Adjust the number of SERP results to capture
  Customize output format for your reporting needs


  More templates and n8n workflows &gt;&gt;&gt; @simonscrapes

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.set","n8n-nodes-base.splitOut","n8n-nodes-base.filter","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.set","n8n-nodes-base.splitOut","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4636 characters]

metadata_json:
  {"categories":["automation","integration","data processing","web scraping","SEO research"],"complexity":"medium","use_cases":["Track keyword rankings for a website","Analyze competitor positions in Google SERPs","Monitor SERP changes over time","Gather data for SEO competition and content strategy analysis"],"estimated_setup_minutes":15,"required_services":["ScrapingRobot API (API key)","n8n (cloud or self-hosted)","Optional output database (e.g., Google Sheets, MySQL, Postgres) or keyword source"],"key_features":["Fetches Google SERP results via ScrapingRobot","Captures ranking URLs and page titles","Supports up to 5000 searches with free ScrapingRobot account","Accepts keywords from a connected database or a Set node","Organizes and formats results for SEO analysis and reporting (configurable output format and number of results)"],"target_audience":["SEOs","Digital marketers","Content strategists and analysts within agencies or in-house teams"]}


name: Convert URL HTML to Markdown Format and Get Page Links
author_name: simonscrapes
author_username: simonscrapes
categories: []
created_at: 2024-10-20T16:36:31.794Z
updated_at: 2024-10-20T16:36:31.794Z
url: https://n8n.io/workflows/2476
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Use Case
  Transform web pages into AI-friendly markdown format:
  You need to process webpage content for LLM analysis
  You want to extract both content and links from web pages
  You need clean, formatted text without HTML markup
  You want to respect API rate limits while crawling pages

  What this Workflow Does
  The workflow uses Firecrawl.dev API to process webpages:
  Converts HTML content to markdown format
  Extracts all links from each webpage
  Handles API rate limiting automatically
  Processes URLs in batches from your database

  Setup
  Create a Firecrawl.dev account and get your API key
  Add your Firecrawl API key to the HTTP Request node's Authorization header
  Connect your URL database to the input node (column name must be "Page") or edit the array in Example fields from data source
  Configure your preferred output database connection

  How to Adjust it to Your Needs
  Modify input source to pull URLs from different databases
  Adjust rate limiting parameters if needed
  Customize output format for your specific use case


  More templates and n8n workflows &gt;&gt;&gt; @simonscrapes

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.limit","n8n-nodes-base.splitInBatches","n8n-nodes-base.set","n8n-nodes-base.splitOut","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["data processing","web scraping","integration","automation"],"complexity":"medium","use_cases":["Convert web pages to markdown for LLMs","Extract and store page links for crawling/indexing","Preprocess web content for analysis or ingestion pipelines","Respect API rate limits while batch-processing URLs"],"estimated_setup_minutes":20,"required_services":["Firecrawl.dev API (API key)","n8n instance","Input URL database (e.g., Airtable, Google Sheets, Postgres)","Output database/storage (any n8n-supported destination)"],"key_features":["HTML → Markdown conversion","Extraction of all links from each page","Automatic API rate-limit handling","Batch processing of URLs from a database","Customizable input/output and rate parameters"],"target_audience":["Developers","Data engineers","ML engineers / prompt engineers preparing LLM data sets\",\"Content teams / SEO specialists\",\"Researchers doing web-based data collection"]}


name: Mark outdated workflow nodes on canvas and send a summary with Gmail (add-on)
author_name: Mario
author_username: octionic
categories: []
created_at: 2024-10-21T13:24:50.985Z
updated_at: 2024-10-21T13:24:50.985Z
url: https://n8n.io/workflows/2477
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  This is an add-on for the template Check if workflows contain build-in nodes that are not of the latest version

  Purpose

  This workflow highlights outdated nodes within all workflows of a single n8n instance and places an updated preconfigured node right next to it, so it can be swapped easily.

  How it works

  The parent workflow checks the entire n8n instance for outdated nodes within all workflows and passes a list of those alongside some metadata to this workflow
  This workflow then processes that data and updates the affected workflows
  Outdated nodes are renamed by prepending an emoji (default: ⚠️) - this is also used for future checks to prevent from double-processing
  The latest version of each outdated node is added to the workflow canvas (not wired up) behind the old one, slightly shifted in position
  An Email is sent with a list of modified workflows

  In the settings it is possible to define:

  which symbol/emoji should be prepended to outdated notes
  whether to include only major node updates or all of them
  whether to add the new nodes to the canvas or not

  Setup

  Clone this template to your n8n instance
  Update the Settings node by setting at least the base URL of your n8n instance
  Set a recipient in the Gmail node
  Clone the parent template to your n8n instance and configure it as described in it’s description
  Add an “Execute Workflow” node to the end of the parent workflow and configure it, so it calls this workflow

  How to use

  Execute the parent workflow and check your Email Inbox.

  All linked workflows should contain one or more updated nodes with an emoji prepended to their names.

  Disclaimer

  Beware, that major updates can cause migrations of nodes to fail, since their structure can differ. So always compare the old nodes with the newly created, if all parameters still meet the requirements.

  Be careful when executing this workflow on a production environment, since it directly modifies your workflows. It is advisable to run this on your testing environment and migrate successfully tested workflows to your production environment using git or manually.

nodes_used:
  ["n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.gmail","n8n-nodes-base.n8n","n8n-nodes-base.n8n","n8n-nodes-base.code","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4444 characters]

metadata_json:
  {"categories":["automation","maintenance","integration","monitoring"],"complexity":"medium","use_cases":["Detect and mark outdated nodes in n8n workflows","Add updated node instances to canvas for easy replacement","Audit workflow node versions across an n8n instance","Notify team via email about modified workflows","Prevent double-processing of already-marked nodes"],"estimated_setup_minutes":15,"required_services":["n8n instance with API access (base URL)","Gmail account (for sending summary emails)"],"key_features":["Scans all workflows for outdated built-in nodes","Prepends configurable emoji to outdated node names to mark them","Inserts latest version of outdated nodes on the workflow canvas (not wired)","Option to restrict checks to major updates only","Sends a Gmail summary listing modified workflows and changes made"],"target_audience":["n8n administrators","Automation engineers","DevOps teams managing n8n deployments','Developers and QA responsible for workflow stability"]}


name: Send a message via a Lark Bot
author_name: Hiroshi
author_username: hiroshi
categories: []
created_at: 2024-10-22T04:15:35.750Z
updated_at: 2024-10-22T04:15:35.750Z
url: https://n8n.io/workflows/2478
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  What this workflow does
  This workflow in n8n demonstrates how to send a message in Lark using a Lark bot. It begins with a manual trigger and then retrieves the necessary Lark token via a POST request. The token is used to authenticate and send a message to a specific chat using the Lark API. The input node provides the required app_id, app_secret, chat_id, and message content. After obtaining the token, the message is sent with the Lark API's message/v4/send/ endpoint.

  Who This Is For
  This n8n workflow is ideal for organizations, teams, and developers who need to automate message sending within Lark, especially those managing notifications, alerts, or team reminders. It can help users reduce manual messaging tasks by leveraging a Lark bot to deliver messages at specific intervals or based on particular conditions, enhancing team communication and responsiveness.

  Setup
  Fill the Input node with your values
  Exchange the bearer token in the Send Message node with your token

  Author: Hiroshi

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest"]

workflow_json_compressed:
  H4sIAAAAAAAAE6VW7W7bNhR9FYEY0A0QbYmiJErAfjRF0QZt04943dYkCPhxaauRKVWi0niGgT7G9np9koGSEjupk6Kbf1nk0b333HvIozUqFMrR4ce379RRRw7t5yPz7CVBPlqC5Shfo8K0lhsJhw4XsjSKecyyMM6SlGiRKaGYSHQWRyoArSRnjIVxKiPBBEkyGmkRQACpDEEJgXxkYVmX3MKTBlR7DLarn1TLugQLCuW26WDjI8OXgHJ0siiaql0UqpgXlpcTWS3PvGMwynsFbcvn4B0a7yVvLtqusOBi83mL8pP1QCpLXojfDItXK/axuFxpdBP4SQPcVg3ykXT/QD22KEckIBSHASZkFtCckDyiE5pEH5CPulp9H7Y585GpFOyWoBWLmIhwyHSKaRAnWAiRYcbdDo3iLBDbsn5fgPFkWciLwsy9r1/+nkFrvc9Vc6HL6vPXL/84iqvaQQ0zuM+FBW9hsuSm4+WsKeZzcLTqqi1sURmUnxAa+IQEZz6qecOXYKFpUb7eDKHeQ9P2uHDjjzWnXHNKOcGEgcQUIoU5EwrzJEpJmFAGgmxrfga2H4E3qy7A3Fvgwtr6HXzqoLW3y0v2l4e6pkQ5cq+1+XRa1WAm5fWknRD6Jczrop3yzi6ml9HUguHGnnMpoW3PratnWhgLjeHlIOhF5Qi+eX08Qz6qalfC2IuPbWUOKrVCOfp1fWo87xTxuj4v1CnKvVO0Xns/OchkWPQ2m1Pkb2EtyAbsHuiw0cNPzcZDPmrBqCGR0/rw/By46mmPSzXIQq/Gclws5KNFj3lzq0e7HTtZ34i7MhaMxTM3CB9d8rJzy7yuy0Jyx3nax9ycbe6KgE62MqAQaiVAY8FYiCmNJc4CCTiLhcxESuM03ZHBoak7e+/0W7gzdXrP1G/NhLdtMTdLMLbfu/V4fcAiQoSTKwYgHFOlNBYpTXGgUx3RIAaS0W2Vw/S2Zba2Kcx8p0myLM6ZVCLIFEgSJ5LTAN20RDLNuSAEkygWmIZEYqYkwyykRCZAIJB3kg3zfyDh8/j46YeGvU7Sv7pP6lAdvDh+s5hdVPD04Mm7oxXdJg9JqKVOCSY8jDANGME8SQSmqYoToShP0nibXC64fZhqJc9DlaUAWSa0VhIIjXgWCwoCIqVAp3yHuWsz1REGLlNMZUAxEwQwkwHEQRgKGcI2uYWrhzhfH+pvb/fpPlFGE3pTR0Z4QgA0hvFuCrFIA8CcBUqxSEVC8G0dx7aQFyvvqBrMYb80e8wI2VFoxAKffitQORwulKM/q86T3HhzsN54K3CjvJ1TXwzm5C2ggdx74CpD91/GmVSQ0JjglJAQU0UjnEHCMNc8DbQCIUm6l3D4w4zT5AcYj/p6iBWvCwxXdVk10DxEkaWKSEkynEQhw1SLFAsaBVhTwUic0CyMoh2KO/b/427D/r/bLIfc00s6dXf39D84y9i8rV/8/Ki/Px/9MiksLCe9fVx3eMdqlu383BEeXnSn7GZrnJLb6ZO43zXkoSwOMdqT521OzWafRe3zI2e6YOzoKChHczDQFNJ91rl1Xo7+M64/7uxiNgzLtXmwPLfolCFvXuqncQeQj0Jpm4P35av3b+vuQ2PNH2YrigHsDeH2mdqZj7i0xSWgXPOy7X3X2sLM+3xwBbJzNF43ChqUo8vQVXU5ROg/fEHqTMqU4ozzBFPNA+eLKdY0VJKmOk4i54ayMgbk9fRHV8zXaMkLJz9n0pV66LOpB/qoMAquUB5szs42/l3wvnj7j8XeaN//ytyX4I7B74m82fwLFldSDk0MAAA=

metadata_json:
  {"categories":["integration","automation","notifications","chatops"],"complexity":"simple","use_cases":["Automated team notifications","Alerts and incident messages","Scheduled or conditional reminders","ChatOps bot messages"],"estimated_setup_minutes":5,"required_services":["Lark (Feishu) bot credentials (app_id, app_secret)","Lark API (message/v4/send)","n8n instance"],"key_features":["Retrieve Lark access token via POST using app_id/app_secret","Send message to specified chat_id using Lark API","Manual trigger with configurable input node for app credentials, chat_id, and message content","Uses simple HTTP nodes (auth + send) for easy customization","Reusable template for notifications and reminders"],"target_audience":["Developers","DevOps / SRE","Team leads and managers who automate communications','IT/Automation engineers"]}


name: Automate Droplet Snapshots on DigitalOcean
author_name: Darryn Balanco
author_username: optimus01
categories: []
created_at: 2024-10-23T13:17:02.170Z
updated_at: 2024-10-23T13:17:02.170Z
url: https://n8n.io/workflows/2485
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  This workflow automates the management of DigitalOcean Droplet snapshots by listing all droplets, filtering based on the number of snapshots, and deleting excess snapshots before creating new ones. It ensures your droplet snapshots stay organized and within a manageable limit, preventing unnecessary storage costs due to an excess of snapshots.

  Who is this for?
  This workflow is perfect for users managing DigitalOcean Droplets and looking to automate the process of snapshot creation and cleanup to save on storage costs and maintain efficient resource management. It’s useful for DevOps teams, cloud administrators, or any developer leveraging DigitalOcean for their infrastructure.

  What problem is this workflow solving?
  When managing multiple DigitalOcean Droplets, snapshots can quickly accumulate, taking up space and increasing storage costs. Manually deleting and creating snapshots can be time-consuming and inefficient. This automation solves this problem by automating the snapshot management process, ensuring that no more than a defined number of snapshots are kept per droplet.

  What this workflow does
  Runs every 48 hours: The workflow is triggered by a cron node that runs every 48 hours, ensuring timely snapshot management.
  List all droplets: The workflow retrieves all droplets in the DigitalOcean account.
  Retrieve snapshots: For each droplet, the workflow retrieves a list of existing snapshots.
  Filter snapshots: If the number of snapshots exceeds 4, the workflow filters for snapshots that need to be deleted.
  Delete snapshots: Excess snapshots are automatically deleted based on the filter criteria.
  Create new snapshot: After cleaning up, the workflow creates a new snapshot for each droplet, ensuring that backups are always up-to-date.

  Setup
  DigitalOcean API Key: You’ll need to configure the HTTP Request nodes with your DigitalOcean API key. This key is required for authenticating requests to list droplets, retrieve snapshots, delete snapshots, and create new ones.
  Snapshot Threshold: By default, the workflow is set to keep no more than 4 snapshots per droplet. This can be adjusted by modifying the filter node conditions.
  Set Execution Frequency: The cron node is set to run every 48 hours, but you can adjust the timing to suit your needs.

  How to customize this workflow
  Adjust Snapshot Limit**: Change the value in the filter node if you want to keep more or fewer snapshots.
  Modify Run Frequency**: The workflow runs every 48 hours by default. You can change the frequency in the cron node to run more or less often.
  Enhance with Notifications**: You can add a notification node (e.g., Slack or email) to alert you when snapshots are deleted or created.

  Workflow Summary
  This workflow automates the management of DigitalOcean Droplet snapshots by keeping the number of snapshots under a defined limit, deleting the oldest ones, and ensuring new snapshots are created at regular intervals.

nodes_used:
  ["n8n-nodes-base.filter","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.cron","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE9Va3Y7cthV+FVYp4B8MtZREiuQABbqN141bOzbsTZrUayAUeTijrIaaSJTXE2OB3vW6l73qu/UJ+ggFJc3Pzs6uvW6CNHe7EslDnu983zk8mvfRAryKpu+j0rVeOQ1PTDSNMmEyrqlMpShoqnPKIFc8lxnPc8N1xtK0SCkwShklGbWSMZqmBTNc2TxJdHQ5iVxtoI2mr99HZViyyJlIdcYxITrDNOcaS6YLbHUOBdfapNxEk8ipBUTT6HFZeWiiSeRXy/C/Ew73C+JCtRDb9etl3Za+rF00fZ0QQSY0JW8m0VI1agEemjacTNfO9IP6/1y3KKDp9/VWVR0k0TT63fv36Lfft7WLgzdiX3tVocvLaDIMSaMpnUT1Eho12Ioq1cygOfmhU1V0+ebyctjn19C0/fvkcjKemtGCWCEZ5sByTAkUuNC5xjZnnDJuCKFqe+qnZevRK6eW7bz2LbJ1gxR61NTLCvyNvph7v3wJP3TQ+qsOEfSwP7qmCmcO89rp0ZFalrEpZ6VXVa1BuVjXi6O36ZEZ7LZHG+esn7wmb+LSoMvLo3az1yg4aO3ky0mkOj8H50u9dtkclIHmuPPzEBy6ARNeq6rfUtjLF9sB09F7yfnFV82PK6r/9M1f31HxcuupR8OG0fOwY3Ssdd05j+4b1TQr9/uwk0XXkiTWdfyjehBdR2gSqepCrdrnnV92/pEKJLCqamEDHdeU00xYbApCMU0sxwpMjhXNiSEqF0IWe9AdV9UarvYj8XK1DyyJbFZomqdWpokUOVHKApeccoAsl5BaLrU23MqCyNxYyPOCMSNpLngCQtL0KvQ5uQ36j0X+14bpBjrgLLG5ophYozEtgGFBLcEWdKESQowicscuVOABqQ3zflHokiz9n2i7oeSWt5tHG+LuI9sMh3oGfl4HBz46eXpyehL9iiA3VGuqeIqtJBJTnRBcKKMwMM2zBGiuGezYHSIcHeveCWjtIXTfCRdfs/uLxgPLfzoZv3/vmk7dexCXHhbxDQqvRg99KGJePH91+oF4mURFbVYvNof4qgzH2ByqT8kjPr27x+wbTaM1PGOu/f+JOmqzAjhVWBnDMVWpxlIaiw0zlNuEg4WdqHvZuRbBW2hWiIp5c3OK0E3trkZBdkMQ+KaczaA5LRfQ/x+g7B25qE1YuLf2zdaVVNxeriRC8UJorIzNMaUCsLRUYaa0JjZLWJrtFGmvfKnPV+jL2kN641naflAYs3ciQiaJOFStVXUTTfkkuihNgDPN0phQylLJOKc5lZNoDuVs7qMpTZI4yRnL80TyRKRiEoo9D85H0+izz9Dp4B10UTfntqovNs5H87pr2jN35k7nZYvCdtHoyhb5OWxn+Bo1ndubGKNv6w5p5ZAy33et76fYnhJOr1BpkQMwYMLstis9WtVdsxWZhXJqBgtwHoU5ZdP/3cbRzcBwYkEmnGPgnGBqE4mFLTTOuEiTnBujGDsITHZnYBi9FRj2KcDIPWD+CB6pqkJrvUG2qRdo5GVPyzP3GLyeQ4sUqoJm1bafETy9mVW6wbO7E5Ea+ByjHtpywNOWTetR62EZJvUAlG6G2iu1Nig9Xy8en7lb4CDUcJpLgUkiBaZMCywUlzgRmTXMJlKk5CAc9M5wcPFTwJHGGUnJgEZG9uF4Cb4p4S3s+UOtnXHm1iPaDQjboapta10qDwZdlH6OFGqXoEtb6o0zByzAtV0DARDl0QWgc1dfoHl9EfBY7Syou6YB56sVgncB+rthQ5XkCUiFjTUWU5mlWKSC4EzKRIlMp4qnB7Fhd8YmIenPL2Kfz0GfB03xc2gAqQbQom4geNEhunXbmetHtuNQNFx0A29uQDVwA8IVNshU3aBZA8pDMy4coycW+aaDCSo9Wja1BjBtGGqGejnYqCsDgVejgduBKQqpGMsUVsKGqpynuCBAMCcUCmVFIUh+EJj87sCk+c8vYo9u9MOZG961h14OWrejY7cBBu9Gt88BVeWi9Og+DQrmA5+0auHBBAVPGFS7UehCZ+ReizZdj9tBSUSSiCQNt9zQoJBUYWGtwianWueWkYzrg6Dwu4PCbk/5Pwkon/dBjBRycLGDx/C43Xve82EXCWUDAXQFyoX00C3XAG4hidHJrowVSp93y7an5dBR6GfVyCgPt2V0XaSFEQww46LAVAiBZZ4ybC0YnlJJRHrY8cmdHY8ZZZOUfIRMZXkec8ZlTjNKMpHnbOv5TATP04wlgguWkfSq5z9Dfwn+6ANzUz2ZGtozl8To4cPvrlS/Qx313cOHU3S6W26FdD3UYWBQsUIKhVp4LNDC+s31VSZDYgmA+XIB1epQpRWfubTfRn8B2q09rm+iuZLsdquNEA0Hi40zlw2HvJZJ++Uf72WwydUic8fgptjpU9+VGiU+c7Q3MjRH90w8+bCI0D2zg1YMWWE7undzqF9DFBcwyr2JzxzrrY+yd9X6yTsNbbtbFAQ+dL5eqHAZrKrVep1DcoV0U3poShWfubw3MtJ4l6y9neN9gu4dSd/M86v+34bMjSzGvsYfYjG3RUFJXmCZ0QxTk2ksBc+xILrICl4YlsBhFn8CjZOcTVJ6I43zLY1lHueZoCTPkzxjyQ6LU5HGjEtJCWU5zeQ1FofS/FmoL05hsax6Zz4tz2Go4P7zr3/8/cy9/s3rr0sDNTqdd4vCqbJ6c3/dhqhdVTrw89Kdl24Wl/XRxRKPFo66ZVUr0x6lJKVHCTl6Cr7Fx0OUAH7i8ef1YtG50q/ipZs9GFY9uKheD3xwa3YTyhYyK1IMjHIcbuu4gJRhpgrBVGYp54fvs8ndC/VeZfMDKjuCwjmPCSUizyRJMi6SHVBIElOWSJbz0AXKeLaX1V6B75ZrIb0iQMcvnqA/w6onx7d19++//bOqNuzVtbPlrGuGIuWL09MXaGxX9YraDvX69StUWPQcVmPZfg6roMvjVdUMReROn8fN0NgN6svDXsDWojnZaNtWGybrCnLniXJm5G5P3NpBu1HsdVsWnc4baOd1ZfrT/iFIilVdta+mZYta8GEr5wBL5OrD9TJaQrN3QQk3+gLGS/2QgBa1Ke1qEIqNXPXpaPtZaaP+r8Cjk3egu/AYPV43BDYZZpvLtnu83l2YoKLrWwb7HQZfLvqN7DYVAtS3dg6ylClaSI1lYSimNpVYMMmwFJYwLk3CdHKQAvITGJCTSf4RZYYgMmYJy1iWSp4kdMsESWmcccqyhHCZp4TtEWEtFuv25aZnj55tmyq122sl/KErq22x9/op+HvtdqknHm1056MkJ8TF6+dDmxAdzwLEOwJ4tX149GDTZdoE6JgXx+vBTjeotld5uD7kNmaLVR/U63g8lO07Z6C/5YEtHZjh2jBybj1vvJIEmg3c26TD3bQ55MOBlgaF4gtmXaUaVDoPzVtV3Rp4klGiraLDTY8SneIiMQlmhc2sLAwXgh7W3rtfxHvtFQe//e6F3i0qnOQiZkmSJJKmNMtzvhd7XwztQN21vl6UP8LVWvfM4SABxwNdN2H5NHi/F4DP58rNBiXum7HrenJXU0rb8/5Cua1+9eJVN8jCxW7RF48Gn/UChV52hwRnW2FeL5tDLI0Cuu1n6u0md/qZw0Z3KvFBttY7q0LpV1sPbr2pEzcPvyUY8suXtQ/NoP6LQLtOVKO2mVCp7bwf1r8P8SyeoFeV0ufBACxUWT0IZlUFzaCNF3Nwe5G6rjDrZh20h+LzTQ+rA735ScD4Y4Pp+2ihyhBO4UPE0D+/5dtgP3YSlc7Au2hKLt+8uZxcb/EfWvSWb8UHF72+iYNb/cRvWgdNXt/ijQf54O8VbjZw09RDtvZ/EXJg1cvL/wKiUt9TzyIAAA==

metadata_json:
  {"categories":["automation","cloud management","backup & retention"],"complexity":"medium","use_cases":["Automated snapshot rotation for DigitalOcean droplets","Control storage costs by limiting snapshot retention","Regularly create up-to-date droplet backups","DevOps/SRE maintenance and compliance of backup policies"],"estimated_setup_minutes":15,"required_services":["DigitalOcean API (API token)"],"key_features":["Scheduled runs (cron every 48 hrs by default)","List droplets and their snapshots via API","Filter and delete excess/old snapshots based on threshold","Create a new snapshot after cleanup","Configurable snapshot retention limit and run frequency (filter/cron)"],"target_audience":["DevOps engineers","Cloud administrators","Site Reliability Engineers (SREs) / developers managing DigitalOcean infrastructure"]}


name: Automated Notion Task Reminders via Slack
author_name: Darryn Balanco
author_username: optimus01
categories: []
created_at: 2024-10-23T15:12:58.135Z
updated_at: 2024-10-23T15:12:58.135Z
url: https://n8n.io/workflows/2488
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  This workflow is designed to automate task reminders by retrieving tasks from a Notion database and sending reminders to Slack users. It checks for incomplete tasks from a Notion database and sends a Slack message to the relevant users with the task details and due dates. The automation is scheduled to run every weekday at 9:00 AM, ensuring that users are always reminded of pending tasks.

  Who is this for?
  This workflow is ideal for teams or individuals who manage their tasks using Notion but rely on Slack for communication. It provides an automated solution for ensuring that tasks in Notion are followed up on, reducing the risk of missing deadlines.

  What problem is this workflow solving?
  Often, team members need to be reminded of tasks from various platforms. This workflow bridges the gap between task management in Notion and communication in Slack by automatically sending task reminders. It ensures that team members are informed of their pending tasks each morning, helping them stay organized and on top of their work.

  What this workflow does
  Triggers every weekday at 9:00 AM: The workflow runs at 9:00 AM, Monday through Friday.
  Fetches tasks from Notion: It retrieves tasks from a Notion database.
  Filters incomplete tasks: The workflow filters tasks that are not marked as "Done."
  Fetches Slack users: It retrieves all Slack users to ensure that the reminders are sent to the correct user.
  Matches tasks to the correct user: It checks the Notion task assignee and matches it with the appropriate Slack user.
  Sends Slack reminders: Sends a Slack direct message to each user with their incomplete tasks and due dates.

  Setup
  Connect Notion: You will need to connect your Notion account and specify the database containing tasks.
  Connect Slack: Authenticate with Slack using OAuth to allow the workflow to send messages on your behalf.
  Notion user email mapping: Ensure that the Notion users’ email addresses are correctly mapped to their corresponding Notion user profiles.
  Slack user full name mapping: Ensure that the Slack users’ full names are correctly mapped to their corresponding Slack user profiles.
  Adjust schedule: If needed, modify the schedule node to run at a different time or frequency.

  How to customize this workflow
  Change the database**: You can adjust the workflow to pull tasks from a different Notion database by modifying the "Get To Dos from Tasks Database" node.
  Add more users**: The workflow currently supports two users, but you can expand it to support more by adding additional logic in the "Switch for Notion Users Emails" node.
  Modify the message format**: The Slack message content can be customized further to include more task details or change the message format.

  Workflow Summary
  This workflow automates sending task reminders from a Notion database to Slack users. By running every weekday morning, it ensures that users receive timely reminders of their incomplete tasks, helping them stay organized and efficient.

nodes_used:
  ["n8n-nodes-base.filter","n8n-nodes-base.slack","n8n-nodes-base.notion","n8n-nodes-base.cron","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.slack","n8n-nodes-base.slack","n8n-nodes-base.switch","n8n-nodes-base.filter","n8n-nodes-base.filter","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 5516 characters]

metadata_json:
  {"categories":["automation","integration","notifications","team collaboration"],"complexity":"medium","use_cases":["Daily task reminders","Cross-platform task-to-chat notifications","Ensure follow-up on Notion tasks","Reduce missed deadlines","Morning standup/summary messages"],"estimated_setup_minutes":20,"required_services":["Notion","Slack","n8n (or compatible workflow runner)"],"key_features":["Scheduled weekday trigger (9:00 AM)","Fetch tasks from a Notion database","Filter incomplete tasks","Map Notion assignees to Slack users","Send direct Slack reminders with task details and due dates (DMs)"],"target_audience":["Teams using Notion for task management","Team leads and project managers","Operations and PMO staff who automate workflows for teams"]}


name: Build an endpoint to perform CRUD operations with multiple HTTP methods
author_name: Giulio
author_username: gandreini
categories: []
created_at: 2024-10-23T16:32:21.930Z
updated_at: 2024-10-23T16:32:21.930Z
url: https://n8n.io/workflows/2490
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n workflow template allows you to create a CRUD endpoint that performs the following actions:

  Create a new record
  Get a record
  Get many records
  Update a record
  Delete a record

  This template is connected with Airtable but you can replace the Airtable nodes with anything you need to interact with (e.g. Postgres, MySQL, Notion, Coda...).

  The template uses the n8n Webhook node setting 'Allow Multiple HTTP Methods' to enable multiple HTTP methods on the same node.

  Features

  Just two nodes to create 5 endpoints
  Use it with Airtable or replace the Airtable nodes for your own customization
  Add your custom logic exploiting all n8n's possibilities

  Workflow Steps

  Webhook node**: exposes the endpoints to get many records and create a new record
  Webhook (with ID) node**: exposes the endpoints to get, update, and delete a record. Due to a n8n limitation, this endpoint will have an additional code in the path (e.g. https://my.app.n8n.cloud/webhook/580ccc56-f308-4b64-961d-38323501a170/customers/:id). Keep this in mind when using these endpoints in your application
  Various Airtable nodes**: execute various specific operations to interact with Airtable records

  Getting Started

  To deploy and use this template:

  Import the workflow into your n8n workspace
  Customize the endpoint paths by tweaking the 'Path' parameters in the 'Webhook' and 'Webhook (with ID)' nodes (currently customers)
  Set up your Airtable credentials by following this guide and customize the Airtable nodes by selecting your base, table, and the correct fields to update. ...or... replace the Airtable nodes and connect the endpoint to any other service (e.g. Postgres, MySQL, Notion, Coda)

  How to use the workflow

  Activate the workflow
  Connect your app to the endpoints (production URLs) to perform the various operations allowed by the workflow

  Note that the Webhook nodes have two URLs, one for testing and one for production. The testing URL is activated when you click on 'Test workflow' button and can't be used for production. The production URL is available after you activate the workflow. More info here.

  Feel free to get in touch with me if you have questions about this workflow.

nodes_used:
  ["n8n-nodes-base.respondToWebhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.airtable","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.respondToWebhook","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.airtable","n8n-nodes-base.webhook","n8n-nodes-base.webhook"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","api development","data management"],"complexity":"medium","use_cases":["Expose CRUD REST endpoints backed by Airtable or any database","Prototype a backend for web or mobile apps","Connect frontends to a simple API without writing server code","Replace Airtable nodes with Postgres/MySQL/Notion/Coda to integrate different data stores","Add custom business logic between HTTP endpoints and data storage using n8n nodes"],"estimated_setup_minutes":20,"required_services":["n8n instance (self-hosted or n8n.cloud) with Webhook node","Airtable (used by the template) — replaceable with Postgres, MySQL, Notion, Coda, etc.","Hosting/URL for production webhook access (provided by n8n or custom)"],"key_features":["Implements full CRUD: create, get (single), get many, update, delete","Uses 'Allow Multiple HTTP Methods' so one webhook can handle several methods","Separate webhook path (with :id) for item-level operations","Only a few nodes required to expose five endpoints (easy to customize)","Swap Airtable nodes for other data sources or add custom logic via other n8n nodes"],"target_audience":["Developers building lightweight APIs","No-code/low-code makers and automation engineers","Product teams and founders prototyping backends quickly"]}


name: Create LinkedIn Contributions with AI and Notify Users On Slack
author_name: Darryn Balanco
author_username: optimus01
categories: []
created_at: 2024-10-23T19:16:01.726Z
updated_at: 2024-10-23T19:16:01.726Z
url: https://n8n.io/workflows/2491
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  This workflow automates the process of gathering LinkedIn advice articles, extracting their content, and generating unique contributions for each article using an AI model. The contributions are then posted to a Slack channel and a NocoDB database for record-keeping. The workflow is triggered weekly to ensure new articles are continuously collected and responded to.

  Who is this for?
  This workflow is designed for professionals, marketers, and content creators looking to boost their LinkedIn presence by regularly engaging with LinkedIn advice articles. It’s especially useful for those who want to be seen as a "thought leader" or "top voice" in their niche by contributing relevant and unique advice to trending topics.

  What problem is this workflow solving?
  Manually searching for relevant LinkedIn articles, reading through them, and crafting thoughtful contributions can be time-consuming. This workflow solves that by automating the process of finding new articles, extracting key content, and generating AI-powered contributions. It helps users stay consistently active on LinkedIn, contributing value to trending discussions.

  What this workflow does
  Triggers Weekly: The workflow is set to run every Monday at 8:00 AM.
  Search Google for LinkedIn Advice Articles: Uses a predefined Google search URL to find the latest LinkedIn advice articles based on the user's area of expertise.
  Extract LinkedIn Article Links: A code node extracts all LinkedIn advice article links from the search results.
  Retrieve Article Content: For each article link, the workflow retrieves the HTML content and extracts the article title, topics, and existing contributions.
  Generate AI-Powered Contributions: The workflow sends the extracted article content to an AI model, which generates unique, helpful advice for each topic within the article.
  Post to Slack & NocoDB: The AI-generated contributions, along with the article links, are posted to a designated Slack channel and stored in a NocoDB database for future reference.

  Setup
  Google Search URL: Update the Google search URL with the relevant LinkedIn advice query for your field (e.g., "site:linkedin.com/advice 'marketing automation'").
  Slack Integration: Connect your Slack account and specify the Slack channel where you want the contributions to be posted.
  NocoDB Integration: Set up your NocoDB project to store the generated contributions along with the article titles and links.

  How to customize this workflow
  Change Search Terms**: Modify the Google search URL to focus on a different LinkedIn topic or expertise area.
  Adjust Trigger Frequency**: The workflow is set to run weekly, but you can adjust the frequency by changing the schedule trigger.
  Enhance Contribution Quality**: Customize the AI model's prompt to generate contributions that align with your brand voice or content strategy.

  Workflow Summary
  This workflow helps users maintain a consistent presence on LinkedIn by automating the discovery of new advice articles and generating unique contributions using AI. It is ideal for professionals who want to engage with LinkedIn content regularly without spending too much time manually searching and drafting responses.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger","n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.nocoDb","n8n-nodes-base.slack","n8n-nodes-base.nocoDb","n8n-nodes-base.html","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.nocoDb","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 8220 characters]

metadata_json:
  {"categories":["automation","social media","content creation","AI integration","data management"],"complexity":"medium","use_cases":["Automate LinkedIn engagement by generating comments/contributions","Regular content ideation and repurposing","Notify teams of new contribution opportunities via Slack","Maintain a searchable record of contributions in a database","Scale consistent thought-leadership activity"],"estimated_setup_minutes":20,"required_services":["Google Search (custom search URL / web search)","LinkedIn (public article pages via HTTP)","OpenAI or compatible AI model","Slack","NocoDB","HTTP/HTML retrieval (web access)"],"key_features":["Weekly scheduled trigger to find new LinkedIn advice articles","Extracts article title, topics, and existing contributions","Generates unique AI-powered contributions per topic","Posts contributions to a Slack channel","Stores contributions and metadata in NocoDB for record-keeping and auditing"],"target_audience":["Professionals seeking thought-leadership","Marketers and growth teams","Content creators and social media managers','Community managers"]}


name: Generate SEO Keyword Search Volume Data using Google API
author_name: simonscrapes
author_username: simonscrapes
categories: []
created_at: 2024-10-24T09:40:54.747Z
updated_at: 2024-10-24T09:40:54.747Z
url: https://n8n.io/workflows/2494
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:31
description:
  Use Case
  Generate accurate search volume data for SEO keyword research:
  You have a list of potential keywords to target for your website SEO but don't know their actual search volume
  You need historical data to identify seasonal trends in keyword popularity
  You want to assess keyword difficulty to prioritize your content strategy
  You need data-driven insights for planning your SEO campaigns

  What this Workflow Does
  The workflow connects to Google's Keyword Planner API to retrieve keyword metrics for your SEO research:

  Fetches monthly search volume for each keyword
  Provides historical trends data for the past 12 months
  Calculates keyword difficulty scores
  Delivers competition metrics from Google Ads

  Setup
  Fill the Set 20 Keywords with up to 20 Keywords of your choosing in an array e.g. ["keyword 1", "keyword 2",...]
  Create a Google Ads API account and add credentials to Get Search Data node
  Replace the Connect to your own database with your own database for the output

  How to Adjust it to Your Needs
  Change the Set 20 Keywords node input to a source of your choosing e.g. Airtable database with 20 keywords
  Connect to output source of your choosing 


  More templates and n8n workflows &gt;&gt;&gt; @simonscrapes

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.splitOut","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.noOp","n8n-nodes-base.httpRequest"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["integration","data-processing","marketing","seo-research","automation"],"complexity":"medium","use_cases":["Estimate monthly search volume for target keywords","Analyze 12-month historical trends for seasonality","Prioritize content via keyword difficulty scoring","Collect competition metrics from Google Ads for campaign planning","Feed keyword metrics into a database or BI tool for reporting"],"estimated_setup_minutes":45,"required_services":["Google Ads (Keyword Planner) API (Google account with Ads access and credentials)","n8n instance","Destination database or storage (e.g., MySQL, PostgreSQL, Airtable, BigQuery) — configured by user"],"key_features":["Fetches monthly search volume per keyword","Returns 12-month historical trend data","Calculates a keyword difficulty score","Retrieves competition/auction metrics from Google Ads","Accepts up to 20 keywords via a Set node (can be replaced with Airtable or other sources)"],"target_audience":["SEO specialists","Content marketers","Growth marketers/analysts at startups and agencies"]}


name: Integrate Xero with FileMaker using Webhooks
author_name: Stathis Askaridis
author_username: stathisaska
categories: []
created_at: 2024-10-25T14:24:00.538Z
updated_at: 2024-10-25T14:24:00.538Z
url: https://n8n.io/workflows/2499
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Integrate Xero with FileMaker using Webhooks

  Workflow Description

  This n8n workflow automates the integration between Xero and FileMaker, allowing for seamless data transfer between the two platforms. By listening for webhooks from Xero (e.g., new invoices, payments, or contacts), this workflow ensures that data is automatically sent and recorded in a FileMaker database.

  Who is This For?

  This workflow template is ideal for:
  Accountants** who need a streamlined process to sync financial data between Xero and FileMaker.
  Business Owners** looking to automate data entry and improve accuracy across their systems.
  Developers** building solutions for clients that require integration between accounting software and databases.
  Operations Teams** focused on minimizing manual work and improving efficiency.

  Key Steps

  Xero Webhook Trigger: The workflow starts by capturing events from Xero via a webhook.
  Data Processing: Transforms and maps the incoming data to match FileMaker’s required format.
  FileMaker Node: Utilizes the FileMaker node to create or update records directly in the FileMaker database.
  Logging & Error Handling: Tracks successful entries and manages any errors with automated alerts.

  Setup Instructions

  Set Up the Xero Webhook:
     Create a webhook in Xero and point it to your n8n webhook node URL.
     Configure the types of events to trigger the workflow (e.g., new invoices or payments).
     Xero will then send some test calls to test you are doing proper hash control.

  Connect the FileMaker Node:
     Set up your FileMaker node with the appropriate credentials and database configuration.
     Map the fields between the incoming Xero data and your FileMaker database structure.
  Customize Data Processing:
     Adjust data transformations as needed to ensure compatibility with your FileMaker schema.
  Test and Deploy:
     Run the workflow with sample data to ensure everything is functioning correctly.
     Monitor the execution log to verify data transfer and make any adjustments as needed.
  Error Handling Configuration:
     Configure error-handling nodes or alerts to notify you of any issues during data processing.

  Benefits

  This setup facilitates real-time data synchronization between Xero and FileMaker, reducing the need for manual data entry and improving overall operational efficiency.

nodes_used:
  ["n8n-nodes-base.crypto","n8n-nodes-base.moveBinaryData","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.respondToWebhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.filemaker","n8n-nodes-base.filemaker","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook"]

workflow_json_compressed:
  H4sIAAAAAAAAE71X227bOBD9FYHdRzEgKd5kYB96QbFBkTRA0m2BOFhQ5DDWxhYNSW5iBP73BWXFURIpbXeBfTEsceYMz5nhDHWPVtAaNLtHZdW0prJw7NAMCSkzQxTXVhoJkijqaCZzbiVRjIHKc0W5F5n3yuSFd85Q4QvjCgNQFEqiXYqq4KBBs8t7VEbIvHDMMq+w05nCXFDA2jCBDdVC0Qwc+AKlqDIrQDP0vt6u24BS1G7X8bnSFe4AcWEaOLIPy+vQlG0ZKjS7pJKTVEpylaK1qc0KWqibyKyHOP/jLRMSpei7WW7ii9/v73/7uwnV5Rw1YVNb+MuZ1szR1W6HUmTsHhctVsaiFDVga2jRDFGUIqhscGV1jWYo7kdylKLofFaHNdTt9nTPojX1NbQdbFQkbuRPqJsOl+7SXhkljDUqU1hARjEnjGGtmcKZEtZrRZUh8lGZk/AdkndlZept8iECT2m0Ct9hb9ebDbViE1qFdbSIf3eRcvt2uey8Z94sG0iRg6YtKxONPsEWzVBtbn/Ez1OwIBzFJtMec8E11qTg2CjlibLE2lw88juHdpJS060NefAJHl2Ou39NW3eJurx/iDBI9ng1PHDal8Luapc+1eUGYP25Wm7jVmdtvYFp7kzQwilHMeRCYF4wiw1hBAMpGGRQFMLaR+7HHyepl/4Zcy3HmdtQufJhs6gIYQmm6uh3TGlPNUJfzvtzNkdXRz33Qck+nITOjz31+wZ1SL5CsQjhZuC9AOOgbubo6nKO7vAd1AE35XVl2k0NBzmn5cqMIpw6iUHLAnPKPc4dkzjnlnoPOs+Gcp1vrIWmmdSshmYdKncR+o0+VZARTVLBXzsDaI/QwPvgAM0YIbu0f+e+lu0ihgwfXq9+7TzwnErMvAXMnaBYG06xlLbgkNHC+UH1f6nMpl2EumzA/Rde6ld4cUL/BS9aEO1kgYkUFnOQFGtVKCw507nMsiwHNuznYFpIbvcbTmqwoZ4m6MslrMwN1M+YZWw8Y4debbswKEVLsw2b2K17iWKR+BKWrjk7eH4po+/+7bA/xFp+1hj6qj+HdlDsL4bGvrRtDQ6qtjTLZo+/hJOOy6xX7oKeXGzzbxuxUqebooRHlT6FTVWG5OPB5ZWjwrXLlQLAkjuPudIaa000VsQ6aVXhhVePyGdQ+1CvknUd4pHpVUkaW5fr6X47lQfBf5CH9T7cAX4sHf3iDD3d02GlS9Re/6TrzEcPVXu0L59jl0TR/zfFnfTcUcdjseeYM5VjrYFhMEyRTFowjAyaU1vam21yGrp6nJhnnU1vMhRYEpJyNtrcW6iiaG/eJOedTMmhoOfVmWkaaJJ2Af0JS0qXmKZPc3LAStqQFJBsGnBJWSXbsKknKuOVWwsrMs9InOVZgbmwAheZdhgAPOdMGFaYUTXoL8tB5cS5vy1dbFZU6CPFM0W1yFkuuVIpWkB5vWjRjDJ6lBEpMiZlllEp06ciHlfrTTuv3jq3l6EbbA9tan/nSxZQwytKCO4z6cBjYmyOuZI51lR7zEDnOfU0l2bQ4YeTc1KJ27HGTsnhstOvd3d1br0gRlJcCEEwB5A419xh47TNObBC2NiInyq3Nl2X/0nf4eQwt++C2x7uPYu2XZ9AuwhxK2efzy9QepguJ910OTyexseXMl51GanAHmIcf4y/K1NG1rEv73FejPvOIkVl5eAOzcjuKn00Hh+kLzzi3a67xo3Ee/4NMurcG435D29z44F7QuPBXx2Yo3hPSmsMdPrbYRTvhfloVob39QmJxqiMYf3klBqJstv9A/bvrVTKDgAA

metadata_json:
  {"categories":["integration","automation","data synchronization"],"complexity":"medium","use_cases":["Real-time sync of invoices, payments, and contacts from Xero to FileMaker","Automating data entry to reduce manual bookkeeping","Maintaining a single source of truth across accounting and database systems","Building client solutions that connect accounting software to bespoke databases","Audit logging and error-tracking of financial data transfers"],"estimated_setup_minutes":45,"required_services":["Xero (Webhooks/API)","FileMaker Server or FileMaker Cloud (database access)","n8n (self-hosted or cloud)","Publicly reachable webhook endpoint (or tunnel service like ngrok)"],"key_features":["Xero webhook trigger to capture events (invoices, payments, contacts)","Data transformation and field mapping to FileMaker schema","Create or update FileMaker records via FileMaker node","Hash/signature verification for webhook security (crypto node)","Logging and error handling with alerts and conditional flows (if, set, stickyNote)」「Binary handling support for attachments (moveBinaryData)"],"target_audience":["Accountants","Business owners","Developers/Integrators building client solutions with Xero and FileMaker」「Operations teams responsible for system integrations"]}


name: Replace Images in Google Docs Documents and Download as PDF/Docx
author_name: simonscrapes
author_username: simonscrapes
categories: []
created_at: 2024-10-26T10:26:29.662Z
updated_at: 2024-10-26T10:26:29.662Z
url: https://n8n.io/workflows/2501
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Use Case
  Automate image replacement in Google Docs:
  You need to update document images dynamically
  You want to create multiple versions of a template with different images
  You need to batch process document images from a URL database
  You want to generate shareable documents with custom images

  What this Workflow Does
  The workflow automates image replacement in Google Docs:
  Accepts image URLs from your database
  Finds and replaces images in template documents
  Creates new document copies with updated images
  Optionally converts to PDF and makes documents shareable

  Setup
  Connect your image URL database (column name must be "url")
  Set up Google Docs OAuth 2 API credentials
  Optional: Create a template document in Google Drive with placeholder images
  Optional: Configure Google Drive authentication for additional features

  How to Adjust it to Your Needs
  Remove template copying for single document processing
  Adjust image ID selection for documents with multiple images
  Configure sharing settings and download formats
  Customize file naming and storage location


  More templates and n8n workflows &gt;&gt;&gt; @simonscrapes

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.googleDrive","n8n-nodes-base.set","n8n-nodes-base.googleDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.googleDrive","n8n-nodes-base.googleDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4508 characters]

metadata_json:
  {"categories":["automation","document-generation","integration","batch-processing"],"complexity":"medium","use_cases":["Dynamically update images inside Google Docs templates","Generate multiple document versions with different images","Batch process documents from a list/database of image URLs","Export documents as PDF or DOCX and produce shareable links"],"estimated_setup_minutes":30,"required_services":["Google Docs API / Google Drive (OAuth 2 credentials)","Image URL database (e.g., Airtable, Google Sheets, MySQL, CSV)","Optional: HTTP/Webhook endpoint for triggering","Optional: n8n instance"],"key_features":["Reads image URLs from a database column named 'url'","Finds and replaces placeholder images in Google Docs templates","Creates new document copies per image set","Optional conversion to PDF or DOCX","Optional sharing and link generation for created files"],"target_audience":["Marketers","Content creators","Operations teams doing batch document generation/processing"]}


name: Monthly Spotify Track Archiving and Playlist Classification
author_name: Arnaud MARIE
author_username: arnaud-marie
categories: []
created_at: 2024-10-27T17:36:47.297Z
updated_at: 2024-10-27T17:36:47.297Z
url: https://n8n.io/workflows/2502
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Monthly Spotify Track Archiving and Playlist Classification

  This n8n workflow allows you to automatically archive your monthly Spotify liked tracks in a Google Sheet, along with playlist details and descriptions. Based on this data, Claude 3.5 is used to classify each track into multiple playlists and add them in bulk.

  Who is this template for?
  This workflow template is perfect for Spotify users who want to systematically archive their listening history and organize their tracks into custom playlists.

  What problem does this workflow solve?
  It automates the monthly process of tracking, storing, and categorizing Spotify tracks into relevant playlists, helping users maintain well-organized music collections and keep a historical record of their listening habits.

  Workflow Overview
  Trigger Options**: Can be initiated manually or on a set schedule.
  Spotify Playlists Retrieval**: Fetches the current playlists and filters them by owner.
  Track Details Collection**: Retrieves information such as track ID and popularity from the user’s library.
  Audio Features Fetching**: Uses Spotify's API to get audio features for each track.
  Data Merging**: Combines track information with their audio features.
  Duplicate Checking**: Filters out tracks that have already been logged in Google Sheets.
  Data Logging**: Archives new tracks into a Google Sheet.
  AI Classification**: Uses an AI model to classify tracks into suitable playlists.
  Playlist Updates**: Adds classified tracks to the corresponding playlists.

  Setup Instructions
  Credentials Setup:  
     Make sure you have valid Spotify OAuth2 and Google Sheets access credentials.
  Trigger Configuration:  
     Choose between manual or scheduled triggers to start the workflow.
  Google Sheets Preparation:  
     Set up a Google Sheet with the necessary structure for logging track details.
  Spotify Playlists Setup:  
     Have a diverse range of playlists and exhaustive description (see example) ready to accommodate different music genres and moods.

  Customization Options
  Adjust Playlist Conditions**:  
     Modify the AI model’s classification criteria to align with your personal music preferences.
  Enhance Track Analysis**:  
     Incorporate additional audio features or external data sources for more refined track categorization.
  Personalize Data Logging**:  
     Customize which track attributes to log in Google Sheets based on your archival preferences.
  Configure Scheduling**:  
     Set a preferred schedule for periodic track archiving, e.g., monthly or weekly.

  Cost Estimate 
  For 300 tracks, the token usage amounts to approximately 60,000 tokens (58,000 for input and 2,000 for completion), costing around 20 cents with Claude 3.5 Sonnet (as of October 2024).

  Playlists' Description Examples


  | Playlist Name           | Playlist Description                                                                                                                                             |
  |-------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
  | Classique               | Indulge in the timeless beauty of classical music with this refined playlist. From baroque to romantic periods, this collection showcases renowned compositions.   |
  | Poi                     | Find your flow with this dynamic playlist tailored for poi, staff, and ball juggling. Featuring rhythmic tracks that complement your movements.                   |
  | Pro Sound               | Boost your productivity and focus with this carefully selected mix of concentration-enhancing music. Ideal for work or study sessions.                           |
  | ChillySleep             | Drift off to dreamland with this soothing playlist of sleep-inducing tracks. Gentle melodies and ambient sounds create a peaceful atmosphere for restful sleep.  |
  | To Sing                 | Warm up your vocal cords and sing your heart out with karaoke-friendly tracks. Featuring popular songs, perfect for solo performances or group sing-alongs.      |
  | 1990s                   | Relive the diverse musical landscape of the 90s with this eclectic mix. From grunge to pop, hip-hop to electronic, this playlist showcases defining genres.       |
  | 1980s                   | Take a nostalgic trip back to the era of big hair and neon with this 80s playlist. Packed with iconic hits and forgotten gems, capturing the energy of the decade.|
  | Groove Up               | Elevate your mood and energy with this upbeat playlist. Featuring a mix of feel-good tracks across various genres to lift your spirits and get you moving.       |
  | Reggae & Dub            | Relax and unwind with the laid-back vibes of reggae and dub. This playlist combines classic reggae tunes with deep, spacious dub tracks for a chilled-out vibe.   |
  | Psytrance               | Embark on a mind-bending journey with this collection of psychedelic trance tracks. Ideal for late-night dance sessions or intense focus.                        |
  | Cumbia                  | Sway to the infectious rhythms of Cumbia with this lively playlist. Blending traditional Latin American sounds with modern interpretations for a danceable mix.  |
  | Funky Groove            | Get your body moving with this collection of funk and disco tracks. Featuring irresistible basslines and catchy rhythms, perfect for dance parties.              |
  | French Chanson          | Experience the romance and charm of France with this mix of classic and modern French songs, capturing the essence of French musical culture.                    |
  | Workout Motivation      | Push your limits and power through your exercise routine with this high-energy playlist. From warm-up to cool-down, these tracks will keep you motivated.        |
  | Cinematic Instrumentals | Immerse yourself in a world of atmospheric sounds with this collection of cinematic instrumental tracks, perfect for focus, relaxation, or contemplation.        |

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","@n8n/n8n-nodes-langchain.lmChatAnthropic","n8n-nodes-base.spotify","n8n-nodes-base.spotify","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.set","n8n-nodes-base.filter","n8n-nodes-base.splitOut","n8n-nodes-base.code","n8n-nodes-base.merge","n8n-nodes-base.set","n8n-nodes-base.limit","n8n-nodes-base.googleSheets","n8n-nodes-base.merge","n8n-nodes-base.filter","n8n-nodes-base.splitOut","n8n-nodes-base.merge","n8n-nodes-base.spotify","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.merge","n8n-nodes-base.stickyNote","n8n-nodes-base.limit","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.chainLlm"]

workflow_json_compressed:
  [encoded data, 14180 characters]

metadata_json:
  {"categories":["automation","integration","data processing","music management"],"complexity":"complex","use_cases":["Monthly archiving of Spotify liked tracks","Automated classification of tracks into playlists","Maintaining a historical listening record in Google Sheets","Bulk updating and managing Spotify playlists","Enriching tracks with audio features for better categorization"],"estimated_setup_minutes":45,"required_services":["Spotify (OAuth API)","Google Sheets (Google OAuth)","Anthropic Claude 3.5 or other AI classification model","n8n instance (cloud or self‑hosted)"],"key_features":["Scheduled or manual trigger to run monthly","Fetches user playlists and library tracks","Retrieves Spotify audio features and merges data","Deduplicates against existing Google Sheet entries","Archives new tracks to Google Sheets with metadata (popularity, features, etc.)」「Uses AI to classify tracks into multiple playlist categories」「Bulk-adds classified tracks to corresponding Spotify playlists」「Configurable classification rules, logging fields, and schedule"],"target_audience":["Spotify users who want automated archiving","Music curators and playlist creators","Hobbyist developers and n8n users comfortable with OAuth/API creds\",\"Analysts tracking listening history over time"]}


name: WordPress - AI Chatbot to enhance user experience - with Supabase and OpenAI
author_name: Dataki
author_username: dataki
categories: []
created_at: 2024-10-28T12:11:32.191Z
updated_at: 2024-10-28T12:11:32.191Z
url: https://n8n.io/workflows/2504
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:31
description:
  This is the first version of a template for a RAG/GenAI App using WordPress content.

  As creating, sharing, and improving templates brings me joy 😄, feel free to reach out on LinkedIn if you have any ideas to enhance this template!

  How It Works

  This template includes three workflows:

  Workflow 1**: Generate embeddings for your WordPress posts and pages, then store them in the Supabase vector store.
  Workflow 2**: Handle upserts for WordPress content when edits are made.
  Workflow 3**: Enable chat functionality by performing Retrieval-Augmented Generation (RAG) on the embedded documents.

  Why use this template?

  This template can be applied to various use cases:

  Build a GenAI application that requires embedded documents from your website's content.
  Embed or create a chatbot page on your website to enhance user experience as visitors search for information.
  Gain insights into the types of questions visitors are asking on your website.
  Simplify content management by asking the AI for related content ideas or checking if similar content already exists. Useful for internal linking.

  Prerequisites
  Access to Supabase for storing embeddings.
  Basic knowledge of Postgres and pgvector.
  A WordPress website with content to be embedded.
  An OpenAI API key
  Ensure that your n8n workflow, Supabase instance, and WordPress website are set to the same timezone (or use GMT) for consistency.

  Workflow 1 : Initial Embedding

  This workflow retrieves your WordPress pages and posts, generates embeddings from the content, and stores them in Supabase using pgvector.

  Step 0 : Create Supabase tables

  Nodes : 
  Postgres - Create Documents Table: This table is structured to support OpenAI embedding models with 1536 dimensions
  Postgres - Create Workflow Execution History Table

  These two nodes create tables in Supabase:

  The documents table, which stores embeddings of your website content.
  The n8n_website_embedding_histories table, which logs workflow executions for efficient management of upserts. This table tracks the workflow execution ID and execution timestamp.

  Step 1 : Retrieve and Merge WordPress Pages and Posts

  Nodes :
  WordPress - Get All Posts
  WordPress - Get All Pages
  Merge WordPress Posts and Pages

  These three nodes retrieve all content and metadata from your posts and pages and merge them. 
  Important: ** **Apply filters to avoid generating embeddings for all site content.

  Step 2 : Set Fields, Apply Filter, and Transform HTML to Markdown

  Nodes :
  Set Fields
  Filter - Only Published & Unprotected Content
  HTML to Markdown

  These three nodes prepare the content for embedding by:

  Setting up the necessary fields for content embeddings and document metadata.
  Filtering to include only published and unprotected content (protected=false), ensuring private or unpublished content is excluded from your GenAI application.
  Converting HTML to Markdown, which enhances performance and relevance in Retrieval-Augmented Generation (RAG) by optimizing document embeddings.

  Step 3: Generate Embeddings, Store Documents in Supabase, and Log Workflow Execution

  Nodes:
  Supabase Vector Store
    Sub-nodes:
      Embeddings OpenAI
      Default Data Loader
      Token Splitter
      Aggregate
  Supabase - Store Workflow Execution

  This step involves generating embeddings for the content and storing it in Supabase, followed by logging the workflow execution details.

  Generate Embeddings: The Embeddings OpenAI node generates vector embeddings for the content.
  Load Data: The Default Data Loader prepares the content for embedding storage. The metadata stored includes the content title, publication date, modification date, URL, and ID, which is essential for managing upserts. 


  ⚠️ Important Note : Be cautious not to store any sensitive information in metadata fields, as this information will be accessible to the AI and may appear in user-facing answers.

  Token Management: The Token Splitter ensures that content is segmented into manageable sizes to comply with token limits.
  Aggregate: Ensure the last node is run only for 1 item.
  Store Execution Details: The Supabase - Store Workflow Execution node saves the workflow execution ID and timestamp, enabling tracking of when each content update was processed.

  This setup ensures that content embeddings are stored in Supabase for use in downstream applications, while workflow execution details are logged for consistency and version tracking.

  This workflow should be executed only once for the initial embedding. 
  Workflow 2, described below, will handle all future upserts, ensuring that new or updated content is embedded as needed.

  Workflow 2: Handle document upserts

  Content on a website follows a lifecycle—it may be updated, new content might be added, or, at times, content may be deleted. 

  In this first version of the template, the upsert workflow manages:
  Newly added content**
  Updated content**

  Step 1: Retrieve WordPress Content with Regular CRON

  Nodes:
  CRON - Every 30 Seconds
  Postgres - Get Last Workflow Execution
  WordPress - Get Posts Modified After Last Workflow Execution
  WordPress - Get Pages Modified After Last Workflow Execution
  Merge Retrieved WordPress Posts and Pages

  A CRON job (set to run every 30 seconds in this template, but you can adjust it as needed) initiates the workflow. A Postgres SQL query on the n8n_website_embedding_histories table retrieves the timestamp of the latest workflow execution.

  Next, the HTTP nodes use the WordPress API (update the example URL in the template with your own website’s URL and add your WordPress credentials) to request all posts and pages modified after the last workflow execution date. This process captures both newly added and recently updated content. The retrieved content is then merged for further processing.

  Step 2 : Set fields, use filter

  Nodes :
  Set fields2
  Filter - Only published and unprotected content

  The same that Step 2 in Workflow 1, except that HTML To Makrdown is used in further Step.

  Step 3: Loop Over Items to Identify and Route Updated vs. Newly Added Content


  Here, I initially aimed to use 'update documents' instead of the delete + insert approach, but encountered challenges, especially with updating both content and metadata columns together. Any help or suggestions are welcome! :)


  Nodes:
  Loop Over Items
  Postgres - Filter on Existing Documents
  Switch

    Route existing_documents (if documents with matching IDs are found in metadata):
      Supabase - Delete Row if Document Exists: Removes any existing entry for the document, preparing for an update.
      Aggregate2: Used to aggregate documents on Supabase with ID to ensure that Set Fields3 is executed only once for each WordPress content to avoid duplicate execution.
      Set Fields3: Sets fields required for embedding updates.
      
    Route new_documents (if no matching documents are found with IDs in metadata):
      Set Fields4: Configures fields for embedding newly added content.


  In this step, a loop processes each item, directing it based on whether the document already exists. The Aggregate2 node acts as a control to ensure Set Fields3 runs only once per WordPress content, effectively avoiding duplicate execution and optimizing the update process.

  Step 4 : HTML to Markdown, Supabase Vector Store, Update Workflow Execution Table

  The HTML to Markdown node mirrors Workflow 1 - Step 2. Refer to that section for a detailed explanation on how HTML content is converted to Markdown for improved embedding performance and relevance.

  Following this, the content is stored in the Supabase vector store to manage embeddings efficiently. Lastly, the workflow execution table is updated. These nodes mirros the **Workflow 1 - Step 3 nodes.

  Workflow 3 : An example of GenAI App with Wordpress Content : Chatbot to be embed on your website

  Step 1: Retrieve Supabase Documents, Aggregate, and Set Fields After a Chat Input

  Nodes:
  When Chat Message Received
  Supabase - Retrieve Documents from Chat Input
  Embeddings OpenAI1
  Aggregate Documents
  Set Fields


  When a user sends a message to the chat, the prompt (user question) is sent to the Supabase vector store retriever. The RPC function match_documents (created in Workflow 1 - Step 0) retrieves documents relevant to the user’s question, enabling a more accurate and relevant response.

  In this step:
  The Supabase vector store retriever fetches documents that match the user’s question, including metadata.
  The Aggregate Documents node consolidates the retrieved data.
  Finally, Set Fields organizes the data to create a more readable input for the AI agent.

  Directly using the AI agent without these nodes would prevent metadata from being sent to the language model (LLM), but metadata is essential for enhancing the context and accuracy of the AI’s response. By including metadata, the AI’s answers can reference relevant document details, making the interaction more informative.

  Step 2: Call AI Agent, Respond to User, and Store Chat Conversation History

  Nodes:
  AI Agent**
    Sub-nodes:
      OpenAI Chat Model
      Postgres Chat Memories
  Respond to Webhook**

  This step involves calling the AI agent to generate an answer, responding to the user, and storing the conversation history.  The model used is gpt4-o-mini, chosen for its cost-efficiency. 

nodes_used:
  ["n8n-nodes-base.manualTrigger","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterTokenSplitter","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryPostgresChat","n8n-nodes-base.respondToWebhook","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterTokenSplitter","n8n-nodes-base.markdown","n8n-nodes-base.postgres","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.wordpress","n8n-nodes-base.wordpress","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.filter","n8n-nodes-base.markdown","n8n-nodes-base.supabase","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.filter","n8n-nodes-base.splitInBatches","n8n-nodes-base.set","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.vectorStoreSupabase","n8n-nodes-base.supabase","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.postgres","n8n-nodes-base.postgres","n8n-nodes-base.merge","n8n-nodes-base.merge","n8n-nodes-base.postgres","n8n-nodes-base.supabase","n8n-nodes-base.switch","@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.vectorStoreSupabase","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.vectorStoreSupabase"]

workflow_json_compressed:
  [encoded data, 9772 characters]

metadata_json:
  {"categories":["automation","integration","data processing","generative AI","content management"],"complexity":"complex","use_cases":["Build a Retrieval-Augmented Generation (RAG) GenAI app using website content","Embed an AI chatbot on a WordPress site to improve UX and answer visitor questions","Monitor and analyze visitor questions for content insights","Automate content embedding and upserts for search/QA use cases","Assist content teams with related-content suggestions and internal linking ideas"],"estimated_setup_minutes":60,"required_services":["Supabase (Postgres + pgvector)","OpenAI API (embeddings & chat models)","WordPress site with REST API access","n8n instance to run workflows"],"key_features":["Initial embedding of WordPress posts/pages into Supabase vector store","Incremental upserts (new/updated content) with CRON-driven detection","Retrieval-Augmented Generation (RAG) chat flow using Supabase retriever","HTML-to-Markdown conversion for better embeddings","Token splitting and aggregation to respect model limits and chunking strategy`,`Metadata-aware retrieval and inclusion in prompts for context`,`Workflow execution logging for upsert tracking and consistency`,`Conversation history persistence (Postgres) and webhook responses"],"target_audience":["Developers/engineers building RAG/GenAI apps","Site owners and product managers wanting an on-site chatbot","Content managers and SEOs seeking content insights and internal-link suggestions"]}


name: Import workflows and map their credentials using a Multi-Form
author_name: Mario
author_username: octionic
categories: []
created_at: 2024-10-29T19:05:29.604Z
updated_at: 2024-10-29T19:05:29.604Z
url: https://n8n.io/workflows/2506
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Purpose

  This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily.

  How it works

  A multi-form setup guides you through the entire process
  At the beginning you have two options:
      Upload a workflow file (JSON)
      Copy workflow from a remote n8n instance
  If you choose the second option, you get to choose one of your predefined (in the Settings node) remote instances first, then it retrieves a list of all the workflows using the n8n API which you then can choose a workflow from.
  Now both initial options come together - the workflow file is being processed
  In parallel all credentials of the current instance are being retrieved using the Execute Command node
  The next form page enables a mapping of all the credentials used in the workflow. The matching happens between the names (because one workflow can contain different credentials of the same type) of the original credentials and the ones available on the current instance. Every option then shows all available credentials of the same type. In addition the user has always the choice to create a new credential on the fly.
  For every option which was set to create a new credential, an empty credential is being created on the current instance using the n8n API. An emoji is being appended to the name, which indicates that it needs to be populated.
  Finally the workflow gets updated with the new credential ID’s and created on the current instance using the n8n API. Then the user gets a message, if the process has succeeded or not.

  Setup

  Select your credentials in the nodes which require those
  Configure your remote instance(s) in the Settings node. (You can skip this step, if you only want to use the File Upload feature)
      Every instance is defined as object with the keys name, apiKey and baseUrl. Those instances are then wrapped inside an array. You can find an example described within a note on the workflow canvas.

  How to use

  Grab the (production) URL of the Form from the first node
  Open the URL and follow the instructions given in the multi-form

  Disclaimer

  Security: Beware, that all credentials are being decrypted and processed within the workflow. Also the API keys to other n8n instances are stored within the workflow.
  This solution is primarily meant for transferring data between testing environments. For production use consider the n8n enterprise edition which provides a reliable way to deploy workflows between different environments without the need of manual credential mapping.

nodes_used:
  ["n8n-nodes-base.extractFromFile","n8n-nodes-base.executeCommand","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","n8n-nodes-base.merge","n8n-nodes-base.merge","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.noOp","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.form","n8n-nodes-base.form","n8n-nodes-base.splitOut","n8n-nodes-base.code","n8n-nodes-base.sort","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.renameKeys","n8n-nodes-base.n8n","n8n-nodes-base.form","n8n-nodes-base.form","n8n-nodes-base.form","n8n-nodes-base.form","n8n-nodes-base.formTrigger","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.splitOut","n8n-nodes-base.filter","n8n-nodes-base.set","n8n-nodes-base.removeDuplicates","n8n-nodes-base.form","n8n-nodes-base.code","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.n8n","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 9144 characters]

metadata_json:
  {"categories":["automation","integration","migration","admin tools"],"complexity":"complex","use_cases":["Migrate workflows between n8n instances","Import workflow JSON files into an n8n instance","Map and reconcile credentials when moving workflows","Create placeholder credentials on the target instance for later population","Bulk update workflow credential IDs and deploy workflows to a target instance"],"estimated_setup_minutes":15,"required_services":["n8n API (source and target instances) with API key access","Remote n8n instance(s) configured (baseUrl + apiKey)","Browser access to the generated form and ability to upload JSON files"],"key_features":["Multi-form guided import flow (file upload or copy from remote instance)","Retrieve list of workflows from a remote n8n instance via API","Extract and list credentials from the imported workflow","Map original credentials to existing credentials on the current instance by name","Option to create empty credentials on the fly (marked with emoji) via API for later population"],"target_audience":["n8n administrators","Developers and DevOps engineers","Platform/Infrastructure teams managing multiple n8n environments"]}


name: 📂 Automatically Update Stock Portfolio from OneDrive to Excel
author_name: Louis
author_username: louisdl
categories: []
created_at: 2024-10-29T19:41:20.189Z
updated_at: 2024-10-29T19:41:20.189Z
url: https://n8n.io/workflows/2507
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  Seamlessly Sync and Update Data from a csv in OneDrive to Excel with n8n

  This workflow is perfect for users who need a reliable, automated way to transfer and organize data from OneDrive into Excel—especially for tasks like portfolio tracking, inventory management, and record-keeping. By monitoring your OneDrive folder for new CSV files, it performs data cleaning, transformation, and real-time updates in an Excel sheet, ensuring only new or changed records are added.

  How it Works

  Automated Monitoring: Every minute, the workflow scans a designated OneDrive folder for new files.
  File Verification: It checks if the detected file is in CSV format; if not, the process stops with an error message.
  Data Extraction and Cleaning: CSV data is loaded, and irrelevant headers are removed before mapping to specified columns in Excel.
  Excel Update: The workflow maps data to your Excel sheet, updating only new or modified entries based on a unique identifier ("Ticker/ISIN").
  Cleanup: To keep your OneDrive organized, processed files are deleted after updating Excel.

  Setup Steps

  Connect OneDrive and Excel Accounts: Link your Microsoft OneDrive and Excel accounts in n8n.
  Designate Folder and Worksheet: Specify the OneDrive folder for monitoring and the Excel sheet for data updates.
  Configure Sync Frequency and CSV Validation: Set the monitoring frequency to every minute and ensure the workflow identifies CSV files accurately.

  Once configured, this workflow offers a hands-free, efficient solution to keep your OneDrive and Excel data synchronized effortlessly.

nodes_used:
  ["n8n-nodes-base.microsoftOneDriveTrigger","n8n-nodes-base.stopAndError","n8n-nodes-base.extractFromFile","n8n-nodes-base.microsoftOneDrive","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.microsoftExcel","n8n-nodes-base.microsoftOneDrive","n8n-nodes-base.microsoftOneDrive","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.microsoftExcel"]

workflow_json_compressed:
  H4sIAAAAAAAAE51XTW/bOBD9KwIve9EE/BhSpG+LfiwK7DYL7G4vRQ78GCZCbcmQ5KZF4P++kJ3WjiMldo826HmPj2/ejB/YigbPFg+sbvrBN5E+JLZghqOORjmnRbIq2oqbwFOyySjFhcGQPBeZtM2Cq0gpyigrE7LILgqRBduWrGkT9Wzx+YHVY8kcURkRDaBDD+iMBIfWgsxkU/LCoY2sZI1fEVuwf7v69pa6vqhz0dB9keslFXVT3Psh3lEqcrtM1LGSDd/X4/nGNrADhOB7ulrVsWv7Ng/XDb3t6q/0WI+VbN329VC3DVt8BuS8VJbflGztO7+igbqeLR62+7KfqOt3B8W2fLxERU6gEAIoqQAoowCHRoBOylTKpSCDOlziYzsUb/75NMuyH9r1701613XtCTMtean5BcRQZe5kJnAhakDSGbzlAVKw3pNW0fl8IPbu29D5OPRF8oMvcteuith/neVJ++Pvu3b1vl7Sc6rSXEBVoMwCqQJjVAaUUoMlbUFrEQVx61DzA9W/frxk8eMp5fmvzkrWNnt5Fyy2zVA3G9p9vt4M683w9CZC8fOuUjK/vPff+32Rt35soKHb0OE1kpFSiwDO8wSI0kDISoDJPnD0BrWvDlf8Z6jjl+/Fx3agF6wynnk8cmxhZ3gpnztld1tqBrZg7AXXWGENNxwUjnbWNkLIksDrlDUXiHqn9iPPN0vyTV8Md1S0P+SbZhvbdMKzwjlpm3ag/kPzftnes0X2y55O6MqfdPXYfK7KkKWoALEK4KMPEAS6XPEghA+TsoqLdTWGl/rKSWelc5UziMbhr4kcZXKkPEJwiQCD1OC5SYAuKY5cJh/4cWYU12vq/MijLFJbNO1wVze3szdo2uv1iY/1KPYlsWaT0d4hgXJoRh8Y8MloEDpXRmcR1HE2Hwk734tzwgrNefmc23lSJkk82SQhG+kBrRIQiEfg6FKldBQ56QPPP9vbvVs36+QHKtqm6O+I5m37Mz/efYu0PGk0Kc+aFfLqQDdnKTKvElTBeEATI9gqBZBe5RSTMwKPQvkPGvZ0j+ZdbvuL0u7pcLtwtsXskXuErKIDNJjBqoQgiLz01rhYHYn7tr1vlq1PTyn/KllhLiRLThlvKYLWiIBJKHApeqiwclb5UNHxEHlzR/HLbpeoh9/6cSYXue1Wft4KdX5KUJ2nprw6pFXWQaLgAjAGB+jRQyClwAUjnCDJkYsDxb87WvuO9nLmmpajsm2x3gzj2jN+SaMpi8GHF2Tu6WSmudncfcJbXeFhKFSVU8oYEEZrQCUlBF8hCPQ6KBG4Invg/d+ut/qzGb7UY0Kct0uMPXZTjpHRUBx/u0uQ5+Np8cBWvh4rf37YraO/rvOuTsnqJtE3tuDbm5ttObmbHDCbzXJZHoBfD/ZJjJk+m7raGS6fhJjZBich5leAydJzmTZV+7VEmQSYs98UwIur5GT12QkyVf7V/J6EmH+0KYzXFvdnEE8MePJvZJLPmX+8psi9Pm8nES/ryCngVzNoAne7/R9zJI96+w4AAA==

metadata_json:
  {"categories":["automation","integration","data processing","file synchronization"],"complexity":"medium","use_cases":["Stock/portfolio tracking (CSV → Excel)","Inventory management syncing","Periodic record-keeping and reporting","Automated CSV ingestion and consolidation","Incremental updates to master Excel sheets"],"estimated_setup_minutes":15,"required_services":["n8n","Microsoft OneDrive","Microsoft Excel (OneDrive / Microsoft 365)"],"key_features":["Automated folder monitoring (every minute)","CSV format verification and error handling","CSV extraction and data cleaning (header removal)","Mapping and updating Excel rows","Incremental updates using a unique identifier (Ticker/ISIN) to avoid duplicates or overwrite unchanged rows"],"target_audience":["Developers/automation engineers","Financial analysts / portfolio managers","Operations and IT teams managing records or inventories"]}


name: Generate SQL queries from schema only - AI-powered
author_name: Yulia
author_username: yulia
categories: []
created_at: 2024-10-29T21:14:34.146Z
updated_at: 2024-10-29T21:14:34.146Z
url: https://n8n.io/workflows/2508
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:31
description:
  This workflow is a modification of the previous template on how to create an SQL agent with LangChain and SQLite.

  The key difference – the agent has access only to the database schema, not to the actual data. To achieve this, SQL queries are made outside the AI Agent node, and the results are never passed back to the agent.

  This approach allows the agent to generate SQL queries based on the structure of tables and their relationships, without having to access the actual data.

  This makes the process more secure and efficient, especially in cases where data confidentiality is crucial.

  🚀 Setup

  To get started with this workflow, you’ll need to set up a free MySQL server and import your database (check Step 1 and 2 in this tutorial). 

  Of course, you can switch MySQL to another SQL database such as PostgreSQL, the principle remains the same. The key is to download the schema once and save it locally to avoid repeated remote connections.

  Run the top part of the workflow once to download and store the MySQL chinook database schema file on the server.

  With this approach, we avoid the need to repeatedly connect to a remote db4free database and fetch the schema every time. As a result, we reach greater processing speed and efficiency.

  🗣️ Chat with your data

  Start a chat: send a message in the chat window.
  The workflow loads the locally saved MySQL database schema, without having the ability to touch the actual data. The file contains the full structure of your MySQL database for analysis.
  The Langchain AI Agent receives the schema, your input and begins to work.
  The AI Agent generates SQL queries and brief comments based solely on the schema and the user’s message.
  An IF node checks whether the AI Agent has generated a query. When:
  Yes: the AI Agent passes the SQL query to the next MySQL node for execution.
  No: You get a direct answer from the Agent without further action.

  The workflow formats the results of the SQL query, ensuring they are convenient to read and easy to understand.
  Once formatted, you get both the Agent answer and the query result in the chat window.

  🌟 Example queries

  Try these sample queries to see the schema-driven AI Agent in action:

  Would you please list me all customers from Germany?

  What are the music genres in the database?

  What tables are available in the database?

  Please describe the relationships between tables. - In this example, the AI Agent does not need to create the SQL query.

  And if you prefer to keep the data private, you can manually execute the generated SQL query in your own environment using any database client or tool you trust 🗄️

  💭 The AI Agent memory node does not store the actual data as we run SQL-queries outside the agent. It contains the database schema, user questions and the initial Agent reply. Actual SQL query results are passed to the chat window, but the values are not stored in the Agent memory.

nodes_used:
  ["@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.noOp","n8n-nodes-base.mySql","n8n-nodes-base.mySql","n8n-nodes-base.set","n8n-nodes-base.convertToFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.readWriteFile","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.mySql","n8n-nodes-base.set","n8n-nodes-base.merge"]

workflow_json_compressed:
  [encoded data, 7008 characters]

metadata_json:
  {"categories":["data processing","integration","automation","database","security"],"complexity":"medium","use_cases":["Generate SQL queries from schema without exposing data","Chat-driven database exploration using schema only","Schema analysis and relationship discovery","Secure query generation for manual execution in private environments","Caching database schema to improve performance"],"estimated_setup_minutes":45,"required_services":["MySQL (or PostgreSQL) server with exported schema file","n8n instance","OpenAI (or compatible LLM) API / LangChain integration","Local file storage for schema caching"],"key_features":["AI agent receives only DB schema (no data)","SQL queries generated by agent then executed outside the agent","Schema downloaded and cached locally to avoid repeated remote DB connections","Conditional flow: execute query only if agent produces one","Chat interface returning both agent explanation and query results (results not stored in agent memory)"],"target_audience":["Developers","Data engineers","Analysts concerned with data privacy/security"]}


name: TwentyCRM event based updates on selective messaging channels with logs
author_name: sateshcharan
author_username: sateshcharan
categories: []
created_at: 2024-10-30T13:18:04.260Z
updated_at: 2024-10-30T13:18:04.260Z
url: https://n8n.io/workflows/2509
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Who is this template for?

  This workflow template is designed for DevOps, Engineering, and Managed Service Provider professionals seeking alerts on various channels, with each channel being logically chosen based on the severity of the event.

  How it works

  Each time a new event occurs, the workflow runs (powered by TwentyCRM's native Webhooks feature).
  After filtering for the required data from the webhook, the filtered data is logged using Google Sheets.
  Based on the eventType from the webhook, we conditionally select a predefined messaging channel and send updates or alerts through it.

  Set up instructions

  Complete the Set up credentials step when you first open the workflow. You'll need a Google-OAuth2.0 with Gmail API & Google Sheets Scope, Slack with OAuth2.0 - chat:write scopes.
  Set up the Webhook in TwentyCRM, linking the On new TwentyCRM event Trigger with your TwentyCRM App.
  Set the correct channel to send to in the Post message in channel step.
  After testing your workflow, swap the Test URL to Production URL in TwentyCRM and activate your workflow.

  Template was created in n8n v1.63.4.

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook","n8n-nodes-base.gmail","n8n-nodes-base.slack"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","monitoring","logging"],"complexity":"medium","use_cases":["Real-time event alerts and notifications","Conditional routing of messages by event severity","Audit/logging of events to a spreadsheet","Centralized incident notifications across channels","Testing and production webhook lifecycle"],"estimated_setup_minutes":20,"required_services":["TwentyCRM (webhooks)","Google (OAuth2, Google Sheets, Gmail API)","Slack (OAuth2, chat:write)","n8n"],"key_features":["Webhook trigger on new TwentyCRM events","Filtering and mapping event payload","Logging events to Google Sheets","Conditional channel selection based on eventType","Posting messages to selected messaging channels (e.g., Slack)"],"target_audience":["DevOps","Engineering teams","Managed Service Providers (MSPs)"]}


name: Enhance Security Operations with the Qualys Slack Shortcut Bot!
author_name: Angel Menendez
author_username: djangelic
categories: []
created_at: 2024-10-30T19:28:02.510Z
updated_at: 2024-10-30T19:28:02.510Z
url: https://n8n.io/workflows/2510
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Enhance Security Operations with the Qualys Slack Shortcut Bot!

  Our Qualys Slack Shortcut Bot is strategically designed to facilitate immediate security operations directly from Slack. This powerful tool allows users to initiate vulnerability scans and generate detailed reports through simple Slack interactions, streamlining the process of managing security assessments.

  Workflow Highlights:
  Interactive Modals**: Utilizes Slack modals to gather user inputs for scan configurations and report generation, providing a user-friendly interface for complex operations.
  Dynamic Workflow Execution**: Integrates seamlessly with Qualys to execute vulnerability scans and create reports based on user-specified parameters.
  Real-Time Feedback**: Offers instant feedback within Slack, updating users about the status of their requests and delivering reports directly through Slack channels.


  Operational Flow:
  Parse Webhook Data**: Captures and parses incoming data from Slack to understand user commands accurately.
  Execute Actions**: Depending on the user's selection, the workflow triggers other sub-workflows like 'Qualys Start Vulnerability Scan' or 'Qualys Create Report' for detailed processing.
  Respond to Slack**: Ensures that every interaction is acknowledged, maintaining a smooth user experience by managing modal popups and sending appropriate responses.


  Setup Instructions:
  Verify that Slack and Qualys API integrations are correctly configured for seamless interaction.
  Customize the modal interfaces to align with your organization's operational protocols and security policies.
  Test the workflow to ensure that it responds accurately to Slack commands and that the integration with Qualys is functioning as expected.


  Need Assistance?
  Explore our Documentation or get help from the n8n Community for more detailed guidance on setup and customization.

  Deploy this bot within your Slack environment to significantly enhance the efficiency and responsiveness of your security operations, enabling proactive management of vulnerabilities and streamlined reporting.

  To handle the actual processing of requests, you will also need to deploy these two subworkflows:
  Qualys Start Vulnerability Scan
  Qualys Create Report

  To simplify deployment, use this Slack App manifest to quickly create an app with the correct permissions:

  {
      "display_information": {
          "name": "Qualys n8n Bot",
          "description": "n8n Integration for Qualys",
          "background_color": "#2a2b2e"
      },
      "features": {
          "bot_user": {
              "display_name": "Qualys n8n Bot",
              "always_online": false
          },
          "shortcuts": [
              {
                  "name": "Scan Report Generator",
                  "type": "global",
                  "callback_id": "qualys-scan-report",
                  "description": "Generate a report from the latest scan to review vulnerabilities and compliance."
              },
              {
                  "name": "Launch Qualsys VM Scan",
                  "type": "global",
                  "callback_id": "trigger-qualys-vmscan",
                  "description": "Start a Qualys Vulnerability scan from the comfort of your Slack Workspace"
              }
          ]
      },
      "oauth_config": {
          "scopes": {
              "bot": [
                  "commands",
                  "channels:join",
                  "channels:history",
                  "channels:read",
                  "chat:write",
                  "chat:write.customize",
                  "files:read",
                  "files:write"
              ]
          }
      },
      "settings": {
          "interactivity": {
              "is_enabled": true,
              "request_url": "Replace everything inside the double quotes with your workflow webhook url, for example: https://n8n.domain.com/webhook/99db3e73-57d8-4107-ab02-5b7e713894ad"",
              "message_menu_options_url": "Replace everything inside the double quotes with your workflow message options webhook url, for example: https://n8n.domain.com/webhook/99db3e73-57d8-4107-ab02-5b7e713894ad""
          },
          "org_deploy_enabled": false,
          "socket_mode_enabled": false,
          "token_rotation_enabled": false
      }
  }

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.executeWorkflow","n8n-nodes-base.set","n8n-nodes-base.executeWorkflow","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.switch","n8n-nodes-base.set","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.respondToWebhook","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 8116 characters]

metadata_json:
  {"categories":["automation","security","integration"],"complexity":"medium","use_cases":["Trigger Qualys vulnerability scans from Slack","Generate and deliver Qualys scan reports in Slack","Provide real-time feedback on scan/report status","Enable fast security triage and collaboration within Slack","Automate security workflows and compliance reporting"],"estimated_setup_minutes":45,"required_services":["Slack (app with interactivity and shortcuts)","Qualys API","n8n instance (cloud or self-hosted)"],"key_features":["Slack interactive modals for user input","Webhook parsing of Slack shortcuts/commands","Triggers sub-workflows: Qualys Start Vulnerability Scan and Qualys Create Report","Real-time status updates and report delivery in Slack","Configurable modal interfaces to match org policies"],"target_audience":["Security operations (SOC) teams","Security engineers / analysts","DevOps and IT administrators who manage vulnerability scans"]}


name: Qualys Vulnerability Trigger Scan SubWorkflow
author_name: Angel Menendez
author_username: djangelic
categories: []
created_at: 2024-10-31T00:18:38.836Z
updated_at: 2024-10-31T00:18:38.836Z
url: https://n8n.io/workflows/2511
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  This workflow is triggered by a parent workflow initiated via a Slack shortcut. Upon activation, it collects input from a modal window in Slack and initiates a vulnerability scan using the Qualys API.

  Key Features
  Trigger:** Launched by a parent workflow through a Slack shortcut with modal input.
  API Integration:** Utilizes the Qualys API for vulnerability scanning.
  Data Conversion:** Converts XML scan results to JSON for further processing.
  Loop Mechanism:** Continuously checks the scan status until completion.
  Slack Notifications:** Posts scan summary and detailed results to a specified Slack channel.

  Workflow Nodes
  Start VM Scan in Qualys: Initiates the scan with specified parameters.
  Convert XML to JSON: Converts the scan results from XML format to JSON.
  Fetch Scan Results: Retrieves scan results from Qualys.
  Check if Scan Finished: Verifies whether the scan is complete.
  Loop Mechanism: Handles the repetitive checking of the scan status.
  Slack Notifications: Posts updates and results to Slack.


  Relevant Links
  Qualys API Documentation
  Qualys Platform Documentation
  Parent workflow link
  Link to Report Generator Subworkflow

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.xml","n8n-nodes-base.httpRequest","n8n-nodes-base.splitInBatches","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.xml","n8n-nodes-base.if","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.slack","n8n-nodes-base.slack","n8n-nodes-base.slack","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.merge","n8n-nodes-base.slack","n8n-nodes-base.manualTrigger","n8n-nodes-base.noOp","n8n-nodes-base.merge","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 8260 characters]

metadata_json:
  {"categories":["automation","integration","security","data processing"],"complexity":"complex","use_cases":["Trigger and run Qualys vulnerability scans from Slack","Automate vulnerability scanning workflows and reporting","Notify teams of scan progress and results in Slack","Convert and normalize Qualys XML results to JSON for downstream processing","Integrate scan results with report generator subworkflows"],"estimated_setup_minutes":45,"required_services":["Qualys API (Qualys VM)","Slack (workspace with shortcuts/modals & bot token)","n8n (hosted or self-managed instance with subworkflow support)"],"key_features":["Launched by parent workflow via Slack shortcut with modal input","Starts VM scan in Qualys via API","Converts Qualys XML results to JSON","Polling/loop mechanism to check scan status until completion","Posts scan summary and detailed results to a specified Slack channel"],"target_audience":["Security teams (Vulnerability Management)","DevOps / SRE","IT administrators / SOC analysts responsible for scans and alerts"]}


name: Qualys Scan Slack Report Subworkflow
author_name: Angel Menendez
author_username: djangelic
categories: []
created_at: 2024-10-31T00:22:38.823Z
updated_at: 2024-10-31T00:22:38.823Z
url: https://n8n.io/workflows/2512
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Introducing the Qualys Scan Slack Report Subworkflow—a robust solution designed to automate the generation and retrieval of security reports from the Qualys API.

  This workflow is a sub workflow of the Qualys Slack Shortcut Bot workflow. It is triggered when someone fills out the modal popup in slack generated by the Qualys Slack Shortcut Bot.

  When deploying this workflow, use the Demo Data node to simulate the data that is input via the Execute Workflow Trigger. That data flows into the Global Variables Node which is then referenced by the rest of the workflow. 

  It includes nodes to Fetch the Report IDs and then Launch a report, and then check the report status periodically and download the completed report, which is then posted to Slack for easy access. 

  For Security Operations Centers (SOCs), this workflow provides significant benefits by automating tedious tasks, ensuring timely updates, and facilitating efficient data handling.

  How It Works

  Fetch Report Templates:** The "Fetch Report IDs" node retrieves a list of available report templates from Qualys. This automated retrieval saves time and ensures that the latest templates are used, enhancing the accuracy and relevance of reports.
    
  Convert XML to JSON:** The response is converted to JSON format for easier manipulation. This step simplifies data handling, making it easier for SOC analysts to work with the data and integrate it into other tools or processes.
    
  Launch Report:** A POST request is sent to Qualys to initiate report generation using specified parameters like template ID and report title. Automating this step ensures consistency and reduces the chance of human error, improving the reliability of the reports generated.
    
  Loop and Check Status:** The workflow loops every minute to check if the report generation is complete. Continuous monitoring automates the waiting process, freeing up SOC analysts to focus on higher-priority tasks while ensuring they are promptly notified when reports are ready.
    
  Download Report:** Once the report is ready, it is downloaded from Qualys. Automated downloading ensures that the latest data is always available without manual intervention, improving efficiency.
    
  Post to Slack:** The final report is posted to a designated Slack channel for quick access. This integration with Slack ensures that the team can promptly access and review the reports, facilitating swift action and decision-making.

  Get Started

  Ensure your Slack and Qualys integrations are properly set up.
  Customize the workflow to fit your specific reporting needs.
  Link to parent workflow
  Link to Vulnerability Scan Trigger

  Need Help?

  Join the discussion on our Forum or check out resources on Discord!


  Deploy this workflow to streamline your security report generation process, improve response times, and enhance the efficiency of your security operations.

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.xml","n8n-nodes-base.httpRequest","n8n-nodes-base.splitInBatches","n8n-nodes-base.wait","n8n-nodes-base.httpRequest","n8n-nodes-base.if","n8n-nodes-base.httpRequest","n8n-nodes-base.slack","n8n-nodes-base.xml","n8n-nodes-base.xml","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 7504 characters]

metadata_json:
  {"categories":["security","automation","integration","reporting","monitoring"],"complexity":"medium","use_cases":["Automate Qualys vulnerability report generation","Periodic polling of report status and automatic download","Delivering completed reports to Slack channels","Standardizing and templating security reports for SOC workflows","Subworkflow integration within larger Slack-triggered automations"],"estimated_setup_minutes":20,"required_services":["Qualys API","Slack (workspace/app with file/message permissions)","n8n instance"],"key_features":["Fetches available Qualys report templates","Converts XML responses to JSON for easier processing","Launches report generation via Qualys API (POST)","Looping/polling to check report status periodically","Downloads completed reports automatically when ready"],"target_audience":["Security Operations Centers (SOCs)","Security engineers and analysts","DevOps/IT Ops teams automating security workflows (n8n users)"]}


name: Convert Image Files (JPG, PNG) to URLs and Reduce File Size for FREE
author_name: simonscrapes
author_username: simonscrapes
categories: []
created_at: 2024-10-31T14:44:02.675Z
updated_at: 2024-10-31T14:44:02.675Z
url: https://n8n.io/workflows/2513
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:31
description:
  Use Case
  Transform and optimize images for web use:
  You need to host local images online
  You want to reduce image file sizes automatically
  You need image URLs for web content
  You want to generate and optimize AI-created images

  What this Workflow Does
  The workflow processes images through two services:
  Uploads images to ImgBB for hosting and URL generation (free but need API key)
  Optimizes images using ReSmush.it to reduce file size (free)
  Optional: Creates images using OpenAI's image generation
  Returns optimized image URLs ready for use

  Setup
  Create an ImgBB account and get your API key
  Add your ImgBB API key to the HTTP Request node (key parameter)
  Optional: Configure OpenAI credentials for image generation
  Connect your image input source

  How to Adjust it to Your Needs
  Skip OpenAI nodes if using your own image files
  Adjust image optimization parameters
  Customize image hosting settings
  Modify output format for your needs


  More templates and n8n workflows &gt;&gt;&gt; @simonscrapes

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.noOp"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","image processing","web publishing"],"complexity":"medium","use_cases":["Host local images online and obtain public URLs","Automatically reduce image file sizes for faster web delivery","Generate AI images and optimize them for web use (optional)","Prepare optimized image URLs for CMS, blogs, or e-commerce listings"],"estimated_setup_minutes":15,"required_services":["ImgBB (API key required)","ReSmush.it (image optimization API)","OpenAI (optional, for image generation)"],"key_features":["Uploads local images to ImgBB to generate public URLs","Optimizes/compresses images via ReSmush.it to reduce file size","Optional image creation using OpenAI image generation","Configurable optimization and hosting parameters","Outputs ready-to-use optimized image URLs"],"target_audience":["web developers","content creators and bloggers","marketers and growth teams handling media at scale」「e-commerce managers"]}


name: Summarize your emails with A.I. (via Openrouter) and send to Line messenger
author_name: Keith Rumjahn
author_username: rumjahn
categories: []
created_at: 2024-11-01T07:46:21.338Z
updated_at: 2024-11-01T07:46:21.338Z
url: https://n8n.io/workflows/2515
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Who is this template for?
  Anyone who is drowning in emails
  Busy parents who has alot of school emails
  Busy executives with too many emails

  Case Study
  I get too many emails from my kid's school about soccer practice, lunch orders and parent events. I use this workflow to read all the emails and tell me what is important and what requires actioning. 

  Youtube tutorial

  What this workflow does
  It uses IMAP to read the emails from your email account (i.e. Gmail). 
  It then passes the email to Openrouter.ai and uses a free A.I. model to read and summarize the email. 
  It then sends the summary as a message to your messenger (i.e. Line).

  Setup
  You need to find your email server IMAP credentials. 
  Input your openrouter.ai API credentials or replace the HTTP request node with an A.I. node such as OpenAI. 
  Input your messenger credentials. I use Line but you can change the node to another messenger line Telegram.
  You need to change the message ID to your ID inside the http request. You can find your user ID inside the https://developers.line.biz/console/. Change the "to": {insert your user ID}.

  How to adjust it to your needs
  You can change the A.I. prompt to fit your needs by telling it to mark emails from a certain address as important. 
  You can change the A.I. model from the current meta-llama/llama-3.1-70b-instruct:free to a paid model or other free models. 
  You can change the messenger node to telegram or any other messenger app you like.

nodes_used:
  ["n8n-nodes-base.emailReadImap","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.if"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","communication","ai","notifications"],"complexity":"medium","use_cases":["Summarize incoming emails","Identify action items and important messages","Send email summaries/alerts to a messenger (Line/Telegram)","Triage school or event emails for parents","Reduce inbox overload for executives"],"estimated_setup_minutes":20,"required_services":["IMAP-compatible email account (Gmail, Outlook, etc.)","Openrouter.ai (or alternative AI API such as OpenAI)","Line Messenger account and developer channel (or alternative messenger like Telegram)","n8n instance/server"],"key_features":["Reads email via IMAP","AI-powered email summarization (configurable model and prompt)","Sends summaries to Line messenger (replaceable with other messengers)","Structured output parsing for concise summaries","Conditional logic to route/process messages differently"],"target_audience":["busy parents","executives and professionals","anyone overwhelmed by email volume (individuals, small teams)"]}


name: 📈 Receive Daily Market News from FT.com to your Microsoft outlook inbox
author_name: Louis
author_username: louisdl
categories: []
created_at: 2024-11-01T13:38:33.684Z
updated_at: 2024-11-01T13:38:33.684Z
url: https://n8n.io/workflows/2516
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  📈 Daily Financial News - Description 

  This workflow automates the process of collecting, organizing, and delivering a daily summary of financial news by following these key steps:

  Scheduled Activation  
     The workflow starts at 7:00 AM each day, triggered by the Schedule Trigger node.

  News Retrieval  
     The HTTP Request node fetches the latest financial news from FT.com.

  Content Extraction  
     The Extract Specific Content node scrapes targeted sections of the HTML (headlines, editor's picks, top stories, etc.) using CSS selectors to locate and capture relevant content.

  News Aggregation  
     The Set Node gathers and organizes the extracted news data, preparing it for summarization. Categories like "Headline #1," "Editor's Picks," and "Europe News" are all structured into a single data block.

  Summarization  
     An AI Agent (Google Gemini) takes the aggregated news data and creates a concise, HTML-formatted summary tailored to give investors an insightful market snapshot.

  Email Delivery  
     Finally, the Microsoft Outlook node sends the summary via email to the designated recipient with the subject "Financial news from today."

  This process ensures that financial news is efficiently curated, summarized, and delivered without manual intervention.

nodes_used:
  ["n8n-nodes-base.html","n8n-nodes-base.httpRequest","n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.microsoftOutlook"]

workflow_json_compressed:
  H4sIAAAAAAAAE52VTW/jNhCG/wrBSy+iQ1EkRenURdEu9tAW6HZ7CYJiSA5tIhLlSjSygeH/Xshx105iZYNe7fl43nc0wz3tMQNt9zSmKUNy+MnTlmouldNV06jSm8qZmmvLvTdeVxUvtbQeeBlQmVDyyqF3wola21CGxpVlKOmhoGnwONH2dk/jXNILEBIayxoXKiY9cmYE1kx5o4xWxksraUET9Ehb+vPXPILLZNqiiyE64oaUMWVa0Py4nSOSSezYglmYcLXJfTenD3lues7HDl1GTzYIvosJp4Kgj3kYf5jINrr7qSDTdshdXG8ywexWtKDbYYo5Dom2t4bzopL8rqBbGKHHjONE2/3h1OlT+qUbHmibxx0+kf2F43RMLVfiUJy0VwaC8kEwrRwyGbhkgL5iOtSlNyVUtQ9n7R8xkxATJBehIwkfJjKkmf0N8Xn7B/6zwylfePBl7EhL5v+m9ubm4eFhFfLKDf3Nc4nK/F+J8kJiraUVgjfMBsGZDGiZ5ZyzAEKXUjWgy/os8bPboN91SP4c43qN46Ky6RR4jrsgr/QS+eIkGm2rqrbAdMCayRodM5VRTBkbnHa1aZy9mMQwrDskH7GPKZKfNpDJr4PH7oz7YzLp5szcQVq7DcS06vo5/KnAU/5z9lJwXijxffgzulAINlSs0mXDpAfBLArHrIemdporL/0FOuQNjiRvkGCHPaY8LZuM+QUcF+9ytlrJb3hKSmVLGZhQaJisVcOM8JI1RjW6dFAHf4H34RP5sH62z4tOwinupXnvmrw+7yC3tUZwzGupmZTeMOtkyaQGEL4JyNXFDn7O0d0/kt+GvLx10zHmFHJBx2Y6wV/R0f9uWEvp8pjrIKzGBpixpWSSm4oBV45VttYAqHkJ5oITkz8Oedr1PYyPxD4SZD3EbhG7j24cpiHk33e5G4b7F9Yq+S5rxeGumAUldHPmUd+3obZ72kOcy93uj+/AO0mPSQWNyeNX2vLD3d2heH0rrlV/x828Wvzamlyr//p7vVpu8dm6yvzWil6nXbpH7Z5C/HvemR2s8fTbm/ivwl/1WnT0mpbvv9dXBB0O/wLEnwHmfwgAAA==

metadata_json:
  {"categories":["automation","news aggregation","email notifications","summarization","integration"],"complexity":"medium","use_cases":["Daily market/news briefings for investors","Automated email distribution of curated financial headlines","Internal team market updates for finance/strategy teams","Monitoring top stories for portfolio/asset managers"],"estimated_setup_minutes":30,"required_services":["FT.com (public website/content)","Google Gemini (lmChat API)","Microsoft Outlook / Office 365 account (SMTP/Graph API)","n8n instance"],"key_features":["Scheduled daily trigger at 07:00","HTTP retrieval of FT.com content","HTML scraping via CSS selectors to extract headlines and sections","Aggregation/structuring of extracted items","AI-powered summarization producing HTML-formatted digest (Google Gemini) and sending via Outlook email"],"target_audience":["investors and traders","financial analysts and portfolio managers","operations/communications teams in finance firms implementing automation"]}


name: Send Google analytics data to A.I. to analyze then save results in Baserow
author_name: Keith Rumjahn
author_username: rumjahn
categories: []
created_at: 2024-11-01T15:33:44.130Z
updated_at: 2024-11-01T15:33:44.130Z
url: https://n8n.io/workflows/2517
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:31
description:
  Who's this for?
  If you own a website and need to analyze your Google analytics data
  If you need to create an SEO report on which pages are getting most traffic or how your google search terms are performing
  If you want to grow your site based on suggestions from data

  Use case
  Instead of hiring an SEO expert, I run this report weekly. It checks compares the data from this week to the week before:
  Views based on countries
  The top performing pages
  Google search console performance

  Watch youtube tutorial here

  Get my SEO A.I. agent system here

  How it works
  The workflow gathers google analytics for the past 7 days then it gathers the data for the week before for comparison.
  It does this 3 times to get: views per country, engagement per page and google search console results for organic search results.
  The google analytics nodes has already chosen the correct dimensions and metrics. 
  At the end, it passes the data to openrouter.ai for A.I. analyse.
  Finally it saves to baserow. 

  How to use this
  Input your Google analytics credentials
  Input your property ID
  Input your Openrouter.ai credentials
  Input your baserow credentials
  You will need to create a baserow database with columns: Name, Country Views, Page Views, Search Report, Blog (name of your blog).

  Created by Rumjahn

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.googleAnalytics","n8n-nodes-base.googleAnalytics","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleAnalytics","n8n-nodes-base.googleAnalytics","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleAnalytics","n8n-nodes-base.googleAnalytics","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.baserow","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 5580 characters]

metadata_json:
  {"categories":["automation","integration","data processing","analytics","SEO"],"complexity":"medium","use_cases":["Automated weekly SEO reporting","Week-over-week traffic comparison (views by country)","Identifying top performing pages and engagement","Analyzing Google Search Console / organic search performance","Generating AI-driven insights and recommendations from analytics data"],"estimated_setup_minutes":20,"required_services":["Google Analytics (GA4) API / property access","Google Search Console (via GA or separate)","OpenRouter.ai (or compatible AI inference endpoint)","Baserow (for storing results)"],"key_features":["Fetches last 7 days and previous week GA data for comparisons","Collects views by country, page engagement, and search console results","Preconfigured GA dimensions and metrics in nodes","Sends aggregated data to OpenRouter.ai for analysis","Stores AI analysis and reports in a Baserow table (requires specific columns listed in template)"],"target_audience":["Website owners","Marketers and SEO practitioners","Content creators and bloggers wanting data-driven growth advice"]}


name: 🎵 Sync YouTube and Spotify Music Playlists
author_name: Louis
author_username: louisdl
categories: []
created_at: 2024-11-01T16:50:08.247Z
updated_at: 2024-11-01T16:50:08.247Z
url: https://n8n.io/workflows/2518
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Workflow Overview

  This workflow automates the process of updating a Spotify playlist with tracks from a YouTube playlist, ensuring no duplicates are added.

  Key Components

  Manual Trigger: Starts the workflow when you click ‘Test workflow’.
     
  Spotify Integration: Retrieves tracks from a specified Spotify playlist.

  YouTube Integration: Fetches tracks from a designated YouTube playlist.

  Batch Processing: Processes tracks in batches to handle multiple items efficiently.

  Track Search: Searches for YouTube tracks on Spotify to find corresponding IDs.

  Comparison: Compares existing Spotify tracks with YouTube tracks to identify which ones to add.

  Track Addition: Adds new Spotify tracks to the playlist that are not already included.

  If you have any questions or need clarification, feel free to ask!

nodes_used:
  ["n8n-nodes-base.compareDatasets","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.spotify","n8n-nodes-base.youTube","n8n-nodes-base.splitInBatches","n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.spotify","n8n-nodes-base.stickyNote","n8n-nodes-base.spotify"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["integration","media","automation","data synchronization"],"complexity":"medium","use_cases":["Sync a YouTube playlist to a Spotify playlist","Migrate tracks from YouTube to Spotify","Keep a Spotify playlist updated with new YouTube uploads","Remove duplicates when consolidating playlists across platforms"],"estimated_setup_minutes":15,"required_services":["Spotify (API / account)","YouTube (YouTube Data API / account)","n8n instance"],"key_features":["Fetch playlists from both Spotify and YouTube","Search Spotify for tracks found on YouTube","Compare datasets to detect and skip duplicates","Add missing tracks to a Spotify playlist","Batch processing to handle large playlists efficiently (splitInBatches node support)"],"target_audience":["music listeners","playlist curators","n8n users / automation enthusiasts', 'developers integrating media APIs"]}


name: Summarize Umami data with AI (via Openrouter) and save it to Baserow
author_name: Keith Rumjahn
author_username: rumjahn
categories: []
created_at: 2024-11-02T07:13:06.199Z
updated_at: 2024-11-02T07:13:06.199Z
url: https://n8n.io/workflows/2520
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:32
description:
  Who's this for?
  Anyone who wants to improve the SEO of their website
  Umami users who want insights on how to improve their site
  SEO managers who need to generate reports weekly

  Case study

  Watch youtube tutorial here

  Get my SEO A.I. agent system here

  How it works
  This workflow calls the Umami API to get data 
  Then it sends the data to A.I. for analysis
  It saves the data and analysis to Baserow

  How to use this
  Input your Umami credentials
  Input your website property ID
  Input your Openrouter.ai credentials
  Input your baserow credentials
  You will need to create a baserow database with columns: Date, Summary, Top Pages, Blog (name of your blog).

  Future development
  Use this as a template. There's alot more Umami stats you can pull from the API.
  Change the A.I. prompt to give even more detailed analysis.

  Created by Rumjahn

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.baserow"]

workflow_json_compressed:
  [encoded data, 4680 characters]

metadata_json:
  {"categories":["integration","analytics","automation","data processing","AI-driven reporting"],"complexity":"medium","use_cases":["Generate weekly SEO reports from Umami data","Summarize website analytics with AI-driven insights","Save and track summaries in a Baserow database","Provide actionable recommendations for improving site SEO"],"estimated_setup_minutes":20,"required_services":["Umami (self-hosted or cloud)","Openrouter.ai (access to OpenAI models via Openrouter)","Baserow (workspace and API access)"],"key_features":["Pulls metrics from Umami API","Sends analytics data to an AI model for summarization and recommendations","Stores date, summary, top pages, and blog name in Baserow","Supports scheduled and manual runs","Customizable AI prompt for deeper analysis"],"target_audience":["SEO managers","Website owners using Umami","Marketers seeking automated analytics reports','Developers/analysts implementing analytics automation"]}


