# templates

name: Create Secure Interactive Applications with WhatsApp Flows End-to-End Encryption
author_name: Flavio Angeleu
author_username: flavioangeleu
categories: []
created_at: 2025-05-10T16:32:23.891Z
updated_at: 2025-05-10T16:32:23.891Z
url: https://n8n.io/workflows/3973
scraped_at: 2025-12-24 13:02:45
description:
  WhatsApp Flows Encrypted Data Exchange Workflow

  Summary
  This workflow enables secure end-to-end encrypted data exchange with WhatsApp Flows for interactive applications inside Whatsapp.  It implements the WhatsApp Business Encryption protocol using RSA for key exchange and AES-GCM for payload encryption, providing a secure channel for sensitive data transmission while interfacing with WhatsApp's Business API. This follows the official WhatsApp Business Encryption specifications to establish an encrypted GraphQL-powered data exchange channel between your business and the WhatsApp consumer client.

  How It Works

  Encryption Flow
  Webhook Reception: Receives encrypted data from WhatsApp containing:
     encrypted_flow_data: The AES-encrypted payload
     encrypted_aes_key: The RSA-encrypted AES key
     initial_vector: Initialization vector for AES decryption

  Decryption Process:
     The workflow decrypts the AES key using an RSA private key
     Then uses this AES key to decrypt the payload data
     The inverted IV is used for response encryption

  Data Processing:
     The workflow parses the decrypted JSON data
     Routes requests based on the screen parameter.
   

  Response Generation:
     Generates appropriate response data based on the request type
     Encrypts the response using the same AES key and inverted IV
     Returns the base64-encoded encrypted response

  Key Components
  Webhook Endpoint**: Entry point for encrypted WhatsApp requests
  Decryption Pipeline**: RSA and AES decryption components
  Business Logic Router**: Screen-based routing for different functionality
  Encryption Pipeline**: Secure response encryption

  How to Use

  Deploy the Workflow:
     Import the workflow JSON into your n8n instance

  Set Up WhatsApp Integration:
     Configure your WhatsApp Business API to send requests to your n8n webhook URL
     Ensure your WhatsApp integration is set up to encrypt data using the public key pair of the private key used in this workflow

  Test the Flow:
     Send an encrypted test message from WhatsApp to verify connectivity
     Check if appointment data is being retrieved correctly
     Validate that seat selection is functioning as expected

  Production Use:
     Monitor the workflow performance in production
     Set up error notification if needed

  Requirements

  Authentication Keys

  RSA Private Key: Required for decrypting the AES key (included in the workflow)
  WhatsApp Business Public Key: Must be registered with the WhatsApp Business API
  PostgreSQL Credentials: For accessing appointment data from the database

  WhatsApp Business Encryption Setup
  As specified in the WhatsApp Business Encryption documentation:

  Generate a 2048-bit RSA Key Pair:

  The private key remains with your business (used in this workflow)
  The public key is shared with WhatsApp


  Register the Public Key with WhatsApp:

  Use the WhatsApp Cloud API to register your public key
  Set up the public key using the /v17.0/{WhatsApp-Business-Account-ID}/whatsapp_business_encryption endpoint


  Key Registration API Call:
  POST /v17.0/{WhatsApp-Business-Account-ID}/whatsapp_business_encryption
  {
    "business_public_key": "YOUR_PUBLIC_KEY"
  }

  Verification:

  Verify your public key is registered using a GET request to the same endpoint
  Ensure the key status is "active"

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

workflow_json_compressed:
  [encoded data, 7404 characters]


name: Prevent Concurrent Workflow Runs Using Redis
author_name: Hugues Stock
author_username: hpstock
categories: []
created_at: 2025-05-10T23:21:45.044Z
updated_at: 2025-05-10T23:21:45.044Z
url: https://n8n.io/workflows/3976
scraped_at: 2025-12-24 13:02:45
description:
  What does this template do?  
  This workflow sets a small "lock" value in Redis so that only one copy of a long job can run at the same time. If another trigger fires while the job is still busy, the workflow sees the lock, stops early, and throws a clear error. This protects your data and keeps you from hitting rate limits.  
  Because the workflow also stores simple progress flags ("working", "loading", "finishing"), you can poll the current status and show live progress for very long jobs.

  Use Case  
  Great when the same workflow can be called many times in parallel (for example by webhooks, cron jobs, or nested Execute Workflow calls) and you need an "only run once at a time" guarantee without building a full queue system.

  What the Workflow Does  
  ⚡ Starts through Execute Workflow Trigger called by another workflow  
  🔄 A Switch sends the run to Get, Set, or Unset actions  
  💾 Redis reads or writes a key named process_status_&lt;key&gt; with a time‑to‑live (default 600 s)  
  🚦 If nodes check the key and decide to continue or stop  
  ⏱️ Wait nodes stand in for the slow part of your job (replace these with your real work)  
  📈 Updates the key with human‑readable progress values that another workflow can fetch with action = get  
  🏁 When done, the lock is removed so the next run can start  

  Apps & Services Used  
  Redis  
  Core n8n nodes (Switch, If, Set, Wait, Stop and Error)  

  Pre‑requisites  
  A Redis server that n8n can reach  
  Redis credentials stored in n8n  
  A second workflow that calls this one and sends:  
    action set to get, set, or unset  
    key set to a unique name for the job  
    Optional timeout in seconds  

  Customization Tips  
  Increase or decrease the TTL in the Set Timeout node to match how long your job usually runs  
  Add or rename status values ("working", "loading", "finishing", and so on) to show finer progress  
  Replace Stop and Error with a Slack or email alert, or even push the extra trigger into a queue if you prefer waiting instead of failing  
  Use different Redis keys if you need separate locks for different tasks  
  Build a small "status endpoint" workflow that calls this one with action = get to display real‑time progress to users

  Additional Use Cases  

  🛑 Telegram callback spam filter  
  If a Telegram bot sends many identical callbacks in a burst, call this workflow first to place a lock. Only the first callback will proceed; the rest will exit cleanly until the lock clears. This keeps your bot from flooding downstream APIs.

  🧩 External API rate‑limit protection  
  Run heavy API syncs one after the other so parallel calls do not break vendor rate limits.

  🔔 Maintenance window lock  
  Block scheduled maintenance tasks from overlapping, making sure each window finishes before the next starts.

nodes_used:
  ["n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.switch","n8n-nodes-base.manualTrigger","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.redis","n8n-nodes-base.redis","n8n-nodes-base.redis","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stopAndError","n8n-nodes-base.noOp","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stopAndError","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.wait","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 5228 characters]


name: Auto-Generate And Post Tweet Threads Based On Google Trends Using Gemini AI
author_name: Amjid Ali
author_username: amjid
categories: []
created_at: 2025-05-11T10:14:48.535Z
updated_at: 2025-05-11T10:14:48.535Z
url: https://n8n.io/workflows/3978
scraped_at: 2025-12-24 13:02:45
description:
  AI-Powered Twitter Automation using n8n to Check BigQuery Latest Google Trend and Publish

  Who is this for?

  This template is designed for:

  Content creators
  Tech influencers
  Educators and marketers
    who want to automatically tweet trend-based threads using AI and stay relevant without spending time on manual research and content writing.

  What problem does this workflow solve?

  Creating daily engaging Twitter threads takes time and effort. This workflow:

  Finds trending search terms in your region (via Google Trends)
  Selects the most relevant topic using AI
  Generates a thread of five value-packed tweets
  Publishes them automatically on X (Twitter)

  You get high-quality, niche-specific content on autopilot — ideal for boosting visibility, brand awareness, and engagement.

  What this workflow does

  ⏰ Runs on a scheduled basis (daily at your preferred hour)
  🌍 Uses BigQuery to fetch the top 25 trending search terms
  🎯 AI Agent selects one niche-relevant trend
  ✍️ AI generates a 5-part tweet thread using Gemini or OpenAI
  🐦 Tweets are published to X (Twitter) in sequence
  🔁 Works with any niche – simply modify the AI prompt

  Setup Instructions

  🔧 Google Cloud Setup

     Create a project in Google Cloud Console
     Enable BigQuery API
     Use the included SQL to fetch Google Trends

  🐦 Twitter Developer Setup

     Go to developer.twitter.com
     Create an app and generate OAuth 2.0 credentials

  🧠 AI Credentials

     Add either Gemini API Key or OpenAI Key in n8n

  ✨ Customize

     Modify the AI prompts to match your niche (e.g., marketing, health, finance)
     Adjust tweet tone, call to action, hashtags, or output format

  How to customize this workflow to your needs

  🌍 Change Google Trends region or country in the SQL query
  🧠 Switch to another AI model (Claude, GPT-4o, DeepSeek, etc.)
  📢 Replace Twitter with LinkedIn, Telegram, or Slack integration
  📊 Add metrics or logging for tweet performance (advanced)

  🎥 Watch How It Works



  &gt; In this tutorial, I walk you through the full automation – from pulling Google Trends to posting your AI-generated tweet thread using n8n.

  Example Use Cases

  🔍 Daily tweet series on trending tools or technologies
  💹 Market insights or productivity tips based on daily trends
  🎓 Educational content scheduled automatically
  🧠 Personal brand building using consistent, trend-aware posts

  Dependencies

  n8n (self-hosted or cloud)
  Google Cloud project with BigQuery enabled
  Twitter Developer Account (OAuth 2.0 setup)
  AI provider (Gemini or OpenAI)

  Keywords

  n8n twitter automation, tweet scheduler, X automation, auto post tweets, AI tweet writer, trending topics Twitter bot, Google Trends automation, AI content workflow, tweet generator using GPT, Twitter bot with Gemini, twitter + n8n

  Support & Credit

  Created by Amjid Ali —
  🏆 Global CIO200 | Founder of Syncbricks

  If this template saved you time, consider supporting:

  ➡️ paypal.me/pmptraining

  📚 Learn more:

  Enroll in the full n8n course
  LMS
  More automation templates
  Watch all YouTube tutorials

nodes_used:
  ["n8n-nodes-base.twitter","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.code","n8n-nodes-base.splitInBatches","n8n-nodes-base.wait","n8n-nodes-base.googleBigQuery","n8n-nodes-base.scheduleTrigger","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:
  H4sIAAAAAAAAE62Y227bRhCGX0XQtTbd88FXTVwgMNA0Ldw2AQqj2MOsTEQiBYmqEwR+9w4pN6Ql0jqkN4JEDmc+zs7O/Kuv0yXUfnr1dVqUm9qXEW7S9GoqeLI0K+WF8iYoky1I47mPzCllk8sqRIjOCq8Uc8lF7oI3TOQsM+PRTGfTGparha/heg1pcwv1dnVd4RWoAQPU6y08zqZllWAzvfoLozdRgVHDWApEoWMivRHEJ/DEeoCsrbdSafRc+iWg9ccmyJdV87W0JWl9keA38Kp+KOoa1nh/VW2KuqhKjMG5pDPF6R1e9Wt0gRYY++vjzsuf+Ks15I+zJxwOOUmjgQTwkkjLLQnRRhKZdMxLarXs4dwWzdtN3sGyWn/p0H5Eth86voUv5/HeF+WrZWv4ZpszrD8UZaoenvNKTmdWHsVlr8Q3YOOEiFkEYgRzRCaliGMuEO+s4jFyq1TogN9W1RyB38KyKIvJ9b2vJ++QcXEC+2LZmO8c7J7fyzVFdn2c/Rs5zc4yrylhGXklCE0CY4I4Rb1mxgALviN/va0rkovPRTmfvN/Wq209+dWvN+2KH0OvWvudeeNn5+Y5vkZ8fULqu0qJFCi1noC0jEiTGAnUZJIAt0bO+AqZ9SoFqz/WW9wX30XfuXlOb5vk2xMKp6v07ClzEgwxJhms9ADEQ1aEZyu48jFzY3vpn8/XMMetPboBfc+iR0a4pTNzTl0wwD6UQiTJQCRS4YdrvsXEsV6ipC7FDuz9CsrXN5eUcvtkcVgFpxRxP48mamW8JyY6aBqYJN4LR5ho+qXnAlPb4f6+hjJNbmEBsa5OWX0/h7Le6xIIKU5ZbDeb+sWD/7LZldxPvun62S820FUxAzA+O6K8o7gJMyMOOz2RLDGjrDRMih79A0CN3aOEtb8YnzVN+TT+b5jSO29ZDoRxIYiMmhNrMiUeMywAENL4412O/Q9tjjGkN2c1Cq+MRXwSFH5IHRixWisccziejAiWitSxXyPP6B6Lu5t9HI0jQ9EzJhwOcKXBOiIkdlyJVUuCppKAM0alqATO9Q7n56paTd7/A+vJDQ73zSjZZrUo6pvyja/jPWz2GJ09ibEbatrrrL21hGbUAxLVB05hwDXHGhBZOcpzbwp/8EU9Cvawu9kfVEr/JwoeINxX1adW/jiwGhSXRDOeMC8C9zG12Bmpw0YfIaDmmR4t2d6yW4tZlopYHtBLNkBcCBbbmDcce4PHIj4o2bY9bCav/7gdfaF5a/mmmP+2hVZ09JutwNYgj/cv3uekUnlUCwQbPsdcM48TOKCecJ5pByqo3Gu3t7i8aduSFvN5f37tF8STYWfX52QU18CcN7A44BJZhWlkHhttkpLYxCLKB0FxSZEc+qB1ET99mfxSvTCyNq3Nk8kzPNWogcOKncaqrJuGdjWdjm/4aHjmIVnCBTWNsMHqzYkTrVSkxjIdXR4EZexi1MtIdYwhCqaIwn2PNYq6O3BUA4LmiGMgaaphmJSfT6oacXspKG5FVIuSOCpR5SqvUeBihkGxTDPQYMzw2jNxNmjT4C/lTNLqbEwgzrZiIOJm0o0kRxmAk0uA1CNLL8/npPRyULAoUB3TRLncgKJ+CcKlZvh7bTkIquUwqDofFBXV2aBojfdLlEl4oTX/2HwscUajSzw9NoEPmn97e4bn2gSfp1f08e4OPbcjdejZ0eE26KaN9P1uOiU95GtMHw66en78RHe++Hv59OMEn531vuO9JwZBx6TgIOl+inoe72ad049H3OwHHQJ7LqCG87Y/xIb8vDCRB50e2g95HThHDXo7PNbslrcRqlsU1U/X+p6PH5APnh95h8O/B44Ff6HEXo44ei7eReyffS9422ePH2zEURdHYr/wsi8GHD+WHE3v2GY7kt/Hx38Bh0BNMewTAAA=


name: Raw Materials Inventory Management with Google Sheets, Supabase and Approvals
author_name: Immanuel
author_username: spectrabit
categories: []
created_at: 2025-05-11T13:15:27.989Z
updated_at: 2025-05-11T13:15:27.989Z
url: https://n8n.io/workflows/3979
scraped_at: 2025-12-24 13:02:44
description:
  Automated Raw Materials Inventory Management with Google Sheets, Supabase, and Gmail using n8n Webhooks

  Description

  What Problem Does This Solve? 🛠️
  This workflow automates raw materials inventory management for businesses, eliminating manual stock updates, delayed material issue approvals, and missed low stock alerts. It ensures real-time stock tracking, streamlined approvals, and timely notifications. 

  Target audience: Small to medium-sized businesses, inventory managers, and n8n users familiar with Google Sheets, Supabase, and Gmail integrations.

  What Does It Do? 🌟
  Receives raw material data and issue requests via form submissions.
  Updates stock levels in Google Sheets and Supabase.
  Manages approvals for material issue requests with email notifications.
  Detects low stock levels and sends alerts via Gmail.
  Maintains data consistency across Google Sheets and Supabase.

  Key Features 
  Real-time stock updates from form submissions.
  Automated approval process for material issuance.
  Low stock detection with Gmail notifications.
  Dual storage in Google Sheets and Supabase for redundancy.
  Error handling for robust data validation.

  Setup Instructions

  Prerequisites 
  n8n Instance**: Self-hosted or cloud n8n instance.
  API Credentials**:
    Google Sheets API: Credentials from Google Cloud Console with Sheets scope, stored in n8n credentials.
    Supabase API: API key and URL from Supabase project, stored in n8n credentials (do not hardcode in nodes).
    Gmail API: Credentials from Google Cloud Console with Gmail scope.
  Forms**: A form (e.g., Google Form) to submit raw material receipts and issue requests, configured to send data to n8n webhooks.

  Installation Steps 
  Import the Workflow:
     Copy the workflow JSON from the “Template Code” section (to be provided).
     Import it into n8n via “Import from File” or “Import from URL”.
  Configure Credentials:
     Add API credentials in n8n’s Credentials section for Google Sheets, Supabase, and Gmail.
     Assign credentials to respective nodes. For example:
       In the Append Raw Materials node, use Google Sheets credentials: {{ $credentials.GoogleSheets }}.
       In the Current Stock Update node, use Supabase credentials: {{ $credentials.Supabase }}.
       In the Send Low Stock Email Alert node, use Gmail credentials.
  Set Up Nodes:
     Webhook Nodes (Receive Raw Materials Webhook, Receive Material Issue Webhook): Configure webhook URLs and link them to your form submissions.
     Approval Email (Send Approval Request): Customize the HTML email template if needed.
     Low Stock Alerts (Send Low Stock Email Alert, Send Low Stock Email After Issue): Configure recipient email addresses.
  Test the Workflow:
     Submit a test form for raw material receipt and verify stock updates in Google Sheets/Supabase.
     Submit a material issue request, approve/reject it, and confirm stock updates and notifications.

  How It Works

  High-Level Steps 
  Receive Raw Materials: Processes form submissions for raw material receipts.
  Update Stock: Updates stock levels in Google Sheets and Supabase.
  Handle Issue Requests: Processes material issue requests via forms.
  Manage Approvals: Sends approval requests and processes decisions.
  Monitor Stock Levels: Detects low stock and sends Gmail alerts.

  Detailed Descriptions
  Detailed node descriptions are available in the sticky notes within the workflow screenshot (to be provided). Below is a summary of key actions.

  Node Names and Actions

  Raw Materials Receiving and Stock Update
  Receive Raw Materials Webhook**: Receives raw material data from a form submission.
  Standardize Raw Material Data**: Maps form data into a consistent format.
  Calculate Total Price**: Computes Total Price (Quantity Received * Unit Price).
  Append Raw Materials**: Records receipt in Google Sheets.
  Check Quantity Received Validity**: Ensures Quantity Received is valid.
  Lookup Existing Stock**: Retrieves current stock for the Product ID.
  Check If Product Exists**: Branches based on Product ID existence.
  Calculate Updated Current Stock**: Adds Quantity Received to stock (True branch).
  Update Current Stock**: Updates stock in Google Sheets (True branch).
  Retrieve Updated Stock for Check**: Retrieves updated stock for low stock check.
  Detect Low Stock Level**: Flags if stock is below minimum.
  Trigger Low Stock Alert**: Triggers email if stock is low.
  Send Low Stock Email Alert**: Sends low stock alert via Gmail.
  Add New Product to Stock**: Adds new product to stock (False branch).
  Current Stock Update**: Updates Supabase Current Stock table.
  New Row Current Stock**: Inserts new product into Supabase.
  Search Current Stock**: Retrieves Supabase stock records.
  New Record Raw**: Inserts raw material record into Supabase.
  Format Response**: Removes duplicates from Supabase response.
  Combine Stock Update Branches**: Merges branches for existing/new products.

  Material Issue Request and Approval
  Receive Material Issue Webhook**: Receives issue request from a form submission.
  Standardize Data**: Normalizes request data and adds Approval Link.
  Validate Issue Request Data**: Ensures Quantity Requested is valid.
  Verify Requested Quantity**: Validates Product ID and Submission ID.
  Append Material Request**: Records request in Google Sheets.
  Check Available Stock for Issue**: Retrieves current stock for the request.
  Prepare Approval**: Checks stock sufficiency for the request.
  Send Approval Request**: Emails approver with Approve/Reject options.
  Receive Approval Response**: Captures approver’s decision via webhook.
  Format Approval Response**: Processes approval data with Approval Date.
  Verify Approval Data**: Validates the approval response.
  Retrieve Issue Request Details**: Retrieves original request from Google Sheets.
  Process Approval Decision**: Branches based on approval action.
  Get Stock for Issue Update**: Retrieves stock before update (Approved).
  Deduct Issued Stock**: Reduces stock by Approved Quantity (Approved).
  Update Stock After Issue**: Updates stock in Google Sheets (Approved).
  Retrieve Stock After Issue**: Retrieves updated stock for low stock check.
  Detect Low Stock After Issue**: Flags low stock after issuance.
  Trigger Low Stock Alert After Issue**: Triggers email if stock is low.
  Send Low Stock Email After Issue**: Sends low stock alert via Gmail.
  Update Issue Request Status**: Updates request status (Approved/Rejected).
  Combine Stock Lookup Results**: Merges stock lookup branches.
  Create Record Issue**: Inserts issue request into Supabase.
  Search Stock by Product ID**: Retrieves Supabase stock records.
  Issues Table Update**: Updates Supabase Materials Issued table.
  Update Current Stock**: Updates Supabase stock after issuance.
  Combine Issue Lookup Branches**: Merges issue lookup branches.
  Search Issue by Submission ID**: Retrieves Supabase issue records.

  Customization Tips
  Expand Storage Options **: Add nodes to store data in other databases (e.g., Airtable) alongside Google Sheets and Supabase.
  Modify Approval Email **: Update the Send Approval Request node to customize the HTML email template (e.g., adjust styling or add branding).
  Alternative Notifications **: Add nodes to send low stock alerts via other platforms (e.g., Slack or Telegram).
  Adjust Low Stock Threshold **: Modify the Detect Low Stock Level node to change the Minimum Stock Level (default: 50).!

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.webhook","n8n-nodes-base.gmail","n8n-nodes-base.code","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.merge","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.merge","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.itemLists","n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.supabase","n8n-nodes-base.if","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.supabase","n8n-nodes-base.if"]

workflow_json_compressed:
  [encoded data, 18732 characters]


name: Audit & Generate JSON-LD Schema Markup for SEO with GPT-4.1-mini + Gmail
author_name: Ari Nakos
author_username: just-aristides
categories: []
created_at: 2025-05-11T13:47:31.383Z
updated_at: 2025-05-11T13:47:31.383Z
url: https://n8n.io/workflows/3980
scraped_at: 2025-12-24 13:02:45
description:
  Schema Markup Generator
  Automatically audit and optimize your site’s JSON-LD structured data and email a step-by-step implementation guide.

  What It Does

  Collects a website URL & email via form
  Extracts existing JSON-LD, identifies gaps
  Generates optimized schema markup (GPT-4.1-mini)
  Builds an HTML before/after guide with action items
  Emails the full implementation instructions

  Prerequisites

  n8n instance (self-hosted, Desktop, or Cloud)
  Gmail OAuth2 credentials
  OpenRouter API key (for GPT-4.1-mini)

  Quick Setup

  Gmail: Add OAuth2 credential → select in “Send Email” node
  OpenRouter: Store API key → link in “Schema Markup Agent” node
  Form: Configure fields websiteUrl & emailAddress in your Webhook/Form node

  Customization

  AI Prompt**: Tweak system message to focus on specific schema types or output style
  Email Template**: Modify HTML header/footer or add sections

  Troubleshooting & Limits

  Monitor OpenRouter rate limits and Gmail send quotas
  Ensure target sites allow scraping for schema extraction

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.toolCode","n8n-nodes-base.formTrigger","n8n-nodes-base.httpRequestTool","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatOpenRouter"]

workflow_json_compressed:
  H4sIAAAAAAAAE61W224aSRD9FTTPLm/fL37ayNJq85BNlFj7ElmrvlRjZJhhmRklVsS/bw2QAAbbYC8SQsxUnzp16nR1/6hm2IXq6kc1qdsu1Anf5+qq0tGHUhimjJFb63liKnqJIVmB0qPxXPNUgpGWOe8Y6uylCRG9ZC66VF1UHc7m09Dh9QJz+wW7fn7d0BPskBJ0ix6XF1XdZGyrq6+UfcgarXBGJgUyYAJldIagWQKkv94haswDch1mSNFfukm6fxj91XQ4pHuYDw9rV8MKFWJo8bJdxWxC5k076SZNTQmBaLILZdgtPQ4LAuxw0Q4ypKbusO4IqlquUf+mN6tVfHmxIeqYLlZkBp4zA6RMAq+KBaFE4FqSOpwdJSrPZyqkeAPTKLgqwQXIyUpQ2iP4IjIwW6ILGJTF40z5KzQ17A1MpRGGexGhxJBJ06LBKRUguBhLYqlQKTtMsc6jrhk9NP1ihLMwmT7Jd7x5uycqp/Y7NVD9hvGuae5Xtnc6BZV0BIsmkFqKU3rDQfrMo0ShRSzVo+pWNu6wfV//MW2+ra39qEhxuS2TOcOCVQaQSwSVOUIQSYMOhrYVt5y+Rxsizm+IUtQQEK81uVFRSymIZCAxsooQrbKgndbaD+9C2WGa7qgNow9hcd/PR+/GA/wvwr8T49+2rKehHqe7MKkvwyZurzde/OzNY6H3mV76X1y5YcXrJMEEbYG2Itk8CAk5MyejkjSZ8pbrxznWn5uecE+gOJ1d34Vub8n+IDHsgqbAy3S3TqdPspyDyZamhzYGHJkLrGDcSmSYd8leE58TaHZNM92E7olpT6V3KbadV64UnTkghkHNrMBLUYBL770tAbU2O2rWo9IsZqO2j7NJu0J7yqlD3M1iMh4fykhePbIhVaYxFXMGiZKYqCTAG8wQtSk0FXSIBo9syEe7b6cyL5LI2UDRnqRP2kBM3IP1ISqhoo3RbSv78+bm0+gz/ttj2z1Z013XzTcxN9SDY2Y+RX+1w1JbVqTmDkpB2nlFFvCeKzoRI8++xBwQtyzf9V0DZfJ9Uo9HH/tu3nejT2HRnmTuZhW/Dh9w1jAHHhpqEOwMiydFBuKCg6eRCcMfcLEIcEkXLoXwyeXdKbfoU9fTRWFTwJnMt+sfMx9OJC7Pc78tq5uPAR8ZcbeODvdsLRhJ50Hi0VI/js0S/vZhItypfJcUQVO8xjSsXQ311e6n3zD5ZxgGhEf3qnr18Pnp/HPBBd0BM36vrtjy9pYy7tBcww519DSyPxDoefj7K59OxF/MdILbX8y3t6//T8UOjbxG3zXrK6rZW34g3uH4paR056lPr2cVfVDMkRVHkZ+5ih0FfrroF9R6qSfP6LRc/gexKwCZ6gwAAA==


name: Auto-Update Notion CRM and Send Email from Google Form Submissions
author_name: Harsh Sharma
author_username: hksharma2004
categories: []
created_at: 2025-05-11T17:46:53.147Z
updated_at: 2025-05-11T17:46:53.147Z
url: https://n8n.io/workflows/3985
scraped_at: 2025-12-24 13:02:45
description:
  Who is this for?

  This is for marketers, educators, HR teams, startups, and freelancers who use Google Forms to collect information and want to automatically send it to Notion while emailing the respondent.

  What problem does it solve?

  Manual data entry from Google Forms into CRMs is time-consuming. This template eliminates that, ensuring leads are captured in your Notion database in real time and respondents are notified instantly — improving speed and accuracy.

  What this workflow does?

  Node 1 – Google Sheets Trigger**:
    Listens for new rows in the spreadsheet connected to your Google Form.
  Node 2 – Notion**:
    Creates a new entry in your CRM-style Notion database.
  Node 3 – Gmail**:
    Sends a confirmation email to the person who filled the form.

  🛠 Setup Guide

  1. Prepare Google Form and Sheets

  Create your Google Form.
  Connect it to a Google Sheet (Responses tab &gt; "Link to Sheets").

  2. n8n - Google Sheets Trigger Setup

  Add Google Sheets Trigger node.
  Authentication: Use OAuth2 (preferred).
  Select your spreadsheet and worksheet.
  Trigger type: On new row (not "updated").

  3. n8n - Notion Node

  Add Notion node (action: "Create Page").
  Connect your Notion integration:

    In Notion, create a new integration and copy the token.
    Share your CRM database with that integration.
  In the node, map form responses to your database properties:

    e.g., Name → Title, Email → Email, etc.
    Use {{$json["Full Name"]}} for mapped fields.
  Common error: Check Notion property types (email must be set to type: email).

  4. n8n - Gmail Node (Optional Auto Reply)

  Add Gmail node (action: "Send Email").
  Auth: OAuth2 with your Gmail account.
  To: {{$json["Email Address"]}}
  Subject: "Thanks for contacting us!"
  Body:

      Hi {{$json["Full Name"]}},
    Thanks for reaching out via the form. We’ve received your info and will follow up soon!
  🧩 How to Customize

  Replace Gmail with Outlook or SendGrid if needed.
  Map more fields into Notion like phone, tags, etc.
  Add Slack or Discord notifications for internal alerts.

  🧾 SEO Optimized Title Suggestions

  Auto-sync Google Forms with Notion CRM and send a confirmation email
  Add Google Form leads to Notion and auto-send thank-you email via Gmail

  📎 Required Permissions / Dependencies

  Google Sheets and Gmail authenticated in n8n
  Notion integration shared with your CRM database
  Enable “Impersonate User” if using Google Service Account

nodes_used:
  ["n8n-nodes-base.googleSheetsTrigger","n8n-nodes-base.notion","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE42Ty27bMBBFf8Xg2gw4fIn2sgFapEVboCmyaOEFHyNHiC0ZEuMmMPzvHUpuY+SBdkeJl5dnZi4PrElsyd59ulEfH69ueokR1Y89m7MtZs+WB9a0Q/ZtxKuiq4ypQVZukZQzUgSnjHZKLmp0oVLCAygJydUmSVFFJVPwwSTUC10Hb0RNvhm3u43PeNljGq4x3+8uO/qDGemC3N/jcc5av0W67UPXrTc4e9/122GWu9mXLjdde/ntc7Hx64Etf65I3CUsy8NUiqt0CMFUXENluTYguF8o5MZ6lGglgUf2/IrrW8Q8zL73zXqNfbF/3JXt1rV89OfBD3ixHtWT+Em764amgBGDmAsi2vme3DP2hHU4TmY39DVq4Dg/kQpfGeeBSD3UXOsKeIhywWvUIorosLbmiXQq/k209s/2GY2U/8EjL+RfIg21dSIAFxiB61oA9yIZDsZF7VV0ztZnvdv6ZvN2r067ZzxaTzy/MNx23d2YqKAhITi6UkgaV4w0Lh0MFyYoBTE4tMD+WcJTU70MNYI23EKlafzWcueEpwxIo6wKyrqzEq5zE+8eS7DwzUKGUXOSnFXDgdrLpXvRYRa7NmObyYq9nD6pfczNHqe0z9mAOTftejyJDxjvi//XPlG2lmwPxWI/HR8bpgOgrzRylyylRgbPHTjkgBQe40BqVQokhhZjsRqNT+mhFY2l0NNzKTW+HOO4P6dnn/CBLcVxtSKA15/Ja27PY/qK3fH4Gx14DNd2BAAA


name: Personalized AI Tech Newsletter Using RSS, OpenAI and Gmail
author_name: Miha
author_username: miha
categories: []
created_at: 2025-05-11T19:47:23.634Z
updated_at: 2025-05-11T19:47:23.634Z
url: https://n8n.io/workflows/3986
scraped_at: 2025-12-24 13:02:41
description:
  Combine Tech News in a Personalized Weekly Newsletter

  This n8n template automates the collection, storage, and summarization of technology news from top sites, turning it into a concise, personalized weekly newsletter.

  If you like staying informed but want to reduce daily distractions, this workflow is perfect for you. It leverages RSS feeds, vector databases, and LLMs to read and curate tech content on your behalf—so you only receive what truly matters.

  How it works

  A daily scheduled trigger fetches articles from multiple popular tech RSS feeds like Wired, TechCrunch, and The Verge.
  Fetched articles are:

    Normalized to extract titles, summaries, and publish dates.
    Converted to vector embeddings via OpenAI and stored in memory for fast semantic querying.
  A weekly scheduled trigger activates the AI summarization flow:

    The AI is provided with your interests (e.g., AI, games, gadgets) and the desired number of items (e.g., 15).
    It queries the vector store to retrieve relevant articles and summarizes the most newsworthy stories.
    The summary is converted into a clean, email-friendly format and sent to your inbox.

  How to use

  Connect your OpenAI and Gmail accounts to n8n.
  Customize the list of RSS feeds in the “Set Tech News RSS Feeds” node.
  Update your interests and number of desired news items in the “Your Topics of Interest” node.
  Activate the workflow and let the automation run on schedule.

  Requirements

  OpenAI** credentials for embeddings and summarization
  Gmail** (or another email service) for sending the newsletter

  Customizing this workflow

  Want to use different sources? Swap in your own RSS feeds, or use an API-based news aggregator.
  Replace the in-memory vector store with Pinecone, Weaviate, or another persistent vector DB for longer-term storage.
  Adjust the agent's summarization style to suit internal updates, industry-specific briefings, or even entertainment recaps.
  Prefer chat over email? Replace the email node with a Telegram bot to receive your personalized tech newsletter directly in a Telegram chat.

nodes_used:
  ["n8n-nodes-base.splitOut","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.gmail","n8n-nodes-base.markdown","n8n-nodes-base.stickyNote","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.vectorStoreInMemory","n8n-nodes-base.set","n8n-nodes-base.rssFeedRead","@n8n/n8n-nodes-langchain.vectorStoreInMemory","@n8n/n8n-nodes-langchain.embeddingsOpenAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set"]

workflow_json_compressed:
  [encoded data, 5788 characters]


name: Send Telegram Text and Audio Messages to Notion with DeepSeek Summaries & OpenAI Transcription
author_name: Wild Nomad
author_username: rahimin3d
categories: []
created_at: 2025-05-11T19:49:53.476Z
updated_at: 2025-05-11T19:49:53.476Z
url: https://n8n.io/workflows/3987
scraped_at: 2025-12-24 13:02:44
description:
  Streamline Your Communication and Task Management with the Telegram to Notion Automation

  This powerful automation effortlessly connects your Telegram messages with your Notion workspace, transforming how you capture information and manage tasks.

  What it does:

  Automatic Capture: Instantly captures messages, voice notes, and audio files sent to your designated Telegram chat.

  Intelligent Processing:

  Text messages are automatically summarized into clear, plain-text descriptions using advanced AI (DeepSeek).

  Voice notes and audio files are transcribed into text using OpenAI's powerful transcription service.

  Organized in Notion:

  Text message summaries are added as new entries to your "Tasks Tracker" database in Notion, with the original message as the title and the summary as the description. The current date is also included.

  Transcriptions of voice notes and audio files are saved to your "Transcribes" database in Notion, making them easily searchable and reviewable.

  Saves You Time: Eliminates the manual effort of copying and pasting information, transcribing audio, and creating new entries in Notion.
  Boosts Productivity: Keeps all your important communications and tasks organized in one central location.

  This automation is perfect for anyone who uses Telegram for work or personal notes and wants to seamlessly integrate that information into their Notion workflow for better organization and productivity.

nodes_used:
  ["n8n-nodes-base.telegramTrigger","@n8n/n8n-nodes-langchain.lmChatDeepSeek","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.notion","n8n-nodes-base.switch","n8n-nodes-base.telegram","n8n-nodes-base.notion","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.telegram","n8n-nodes-base.notion","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE6VX227bRhD9FYHPWnfvFz3VcF5SoE1bu0GRwCj2MisTkUmBohMHhv49s7JjyRIlSy4gCBI5PHtmZs/Z4UNVp2pStR//etfJ+NvFP7rpGFxV4+oWel9NHqq6WfS+ifC+xIF1TmiRpDTMuOhBKSF0xq/AtQzZaOGUM+AEC1lYI0KWllOw2QfrrUfcHm7nM9/DRQdpcQn93fyixSvQAy7Qd3ewHFeNvwVc7QpmMO387egK7vvx6GNbRxj90fYwarvR+V2q21GuZzDq23K1bpvRO9/74BdQ1vHTRTX5/PCY4MXN9Opvc/9vrW/iJ00X1fMif0K3aBs/Wz076mDedn25HTtAlum8xxhOuSIUP+6Kswm3E6HOmLWfMOxunl4PW17jcm2CDUJeKkstCyQr54mkyhCbpSQAmvFAbVY+VgOV6OrpFLqS3/d5udPYhqygScn7rH8KXMfN20VdaoNLC0nHRFMk8w3CTdt+WfUUO+qAMUosN4lIxzKxAf8aFizjilKnecHxCItd6jCJh+Xj+h/x3wqaLcdPeWUaguRMkOCyJZJFSazhjMQAzroQRWCwzusdwPwS4Mvo4sb3o98xj9k6tV8xt1/W+c18M403vm7OZrcl/OezL3NkVNMxsyXJIxlryCxrk4lmORBpsiCeaU44cGEFxZ3NxZrx+fvR+RSa/gia/inuBbvnFhxmd+ae+RlnbcqGYx3BEJmkIT6mRHhO2cvgQwa25vcoBLZ3gzSr+y9ZcXYcK37G131OgomkPfEJSyfB46+yk7NQOmudfGZ0zeryW93Hm/2sFqv7L1lpehQpsUGKZ+y8irjbWOREysRJoEkTCjRZNC2pHN8V1atiGuqhkts68kYma1E93jHc+RFpeC+BuJgAQnI5gnpVRxvJAOfKZGeIotEUhwASwAt0F2mNQZdlMmz3/Q1tf0zklb6v1QJKh6ywukEXt5BBIytmSNLRYMGzYXGD1Yc5NOfvj9BKWwLrrUKrI/ltuI9g2IbgiHAM2SmNPSgUs5AGVETLNRvsLvs6fvm+OlEObM1VUInZYictsjO77KrYNn1R/qSq9jN1KksdOCU0Yk+ld5FYFhUBEbxLIYBWcZApP5kpL5b4dqbRJiMhRUIzoD8CkwQtkRGwqVwJPg+dVPsLekBVu6KyhjEWXCJaBFw8MEU8eCjmZ4LTLngaTxEVB+My5YGAk6XsCs1egCTc8oDTimBGm21R7a/4XlWdKCorMzgQkuSMliWZl8RnxYnHAcFlT61KaltU/K2qMvwofmt2iWouAtoP4xxHFcEicQoPIE+di07jhCOHt+rpmlLITex6/nEbFR0JlFeMBEMjkTrjSKUoENy+3mpl8Zw3gzzF6ZJi9H8QpYa6ZKUjkCTFEz2jS9HkiQrRly2J7i4GicqTiZoi/ZOJYrSPff0VHifycbWAvq+b6epJuId4V+A/dAknzEn1lRWIr4+Pr1SrvAlRGtQq+lgZDvDoQlMj2dDgvBbZqTIcIIcGYoFaAT8dYfjrFjcvkv98fY3AT2fIxuWH1TA9cOitAsb4ypLgvprQ5cbz/AAAfwXh5/QyhLA7ROxAjNfRu9PjoegBLx3k94y6P8XXIJ7TGILYPsUPIgyXacezDmI8v+YMQe3MkoNQQ28WiObr/4o93uFs/nTt86Hu7IS/XGa5/AHCSS6iQA8AAA==


name: Access Control for AI Agents (RBAC) using Airtable and Telegram
author_name: Mario
author_username: octionic
categories: []
created_at: 2025-05-11T20:09:38.591Z
updated_at: 2025-05-11T20:09:38.591Z
url: https://n8n.io/workflows/3988
scraped_at: 2025-12-24 13:02:44
description:
  Purpose

  This workflow allows granular control over the access to tools connected to AI Agents (including Multi-Agent setups) using Role Based Access Control.

  Demo & Explanation

  How it works

  User permissions are managed in Airtable where every restricted AI tool is listed by name and connected via roles to users
  Requests to the Main Agent can be sent through a Telegram message (can be replaced by Whatsapp, IMAP or similar)
  On every request the Telegram username is used to query a list of all allowed tools which are linked in Airtable
  A LangChain Code node is used to compare that list against the connected tools
  Every tool which is not permitted to be used is being replaced by a tool, which has a status response, telling the Agent to return a message to the user, that he is not authorized to use the tool
  Otherwise allowed tools are passed through to the Agent, as if they were connected directly to the Agent
  The parameters can also be passed to a sub-agent called as a sub-workflow where permissions can be checked the same way
  Every response is sent back to the same Telegram conversation

  Setup

  Clone the workflow and select the belonging credentials. You'll need an OpenAI and Airtable Account as well as a Telegram Bot (refer to the docs for the Telegram credentials).
  Copy this Airtable Template into your workspace
  Follow the instructions given in the yellow sticky notes
  Activate the workflow

  How to use

  Try this example:

  Create a new line in Airtable under “Users” containing your Telegram username and your full name
  Set the roles “basic” and “info”
  Consider temporarily disconnecting or resetting the chat memories so they do not remember previous confirmations
  Start a new chat, asking about your permitted roles - you should get a list of those
  Ask about the current weather in your city - you should be informed, that you do not have permission to access that information
  Back in Airtable add the role “weather” to your user
  Now ask the Agent the same question again - It should give you a proper answer this time

  From here on you can add tools and create roles to your likings.

  Disclaimer

  Please note, that this workflow can only run on self-hosted n8n instances, since it requires the LangChain Code Node.

nodes_used:
  ["@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.code","n8n-nodes-base.telegramTrigger","n8n-nodes-base.set","n8n-nodes-base.airtable","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.code","@n8n/n8n-nodes-langchain.toolCode","@n8n/n8n-nodes-langchain.toolCode","@n8n/n8n-nodes-langchain.toolCalculator","@n8n/n8n-nodes-langchain.toolWikipedia","@n8n/n8n-nodes-langchain.toolHttpRequest","@n8n/n8n-nodes-langchain.toolHttpRequest","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.agent","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.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.telegram","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6824 characters]


name: Backup N8N Workflows to Github
author_name: Dat Proto
author_username: datproto
categories: []
created_at: 2025-05-12T05:05:39.188Z
updated_at: 2025-05-12T05:05:39.188Z
url: https://n8n.io/workflows/3990
scraped_at: 2025-12-24 13:02:44
description:
  Introduction
  This workflow will backup all of your existed workflows to a single Github repository.

  The Backup folders' name are based on the current backup date and have default format: "yyyy/MM/dd" (setup at "Create sub path" node).

  Throughout the backup process, the N8N will inform user via discord with clear message about Start, Success and Failure backups.

  The workflow will be 

  Tech Stack
  The following nodes / services / libraries are used in this workflow:

  Nodes:
  Discord: To send message to configured setup channel.
  N8N: To get all workflows' information.
  Github: To store backup data.
  Code: To run data comparison (Existed vs Latest workflow data).
  Wait: To avoid discord message rate limit.

  External libraries:
  Underscore.js: JavaScript library that provides lots of common Javascript functions, to help user save time when using code node.

  Guideline
  Open "Config" node and setup the following information:
      repo_owner: Your Github username.
      repo_name: The repository that you want to store workflows backup data.
  Open "Create sub path" node and change the naming and path format of backup folder(s).
  Setup custom messages in 3 discord nodes:
      Starting Message: N8N inform user at the time workflow start.
      Inform Success Flows: After each success backup, N8N will notify user.
      Inform Failed Flows: After each failure backup, N8N will notify user to have appropriate action.
      Completed Notifications: Then at the final, the workflow will give user a summary.
  Setup "Schedule Trigger" node to change default automated backup time.

  Screenshots

  Discord output

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.n8n","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.merge","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.github","n8n-nodes-base.github","n8n-nodes-base.splitInBatches","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.discord","n8n-nodes-base.discord","n8n-nodes-base.github","n8n-nodes-base.executeWorkflow","n8n-nodes-base.wait","n8n-nodes-base.github","n8n-nodes-base.wait","n8n-nodes-base.code","n8n-nodes-base.switch","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.discord","n8n-nodes-base.discord"]

workflow_json_compressed:
  [encoded data, 6260 characters]


name: Readable Workflow Export & Deployment Pipeline for Multi-Environment CI/CD
author_name: Klaasjan te Voortwis
author_username: voortwis
categories: []
created_at: 2025-05-12T08:05:06.961Z
updated_at: 2025-05-12T08:05:06.961Z
url: https://n8n.io/workflows/3994
scraped_at: 2025-12-24 13:02:45
description:
  This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. 

  Export workflows with readable names, tagged for different environments

  To ensure understandable workflow exports, ease of use in delivery pipelines, and a better developer experience, this workflow helps with exporting workflows.

  Inner workings
  First, the workflow ensures that the directory structure for storing the workflows is correct.
  Exports all workflows.
  Next, it processes all workflow files and stores them with readable names.
  Based on tags, it will also export to dev and prod folders for easy commit and usage in a delivery pipeline.

  Configration
  No special setup is required for readable exporting.

  Usage
  Create a workflow and tag it with 'Auto deploy to dev'
  Run the workflow, this will create the needed folders and workflows with readable names.
  Commit these in your version control.
  Have a CICD pipeline build an n8n container
  —see the attached Dockerfile. 

  Check our Auto Starter workflow for auto-starting workflows after deployment.

  CI/CD Bonus:
  Attached are two nodes with some example configuration on building your own automated n8n deployment. 
  A Dockerfile, to get the new entrypoint and exported workflows packaged in the container.
  An updated entrypoint to build your own container, import the workflows, and run the Auto Starter.

  Set the following environment variables:

  STARTUP_WORKFLOWS_LOAD_LOCATION: to specify the folder to import from and distinguish between environments.
  STARTUP_WORKFLOW_ID: the ID of the workflow to run after starting n8n.  
    &gt; Note: The 'Instance Started' n8n trigger won't work, as all workflows are disabled upon import.

nodes_used:
  ["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.if","n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger","n8n-nodes-base.executeCommand","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","n8n-nodes-base.convertToFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.convertToFile","n8n-nodes-base.convertToFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4260 characters]


name: Auto-Start Tagged Workflows Using n8n API after Deployment
author_name: Klaasjan te Voortwis
author_username: voortwis
categories: []
created_at: 2025-05-12T08:24:08.367Z
updated_at: 2025-05-12T08:24:08.367Z
url: https://n8n.io/workflows/3996
scraped_at: 2025-12-24 13:02:46
description:
  Auto Starter

  On importing workflows these will not be auto started, even if the old version was running. To fix this we created this workflow that can be run after n8n starts. It fits in our auto deploy pipeline and modified n8n container that will import workflows, start n8n and start the tagged workflows.

  Start this workflow after n8n starts.
  It will get all workflows in the running n8n instance.
  If the files have a tag 'Auto start' the workflow will be started.

  Check our Export workflows with readable names workflow for autostarting workflows after deployment.

  Configuration
  You need a a n8n api key configured.

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

workflow_json_compressed:
  H4sIAAAAAAAAE8VV247bNhD9FYItkMQwDV2om4G02Pah3ZekwBopiq4RUCRlMyuTqkTZaxgG8hnN7+VLMpRke9det30r/CCTGp5z5sxwtMPaCNng6Z87rASeYp8GQZLwmCQhiwjNs4xkMqMkCeIoynPpSZbiMdZsJSFapxoWdlsNC9KhkZw1ctK/q0yjrDIaGAgNvDHxA28O26wGBCtroN7hQpXD3/0Y1/KvVjb2feWOdXuwyWsppLaKld0BwL6plPvXiaZrP/u1/em3zSMNTbNRzwQixrlptcUOx0n9AFSdIn8/HgBiJgov5DmhPuRKYz8mWSY8EtMsYnHs8SANT6Czm19+RDetNaixrLZXHVDFmQF+esUAc0oWcjVaqMP6ySu8PggPxriUhf3AytbRAgsHvjupHdUatmzdyiFZVirBegG4sbXiYITjWOVKM2tq2GZa4Oe0h27wwoD6wvOgB7gP9fMjknphTAIR+BlL0oTyHI6aStY91u5gBatrtj2+6umBwTIF+FBktVja2RCqt07S04ze7nbo+0+N0RPLFs1kxarXr03+6Q16+wOC58QV4g3a7w9Ih3NPirKfX9Q7mATHiqe5oGmcMhILyQlN84ykURaSMM6hF2ggkqJ41kb+f29037ta5pMZjEOpmJVwdGPqh6I0m1vhgj5+rMtDBVfAArHK1Wd94Y0SzoL/6crwIE9YAheF5VFBqKQZyUPqEcnyOAl8HgWSnkB/X0qNeKn4g9IL9PXz3zPQiw6Jf/385aq7K6ZbVs6gzAtZn92nmL5s9HXVnpd5LKQhjLdCEMqjkOSpl5MgESJI0oylNDupvrMgeIveGdvl8rLApgtyMefq3G2P0ss24KZ0dyWCyithl3gaw2DES+k6GU/dlOyuChQP2L7rJ82da2pZ3+t7/V4jtapMbZ2VBwsbZJeykWijyhJpY1EuETveBinGSK6hBKpwcciUAg3TBG1Yg+pWa0CboJlBhXqEGNWgjUTQQ9CiYlgPVLBiFnGmHQecRKwAZcj1TUfWTNCtBRjbIKWRaeteiJBVabaoUpUslQZ1WiDob1UoIHCHh/EAUB1Bl0mf6CnLcU/RxTuAfuVSgkGxAKBj5MRZRXrfzvRf6HWBtwPjQlrE4HkyFpJwBINH3TkYYpZpLvuTvafwEZMNWrI1pObUoNHo1WkevRqNuqijiI4MDBzq08m916PRz0YXatH2c2I0cgR/mBZpCckx+I1GXe6VQg9yC6B8iAcIfNn3866VtOTHj4ibVvBYgdPQpDDodT9jrn7UusgxVlrIRzz19vM50JxHv4T4fGi+CPPvY+EK8D/i7vffAJjMKZDXCAAA


name: GitLab Merge Request Review & Risk Analysis with Claude/GPT AI
author_name: Vishal Kumar
author_username: vishalquantana
categories: []
created_at: 2025-05-12T11:59:11.770Z
updated_at: 2025-05-12T11:59:11.770Z
url: https://n8n.io/workflows/3997
scraped_at: 2025-12-24 13:02:42
description:
  Trigger

  The workflow runs when a GitLab Merge Request (MR) is created or updated.

  Extract & Analyze

  It retrieves the code diff and sends it to Claude AI or GPT-4o for risk assessment and issue detection.

  Generate Report

  AI produces a structured summary with:
  Risk levels
  Identified issues
  Recommendations
  Test cases

  Notify Developers

  The report is:
  Emailed to developers and QA teams
  Posted as a comment on the GitLab MR

  Setup Guide

  Connect GitLab
  Add GitLab API credentials
  Select repositories to track

  Configure AI Analysis
  Enter Anthropic (Claude) or OpenAI (GPT-4o) API key

  Set Up Notifications
  Add Gmail credentials
  Update the email distribution list

  Test & Automate
  Create a test MR to verify analysis and email delivery

  Key Benefits

  Automated Code Review** – AI-driven risk assessment and recommendations
  Security & Compliance** – Identifies vulnerabilities before code is merged
  Integration with GitLab CI/CD** – Works within existing DevOps workflows
  Improved Collaboration** – Keeps developers and QA teams informed

  Developed by Quantana, an AI-powered automation and software development company.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.merge","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.lmChatAnthropic","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.gitlabTrigger","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.gmail","n8n-nodes-base.gitlabTrigger","n8n-nodes-base.gitlabTrigger"]

workflow_json_compressed:
  [encoded data, 9260 characters]


name: Automate Medical Billing with Google Sheets and Gmail
author_name: David Olusola
author_username: dae221
categories: []
created_at: 2025-05-12T14:37:10.030Z
updated_at: 2025-05-12T14:37:10.030Z
url: https://n8n.io/workflows/3998
scraped_at: 2025-12-24 13:02:45
description:
  Automate Medical Billing with Google Sheets and Gmail

  Note: This template is designed for self-hosted n8n instances. The workflow image above shows the complete automation flow.

  This n8n workflow automates the patient billing process—from form submission to invoice generation, email delivery, and Google Sheets logging.

  🏥 Who is this for?

  This workflow is ideal for:

  Private medical clinics
  Health service providers
  Medical office administrators
  Telehealth services
  Billing departments

  💡 What problem does this workflow solve?

  Medical billing often involves repetitive data entry, invoice calculation, and communication. This workflow:

  Eliminates manual invoice generation
  Ensures accurate and consistent pricing for treatments
  Sends automated, personalized invoices to patients
  Logs all billing details in a Google Sheet for recordkeeping
  Alerts staff when patient data is missing

  ⚙️ What this workflow does

  This automation builds a streamlined billing system that:

  Captures patient info via an embedded n8n form
  Formats visit dates for professional presentation
  Calculates invoice totals based on treatment selection
  Sends email invoices to patients using Gmail
  Logs billing data into Google Sheets
  Notifies admin via Slack if submission is incomplete

  ✅ Setup Instructions

  🔑 Prerequisites

  Before starting, ensure you have:

  A self-hosted n8n instance
  A Google account with access to:

    Gmail
    Google Sheets
  A Slack Webhook URL (optional but included)
  A designated Google Sheet to store invoices

  📋 Step 1: Google Sheet Setup

  Create a new Google Sheet and add the following columns in the first row (must match exactly):

  Invoice No | Patient Name | Email | Date | Total Cost | Line Items | Payment Status

  &gt; ✅ Customizable: You can add columns like “Insurance Provider” or “Payment Status” if needed—just update the mapping in the Google Sheets node.

  🗂️ Step 2: Configure Google Credentials in n8n

  In n8n:

  Go to Settings → Credentials
  Add:

    Google Sheets OAuth2
    Gmail OAuth2
  Ensure proper scopes are granted:

    .../auth/spreadsheets
    .../auth/gmail.send

  🧾 Step 3: Configure Treatment Pricing

  In the Calculate prices code node:

  const treatmentPrices = {
    "General Consultation": 60,
    "Blood Test - Basic Panel": 45,
    "Blood Test - Comprehensive": 120,
    "X-Ray - Single": 80,
    "Physical Therapy Session": 75,
    "Vaccination - Standard": 40,
    "Specialist Consultation": 120,
    "Minor Procedure": 150
  };

  &gt; ✏️ Customizable: Add, remove, or change treatment names and prices.

  🌐 Step 4: Embed the Patient Billing Form

  In the On form submission node:

  The form collects:

    Patient Name
    Email Address
    Visit Date
    Selected Treatments (multi-select dropdown)

  &gt; ✏️ Customizable: Modify the form fields to include phone number, insurance info, etc.

  📬 Step 5: Customize the Email Template

  Open the Send Patient Invoice Email node:

  Example message:

  Hi {{ $json.patientName }},

  Thank you for visiting MediSure Clinic on {{ $json.formattedDate }}.
  Here is a summary of your treatments:
  {{ $json.lineItems }}

  Total Due: ${{ $json.totalCost }}

  Best regards,  
  MediSure Billing Department

  &gt; ✏️ Customizable: Adjust the message, branding, and subject line to match your practice.

  🧠 Step 6: Handle Errors

  The Error Check and Generate Error Message nodes ensure:

  No invoice is sent without an email
  Admins are alerted via Slack if critical info is missing

  &gt; ✏️ Customizable: Replace Slack with email, webhook, or CRM notification if preferred.

  🧾 Step 7: Log to Google Sheets

  The Log Invoice to Googlesheets node appends each record:

  Invoice number
  Patient name
  Email
  Date
  Total cost
  Line items

  &gt; ✏️ Customizable: You can change the target spreadsheet or sheet name.

  🔄 Testing

  Once configured:

  Toggle the workflow Active
  Submit a test form
  Check:

     Email receipt is accurate
     Data is correctly appended in Google Sheets
     No errors are logged

  ✨ How to Customize This Workflow

  | Component               | How to Customize                               |
  | ----------------------- | ---------------------------------------------- |
  | Treatment Prices    | Edit Calculate prices node code              |
  | Form Fields         | Modify the On form submission node           |
  | Email Body          | Change message in Send Patient Invoice Email |
  | Slack Alerts        | Replace Slack node with email or CRM action    |
  | Google Sheet Fields | Add/remove columns and update mappings         |

  🧩 Integrate with Your Stack

  Add downstream automations easily:

  Push to QuickBooks or Stripe for payment processing
  Create a calendar invite for follow-ups
  Sync with a CRM like HubSpot

  🛠️ Troubleshooting

  | Issue                    | Fix                               |
  | ------------------------ | --------------------------------- |
  | Email not sent           | Check Gmail credentials & quotas  |
  | Spreadsheet not updating | Confirm sheet ID and column names |
  | Pricing not accurate     | Review Calculate prices logic   |
  | Slack alert not sent     | Check webhook URL format          |

  🤝 Need Help?

  Review n8n documentation
  Ask questions in the n8n community forum
  Contact the template creator: David Olusola
  Support Email : Dimejicole21@gmail.com

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.httpRequest","n8n-nodes-base.formTrigger","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.gmail","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE5VW21LjRhD9FZWePdTcL7wRQrZIwbIJTl5SPMylx6iwJUeSyW4o/3tahiAuMpcXl2T1nD49fU7P3JVVKg/L9a9nJ/9Wq8UPIY7n0P1WzsoV9L48vCuruut9HeF0iOOU0qglNSxyaqXQVAenohbGqRCocSZKRvFvaahSXiurpbNglQpOQ46I28NqvfQ9HLeQukvoN+vjBv+BHjBB325gOytrvwLMdg6pin5Z/FQtq3pRHP0xvzg/mp9efC3mJ+ffzo7mJwOeX3Tl4V9XuKpJMDze3dfkhQrGCU2oZYlIGhPxAZ8CGEYlE8pYWj7m+tn3vrjE/LHftMAG4B/r4UNta7JDJsF3cNBBj9/WTVf1VVNjNsIlnTlLkcDatwjWQ4ss7rb3CH/i2y6QbWcPxKKJIlohiZFMEWmsJzYxSZwUikuXPNNuJHbStk1bHF9DvNnPqsrPSUn6SU7CBxOj1UTKEIhUxpOADSSBc+uyZx57PXI6SquqLr42fZWxQUPO/dSu+379O/y9ge7FxuH2zxjlnyDpqUyZxkyCtRlJSku8MpLITIMUiSmX0kjyoi5y066KbhNWVbfD2sdxiJu31WIB7Yvmysfm/gPhumludjZgOUnFUyBKeJSW8JQEEShRTFEfmQoKePlOWfyAPxZGjXAePUJiTohngiKWaUuUz0zHZJjUaizs2C/jZrBQsW6riJLfV1bEx+f18I/pYmTmvRWch0QypYbICMgsRImVRnR4zBkYjMx+wX30fYFegk+QIh8z0EhKCkZxaxzJgaMOrMjERRUJSzp4r7VFiiOpy76KNz8Gte4n1e1iHkKeUdN0ZuQrbmVs6h7qHpHK/XrVHmWigyHaAfJkzhMH2pHkleY0GmmyGXl+gRraoav3jj+HrvOLz0wi9WlDWRGTFpkRxyK6Phsg1ilKrHeeGrCgLH+ykVCn4hvaHQsvTuvbBsVXnKx8tdzLcfHw9SlL3FErXzpKJpF5NIxonnEICReQiXPE4RAPSuJP8O87aqwMnPCRAyeMoTqkFjj8ZbaEMxStDhml8mSenTWLx4L6pvjSNIsldNcA/X5zLXZBl/8HvRhs9rVmXtKVB2pUCogYJI4RcBnnmeaKeIvdoIpSF5mWSuRJRb8hjz2SFug281okbysao33sq1vMk/2yg1mJ6uvxUN4the8QNwP8RZtwgh6Wt2zAuL1fv+uvl9RSYSn2Y7Csi5bgO8OzWWGHHY+BSuSJJGqIA9QO+Ok8wVcU01ABHvBDnW9Owl3oDC8vCb6Xh3R7dYWEnh2lU3jvWvAV7Gxc/BF7TNJ6efWYYjY5WSfRXu3JFNz0pWISb+IYnULce3+aBN230VPIb142JtHf6MRUgg+5fyLRdvsfZKkZeD4LAAA=


name: Automated Daily Customer Win-Back Campaign with AI Offers
author_name: Onur
author_username: onurpolat05
categories: []
created_at: 2025-05-12T18:11:21.486Z
updated_at: 2025-05-12T18:11:21.486Z
url: https://n8n.io/workflows/4001
scraped_at: 2025-12-24 13:02:44
description:
  Proactively retain customers predicted to churn with this automated n8n workflow. Running daily, it identifies high-risk customers from your Google Sheet, uses Google Gemini to generate personalized win-back offers based on their churn score and preferences, sends these offers via Gmail, and logs all actions for tracking.

  What does this workflow do?

  This workflow automates the critical process of customer retention by:

  Running automatically every day** on a schedule you define.
  Fetching customer data** from a designated Google Sheet containing metrics like predicted churn scores and preferred categories.
  Filtering* to identify customers with a high churn risk (score &gt; 0.7) who haven't recently received a specific campaign (based on the created_campaign_date field - *you might need to adjust this logic).
  Using Google Gemini AI to dynamically generate one of three types of win-back offers, personalized based on the customer's specific churn score and preferred product categories:
      Informational: (Score 0.7-0.8) Highlights new items in preferred categories.
      Bonus Points: (Score 0.8-0.9) Offers points for purchases in a target category (e.g., Books).
      Discount Percentage: (Score 0.9-1.0) Offers a percentage discount in a target category (e.g., Books).
  Sending the personalized offer* directly to the customer via *Gmail**.
  Logging** each sent offer or the absence of eligible customers for the day in a separate 'SYSTEM_LOG' Google Sheet for monitoring and analysis.

  Who is this for?

  CRM Managers & Retention Specialists:** Automate personalized outreach to at-risk customers.
  Marketing Teams:** Implement data-driven retention campaigns with minimal manual effort.
  E-commerce Businesses & Subscription Services:** Proactively reduce churn and increase customer lifetime value.
  Anyone** using customer data (especially churn prediction scores) who wants to automate personalized retention efforts via email.

  Benefits

  Automated Retention:** Set it up once, and it runs daily to engage at-risk customers automatically.
  AI-Powered Personalization:** Go beyond generic offers; tailor messages based on churn risk and customer preferences using Gemini.
  Proactive Churn Reduction:* Intervene *before customers leave by addressing high churn scores with relevant offers.
  Scalability:** Handle personalized outreach for many customers without manual intervention.
  Improved Customer Loyalty:** Show customers you value them with relevant, timely offers.
  Action Logging:** Keep track of which customers received offers and when the workflow ran.

  How it Works

  Daily Trigger: The workflow starts automatically based on the schedule set (e.g., daily at 9 AM).
  Fetch Data: Reads all customer data from your 'Customer Data' Google Sheet.
  Filter Customers: Selects customers where predicted_churn_score &gt; 0.7 AND created_campaign_date is empty (verify this condition fits your needs).
  Check for Eligibility: Determines if any customers passed the filter.
  IF Eligible Customers Found:
      Loop: Processes each eligible customer one by one.
      Generate Offer (Gemini): Sends the customer's predicted_churn_score and preferred_categories to Gemini. Gemini analyzes these and the defined rules to create the appropriate offer type, value, title, and detailed message, returning it as structured JSON.
      Log Sent Offer: Records action_taken = SENT_WINBACK_OFFER, the timestamp, and customer_id in the 'SYSTEM_LOG' sheet.
      Send Email: Uses the Gmail node to send an email to the customer's user_mail with the generated offer_title as the subject and offer_details as the body.
  IF No Eligible Customers Found:
      Set Status: Creates a record indicating system_log = NOT_FOUND.
      Log Status: Records this 'NOT_FOUND' status and the current timestamp in the 'SYSTEM_LOG' sheet.

  n8n Nodes Used

  Schedule Trigger
  Google Sheets (x3 - Read Customers, Log Sent Offer, Log Not Found)
  Filter
  If
  SplitInBatches (Used for Looping)
  Langchain Chain - LLM (Gemini Offer Generation)
  Langchain Chat Model - Google Gemini
  Langchain Output Parser - Structured
  Set (Prepare 'Not Found' Log)
  Gmail (Send Offer Email)

  Prerequisites

  Active n8n instance (Cloud or Self-Hosted).
  Google Account** with access to Google Sheets and Gmail.
  Google Sheets API Credentials (OAuth2):** Configured in n8n.
  Two Google Sheets:**
      'Customer Data' Sheet: Must contain columns like customer_id, predicted_churn_score (numeric), preferred_categories (string, e.g., ["Books", "Electronics"]), user_mail (string), and potentially created_campaign_date (date/string).
      'SYSTEM_LOG' Sheet: Should have columns like system_log (string), date (string/timestamp), and customer_id (string, optional for 'NOT_FOUND' logs).
  Google Cloud Project** with the Vertex AI API enabled.
  Google Gemini API Credentials:** Configured in n8n (usually via Google Vertex AI credentials).
  Gmail API Credentials (OAuth2):** Configured in n8n with permission to send emails.

  Setup

  Import the workflow JSON into your n8n instance.
  Configure Schedule Trigger: Set the desired daily run time (e.g., Hours set to 9).
  Configure Google Sheets Nodes:
      Select your Google Sheets OAuth2 credentials for all three Google Sheets nodes.
      1. Fetch Customer Data...: Enter your 'Customer Data' Spreadsheet ID and Sheet Name.
      5b. Log Sent Offer...: Enter your 'SYSTEM_LOG' Spreadsheet ID and Sheet Name. Verify column mapping.
      3b. Log 'Not Found'...: Enter your 'SYSTEM_LOG' Spreadsheet ID and Sheet Name. Verify column mapping.
  Configure Filter Node (2. Filter High Churn Risk...):
      Crucially, review the second condition: {{ $json.created_campaign_date.isEmpty() }}. Ensure this field and logic correctly identify customers who should receive the offer based on your campaign strategy. Modify or remove if necessary.
  Configure Google Gemini Nodes: Select your configured Google Vertex AI / Gemini credentials in the Google Gemini Chat Model node. Review the prompt in the 5a. Generate Win-Back Offer... node to ensure the offer logic matches your business rules (especially category names like "Books").
  Configure Gmail Node (5c. Send Win-Back Offer...): Select your Gmail OAuth2 credentials.
  Activate the workflow.
  Ensure your 'Customer Data' and 'SYSTEM_LOG' Google Sheets are correctly set up and populated. The workflow will run automatically at the next scheduled time.

  This workflow provides a powerful, automated way to engage customers showing signs of churn, using personalized AI-driven offers to encourage them to stay. Adapt the filtering and offer logic to perfectly match your business needs!

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.filter","n8n-nodes-base.if","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.googleSheets","n8n-nodes-base.gmail","n8n-nodes-base.set","n8n-nodes-base.googleSheets","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, 6452 characters]


name: Scrape & Analyse Meta Ad Library Image Ads with Apify and OpenAI
author_name: Daniel Setzermann
author_username: danielsetzermann
categories: []
created_at: 2025-05-12T19:03:22.534Z
updated_at: 2025-05-12T19:03:22.534Z
url: https://n8n.io/workflows/4003
scraped_at: 2025-12-24 13:02:44
description:
  Meta Image Ads Analyzer
  This n8n template builds an automated system to scrape, analyze, and extract insights from Meta advertising content. The workflow uses AI to perform deep analysis of image ads and organize the results in a structured format.

  How it works
  The workflow connects to Facebook's Ad Library to scrape image ads based on a specified page ID.
  Images are filtered by reach and days running, then processed through OpenAI's GPT-4o to analyze their content.
  Each image ad is systematically analyzed to extract key components: visual description, hook elements, main offer, call-to-action, and psychological triggers.
  Results are processed through an AI agent that structures the data into standardized fields.
  Original images are saved to Google Drive for reference.
  All analysis and metadata are saved to a Google Sheet for easy access and further processing.

  How to use 
  Once you've set up your credentials and configured the output:
  Enter the Meta Ad Library URL you want to analyze in the Settings node.
  Adjust the maximum number of ads to scrape and analyze based on your needs (defaults: 300 to scrape, 10 to analyze).
  Configure the Google Drive folder to save the original ad images.
  Ensure your Google Sheets connection is set up to receive the structured analysis.
  Click "Test Workflow" to start the analysis process.

  Requirements
  Apify account (for Meta Ad Library scraping)
  OpenAI API key (for image analysis)
  Google Drive and Google Sheets access

  Customizing this workflow
  Modify the AI prompts in the "Analyze Image Contents" node to extract different information from the images.
  Adjust the output formats in the Structured Output Parser node.
  Change the Google Sheets mapping to match your desired output structure.
  Increase the number of ads analyzed for more comprehensive research.
  Filter ads based on different criteria by modifying the "Filter only Image Ads" node.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.sort","n8n-nodes-base.filter","n8n-nodes-base.limit","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.googleDrive","n8n-nodes-base.merge","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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


name: Remote IOT Sensor monitoring via MQTT and InfluxDB
author_name: Tony Duffy
author_username: tduffy
categories: []
created_at: 2025-05-12T21:47:36.071Z
updated_at: 2025-05-12T21:47:36.071Z
url: https://n8n.io/workflows/4004
scraped_at: 2025-12-24 13:02:44
description:
  . 

  Read and store IOT sensor data with the MQTT Trigger and InfluxDB

  tonyduffy@protonmail.com


  This workflow is for users wanting a practical example of how to obtain data from remote IOT systems using the MQTT protocol in an n8n environment.

  The template provides typical n8n node implementation and configuration settings necessary to read and store IOT data.

  The workflow reads the temperature and humidity data from a remote IOT system in this case a DHT22 sensor connected to a ESP32 micro controller. The data is parsed into the correct JSON format and then ingested in an InfluxDB data bucket. From there the stored temperature and humidity values can be displayed in real time.

  The workflow can be easily modified to read any MQTT driven device data.

  Remote IOT Sensor Setup

  The ESP32 controller with the DHT22 sensor are running on a Wokwi simulator.  The simulator uses micro python to publish a MQTT "wokwi-weather" topic with the temperature and humidity payloads to an online Mosquitto MQTT broker. The n8n MQTT trigger node subscribes to the topic on the broker and reads the payload values when any changes are published. The code node then prepares the payload for JSON format. The HTTP request node ingests the data in a InfluxDB bucket 

  How to customise this workflow to your needs

  Wokwi IOT ESP32 simulator

  You will need to setup a free account at Wokwi.com
  Once created search for a project "Micro-Python MQTT Weather Logger (ESP32)"
  Then when the MQTT weather logger project is open change lines 28 and 29 to the following
      28 MQTT_CLIENT_ID = ""
      29 MQTT_BROKER    = "test.mosquitto.org"
  You then can start the simulation by clicking on the green arrow and it will connect the mosquitto broker and the "wokwi-weather" topic will be published.
  By clicking on the DHT22 sensor the temperature and humidity bar will appear and you can change the values to send updated payload values to the broker.

  InfluxDB

   You will require access to functioning InfluxDB database to utilise this workflow

  Note : You will have to provide the following for the HTTP request node to connect to InfluxDB.

  The URL and port of the desired InfluxDB (In this case the InfluxDB is running locally on port 8086 ie. http://localhost:8086.)
  InfluxDB bucket for the data. ( In this case the created bucket name is "wokwi-data")
  The Organization ID of the InfluxDB. This can be obtained for the InfluxDB admin page
  A generated API token to read and write to the InfluxDB bucket. Created from the InfluxDB admin

  n8n workflow.

   The MQTT trigger node is configured to subscribe to the "wokwi-weather" topic on the test Mosquitto MQTT broker. It reads the temperature and humidity data sent by ESP32.
   The code node uses Javascript to move the temperature and humidity payloads to JSON format. This is flexible and can easily modified.
   The HTTP request node posts the JSON payloads to the InfluxDB bucket.


   When the above is configured the workflow should function correctly.

  Thanks to the many who have downloaded this template. Let me know on what you would like to build.  Contact me at tonyduffy@protonmail.com

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.mqttTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]

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


name: AI-Generated LinkedIn Posts with OpenAI, Google Sheets & Email Approval Workflow
author_name: Aryan Shinde
author_username: shindearyan
categories: []
created_at: 2025-05-12T23:11:35.083Z
updated_at: 2025-05-12T23:11:35.083Z
url: https://n8n.io/workflows/4005
scraped_at: 2025-12-24 13:02:41
description:
  How it works
  This workflow automates the process of creating, approving, and optionally posting LinkedIn content from a Google Sheet. Here's a high-level overview:
  Scheduled Trigger: Runs automatically based on your defined time interval (daily, weekly, etc.).
  Fetch Data from Google Sheets: Pulls the first row from your sheet where Status is marked as Pending.
  Generate LinkedIn Post Content: Uses OpenAI to create a professional LinkedIn post using the Post Description and Instructions from the sheet.
  Format & Prepare Data: Formats the generated content along with the original instruction and post description for email.
  Send for Approval: Sends an email to a predefined user (e.g., marketing team) with a custom form for approval, including a dropdown to accept/reject and an optional field for edits.
  (Optional) Image Fetch: Downloads an image from a URL (if provided in the sheet) for future use in post visuals.

  Set up steps
  You’ll need the following before you start:

  A Google Sheet with the following columns: Post Description, Instructions, Image (URL), Status
  Access to an OpenAI API key
  A connected Gmail account for sending approval emails
  Your own Google Sheets and Gmail credentials added in n8n

  Steps:
  Google Sheet Preparation:
  Create a new Google Sheet with the mentioned columns (Post Description, Instructions, Image, Status, Output, Post Link).
  Add a row with test data and set Status to Pending.

  Credentials:
  In n8n, create OAuth2 credentials for:
  a. Google Sheets
  b. Gmail
  c. OpenAI (API Key)
  Assign these credentials to the respective nodes in the JSON.

  OpenAI Model:
  Choose a model like gpt-4o-mini (used here) or any other available in your plan.
  Adjust the prompt in the "Generate Post Content" node if needed.

  Email Configuration:
  In the Gmail node, set the recipient email to your own or your team’s address.
  Customize the email message template if necessary.

  Schedule the Workflow:
  Set the trigger interval (e.g., every morning at 9 AM).

  Testing:
  Run the workflow manually first to confirm everything works.
  Check Gmail for the approval form, respond, and verify the results.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.set","n8n-nodes-base.gmail","n8n-nodes-base.switch","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.if","n8n-nodes-base.linkedIn","n8n-nodes-base.linkedIn","n8n-nodes-base.googleSheets","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, 6196 characters]


name: Generate Recipes from Ingredients with Ollama AI Chef Agent
author_name: Clown Mutiny
author_username: clownmutiny
categories: []
created_at: 2025-05-13T06:43:19.837Z
updated_at: 2025-05-13T06:43:19.837Z
url: https://n8n.io/workflows/4007
scraped_at: 2025-12-24 13:02:44
description:
  What It Does
  The Chef Agent is your AI-powered kitchen companion—ready to turn leftover ingredients into meal inspiration. It's a simple, fun n8n automation that:
  Accepts a list of ingredients via webhook
  Uses Ollama AI to suggest 5 creative recipes or food ideas
  Recommends up to 3 missing ingredients to improve the dish
  Returns a fallback message if the AI is unavailable
  Includes setup notes for beginners

  Requirements
  An active n8n instance (local or hosted)
  Ollama AI running locally (or another LLM via HTTP request)
  A webhook endpoint (defaults to /lets-cook)

  Why You’ll Love It
  Fully customizable for your use case or favorite LLM
  Great intro to AI + workflow automation
  Comes with playful Clown Mutiny flair:
  &gt; “Powered by Clown Mutiny’s taste-bud liberation division.”

  Installation
  Import the provided JSON template into your n8n workspace.
  Configure your AI node to match your local Ollama instance.
  Trigger the flow by sending a POST request to the webhook:

  {
    "ingredients": "eggs, rice, spinach"
  }

nodes_used:
  ["@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.lmChatOllama","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.toolThink","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.webhook","n8n-nodes-base.respondToWebhook"]

workflow_json_compressed:
  H4sIAAAAAAAAE6VW2W7jOBD8FULPplcHKcl+2kwmwBibbAZZ7waDRWDwaNlEJNHQ4SQI/O/TlHxOnMTAPBiQqOpiV7G76VevFAV4Y+9yARm5mEPZeAOvEfPaG///MPBKq8E9vnpGI4rHQiQjJqjksaJMCk2lAk5DP4wgYikLIx/jN5z3CyiJWoiGFFDXYg6kAgVmBdrt8bJ0mD/LtPwDf7TbieainGOEKYcublqZ+RwqRC9tbRpjS0zFH+B2Pub2BHJh7ePEJTab3V19v764vJrdT6bfZvdXX77d3v41m3ydzVy0qDCjBiqU8uotW5kb5Y2bqoWBZ5eO131Yr/us/kNct1UwDNaDjfIoFpBGmtMg5jFloVQ0jfyARqBSEFGsVXag/DbPRSHIpdN+g8LyMwTnhYP3kceKY3/QKz7WcZy5qkDj6RmR9x87noulcS/mhEU/bv+9m13eXX29+ns6ubjeWnUsQChlWyyJt9bsjJGg/VDLkMYwkpRx4VMJEKJFYaJ0yMOAsz3vP6ZY5kBuoLDVyxmmFB3wS5tlUN2bUtunY2tC9CaI33qjbNnAc9OHXEM5bxbemPu+//aMo50UJVWSpjKgPGARZUxwKsIAaByqkS9kJAMe76VMF6Z8PENCY22+xR5kztKTmb9vNI+iJElChtkFnDIfAuxCnVAuMgb+SIkRk/vs+n6e7Fv6kyzFBnfobYitFnxYeF79UjdQ3PTtjfw/bEtEBUSQBeTLrM2JwhY15ZyIujZ1I8pmSBzoyeT5dhwQgxw1aVy3dMErYXIhsU4aSwrxCCSzVmNIsxiS75VdGe12yJGP2IzwbXwPHpJJhlzgiKpu5JglbNhNqfIWgyflHNvFoOSDbUvbkGXPrhHpOIiEuSlLzH9AhF6ZGrrVtoaqj8O3ut/H/Er5ZNtcIwHBdYe0yOB4h+TaFKZbiEhh0BZ05yB6SE6023C0q4NAR0zxGKhmWJtM8oimSjKaaj9hgS8ZNu3BDO6H5L4C9ocvRQ3Dp933oxH7W/NVuGbzcmhqqnruD4ZsuBOGUxSSVEjqj/iIsjTGAg9TTRMGqRA8lfxwxN5BvbSldjZ+prHqoVN7f0osTz8t8xPnEa4RL1SD5euNMxy6eJXU0DR4kF0wPINqXfxtpfEGG3urwEOWVc/QeZokKohTvFKSUYJXitSapqnvY38nPJQQpqPMHSSOshLUruP6UYIPwszcaEEFeDs7te93/RY68HAewrM39tcPD5jN1g9kK3AInEPV4X7lOcaeYvvotE5SHl8Uvdxi83KW4GJ7xRzzvr2Ze243CVucYZu1s7Y4jnlj7vv/fn7P7/X6J+2Ih/e2CQAA


name: AI-Powered Auto-Generate Exam Questions and Answers from Google Docs with Gemini
author_name: Davide
author_username: n3witalia
categories: []
created_at: 2025-05-13T09:26:31.458Z
updated_at: 2025-05-13T09:26:31.458Z
url: https://n8n.io/workflows/4008
scraped_at: 2025-12-24 13:02:44
description:
  This workflow automates the creation of exam questions (both open-ended and multiple-choice) from educational content stored in Google Docs, using AI-powered analysis and vector database retrieval

  This workflow saves educators hours of manual work while ensuring high-quality, curriculum-aligned assessments. Let me know if you'd like help adapting it for specific subjects!

  Use Cases  
  Educators**: Rapidly generate quizzes, midterms, or flashcards.  
  E-learning platforms**: Automate question banks for courses.  
  Corporate training**: Create assessments for employee onboarding.  

  Technical Requirements:  
  APIs**: Google Gemini, OpenAI, Qdrant, Google Workspace.  
  n8n Nodes**: LangChain, Google Sheets/Docs, HTTP requests, code blocks.  

  This workflow combines AI efficiency with human-curated quality, making it a powerful tool for modern education and training.  

  Advantages of This Workflow

  ✅ Fully Automated Exam Generation: From document to fully formatted quiz content with no manual intervention.
  ✅ Supports Comprehension and Critical Thinking: Questions are designed to go beyond factual recall, including inference and application.
  ✅ Uses AI and RAG for Accuracy: Ensures that answers are grounded in the document content, reducing hallucination.
  ✅ Seamless Google Integration: Pulls content from Google Docs and writes outputs to Google Sheets.
  ✅ Scalable for Any Subject: Works with any article or content domain as input.
  ✅ Modular and Customizable: Can be easily adapted to generate different question types or to use other LLMs or storage systems.

  How It Works  
  Document Ingestion:  
     The workflow starts by fetching an educational document (e.g., textbook chapter, lecture notes) from Google Docs.  
     Converts the document to Markdown for structured processing.  

  AI Processing:  
     Splits text into chunks and generates vector embeddings (via OpenAI) for semantic analysis.  
     Stores embeddings in Qdrant (vector database) for retrieval.  

  Question Generation:  
     Open-ended questions: Google Gemini AI creates 10 critical-thinking questions.  
     Multiple-choice questions: Generates 10 MCQs (1 correct + 3 plausible distractors) using RAG to validate answers against the vector DB.  

  Answer Validation:  
     For open questions: Retrieves context-aware answers from the vector store.  
     For MCQs: Ensures distractors are incorrect but believable via AI cross-checking.  

  Output:  
     Saves questions/answers to Google Sheets in two tabs:  
       Open questions: Question + AI-generated answer.  
       Closed questions: MCQ + options + correct answer.  

  Set Up Steps  
  Prerequisites:  
     APIs/Accounts:  
       Google Workspace (Docs + Sheets).  
       OpenAI (for embeddings).  
       Google Gemini (for question generation).  
       Qdrant (vector DB – self-hosted or cloud).  
     n8n Nodes: Ensure LangChain, Google Sheets/Docs, and HTTP request nodes are installed.  

  Configure Connections:  
     Link credentials for:  
       Google Docs/Sheets (OAuth2).  
       OpenAI (API key).  
       Google Gemini (API key).  
       Qdrant (URL + API key).  

  Customize Input:  
     Replace the default Google Doc ID in the "Get Doc" node with your source document.  
     Adjust chunk size/overlap (Token Splitter node) for optimal text processing.  

  Tweak Question Generation:  
     Modify prompts in:  
       "Open questions" node: Adjust criteria (e.g., difficulty, question types).  
       "Closed questions" node: Edit MCQ formatting rules.  

  Output Settings:  
     Update the Google Sheet ID in "Write open" and "Write closed" nodes.  
     Map columns in Google Sheets to match question/answer formats.  

  Run & Automate:  
     Trigger manually ("Test workflow") or schedule periodic runs (e.g., for updated content).  

  Need help customizing?  
  Contact me for consulting and support or add me on Linkedin. 

nodes_used:
  ["n8n-nodes-base.manualTrigger","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterTokenSplitter","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.googleDocs","@n8n/n8n-nodes-langchain.retrieverVectorStore","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.convertToFile","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserItemList","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserItemList","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.vectorStoreQdrant","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.toolVectorStore","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.chainRetrievalQa","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.embeddingsOpenAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 10280 characters]


name: Deploy Docker Grafana, API Backend for WHMCS/WISECP
author_name: PUQcloud
author_username: puqcloud
categories: []
created_at: 2025-05-13T11:28:47.111Z
updated_at: 2025-05-13T11:28:47.111Z
url: https://n8n.io/workflows/4011
scraped_at: 2025-12-24 13:02:45
description:
  Setting up n8n workflow

  Overview

  The Docker Grafana WHMCS module uses a specially designed workflow for n8n to automate deployment processes. The workflow provides an API interface for the module, receives specific commands, and connects via SSH to a server with Docker installed to perform predefined actions.

  Prerequisites

  You must have your own n8n server.
  Alternatively, you can use the official n8n cloud installations available at: n8n Official Site

  Installation Steps

  Install the Required Workflow on n8n

  You have two options:

  Option 1: Use the Latest Version from the n8n Marketplace

  The latest workflow templates for our modules are available on the official n8n marketplace.
  Visit our profile to access all available templates: PUQcloud on n8n

  Option 2: Manual Installation

  Each module version comes with a workflow template file.  
      
  You need to manually import this template into your n8n server.  
  n8n Workflow API Backend Setup for WHMCS/WISECP

  Configure API Webhook and SSH Access

  Create a Basic Auth Credential for the Webhook API Block in n8n.  
      
      
      
      
      
  Create an SSH Credential for accessing a server with Docker installed.  
  Modify Template Parameters

  In the Parameters block of the template, update the following settings:





  server_domain – Must match the domain of the WHMCS/WISECP Docker server.
  clients_dir – Directory where user data related to Docker and disks will be stored.
  mount_dir – Default mount point for the container disk (recommended not to change).

  Do not modify the following technical parameters:

  screen_left
  screen_right

  Deploy-docker-compose

  In the Deploy-docker-compose element, you have the ability to modify the Docker Compose configuration, which will be generated in the following scenarios:

  When the service is created
  When the service is unlocked
  When the service is updated

  nginx

  In the nginx element, you can modify the configuration parameters of the web interface proxy server.

  The main section allows you to add custom parameters to the server block in the proxy server configuration file.
  The main\_location section contains settings that will be added to the location / block of the proxy server configuration. Here, you can define custom headers and other parameters specific to the root location.

  Bash Scripts

  Management of Docker containers and all related procedures on the server is carried out by executing Bash scripts generated in n8n. These scripts return either a JSON response or a string.

  All scripts are located in elements directly connected to the SSH element.
  You have full control over any script and can modify or execute it as needed.

nodes_used:
  ["n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.webhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.code","n8n-nodes-base.ssh","n8n-nodes-base.switch","n8n-nodes-base.switch","n8n-nodes-base.respondToWebhook","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.switch","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.switch"]

workflow_json_compressed:
  [encoded data, 13032 characters]


name: Generate Knowledge Base Articles with GPT & Perplexity AI for Contentful CMS
author_name: Varritech
author_username: varritech
categories: []
created_at: 2025-05-13T11:31:19.601Z
updated_at: 2025-05-13T11:31:19.601Z
url: https://n8n.io/workflows/4012
scraped_at: 2025-12-24 13:02:44
description:
  Workflow: Auto Knowledge Base Article Generator

  ⚡ About the Creators
  This workflow was created by Varritech Technologies, an innovative agency that leverages AI to engineer, design, and deliver software development projects 500% faster than traditional agencies. Based in New York City, we specialize in custom software development, web applications, and digital transformation solutions. If you need assistance implementing this workflow or have questions about content management solutions, please reach out to our team.

  🏗️ Architecture Overview  
  This workflow automates the end-to-end creation of a structured knowledge-base article from a simple chat prompt:

  Chat Trigger → Receives user request  
  AI Drafting Loop → Generates & refines JSON article via AI agents  
  Perplexity Research Call → Deep-dive content generation  
  Editorial Loop → Up to 3 AI-driven revisions  
  Contentful Publish → Pushes final JSON into CMS  

  📦 Node-by-Node Breakdown

  flowchart LR
    A[Webhook: Chat Trigger] --&gt; B[AI Writer Agent]
    B --&gt; C[HTTP Request: Perplexity Content]
    C --&gt; D[Function: Format Output & Citations]
    D --&gt; E[Loop Start: Initialize Count]
    E --&gt; F[AI Editor Agent]
    F --&gt; G{action == "rewrite"?}
    G -- yes --&gt; H[Function: Merge Improvements]
    H --&gt; I[Increment Count] --&gt; F
    G -- no --&gt; J[Stop Loop]
    J --&gt; K[HTTP Request: Publish to Contentful]

  Webhook: Chat Trigger

  Type: HTTP Webhook (POST /webhook/knowledge-article)

  Payload:

  { 
  	"chatInput": "What topics should I write about?" 
  }

  Purpose: Kicks off the workflow on that chat prompt.

  AI Writer Agent

  Inputs: chatInput or existing article JSON

  Outputs:

  {
    "title": "...",
    "slug": "...",
    "category.id": "...",
    "description": "...",
    "keywords": [...],
    "content": "...",
    "metaTitle": "...",
    "metaDescription": "...",
    "readingTime": 5,
    "difficulty": "intermediate"
  }

  Purpose: Generates the article skeleton (metadata + initial content).

  HTTP Request: Perplexity Content

  Method: POST

  URL: https://api.perplexity.ai/research

  Body:
  {
    "model": "sonar-deep-research",
    "query": "{{ $json.title }}",
    "length": 1000
  }

  Purpose: Retrieves a long-form, deeply researched draft for the article body.

  Function: Format Output & Citations

  Logic:

  Parse raw Perplexity response
  Extract source URIs
  Append them under a sources markdown list

  Editorial Loop

  Initialize Counter to 0
  AI Editor Agent
     Reads draft JSON
     Returns either:
       action: "rewrite" + improvements: [...]
       or action: "submit"
  Merge Improvements (if rewriting)
     Applies suggested updates to JSON fields
  Limit Check
     Stops after 3 iterations or on "submit"

  HTTP Request: Publish to Contentful

  Method: PUT

  URL: https://cdn.contentful.com/spaces/{space}/environments/master/entries/{entryId}

  Headers:
  Authorization: Bearer &lt;token&gt;
  Content-Type: application/vnd.contentful.management.v1+json

  Body: Maps JSON → Contentful entry fields

  Outcome: Publishes the finalized article live.

  🔍 Design Rationale & Best Practices

  Separation of Concerns
  Writer vs. Editor agents isolate creative drafting from quality review.

  Idempotent Loop
  Counter + action flags prevent infinite retries.

  Extensibility
  Swap in different research APIs or CMS targets with minimal changes.

  Structured JSON
  Ensures predictable input/output for each node.

nodes_used:
  ["n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.chatTrigger","n8n-nodes-base.code","n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.set","n8n-nodes-base.function","n8n-nodes-base.if","n8n-nodes-base.noOp","n8n-nodes-base.executeWorkflow","n8n-nodes-base.code","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.stickyNote"]

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


name: Automatic Jest Test Generation for GitHub PRs with Dual AI Review
author_name: Varritech
author_username: varritech
categories: []
created_at: 2025-05-13T11:42:18.431Z
updated_at: 2025-05-13T11:42:18.431Z
url: https://n8n.io/workflows/4013
scraped_at: 2025-12-24 13:02:46
description:
  Workflow: Automatic Unit Test Creator from GitHub

  🏗️ Architecture Overview
  This workflow listens for GitHub pull-request events, analyzes changed React/TypeScript files, auto-generates Jest tests via AI, has them reviewed by a second AI pass, and posts suggestions back as PR comments:

  GitHub Webhook → PR opened or updated
  Fetch & Diff → Retrieve raw diff of changed files
  Filter & Split → Isolate .tsx files & their diffs
  Fetch File Contents → Provide full context for tests
  Test Maker Agent → Generate Jest tests for diff hunks
  Code Reviewer Agent → Refine tests for style & edge-cases
  Post PR Comment → Sends suggested tests back to GitHub

  📦 Node-by-Node Breakdown

  flowchart LR
    A[Webhook: /github/pr-events] --&gt; B[GitHub: Get PR]
    B --&gt; C[Function: Parse diff_url + owner/repo]
    C --&gt; D[HTTP Request: GET diff_url]
    D --&gt; E[Function: Split on "diff --git"]
    E --&gt; F[Filter: /\.tsx$/]
    F --&gt; G[GitHub: Get File Contents]
    G --&gt; H[Test Maker Agent]
    H --&gt; I[Code Reviewer Agent]
    I --&gt; J[Function: Build Comment Payload]
    J --&gt; K[HTTP Request: POST to PR Comments]

  Webhook: GitHub PR Events
  Type: HTTP Webhook (/webhook/github/pr-events)
  Subscribed Events: pull_request.opened, pull_request.synchronize

  GitHub: Get PR
  Node: GitHub
  Action: "Get Pull Request"
  Inputs: owner, repo, pull_number

  Function: Parse diff_url + owner/repo
  Extracts:
    diff_url (e.g. …/pulls/123.diff)
    owner, repo, merge_commit_sha

  HTTP Request: GET diff_url
  Fetches unified-diff text for the PR.

  Function: Split on "diff --git"
  Splits the diff into file-specific segments.

  Filter: /.tsx$/
  Keeps only segments where the file path ends with .tsx.

  GitHub: Get File Contents
  For each .tsx file, fetches the latest blob via GitHub API.

  Test Maker Agent
  Prompt:
    "Generate Jest unit tests covering only the behaviors changed in these diff hunks."
  Output: Raw Jest test code.

  Code Reviewer Agent
  Reads file + generated tests
  Prompt:
    "Review and improve these tests for readability, edge-cases, and naming conventions."
  Output: Polished test suite.

  Function: Build Comment Payload
  Wraps tests in TypeScript fences:
  // generated tests…
  Constructs JSON:
  { "body": "&lt;tests&gt;" }

  HTTP Request: POST to PR Comments
  URL: https://api.github.com/repos/{owner}/{repo}/issues/{pull_number}/comments
  Body: Contains the suggested tests.

  🔍 Design Rationale & Best Practices

  Focused Diff Analysis
  Targets only .tsx files to cover UI logic.

  Two-Stage AI
  Separate "generate" + "review" steps mimic TDD + code review.

  Stateless Functions
  Pure JS for parsing & transformation, easy to test.

  Non-Blocking PR Comments
  Asynchronous suggestions—developers aren't blocked.

  Scoped Permissions
  GitHub token limited to reading PRs & posting comments.

nodes_used:
  ["n8n-nodes-base.github","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.githubTool","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.merge","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.githubTool","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.outputParserStructured"]

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


name: Deploy Docker InfluxDB, API Backend for WHMCS/WISECP
author_name: PUQcloud
author_username: puqcloud
categories: []
created_at: 2025-05-13T11:48:09.439Z
updated_at: 2025-05-13T11:48:09.439Z
url: https://n8n.io/workflows/4014
scraped_at: 2025-12-24 13:02:46
description:
  Overview

  The Docker InfluxDB WHMCS module uses a specially designed workflow for n8n to automate deployment processes. The workflow provides an API interface for the module, receives specific commands, and connects via SSH to a server with Docker installed to perform predefined actions.

  Prerequisites

  You must have your own n8n server.
  Alternatively, you can use the official n8n cloud installations available at: n8n Official Site

  Installation Steps

  Install the Required Workflow on n8n

  You have two options:

  Option 1: Use the Latest Version from the n8n Marketplace

  The latest workflow templates for our modules are available on the official n8n marketplace.
  Visit our profile: PUQcloud on n8n

  Option 2: Manual Installation

  Each module version comes with a workflow template file.  
    
  You need to manually import this template into your n8n server.  
  n8n Workflow API Backend Setup for WHMCS/WISECP

  1. Configure API Webhook and SSH Access

  Create a Basic Auth Credential for the Webhook API block in n8n.  
      
      
    

  Create an SSH Credential for accessing a server with Docker installed.  
  2. Modify Template Parameters

  In the Parameters block of the template, update the following settings:  
    


  server_domain – Must match the domain of the WHMCS/WISECP Docker server.
  clients_dir – Directory where user data related to Docker and disks will be stored.
  mount_dir – Default mount point for the container disk (recommended not to change).

  Do not modify the following technical parameters:

  screen_left
  screen_right

  Deploy-docker-compose

  In the Deploy-docker-compose element, you can modify the Docker Compose configuration. This is generated in the following scenarios:

  When the service is created
  When the service is unlocked
  When the service is updated

  nginx

  In the nginx element, you can modify configuration parameters of the web interface proxy server.

  The main section allows you to add custom parameters to the server block in the proxy server configuration file.
  The main_location section contains settings that will be added to the location / block of the configuration. Here, you can define custom headers and parameters.

  Bash Scripts

  Management of Docker containers and related procedures is done by executing Bash scripts generated in n8n. These scripts return either JSON or plain strings.

  All scripts are located in elements directly connected to the SSH element.
  You have full control over any script and can modify or execute it as needed.

nodes_used:
  ["n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.webhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.code","n8n-nodes-base.ssh","n8n-nodes-base.switch","n8n-nodes-base.switch","n8n-nodes-base.respondToWebhook","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.switch","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.switch","n8n-nodes-base.set"]

workflow_json_compressed:
  [encoded data, 13228 characters]


name: Deploy Docker NextCloud, API Backend for WHMCS/WISECP
author_name: PUQcloud
author_username: puqcloud
categories: []
created_at: 2025-05-13T11:55:54.871Z
updated_at: 2025-05-13T11:55:54.871Z
url: https://n8n.io/workflows/4015
scraped_at: 2025-12-24 13:02:45
description:
  Overview

  The Docker NextCloud WHMCS module leverages a sophisticated workflow for n8n, designed to automate the comprehensive deployment, configuration, and management processes for NextCloud and NextCloud Office services.

  Through its intuitive API interface, the workflow securely receives commands and orchestrates predefined tasks via SSH on your Docker-hosted server, ensuring streamlined operations and efficient management.

  Prerequisites

  You must deploy your own dedicated n8n server to manage workflows effectively.
  Alternatively, you may opt for the official n8n cloud-based solutions accessible via: n8n Official Site
  Your Docker server must be accessible via SSH with necessary permissions.

  Installation Steps

  Install the Required Workflow on n8n

  You can select from two convenient installation options:

  Option 1: Use the Latest Version from the n8n Marketplace

  The latest workflow templates are continuously updated and available on the n8n marketplace.
  Explore all templates provided by PUQcloud directly here: PUQcloud on n8n

  Option 2: Manual Installation

  Each module version includes a bundled workflow template file.  
    
  Import this workflow file directly into your n8n server manually.  
  n8n Workflow API Backend Setup for WHMCS

  Configure API Webhook and SSH Access

  Create a secure Basic Auth Credential for Webhook API interactions within n8n.  
    
  Create an SSH Credential within n8n to securely communicate with the Docker host.  
  Modify Template Parameters

  Adjust and update the following critical parameters to match your deployment specifics:  


  server_domain – Set this to the domain of your WHMCS Docker server.
  clients_dir – Specify the directory where user data and related resources will be stored.
  mount_dir – The standard mount point for container storage (recommended to remain unchanged).

  Do not alter the following technical parameters to avoid workflow disruption: screen_left, screen_right.

  Deploy-docker-compose Configuration

  Fine-tune Docker Compose configurations tailored specifically for these critical operational scenarios:

  Initial service provisioning and setup
  Service suspension and subsequent unlocking
  Service configuration updates
  Routine service maintenance tasks

  nginx Configuration Management

  Enhance and customize proxy server configurations using the dedicated nginx workflow element:

  main**: Define specialized parameters within the server configuration block.
  main_location**: Set custom headers, caching policies, and routing rules for the root location.

  Bash Script Automation

  Automate Docker container management and related server tasks through dynamically generated Bash scripts within n8n. Scripts execute securely via SSH and provide responses in JSON or plain text formats for easy parsing and logging.

  Scripts are conveniently linked directly to the SSH action elements.
  You retain complete flexibility to adapt or extend these scripts as necessary to meet your precise operational requirements.

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

workflow_json_compressed:
  [encoded data, 21920 characters]


name: Automate Daily YouTrack Task Summaries to Discord by Assignee
author_name: Halfbit 🚀
author_username: halfbit
categories: []
created_at: 2025-05-13T14:12:27.024Z
updated_at: 2025-05-13T14:12:27.024Z
url: https://n8n.io/workflows/4019
scraped_at: 2025-12-24 13:02:45
description:
  Daily YouTrack In-Progress Tasks Summary to Discord by Assignee

  Keep your team in sync with a daily summary of tasks currently In Progress in YouTrack — automatically posted to your Discord channel.

  This workflow queries issues, filters them by status, groups them by assignee and priority, and sends a formatted message to Discord. It's perfect for teams that need a lightweight, automated stand-up report.

  &gt; 📝 This workflow uses Discord as an example. You can easily replace the messaging integration with Slack, Mattermost, MS Teams, or any other platform that supports incoming webhooks.

  Use Case

  Remote development teams using YouTrack + Discord
  Replacing daily stand-up meetings with async updates
  Project managers needing quick visibility into active tasks

  Features

  Scheduled** daily execution (default: weekdays at 09:00)
  Status filter**: only issues marked as In Progress
  Grouping** by assignee and priority
  Custom mapping** for user mentions (YouTrack → Discord)
  Clean Markdown output** for Discord, with direct task links

  Setup Instructions

  YouTrack Configuration

  Get a permanent token:
     Go to your YouTrack profile → Account Security → Authentication
     Create a new permanent token with "Read Issue" permissions
     Copy the token value

  Set the base API URL:
     Format: https://yourdomain.youtrack.cloud/api/issues
     Replace yourdomain with your actual YouTrack instance

  Identify custom field IDs:
     Method 1: Go to YouTrack → Administration → Custom Fields → find your "Status" field and note its ID
     Method 2: Use API call GET /api/admin/customFieldSettings/customFields to list all field IDs
     Method 3: Inspect a task's API response and look for field IDs in the customFields array
     Example Status field ID: 105-0 or 142-1

  Discord Configuration

  Create a webhook URL in your Discord server:
    Server Settings → Integrations → Webhooks → New Webhook
    Choose target channel and copy the webhook URL
    Extract webhook ID from URL (numbers after /webhooks/)

  Environment Variables & Placeholders

  | Placeholder | Description |
  |-------------|-------------|
  | {{API_URL}} | Your YouTrack API base URL |
  | {{TOKEN}} | YouTrack permanent token |
  | {{FIELD_ID}} | ID of the "Status" custom field |
  | {{QUERY_FIELDS}} | Fields to fetch (e.g., summary, id) |
  | {{PROJECT_LINK}} | Link to your YouTrack project |
  | {{USER_X}} | YouTrack usernames |
  | {{DISCORD_ID_X}} | Discord mentions or usernames |
  | {{NAME_X}} | Display names |
  | {{WEBHOOK_ID}} | Discord webhook ID |
  | {{DISCORD_CHANNEL}} | Discord channel name |
  | {{CREDENTIAL_ID}} | Your credential ID in n8n |

  Testing the Workflow

  Test YouTrack connection:
     Execute the "HTTP Request YT" node individually
     Verify that issues are returned from your YouTrack instance
     Check if the Status field ID is correctly filtering tasks

  Verify filtering:
     Run the "Filter fields" node
     Confirm only "In Progress" tasks pass through

  Check message formatting:
     Execute the "Discord message" node
     Review the generated message content and formatting

  Test Discord delivery:
     Run the complete workflow manually
     Verify the message appears in your Discord channel

  Schedule verification:
     Enable the workflow
     Test weekend skip functionality by temporarily changing dates

  Customization Tips

  Language**: All labels/messages are in English — customize if needed
  User mapping**: Adjust assignee → Discord mention logic in the message builder
  Priorities**: Update the priorityMap to reflect your own naming structure
  Schedule**: Modify the trigger time in the Schedule Trigger node
  Alternative platforms**: Swap out the Discord webhook for another messaging service if preferred

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.httpRequest","n8n-nodes-base.filter","n8n-nodes-base.code","n8n-nodes-base.discord","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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


name: Extract & Categorize Receipt Data with Google OCR, OpenRouter AI & Telegram
author_name: Khairul Muhtadin
author_username: khmuhtadin
categories: []
created_at: 2025-05-13T14:12:43.145Z
updated_at: 2025-05-13T14:12:43.145Z
url: https://n8n.io/workflows/4020
scraped_at: 2025-12-24 13:02:44
description:
  Effortlessly track your expenses with MoneyMate, an n8n workflow that transforms receipts into organized financial insights.

  Upload a photo or text via Telegram, and let MoneyMate extract key details—store info, transaction dates, items, and totals—using Google Vision OCR and AI-powered parsing via OpenRouter.

  It categorizes expenses (e.g., Food & Beverages, Transport, Household) and delivers a clean, emoji-rich summary back to your Telegram chat. Handles zero-total errors with a friendly nudge to double-check inputs.

  Perfect for freelancers, small business owners, or anyone seeking hassle-free expense management. No database required, ensuring privacy and simplicity. Deploy MoneyMate and take control of your finances today!

  Key Features
  📱 Telegram Integration: Input via photo or text, receive summaries instantly.
  📸 Receipt Scanning: Converts receipt images to text using Google Vision API.  
  🤖 AI Parsing: Categorizes transactions with OpenRouter’s AI analysis.   
  🛡️ Privacy-First: Processes data on-the-fly without storage.  
  ⚠️ Smart Error Handling: Catches zero totals with user-friendly prompts.  
  📊 Flexible Categories: Supports Income/Expense and custom expense types.  

  Ideal For
  Budget-conscious individuals** managing personal finances.  
  Entrepreneurs** tracking business expenses.  
  Teams** needing quick, automated expense reporting.  

  Pre-Requirements
  n8n Instance:** A running n8n instance (cloud or self-hosted).  
  Credentials:**  
    Telegram: A bot token and webhook setup (obtained via BotFather). For more information, please refer to Telegram bots creation
    Google Cloud: A service account with Google Vision API enabled and API key. For more informations, please refer to Google cloud Vision  
    OpenRouter: An account with API access for AI language model usage.  
  Telegram Bot:* A configured *Telegram** bot to receive inputs and send summaries.  

  Setup Instructions
  Import Workflow:* Copy the *MoneyMate** workflow JSON and import it into your n8n instance using the "Import Workflow" option.  
  Set Up Telegram Bot:* Create a bot via BotFather on *Telegram** to get a token and set up a webhook. For detailed steps, refer to n8n’s Telegram setup guide.  
  Configure Credentials:**  
    In the Telegram Trigger, Send Error Message, and Send Expense Summary nodes, add Telegram API credentials with your bot token.  
    In the Get Telegram File and Download Image nodes, ensure Telegram API credentials are linked.  
    In the Google Vision OCR node, add Google Cloud credentials with Google Vision API access.  
    In the OpenRouter AI Model node, set up OpenRouter API credentials.  
  Test the Workflow:* Send a test receipt photo or text (e.g., "Lunch 50,000 IDR") via *Telegram** and verify the summary in your chat.  
  Activate:** Enable the workflow in n8n to run automatically for each input.  

  Customization Options
  Add Categories:* Modify the *AI Categorizer* node to include new expense types (e.g., *Entertainment**).  
  Change Output Format:* Adjust the *Format Summary Message** node to include more details like taxes or payment methods.  
  Switch AI Model:* In the *OpenRouter AI Model* node, select a different *OpenRouter** model for better parsing.  
  Store Data:* Add a *Google Sheets* node after *Parse Receipt Data** to save expense records.  
  Enhance Errors:* Include an email notification node after *Check Invalid Input** for failed inputs.  

  Why Choose MoneyMate?
  Save time, reduce manual entry, and gain clarity on your spending with MoneyMate’s AI-driven workflow. Ready to streamline your finances? Get MoneyMate now!


  Made by: khmuhtadin
  Need a custom? contact me on LinkedIn or Web

nodes_used:
  ["n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.telegramTrigger","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatOpenRouter","n8n-nodes-base.telegram","n8n-nodes-base.telegram","n8n-nodes-base.stickyNote","n8n-nodes-tesseractjs.tesseractNode","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, 5952 characters]


name: AI-Optimized Content Posting to X, Discord & LinkedIn with OpenRouter
author_name: Khairul Muhtadin
author_username: khmuhtadin
categories: []
created_at: 2025-05-13T14:18:13.939Z
updated_at: 2025-05-13T14:18:13.939Z
url: https://n8n.io/workflows/4022
scraped_at: 2025-12-24 13:02:44
description:
  Amplify your social media presence with BuzzBlast, an n8n workflow designed to make your content go viral across X, Discord, and LinkedIn. By sending a single chat message, BuzzBlast leverages OpenRouter's AI to optimize your input for each platform’s unique audience—crafting punchy tweets for X, engaging messages for Discord, and professional posts for LinkedIn. With smart language detection, it ensures the output matches your input’s language for authentic engagement.

  Key Features

  🚀 Multi-Platform Posting: Shares optimized content to X, Discord, and LinkedIn simultaneously.
  🧠 AI Optimization: Uses OpenRouter’s AI to tailor content for virality on each platform.
  🌐 Language Detection: Matches output to your input language for seamless engagement.
  🔄 Smart Routing: Automatically directs content to the right platform using a switch node.
  📱 Chat Trigger: Initiates posts via a simple chat message.
  ⚡ Zero Hassle: No manual reformatting—BuzzBlast handles it all.

  Ideal For

  Social media managers looking to streamline cross-platform posting.
  Content creators aiming to boost engagement with minimal effort.
  Businesses seeking to maximize reach across diverse audiences.

  Pre-Requirements

  n8n instance**: A running n8n instance (cloud or self-hosted).
  Credentials**:
    X account with OAuth2 API access.
    Discord Webhook API setup for your server.
    LinkedIn account with OAuth2 API access.
    OpenRouter account for AI language model access.
  Chat Trigger Setup**: A configured chat platform (e.g., Slack, Telegram) to send input messages to the workflow.

  Setup Instructions

  Import the Workflow:
     Copy the provided workflow JSON and import it into your n8n instance via the "Import Workflow" option in the n8n editor.
  Configure Credentials:
     In the Post to X node, set up OAuth2 credentials for your X account.
     In the Post to Discord node, configure a Discord Webhook for your server.
     In the Post to LinkedIn node, add OAuth2 credentials for your LinkedIn account.
     In the OpenRouter AI Model node, provide API credentials for your OpenRouter account.
  Set Up Chat Trigger:
     In the Chat Input Trigger node, configure your preferred chat platform (e.g., Slack, Telegram) to send trigger messages.
     Ensure the webhook is active and correctly linked to your chat platform.
  Test the Workflow:
     Send a test message via your chat platform (e.g., "Announcing our new product launch!").
     Verify that the AI optimizes the content and posts it to X, Discord, and LinkedIn as expected.
  Activate the Workflow:
     Once tested, toggle the workflow to "Active" in n8n to enable automatic execution when chat messages are received.

  Customization Guidance
  Changes Chat Trigger**: Adjust the chat trigger using your preference platform like telegram, discord, etc.
  Modify AI Prompt**: Adjust the prompt in the AI Content Optimizer node to change the tone or style (e.g., more professional for LinkedIn or conversational for Discord).
  Add New Platforms**: Extend the Route to Platforms node by adding conditions for additional platforms (e.g., Instagram or Facebook) and corresponding posting nodes.
  Change AI Model**: In the OpenRouter AI Model node, select a different OpenRouter model to optimize content quality or manage costs.
  Enhance Output Format**: Update the JSON schema in the Parse AI Output node to include additional fields like hashtags, emojis, or links for specific platforms.
  Add Error Handling**: Include an error-handling node after the Route to Platforms node to log failed posts or retry them automatically.

  Why Choose BuzzBlast?

  BuzzBlast saves time, maximizes reach, and lets AI craft platform-perfect posts that resonate with your audience. Whether you're an influencer, marketer, or business, this workflow makes cross-platform posting effortless. Ready to make waves online? Grab BuzzBlast and start buzzing!

  made by: khmuhtadin
  Need a custom? contact me on LinkedIn or Web

nodes_used:
  ["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/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.stickyNote","n8n-nodes-base.splitOut","n8n-nodes-base.switch","n8n-nodes-base.twitter","n8n-nodes-base.linkedIn","n8n-nodes-base.discord","@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.chainLlm"]

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


name: Conversational Kubernetes Management with GPT-4o and MCP Integration
author_name: Reza Gholizade
author_username: reza-gholizade
categories: []
created_at: 2025-05-13T14:20:56.900Z
updated_at: 2025-05-13T14:20:56.900Z
url: https://n8n.io/workflows/4023
scraped_at: 2025-12-24 13:02:43
description:
  This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. 

  Conversational Kubernetes Management with GPT-4o and MCP Integration

  This workflow enables you to manage Kubernetes clusters conversationally using OpenAI’s GPT-4o and a secure MCP (Model Context Protocol) server. It transforms natural language queries into actionable Kubernetes commands via a lightweight MCP API gateway — perfect for developers and platform engineers seeking to simplify cluster interaction.

  🚀 Setup Instructions

  Import the Workflow  
     Upload this template to your n8n instance.

  Configure Required Credentials
     OpenAI API Key: Add your GPT-4o API key in the credentials.
     MCP Client Node: Set the URL and auth for your MCP server.

  Test Kubernetes Access  
     Ensure your MCP server is correctly configured and has access to the target Kubernetes cluster.

  🧩 Prerequisites

  n8n version 0.240.0 or later  
  Access to GPT-4o via OpenAI  
  A running MCP server  
  Kubernetes cluster credentials configured in your MCP backend

  ⚠️ Community Nodes Disclaimer

  This workflow uses custom community nodes (e.g., MCP Client).  
  Make sure to review and trust these nodes before running in production.

  🛠️ How It Works

  A webhook or chat input triggers the conversation.
  GPT-4o interprets the message and generates structured Kubernetes queries.
  MCP Client securely sends requests to your cluster.
  The result is returned and formatted for easy reading.

  🔧 Customization Tips 

  Tweak the GPT-4o prompt to match your tone or technical level.   
  Extend MCP endpoints to support new Kubernetes actions.  
  Add alerting or monitoring integrations (e.g., Slack, Prometheus). 

  🖼️ Template Screenshot

  🧠 Example Prompts

  Show me all pods in the default namespace.
  Get logs for nginx pod in kube-system.
  List all deployments in staging.

  📎 Additional Resources

  MCP Server on GitHub  
  OpenAI Documentation  
  n8n Docs  

  Build smarter Kubernetes workflows with the power of AI !

nodes_used:
  ["@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.agent","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","@n8n/n8n-nodes-langchain.mcpTrigger","@n8n/n8n-nodes-langchain.mcpTrigger","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","n8n-nodes-mcp.mcpClientTool","@n8n/n8n-nodes-langchain.mcpClientTool","@n8n/n8n-nodes-langchain.mcpClientTool"]

workflow_json_compressed:
  [encoded data, 4940 characters]


name: Generate & Publish SEO-Optimized WordPress Blog Posts with AI
author_name: Khairul Muhtadin
author_username: khmuhtadin
categories: []
created_at: 2025-05-13T14:29:01.632Z
updated_at: 2025-05-13T14:29:01.632Z
url: https://n8n.io/workflows/4024
scraped_at: 2025-12-24 13:02:43
description:
  Generate and Publish SEO-Optimized Blog Posts to WordPress


  This n8n workflow, BlogBlitz, automates the creation and publishing of SEO-optimized blog posts for WordPress, saving you hours of content creation time. Triggered via Telegram or a scheduled interval, it generates 1,500–2,500-word articles on Technology, AI, Tech Facts, History, or Tips, complete with catchy titles, slugs, meta descriptions, and realistic featured images. Perfect for bloggers and marketers, BlogBlitz ensures your site stays fresh with high-quality content.

  Who is this for?
  Bloggers, content marketers, and WordPress site owners who want to automate high-quality, SEO-ready blog content creation without manual writing or formatting.

  What problem is this workflow solving?
  Manually creating engaging, SEO-optimized blog posts is time-consuming and requires expertise. BlogBlitz solves this by automating the entire process—from generating ideas and writing articles to publishing and notifying you—keeping your site active and discoverable.

  What this workflow does
  Triggers**: Runs every 3 hours via a Schedule Trigger or on-demand with a Telegram command (“generate”).  
  Generates Content**: Uses OpenRouter to pick a category (e.g., Technology, AI) and create a title, slug, focus keyphrase, and meta description.  
  Writes Articles**: OpenAI crafts 1,500–2,500-word posts with SEO-friendly structure, headings, and a call-to-action.  
  Adds Visuals**: Generates realistic featured images with OpenAI and uploads them to WordPress.  
  SEO Features**: Generate optimized slug, focus keyphrase, meta description
  Publishes**: Posts articles to WordPress with proper categories and featured images.  
  Notifies**: Sends publish alerts with links to Discord and Telegram.  

  Setup
  n8n instance (Cloud or self-hosted): Ensure you have a cloud or self-hosted n8n instance.  
  Credentials:  
     WordPress: API access for wp-json/wp/v2 endpoint.  
     OpenAI: For article and image generation.  
     OpenRouter: For title and category generation.  
     Telegram: Bot API for triggers and notifications.  
     Discord: Webhook for publish alerts.  
  WordPress Configuration:  
     Set up categories (Technology [ID:3], AI [ID:4], Tech Fact [ID:7], Tech History [ID:8], Tech Tips [ID:9]).  
     Ensure an admin user ID is available (default: 1).   
  Node Setup:  
     Use the Edit Fields node to centralize variables like category IDs.  
  Test: Send “generate” via Telegram to test the workflow. Check WordPress for the published post.  

  How to customize this workflow to your needs
  Change Categories**: Update the WordPress Post Draft node to match your site’s category IDs.  
  Adjust Schedule**: Modify the Schedule Trigger node for different intervals (e.g., daily).  
  Tweak Tone**: Edit the prompt in the Basic LLM Chain node for a different writing style (e.g., formal or casual).  
  Add Platforms**: Extend notifications to Slack or email by adding nodes.  
  Image Style**: Adjust the OpenAI image node for different sizes or styles (e.g., “natural” instead of “vivid”).  

  Pre-Requirements
  n8n Instance**: Cloud or self-hosted.  
  Credentials**:  
    WordPress API (wp-json/wp/v2 endpoint).  
    OpenAI API for text and images.  
    OpenRouter API for AI content.  
    Telegram bot API.  
    Discord Webhook API.  
  Dependencies**: @n8n/n8n-nodes-langchain package.  
  WordPress Setup**: Categories and admin user ID configured.  
  Network**: Stable internet for API calls.  

  Made by: Khaisa Studio  
  Tag: youtube, summarizer, telegram, openai  
  Category: AI Automation, Video Tools
  Need a custom? Contact Me

nodes_used:
  ["@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.wordpress","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.lmChatOpenRouter","n8n-nodes-base.discord","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.telegramTrigger","n8n-nodes-base.if","n8n-nodes-base.telegram","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE61X227bRhD9FYLPWnfv3PVTc0FTA0ljxHENJAiKvczKhCVSJak0huF/71ByLVqiZDnog2nZ2p09M3Pm7OFdXsb8NJ99OeM/bqr359e/X+rpl9f5JJ9D5/LTu7ys2s5VAc76dYFrRQsrkpaSWhaDoclbShNoIaVxkSXpi0JSaiJYTQ3VMuqCW5mMoEXAuB3MFzPXwZsGYnsB3XLxpsb/QAd4QNcs4X6SV24OeNrVeUayy0V0/Xe4003b/PTrN/y+jtB/vFujdwVQL1JBCm80kWAl8SoowqgM3nInBE/5Y9TP9aIM2Zvrum6hyVwVs89lN4Psg7uBpj/mdtEv+7Uy1S/4Q1aHkZmrpuHaldXJ6vl+Nseli7otu7KuEIrgdELwgegWrsGTOmgQ4t39OuCf+NdqITvR95MH3EppyQtFCRZTEGm0IY5rQTRQ45NO3lO1wf3atYj7/fsPiB0R/DRSLV+OVDgvvDCeUM0LIp3lxInASaGKQodorA7hyApn565pjyp0vewWy269/AKZEbplsyLCIBlFMRl2TDL8MZmkvEvAE3FBeiI5KGIDF0RR7SlnDH/TTTJXdRMXDbRtdl63Xfa2canbgN/g9q6Fk3/+W7xFDiz5ERg35ZYp+ICEdoWQBCcqEis5I1QULCkdgau4QfhxAdWrMxyVd1BBg8OSnc3dFI6pcL+z3KrocVhPzCNaZzQNVCvSKwA+kiZGRCAa0VthaCgE26C9XMxqF9cQs67Ors73VvO66xaf4O8ltN1TjMVRGOWg51oYpxg4EiEmIvuyGmCcBJYCjYX2hZVjPScZSlT2G7gV97YLeyxei3hfBDckC5FaQIo6RqTVnhgvLHGMW5os494PFO0iXENc4oB9bsrpdDhbWwDbh4WbdQOQxPSjJF80SsJpzZTolTcZIhPFUTLaksARfpJJ2mJA1JUKTLKAFJ3Wze0k6++YSXYDt4vrBvFl0zWB62PUYTZHGex67n9CodhOpp+4o3ThMRUmXRBQOKLwpsJUhMZUArK44IFJyYN3ZlByQFVD9r4t24BkyS7bsppmV+BR9G721j+uVz+FylhfeN1D/We9f3XVFpwrJrwlxtGAGoA88BSAhILxaJKnLun8mew2jbKO+WhQQkAp5D9OKvEYkzjDC0yaFlwOBPxV05UB+fTup/qxrShav1yjJSTFlZSEKYUazfDCsQkE4VIoKoJAOwEDYsEMphj52QHoHhaOD8CqEShYW51w1mvkcSDKS0AsJqC+QSQK51IHKMAJ+Vwnhrlxm6JG00TQsmBnITmM5xOxgtuCCxskH1z7Z2lvNmV6msAj+sOkGEAxlioDgMVFy4YkE5yYkCSJzKnCakep8Ltlfra8IwRnOwTnNlCG5pAI5fFsjpJseYxIcCxQ8DphZV9SVgE4FVIyYhkgZbBlxEiKN2cMtJDMSzH0KBfI8Jvb7I+626/n7WrNw5IdoujdUuehrjqoOgyV71ca7D6VggkSZEDRjJQTX4AlPGHqvHfNwEeBspcj5eiP+K6mHwaKq13oyu+wNuSTvIWuQ31b7YQfEJZ9+I9NxAk6zb+zPsT39fZVZ71CeofoCPp/S7DuCo2MtQQtbQKmDZoCizgRQwWhD7UKjETH57y3tqdf0dr36R1v1+drS1xWEX7kp/T+2zcEtW2Zx+If9nejYXfu2/8b946ejR0wFIbRKLsqjmFc+Vev2Uv0MR8wzuxJyL2vGDu7ts8acXWHi33YWI3mM9qpsVOeNcSj4fftGjvhkIkdp8xBvzA4Yt3/g9wZA7S3c89UcrQNYwccaXi2j5ts5mHn8hin/jHvjmseD98Pf2b0tkPsQDnerj43WMcjOjRm9/f/AoAi12SvEQAA


name: Stacey – Your Telegram AI Assistant (Powered by MCP, Gemini & Google Tools)
author_name: David Olusola
author_username: dae221
categories: []
created_at: 2025-05-13T17:25:59.368Z
updated_at: 2025-05-13T17:25:59.368Z
url: https://n8n.io/workflows/4025
scraped_at: 2025-12-24 13:02:46
description:
  &gt; This n8n template builds Stacey, an AI assistant that runs inside Telegram. Stacey listens to your messages, understands what you want using AI, and intelligently routes commands to MCP-connected tools — like Gmail, Google Calendar, a blog writer, and more.
  &gt;
  &gt; For optimal performance, we recommend using OpenAI’s GPT-4o model. In this template, Google Gemini is used as a free alternative.

  💡 Who is this for?

  This workflow is designed for:

  AI tool creators and automation builders
  Entrepreneurs who want an intelligent Telegram assistant
  Support and scheduling teams who use Google tools
  Agencies that build & resell AI automations
  Users looking to automate everyday actions like emails, scheduling, blog writing, and contact lookups

  🧠 What this workflow does

  Listens to Telegram messages (text and voice)
  Transcribes audio using Whisper (optional)
  Uses Stacey, an AI agent powered by Gemini (or GPT-4o if you upgrade), to:

    Understand the user's intent
    Choose the correct tool using MCP logic
    Execute tasks using Gmail, Google Calendar, blog writer, and more
  Responds to the user naturally with confirmations and outputs

  ⚙️ Prerequisites

  Before using this workflow, make sure you have:

  A self-hosted or cloud-based n8n instance
  A Telegram Bot Token from @BotFather
  Google OAuth2 credentials** for:

    Gmail
    Google Calendar
  Optional: OpenAI or Whisper API key for voice transcription
  Optional: Tavily API key for live web search
  Gemini (Google AI) is preconfigured in the template but can be swapped

  🚀 Step-by-Step Setup

  ✅ Step 1: Add Required Credentials in n8n

  Go to Settings → Credentials and add:

  Telegram API**: Your bot token from BotFather
  Google OAuth2**:

    Gmail: Scope https://www.googleapis.com/auth/gmail.modify
    Calendar: Scope https://www.googleapis.com/auth/calendar
  Gemini / Palm API**: Used for the language model
  (Optional) OpenAI Whisper: For voice transcription
  (Optional) Tavily: For real-time internet searches

  ✅ Step 2: Import the Workflow

  Go to n8n
  Click Workflows → Import from File
  Upload ai_assistant.json
  Connect your saved credentials to the correct nodes:

     Telegram Trigger & Sender
     Gmail, Calendar, Tavily, Gemini, Whisper


  ✅ Step 2.5: Import the Content Creator Sub-Workflow

  The Content Creator is implemented as a modular sub-workflow and invoked through the Map Server as part of the MCP logic.

  To set it up:

  Go to Workflows → Import from File
  Upload content_creator_tool.json (provided in your files)
  Save it with a name like “Content Creator Tool”
  🔗 Integration with MCP:

  This tool is triggered via the MCP Map Server using an Execute Workflow node
  The AI agent chooses this tool when the user request involves writing blog posts, emails, product descriptions, etc.
  Make sure the tool ID or name in the Map Server matches what the AI agent uses in its logic
  You can customize this sub-workflow to:

  Adjust writing prompts (e.g., tone, format, target audience)
  Add branching for different content types (e.g., blog vs. email)
  Send outputs directly to Gmail, Google Docs, or Sheets
  ✅ Step 3: Set Up Your Telegram Bot

  Talk to @BotFather
  Use /newbot to create a bot and get your token
  Paste this token into:

     Telegram Trigger node (Telegram Trigger1)
     Telegram Send Message node (Response1)
  Make sure your bot’s privacy is set correctly (use /setprivacy)

  ✅ Step 4: Customize Your Assistant’s Personality

  Open the “AI Agent” node
  In the systemMessage field, you'll find a prompt that defines Stacey:

     Her role is to delegate user requests to the right MCP tool
     Includes examples, tone, rules, and logic
  You can customize Stacey’s:

     Name
     Behavior
     Supported tools

  ✅ Step 5: Define Your MCP Tools (if extending)

  This template includes:

  Send Email
  Reply to Email
  Get Emails
  Label Emails
  Create/Update/Delete Events
  Content Creator
  Search Web with Tavily
  Calculator

  To extend:

  Add a new tool node
  Link it to MCP Server Trigger
  Reference it in the prompt in AI Agent node

  ✅ Step 6: Test the Workflow

  Open Telegram and message your bot:

  “Send an email to John about the new budget”
  “Schedule a meeting Friday at 3 PM with Alex”
  “Write a blog post about solar energy”
  “What’s in my inbox?”
  “Translate this message” (if extended with translation tools)

  The bot will:

  Interpret the intent
  Ask for any missing data
  Trigger the right tool
  Send confirmation via Telegram

  ✨ Customization Ideas

  ✏️ Add Voice Transcription

  Enable the Download File and Transcribe nodes
  Requires OpenAI Whisper API key

  🧠 Upgrade to GPT-4o

  Replace the Gemini node with an OpenAI Chat node
  Connect GPT-4o for improved reasoning and language understanding

  🧩 Add More Tools

  Notion, Slack, Salesforce, Hubspot, WhatsApp, and more can be added
  Just route them via MCP and update the AI prompt

  🧪 Troubleshooting

  Telegram not responding?

  Ensure correct bot token and webhook connection
  Make sure the bot is not in privacy mode if needed

  Gmail actions not working?

  Double-check your OAuth scopes
  Ensure Gmail API is enabled in your Google Cloud project

  AI not responding or behaving poorly?

  Consider upgrading to OpenAI GPT-4o for better reasoning
  Revisit and refine your system prompt

  🧾 Summary

  Name: Stacey – AI Telegram Assistant
  Built with: n8n + Gemini + Google + MCP Logic
  Telegram acts as the front-end
  Gemini or GPT-4o powers intelligence
  MCP routes user intent to the right tool
  Fully extensible and no-code friendly

  🌟 Credits & License

  Created by David Olusola
  Free to use, modify, and resell with attribution.
  If this helped you, please rate the template or follow me on the n8n Creator Page.

nodes_used:
  ["@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.toolHttpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.telegramTrigger","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.mcpClientTool","@n8n/n8n-nodes-langchain.mcpTrigger","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.googleSheetsTool","n8n-nodes-base.googleSheetsTool","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.code","n8n-nodes-base.switch","@n8n/n8n-nodes-langchain.toolCalculator"]

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


name: Generate and Publish Carousels for TikTok and Instagram with GPT-Image-1
author_name: Juan Carlos Cavero Gracia
author_username: carlosgracia
categories: []
created_at: 2025-05-13T23:37:52.592Z
updated_at: 2025-05-13T23:37:52.592Z
url: https://n8n.io/workflows/4028
scraped_at: 2025-12-24 13:02:41
description:
  Description

  This n8n automation template provides an end-to-end solution for generating a series of themed images for Instagram and TikTok carousels using OpenAI's GPT Image (via the image generation API) and automatically publishing them to both platforms. It uses a sequence of prompts to create a narrative or themed carousel, generating each image based on the previous one, and then posts them with an AI-generated caption.

  Who Is This For?

  Social Media Managers:** Quickly create and schedule engaging image carousels for Instagram and TikTok.
  Content Creators:** Automate the visual content creation process for thematic posts or storytelling carousels.
  Digital Marketers:** Efficiently produce visual assets for campaigns that require sequential imagery.
  Small Businesses:** Generate unique promotional content for social media without needing advanced design skills.

  What Problem Does This Workflow Solve?

  Manually creating a series of related images for a carousel and then publishing them across multiple platforms can be repetitive and time-consuming. This workflow addresses these issues by:

  Automating Image Generation:** Uses OpenAI to generate a sequence of 5 images, where each new image is an evolution based on the previous one and a new prompt.
  Automating Caption Generation:** Leverages OpenAI (GPT) to create a suitable description/caption for the carousel based on the image prompts.
  Streamlining Multi-Platform Publishing:** Automatically uploads the generated image carousel and caption to both Instagram and TikTok.
  Reducing Manual Effort:** Significantly cuts down the time spent on designing individual images and manually uploading them.
  Ensuring Visual Cohesion:** The sequential image generation method (editing the previous image) helps maintain a consistent style or narrative across the carousel.

  How It Works

  Trigger: The workflow is initiated manually (can be adapted to a schedule or webhook).
  Define Prompts: Five distinct prompts are pre-set within the workflow to guide the generation of each image in the carousel.
  AI Caption Generation: OpenAI (GPT-4.1) generates a concise (≤ 90 characters for TikTok) description for the social media posts based on all five image prompts.
  Sequential AI Image Generation:
      Image 1: OpenAI's image generation API (specified as gpt-image-1) creates the first image based on prompt1.
      Image 2-5: For each subsequent image, the workflow uses the OpenAI image edits API. It takes the previously generated image and a new prompt (prompt2 for image 2, prompt3 for image 3, and so on) to create the next image in the sequence.
      Images are converted from base64 JSON to binary format.
  Content Aggregation: The five generated binary image files (named photo1 through photo5) are merged.
  Multi-Platform Distribution:
      The merged images and the AI-generated description are sent to api.upload-post.com for publishing as a carousel to Instagram.
      The same content is sent to api.upload-post.com for publishing as a carousel to TikTok, with an option to automatically add music.
      The TikTok description is truncated if it exceeds 90 characters.

  Setup

  Accounts & API Keys: You will need:
      An n8n instance.
      An OpenAI API key.
      An API key for upload-post.com.
  Configure Credentials:
      Add your OpenAI API key to the "OpenAI" credentials in n8n. This will be used by the "Generate Description for Tiktok and Instagram" node and the HTTP Request nodes calling the OpenAI image generation/edit APIs.
      In the "POST TO INSTAGRAM" and "POST TO TIKTOK" nodes, replace "Apikey add_api_key_here" with your actual upload-post.com API key.
      Update the user field in the "POST TO INSTAGRAM" and "POST TO TIKTOK" nodes if "upload_post" is not your user identifier for that service.
  Customize Prompts: Modify the five prompts (prompt1 to prompt5) in the "Set All Prompts" node to define the story or theme of your image carousel.
  Review Image Generation Parameters: In the "Set API Variables" node, you can adjust:
      size_of_image (e.g., "1024x1536" for vertical carousels).
      openai_image_model (ensure this matches a valid OpenAI model identifier for image generation/edits, like dall-e-2 or dall-e-3 if gpt-image-1 is a placeholder).
      response_format_image (should generally remain b64_json for this workflow).
  (Optional) TikTok Auto Music: The "POST TO TIKTOK" node has an auto_add_music parameter set to true. Change this to false if you prefer to add music manually or not at all.

  Requirements

  Accounts:** n8n, OpenAI, upload-post.com.
  API Keys & Credentials:** API Keys for OpenAI and https://upload-post.com.
  (Potentially) Paid Plans:** OpenAI and upload-post.com usage may incur costs depending on your volume and their respective pricing models.

  This template empowers you to automate the creation and distribution of visually consistent image carousels, saving time and enhancing your social media presence.

nodes_used:
  ["n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.merge","n8n-nodes-base.manualTrigger","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.convertToFile","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.convertToFile","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.convertToFile","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.convertToFile","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.convertToFile","n8n-nodes-base.code","n8n-nodes-base.httpRequest"]

workflow_json_compressed:
  [encoded data, 6800 characters]


name: Create & Approve POV Videos with AI, ElevenLabs & Multi-Posting (TikTok/IG/YT)
author_name: Immanuel
author_username: spectrabit
categories: []
created_at: 2025-05-14T00:06:42.535Z
updated_at: 2025-05-14T00:06:42.535Z
url: https://n8n.io/workflows/4029
scraped_at: 2025-12-24 13:02:43
description:
  POV Video Creator: Automating TikTok-Style Instagram Video Automation, Approval, and Multi-Platform Posting Using AI, ElevenLabs, Google Sheets, and Social Media APIs

  Description

  What Problem Does This Solve? 🎥
  This workflow automates the creation, rendering, approval, and posting of TikTok-style POV (Point of View) videos to Instagram, with cross-posting to Facebook and YouTube. It eliminates manual video production, approval delays, and inconsistent posting schedules. It ensures high-quality content creation and distribution for social media managers and content creators

  Target audience: Social media managers, content creators, small to medium-sized businesses, and n8n users familiar with AI tools, Google Sheets, and social media APIs

  What Does It Do? 🌟
  Generates daily POV video ideas using OpenAI
  Creates images, videos, and audio with PIAPI.ai and ElevenLabs
  Renders final videos with Creatomate
  Manages approvals via email and Google Sheets
  Posts approved videos to Instagram, Facebook, and YouTube
  Tracks progress in a Google Sheet for transparency

  Key Features 
  AI-driven idea generation and script creation
  Automated media production with image, video, and audio synthesis
  Email-based approval system for quality control
  Cross-platform posting to Instagram, Facebook, and YouTube
  Real-time tracking in Google Sheets and Google Drive
  Error handling for rendering and posting failures

  Setup Instructions

  Prerequisites 
  n8n Instance**: Self-hosted or cloud n8n instance
  API Credentials**:
    OpenAI API: API key for idea generation, stored in n8n credentials
    PIAPI.ai API: API key for image and video generation, stored in n8n credentials
    ElevenLabs API: API key for audio generation, stored in n8n credentials
    Creatomate API: API key for video rendering, stored in n8n credentials
    Google Sheets/Drive API: OAuth2 credentials from Google Cloud Console with Sheets and Drive scopes
    Gmail API: OAuth2 credentials from Google Cloud Console with Gmail scope
    Instagram Graph API: User Access Token with instagram_content_publish permission from a Facebook App
    Facebook Graph API: Access Token from the same Facebook App
    YouTube API: OAuth2 credentials for YouTube uploads
  Google Sheet**: A sheet named "POV Videos" with a tab "Instagram" and columns: Timestamp, ID, Subject, Topic, Caption, POV_Status, Prompt, Publish_Status, Link, Final Video, Approval, row_number
  Creatomate Template**: A pre-configured template with video, audio, and text elements

  Installation Steps 
  Import the Workflow:
     Copy the workflow JSON from the “Template Code” section (to be provided)
     Import it into n8n via “Import from File” or “Import from URL”
  Configure Credentials:
     Add API credentials in n8n’s Credentials section for OpenAI, PIAPI.ai, ElevenLabs, Creatomate, Google Sheets/Drive, Gmail, Instagram Graph, Facebook Graph, and YouTube
     Assign credentials to respective nodes. For example:
       In "Text-to-Image", use PIAPI.ai credentials: {{ $credentials.PIAPI }}
       In "Render with Creatomate", use Creatomate credentials: {{ $credentials.Creatomate }}
       In "Send Approval Request", use Gmail credentials
  Set Up Nodes:
     Schedule Trigger: Configure to run daily
     Approval Email (Send Approval Request): Customize the HTML email template with approval/rejection links
     Post to Social Media Nodes (Instagram Container, Facebook Posts, Post YouTube): Configure with your Instagram Business Account ID, Facebook Page ID, and YouTube channel details
  Configure Google Sheet and Drive:
     Create "POV Videos" Google Sheet with "Instagram" tab and specified columns
     Share the sheet with your Google Sheets credential email
     Create "Audio" and "Video" folders in Google Drive, noting their IDs
  Test the Workflow:
     Run manually to verify idea generation, media creation, and posting
     Check email notifications, Google Sheet updates, and social media posts
  Schedule the Workflow:
     Enable "Schedule Trigger" and "Schedule Trigger1" for daily runs
     Enable "Get Latest Approved Video" to poll at 7 PM daily

  How It Works

  High-Level Steps 
  Generate Video Ideas: Creates daily POV video concepts with OpenAI
  Create Media: Produces images, videos, and audio using AI tools
  Render Video: Combines media into a final video with Creatomate
  Manage Approvals: Sends approval emails and processes decisions
  Post to Platforms: Publishes approved videos to Instagram, Facebook, and YouTube

  Detailed Descriptions
  Detailed node descriptions are available in the sticky notes within the workflow (to be provided). Below is a summary of key actions

  Node Names and Actions

  Video Idea Generation and Script Creation
  Schedule Trigger**: Initiates daily workflow
  Get Title**: Fetches pending video ideas from Google Sheet
  Generate Topics**: Uses OpenAI to create a new video idea
  Format Row**: Structures the idea into a Google Sheet row
  Insert new Prompt, Caption and Title/Topic**: Adds the idea to Google Sheet
  Generate Ideas**: Produces 3 POV sequences
  Generate Script**: Expands a sequence into a detailed script
  Set Topics**: Stores the script for media creation

  Media Creation
  Text-to-Image**: Generates an image with PIAPI.ai
  Get Image**: Retrieves the generated image
  Generate Video Prompt**: Creates a video prompt from the image
  Generate Video**: Produces a 5-second video with PIAPI.ai
  Access Videos**: Retrieves the video URL
  Store Video**: Updates Google Sheet with video URL
  Generate Sound Prompt**: Creates an audio prompt
  Text-to-Sound**: Generates a 20-second audio clip with ElevenLabs
  Store Sound**: Uploads audio to Google Drive
  Allow Access**: Sets audio file permissions

  Video Rendering
  Merge**: Combines script, video, and audio data
  List Elements**: Formats data for Creatomate
  Render with Creatomate**: Renders the final video
  Check Video Status**: Routes based on render success/failure

  Storage and Notification
  Google Drive**: Uploads the rendered video
  New Render Video Alert**: Sends success email
  Failed Render**: Sends failure email
  Render Video Link**: Updates Google Sheet with final video URL

  Approval Process
  Approval Email**: Sends approval request email
  Handle Approval/Rejection1**: Processes approval/rejection via webhook
  Video Update1**: Updates Google Sheet with approval status

  Social Media Posting
  Get Latest Approved Video**: Polls for approved videos
  Check Approval**: Routes based on approval status
  Instagram Container**: Creates Instagram media container
  Post to Instagram**: Publishes to Instagram
  Facebook Posts**: Posts to Facebook
  Download Video**: Downloads video for YouTube
  Post YouTube**: Uploads to YouTube
  Mark Rejected**: Updates status for rejected videos
  Update Google Sheet**: Updates publish status

  Customization Tips
  Expand Platforms**: Add nodes to post to other platforms 
  Modify Approval Email**: Update the Send Approval Request node to customize the HTML template
  Alternative Notifications**: Add nodes for Slack or Telegram alerts
  Adjust Video Duration**: Modify Generate Video node to change duration (default: 5 seconds)

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserItemList","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.merge","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.gmail","n8n-nodes-base.googleDrive","@n8n/n8n-nodes-langchain.lmChatOpenRouter","n8n-nodes-base.wait","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.limit","n8n-nodes-base.wait","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.googleDrive","n8n-nodes-base.httpRequest","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.webhook","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleSheetsTrigger","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.httpRequest","n8n-nodes-base.youTube","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.wait","n8n-nodes-base.googleDrive","n8n-nodes-base.switch","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest"]

workflow_json_compressed:
  [encoded data, 4888 characters]


name: AI Newsletter Builder: Crawl Sites with Dumpling AI, Summarize with GPT-4o
author_name: Yang
author_username: yang
categories: []
created_at: 2025-05-14T01:17:44.194Z
updated_at: 2025-05-14T01:17:44.194Z
url: https://n8n.io/workflows/4030
scraped_at: 2025-12-24 13:02:43
description:
  Who is this for?

  This workflow is built for newsletter writers, marketers, content creators, or anyone who curates and summarizes web articles. It’s especially helpful for virtual assistants and founders who need to quickly turn web content into digestible, branded newsletters using AI.

  What problem is this workflow solving?

  Manually reading, summarizing, and formatting multiple articles into a newsletter takes time and focus. This workflow automates the process using Dumpling AI for crawling, GPT-4o for summarization, and Gmail for delivery—so you can go from raw URLs to a polished email in minutes.

  What this workflow does

  Starts manually (can also be scheduled)
  Reads a list of article URLs from Google Sheets
  Sends URLs to Dumpling AI to crawl and extract content
  Splits each article into a single item for processing
  Uses a Code node to clean and structure article data
  Uses an Edit Fields node to merge articles into one JSON block
  GPT-4o summarizes and generates HTML content for the newsletter
  Sends the formatted newsletter via Gmail

  Setup

  Google Sheets
     Create a sheet with a column (A) for article URLs
     Update the Read URLs from Google Sheet node to use your Sheet ID and tab name
     Connect your Google account in the credentials

  Dumpling AI
     Sign up at https://app.dumplingai.com
     Create an agent for web crawling under /crawl
     Add your Dumpling API key in the HTTP headers of the Crawl Content with Dumpling AI node

  Split Node
     Breaks apart the array of articles from Dumpling AI so each article is processed individually

  Code Node
     Structures each article as JSON with title, url, and cleaned text content

  Edit Fields Node
     Gathers all structured articles back into a single JSON array to prepare for AI summarization

  OpenAI (GPT-4o)
     Processes the article list and returns a formatted subject line and HTML newsletter content

  Gmail
     Connect your Gmail account to send the AI-generated newsletter to your inbox or team
     Update the recipient field in the Send HTML Email via Gmail node

  How to customize this workflow to your needs

  Replace the manual trigger with a Schedule node to send newsletters weekly
  Modify the GPT-4o prompt to change tone (e.g., more professional, funny, casual)
  Add filtering logic to skip low-value articles
  Connect Slack, Airtable, or Notion for internal team usage
  Change Gmail to SendGrid or Outlook if preferred

  Final Notes

  This workflow uses:
  Dumpling AI** /crawl endpoint to extract article content
  Split, **Code, and Edit Fields nodes to format multi-article input
  GPT-4o** for summarization and HTML formatting
  Gmail** for delivery

  This setup eliminates manual steps and delivers fast, consistent newsletters powered by AI.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.set","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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


name: Cold Outreach Automation: Scrape Local Leads with Dumpling AI & Call via Vapi
author_name: Yang
author_username: yang
categories: []
created_at: 2025-05-14T01:34:16.860Z
updated_at: 2025-05-14T01:34:16.860Z
url: https://n8n.io/workflows/4031
scraped_at: 2025-12-24 13:02:42
description:
  Who is this for?

  This template is for sales teams, agencies, or local service providers who want to quickly generate cold outreach lists and automatically call local businesses with a Vapi AI assistant. It’s perfect for automating cold calls from scraped local listings with no manual dialing or research.

  What problem is this workflow solving?

  Finding leads and initiating outreach calls can be time-consuming. This workflow automates the process: it scrapes business listings from Google Maps using Dumpling AI, extracts phone numbers, filters out incomplete data, formats the numbers, and uses Vapi to make outbound AI-powered calls. Every call is logged in Google Sheets for follow-up and tracking.

  What this workflow does

  Starts manually and pulls search queries (e.g., "plumbers in Austin") from Google Sheets.
  Sends each query to Dumpling AI’s Google Maps scraping endpoint.
  Splits the returned business data into individual leads.
  Extracts key info like business name, website, and phone number.
  Filters to only keep leads with valid phone numbers.
  Formats phone numbers for Vapi dialing (adds +1).
  Calls each business using Vapi AI.
  Logs each successful call in a Google Sheet.

  Setup

  Google Sheets Setup
     Create a sheet with business search queries in the first column (e.g., best+restaurants+in+Chicago)
     Make sure the tab name is set and authorized in your credentials.
     Connect your Google Sheets account in the Get Search Keywords from Google Sheets node.

  Dumpling AI Setup
     Go to dumplingai.com   
     Generate an API Key and connect it as a header token in the Scrape Google Map Businesses using Dumpling AI node

  Vapi Setup
     Sign into Vapi and create an assistant
     Get your assistantId and phoneNumberId
     Insert these into the JSON payload of the Initiate Vapi AI Call to Business node
     Add your Vapi API key to the credentials section

  Call Logging
     Create another tab in your sheet (e.g., “leads”) with these headers:
       company name
       phone number
       website
     This will be used in the Log Called Business Info to Sheet node

  How to customize this workflow to your needs

  Modify the business search terms in your Google Sheet to target specific industries or locations.
  Add filters to exclude certain businesses based on ratings, keywords, or location.
  Update your Vapi assistant script to match the type of outreach or pitch you’re using.
  Add additional integrations (e.g., CRM logging, Slack notifications, follow-up emails).
  Change the trigger to run on a schedule or webhook instead of manually.

  Nodes and Functions Breakdown

  Start Workflow Manually: Initiates the automation manually for testing or controlled runs.
  Get Search Keywords from Google Sheets: Reads search phrases from the spreadsheet.
  Scrape Google Map Businesses using Dumpling AI: Sends each search query to Dumpling AI and receives matching local business data.
  Split Each Business Result: Breaks the returned array of businesses into individual records for processing.
  Extract Business Name, Phone and website: Extracts title, phone, and website from each business record.
  Filter Valid Phone Numbers Only: Ensures only entries with a phone number move forward.
  Format Phone Number for Calling: Adds a +1 country code and strips non-numeric characters.
  Initiate Vapi AI Call to Business: Uses the business name and number to initiate a Vapi AI outbound call.
  Log Called Business Info to Sheet: Appends business details into a Google Sheet for tracking.

  Notes

  You must have valid API keys and authorized connections for Dumpling AI, Google Sheets, and Vapi.
  Make sure to handle API rate limits if you're running the workflow on large datasets.
  This workflow is optimized for US-based leads (+1 country code); adjust the formatting node if calling internationally.

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

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


name: AI Competitor Review Analyzer with Dumpling AI + GPT-4o + Google Sheets
author_name: Yang
author_username: yang
categories: []
created_at: 2025-05-14T01:55:29.897Z
updated_at: 2025-05-14T01:55:29.897Z
url: https://n8n.io/workflows/4032
scraped_at: 2025-12-24 13:02:45
description:
  Who is this for?

  This workflow is perfect for marketers, SEO specialists, product teams, and competitive analysts who want to monitor and summarize public reviews of their competitors. It’s especially helpful for small teams who want fast insights from Google reviews without spending hours manually reading and sorting them.

  What problem is this workflow solving?

  Manually going through competitor reviews is time-consuming and repetitive. You risk missing patterns or insights, and it’s hard to share summaries with your team quickly. This workflow automatically scrapes reviews from Google and generates a structured summary of pain points and positive feedback. That way, you can focus on strategy instead of sorting through dozens of reviews.

  What this workflow does

  This automation watches for new competitor entries in a Google Sheet, then:

  Uses Dumpling AI to scrape the latest Google reviews (up to 20) for each business.
  Splits and cleans the reviews for analysis.
  Sends them to GPT-4o, which summarizes the most common complaints and praises.
  Saves the structured result back to the same Google Sheet.

  You’ll instantly get an overview of what people are saying about any competitor.

  Setup

  Google Sheet Setup
     Create a Google Sheet with at least one column: Business
     Add names or search queries for the competitors you want to analyze
     Optional: Add columns for Summary of Reviews and Pain Points

  Connect Dumpling AI
     Sign up at Dumpling AI
     Create an agent using the get-google-reviews endpoint
     Copy your agent key
     Use it in the HTTP Request node in this workflow

  OpenAI Setup
     Use your API key with GPT-4o access
     The prompt is already structured to generate grouped summaries from reviews

  Run the Workflow
     Trigger it manually or schedule it
     Make sure your Google Sheets, OpenAI, and Dumpling AI connections are active

  How to customize this workflow to your needs

  You can expand the number of reviews retrieved by changing the Dumpling AI agent config
  Replace Google Sheets with Airtable if you want more robust data views
  Add more fields like star ratings or review dates in your agent for richer analysis
  Change the GPT prompt to highlight emotional tone, urgency, or feature mentions

  🧠 Node Details

  Google Sheets Trigger**: Watches for new competitor names
  HTTP Request (Dumpling AI)**: Scrapes 20 recent reviews from Google
  SplitOut Node**: Breaks review array into individual items
  Code Node**: Extracts and combines review text
  Edit Fields Node**: Structures the review content before GPT
  GPT-4o Node**: Analyzes and summarizes top pain points and praise
  Google Sheets Output**: Saves the summary back to the same sheet

  Dependencies

  Dumpling AI account and review scraping agent setup
  OpenAI API key with GPT-4o access
  Google Sheets OAuth2 credentials

nodes_used:
  ["n8n-nodes-base.googleSheetsTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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


name: AI-Powered Blog Post Promoter for Instagram, Facebook & X with GPT
author_name: LukaszB
author_username: lukaszb
categories: []
created_at: 2025-05-14T03:30:08.605Z
updated_at: 2025-05-14T03:30:08.605Z
url: https://n8n.io/workflows/4033
scraped_at: 2025-12-24 13:02:44
description:
  AI Social Media Promoter – Automated Blog Sharing Workflow
  This workflow is built for bloggers, creators, and marketing teams who want to automatically promote new blog content across Instagram, Facebook, and X (Twitter). Its core purpose is to detect new blog posts from your RSS feed and instantly create platform-specific social media posts — complete with AI-generated captions and visuals — to drive traffic from social media back to your blog. Everything runs on autopilot: from detecting a new article to posting eye-catching content on each platform, while logging actions to Google Sheets and sending post previews by email. The result is a consistent and professional online presence with zero manual effort.

  How it works
  Once a new blog post appears in your RSS feed, the workflow kicks in. It checks Google Sheets to ensure the post hasn’t already been published. Then it calls GPT-4 to generate unique captions for Instagram, Facebook, and X, based on the post content and your brand’s tone. Simultaneously, OpenAI's GPT-Image generates a custom visual in the right format (square, portrait, or landscape). The workflow then publishes the complete posts using the Meta Graph API (for IG/FB) and X API (Twitter). All actions are logged in a Google Sheet, and a formatted email summary with images is sent to your inbox for review.

  How to set up
  To get started, connect the required APIs: OpenAI (for text and images), ImgBB or Cloudinary (for image hosting), Meta (Instagram/Facebook), X (Twitter), Google Sheets, and Gmail. Replace placeholder values in HTTP request nodes — such as your RSS URL, API keys, or spreadsheet ID. You can personalize the prompt content with your blog name, tone of voice, and call-to-action. Once connected, the system is fully automated. You can run it manually, or schedule it to check your blog daily with a Schedule Trigger node.

nodes_used:
  ["@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.rssFeedReadTrigger","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.merge","n8n-nodes-base.merge","n8n-nodes-base.set","n8n-nodes-base.twitter","n8n-nodes-base.stickyNote","n8n-nodes-base.merge","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote"]

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


name: Automated Daily Backup of n8n Workflows to GitLab Repositories
author_name: Akhil Varma Gadiraju
author_username: akhilv7
categories: []
created_at: 2025-05-14T06:06:07.562Z
updated_at: 2025-05-14T06:06:07.562Z
url: https://n8n.io/workflows/4035
scraped_at: 2025-12-24 13:02:44
description:
  n8n Workflow: Sync Workflows with GitLab

  How It Works

  This workflow ensures that your self-hosted n8n workflows are version-controlled in a GitLab repository. It compares each current workflow from n8n with its stored counterpart in GitLab. If any differences are detected, the GitLab file is updated with the latest version.

  Core Logic:
  Retrieve Workflows – Fetch all workflows from the n8n REST API.

  Compare with GitLab – For each workflow, fetch the corresponding file from GitLab and compare the JSON.

  Update if Changed – If differences exist, commit the updated workflow to GitLab using its API.

  Setup

  Before using the workflow, ensure the following:

  Prerequisites:
  n8n**: Self-hosted instance with access to the /rest/workflows API.

  GitLab**: A repository where workflows will be stored, and a Personal Access Token (PAT) with api and write_repository permissions.

  n8n Nodes Required**:
    HTTP Request (to call n8n and GitLab APIs)
    Code or Function nodes (for diffing and formatting)
    Looping (SplitInBatches or similar)

  Configuration:
  Set environment variables or workflow credentials for:
    GITLAB_TOKEN
    GITLAB_REPO
    GITLAB_BRANCH (e.g., main)
    GITLAB_FILE_PATH_PREFIX (e.g., n8n-workflows/)

  How to Use

  Import the Workflow into your n8n instance.

  Configure GitLab API Credentials:
     Set the GitLab PAT as a header in the HTTP

  Request node:  
       Private-Token: {{ $env.GITLAB_TOKEN }}

  Map Workflows to GitLab Paths:
     Use the workflow name or ID to create the file path. Example:  
       n8n-workflows/workflow-name.json

  Trigger the Workflow:
     Can be manually triggered, or scheduled to run at intervals (e.g., daily).
     
  Review Commits in GitLab:
     Each updated workflow will be committed with a message like:  
       "Update workflow: Sample Workflow"

  Disclaimer

  This workflow does not handle merge conflicts or manual edits made directly in GitLab. Always ensure proper coordination if multiple sources are modifying workflows.
  Only structural changes are tracked. Non-functional metadata (like timestamps or IDs) may trigger false positives unless filtered.
  Use at your own risk. Test in a safe environment before applying to production workflows.

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.splitInBatches","n8n-nodes-base.gitlab","n8n-nodes-base.code","n8n-nodes-base.set","n8n-nodes-base.noOp","n8n-nodes-base.gitlab","n8n-nodes-base.extractFromFile","n8n-nodes-base.switch","n8n-nodes-base.gitlab","n8n-nodes-base.noOp","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.n8n","n8n-nodes-base.set","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.gitlab"]

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


name: Claude 3.7 Sonnet AI Chatbot Agent with Anthropic Web Search and Think Functions
author_name: Davide
author_username: n3witalia
categories: []
created_at: 2025-05-14T09:17:36.639Z
updated_at: 2025-05-14T09:17:36.639Z
url: https://n8n.io/workflows/4036
scraped_at: 2025-12-24 13:02:43
description:
  This workflow builds a conversational AI chatbot agent using Claude 3.7 Sonnet model with the new . It enhances standard LLM capabilities with Anthropic’s features: Web Search and Think:

  Real-time web search**, to answer up-to-date factual queries.
  A “Think” function, to support internal reasoning and memory-like behavior by Anthropic.
  A memory buffer, allowing the agent to maintain conversation history.
  A system prompt defining clear ethical, functional, and formatting rules for interaction.

  When a user sends a message (trigger), the chatbot evaluates the query, optionally performs a web search if needed, processes the result using Claude, and responds accordingly.

  ✅ Advantages

  🧠 Enhanced Reasoning Abilities**
    The Think tool allows the agent to simulate deep thought processes or contextual memory storage, improving conversational intelligence.

  🌐 Real-Time Knowledge via Web Search**
    The integrated web_search tool enables the agent to fetch the latest information from the internet, making it ideal for dynamic or news-driven use cases.

  🧾 Contextual Responses with Memory Buffer**
    The inclusion of a memory buffer allows the agent to maintain state across messages, improving dialogue flow and continuity.

  🛡️ Built-in Ethical Guidelines**
    The system prompt enforces privacy, factual integrity, neutrality, and ethical response generation, making the agent safe for public or enterprise use.

  How It Works

  Chat Trigger: The workflow begins when a chat message is received via a webhook. This triggers the AI Agent to process the user's query.  
  AI Agent Processing: The AI Agent analyzes the query to determine if it requires information from the website or external sources. It follows a structured approach:  
     For website-related queries, it uses the provided context.  
     For external information, it employs the web_search tool to fetch up-to-date data from the internet.  
     The Think tool is used for internal reasoning or caching thoughts without altering data.  
  Language Model: The Anthropic Chat Model (Claude 3.7 Sonnet) generates responses based on the analyzed query, incorporating website context or web search results.  
  Memory: A simple memory buffer retains context from previous interactions to maintain continuity in conversations.  
  Output: The final response is delivered to the user, excluding internal processes like web searches or reasoning steps.  

  Set Up Steps

  Configure Nodes:  
     Chat Trigger: Set up the webhook to receive user messages.  
     AI Agent: Define the system message and rules for handling queries.  
     Anthropic Chat Model: Select the Claude 3.7 Sonnet model and configure parameters like maxTokensToSample.  
     Memory: Initialize the memory buffer to store conversation context.  
     Tools:  
       web_search: Configure the HTTP request to the Anthropic API for web searches, including headers and authentication.  
       Think: Set up the tool for internal reasoning.  

  Connect Nodes:  
     Link the Chat Trigger to the AI Agent.  
     Connect the Anthropic Chat Model, Memory, and Tools (web_search and Think) to the AI Agent.  

  Credentials:  
     Ensure the Anthropic API credentials are correctly configured for both the chat model and the web_search tool.  

  Need help customizing?  
  Contact me for consulting and support or add me on Linkedin. 

nodes_used:
  ["@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.httpRequestTool","@n8n/n8n-nodes-langchain.toolThink","n8n-nodes-base.stickyNote"]

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


name: Manage WhatsApp Chats Centrally on Slack
author_name: Usman Liaqat
author_username: usmanliaqat
categories: []
created_at: 2025-05-14T10:27:11.807Z
updated_at: 2025-05-14T10:27:11.807Z
url: https://n8n.io/workflows/4037
scraped_at: 2025-12-24 13:02:44
description:
  This workflow enables seamless, bidirectional communication between WhatsApp and Slack using n8n. It automates the reception, processing, and forwarding of messages (text, media, and documents) between users on WhatsApp and private Slack channels.

  Key Features & Flow:

  1. WhatsApp to Slack Flow
  Trigger: The workflow starts with a WhatsApp Trigger node that listens for new incoming messages via a webhook.
  Channel Handling: It checks if a Slack channel with the WhatsApp sender’s number exists
  If not, it creates a private Slack channel with the sender's number as the name.
  Message Type Routing: A Switch Node (Message Type) inspects the message type (text, image, audio, document).
  Based on type: Text: Sends the message directly to Slack.
  Image/Audio/Document: Retrieves media URL via WhatsApp API → downloads the media → uploads it to the appropriate Slack channel.

  2. Slack to WhatsApp Flow
  Trigger: A Slack Trigger listens for new messages or file uploads in Slack.
  Message Type Routing: A second Switch Node (Checking Message Type) checks if the message is text or media.
  Routing Logic: Text Message: Extracts and forwards it to the WhatsApp contact (identified by the Slack channel name).
  Media/File Message: Retrieves media file URL from Slack → downloads it → sends it as a document via WhatsApp API.

  Key Integrations: 
  WhatsApp Cloud API: For receiving messages, downloading media, and sending messages.
  Slack API: For creating/getting channels, posting messages, and uploading files.
  HTTP Request Node: Used to securely download media from Slack and WhatsApp servers with proper authentication.

  Automation Use Case:
  This workflow is ideal for businesses that handle customer support or conversations over WhatsApp and wish to log, respond, and collaborate using Slack as their internal communication tool.

nodes_used:
  ["n8n-nodes-base.whatsAppTrigger","n8n-nodes-base.slack","n8n-nodes-base.slackTrigger","n8n-nodes-base.switch","n8n-nodes-base.whatsApp","n8n-nodes-base.whatsApp","n8n-nodes-base.whatsApp","n8n-nodes-base.slack","n8n-nodes-base.slack","n8n-nodes-base.filter","n8n-nodes-base.slack","n8n-nodes-base.httpRequest","n8n-nodes-base.slack","n8n-nodes-base.switch","n8n-nodes-base.whatsApp","n8n-nodes-base.slack","n8n-nodes-base.httpRequest","n8n-nodes-base.whatsApp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4340 characters]


name: Automate Sprint Planning with OpenAI, Google Calendar, and Gmail for Agile Teams
author_name: Willemijn
author_username: willemijn
categories: []
created_at: 2025-05-14T10:36:56.830Z
updated_at: 2025-05-14T10:36:56.830Z
url: https://n8n.io/workflows/4038
scraped_at: 2025-12-24 13:02:44
description:
  👤 Who is this for?
  This workflow is designed for Scrum Masters and Agile Coaches who prepare and coordinate Sprint Planning sessions, using Google Calendar, Google Sheets, and OpenAI.

  🧩 What problem is this workflow solving?
  It solves the manual and time-consuming task of collecting, validating, and preparing backlog items for sprint planning—especially when coordinating with distributed teams or large product backlogs.

  ⚙️ What this workflow does
  Every week, the workflow:

  Detects if a Sprint Planning event is coming up.  
  Retrieves relevant backlog items marked as “Ready for Sprint Planning” or “Active in Sprint.”  
  Checks each user story against the Definition of Ready (DoR) using AI.  
  Adds AI-generated feedback per story in the backlog.  
  Drafts a personalized preparation email for the team and sends it after Scrum Master approval.  
  Optionally, generates Sprint Goal suggestions for the Product Owner.

  🚀 Setup
  Connect your Google Calendar, Sheets, and Gmail accounts.  
  Then configure variables like event names, sheet names, and email addresses in the “Start Here” node.

  🛠️ How to customize this workflow to your needs
  Swap Google Sheets with Jira or another tool.  
  Adjust status filters and column mappings.  
  Tweak AI prompts for tone, language, or preferred practices.  
  Change email logic for different approval flows.

  🔥 Unique Selling Points (USPs)
  Validated** by a Scrum Master with 10+ years of experience
  AI-driven** backlog validation and email drafting.  
  Weekly automation** with human approval loops.  
  Clear, structured output** aligned with agile best practices.  
  Fully customizable** for any Scrum environment.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.noOp","n8n-nodes-base.googleCalendar","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.noOp","n8n-nodes-base.googleDrive","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.stickyNote","n8n-nodes-base.aggregate","n8n-nodes-base.merge","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","n8n-nodes-base.errorTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.googleDrive","n8n-nodes-base.gmail","n8n-nodes-base.filter","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.aggregate","n8n-nodes-base.code","n8n-nodes-base.gmail","n8n-nodes-base.splitOut","n8n-nodes-base.merge","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.filter","n8n-nodes-base.merge","n8n-nodes-base.merge","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.wait"]

workflow_json_compressed:
  [encoded data, 4748 characters]


name: Download Media Files from Slack Messages
author_name: Usman Liaqat
author_username: usmanliaqat
categories: []
created_at: 2025-05-14T10:37:51.142Z
updated_at: 2025-05-14T10:37:51.142Z
url: https://n8n.io/workflows/4039
scraped_at: 2025-12-24 13:02:44
description:
  Description:
  This n8n workflow helps you capture Slack messages via a webhook and download attached media files (like images, documents, or videos) directly from those messages.

  How it works:
  Slack Trigger (Webhook) – Listens for new messages in a Slack channel where the app is added.
  HTTP Request – Uses the file's private download URL to retrieve the media securely.

  Use cases:
  Download files shared by team members in a Slack channel.
  Capture and process media from specific project or support channels.
  Prepare media for later processing, archiving, or review.

  Requirements:
  Slack app with appropriate permissions (files:read, channels:history, etc.).
  Slack webhook set up to listen to channel messages.
  - Authenticated HTTP request to handle private Slack file URLs.

  This template is ideal for users who want full control over file handling triggered by real-time Slack messages.

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

workflow_json_compressed:
  H4sIAAAAAAAAE61VYYvcNhD9K8YU0sJqkWXZlhb6IVwpKbShJJuGcixhLI3X6u7arqXNJT32v3fk9e0ld8kRSr8skjyaN++9Ge1tesAA6eo2dZ0P0Bn8xaarVKIQuhICSyNzkDqTVtiyzCpVS5XnBdim0oWtcmhqxKLmCNwUQucKG2kVpos04GHYQ8CrEa1/jeE4XPV0ggEJIIxHPC3Srrfo09U1oUdUDlqVYBXLKwNMqlIzzauMCZGXBhtrrdSUuYMDUvR6dNstjsnrPZhd8rPbY/Ibeg/bCf3jEGM61bEJhNXgcelj6HyPgobeu+D6jipgQpZ8wQTnm0V6g3Xb97tJCaV4noOyzBQgmRSiZFBJQYVp5Lyo66LOYyoYqaqAo49a9kNMG5dEMsx4q2vS+lxfxIBg2rf9uPMDGLwoYkgt7IKD/ZRoKvj54CaDYjnF7/D+jRqD3r14qYe38l4OopocPeGcTmf6f1AxE7nstJhv13XJdVEVrM54yWSlSqYapJ+i0QhoZWH4fcaf+ptu34MlWa2DpBn7w1nsr+rbhjC8wr+P6MNDeTN+kfdzrY7jnhL9eHubfPf9s697+uyHpaOWWv7l+27Z0Ad/zTdLuvxuGN176rN39q7c04nA7y1IR/QDLfHB+hSFgmNoo94GzpWmW+xwdObq4sM6Ml3cnT+n+PWZeyT7AsHiGA/Tx+Y9CLizcL0e5LHa22z8p/mzzv294GfWpOljD+VSXFwshFRGg2Vg65rJTNMq0zkzja6wMZksZPZJUiK3+5i87MMTczHFzCGf2VZMU1E+tu3G2cgpF3yRtui2bUhXIm5M3wUSIRJtnU8iSrJ3ns580vRj0uFNMs+BT1w3Wx1aCLQz+yOFR3sTCAFMe6BUfpk+0dJ5maMqM2IvBJM1agZFTpNKT5ZWmeYW+BfFyP6DGpn6P9S4a1RPrGey02zF3VmNWR+aZ9dtp/O5yS93kzevfl0mX9BlM2F2aC7t/8Q7SV8P4CI3eoJjbd829dOdBf1jWPyQrvhps6FZ+heXyMU5SgYAAA==


name: Build a Pipedrive MCP Server with Google Gemini AI
author_name: Aitor | 1Node
author_username: aitoralonso
categories: []
created_at: 2025-05-14T12:09:40.318Z
updated_at: 2025-05-14T12:09:40.318Z
url: https://n8n.io/workflows/4040
scraped_at: 2025-12-24 13:02:44
description:
  This n8n workflow leverages the power of AI and automation to streamline Pipedrive's CRM operations using natural language commands. It allows you to interact with your Deals, Leads, Persons, and Organizations simply by sending a message.

  How it Works
  The workflow initiates the process by sending the incoming message to an AI Agent. The AI Agent is powered by Google Gemini Chat Model and utilizing n8n's Simple Memory to maintain context, interprets the natural language command. Based on the interpreted command, the AI Agent instructs the MCP Client node to perform specific actions. The MCP Client then interacts with various nodes from Pipedrive designed to manage Deals, Leads, Persons, and Organizations within your CRM. These nodes can perform actions like creating, getting, updating, or searching for data in each category. Finally, a Gmail node sends a summary  compiling the actions executed.

  Set Up Steps
  Set up your MCP Client:** Paste the MCP URL from your MCP Trigger node into the MCP Client node.
  Configure the AI Agent:** Connect your Google Gemini Chat Model credentials or your desired LLM.
  Configure Pipedrive:** The individual nodes for Deals, Leads, Persons, and Organizations will need to be connected to your specific CRM. Add your Oath credentials for Pipedrive by creating a private app.
  Configuring each specific node** (Create Deal, Get Lead, Update Person, Search Organization, etc.) to perform the desired action.
  Configure Send Summary:** Set up the Gmail node to send the summary email.

  Benefits
  Significant Time Saving:** Automates data entry, retrieval, and updates in your CRM, freeing up valuable time for sales teams and managers.
  Increased Efficiency:** Perform multiple CRM actions with a single natural language command.
  Simplified CRM Interaction:** Interact with your CRM using natural language instead of navigating complex interfaces.
  Reduced Errors:** Automation minimizes manual data entry errors.

  Suggested Enhancements
  Integrate More CRM Operations:** Add nodes for additional CRM functionalities like logging activities, managing tasks, or working with other modules and tools.
  Connect to Other Tools:** Integrate with other sales or marketing tools to create a more comprehensive workflow.
  Advanced AI Capabilities:** Explore fine-tuning the AI model for better understanding of specific industry jargon or complex requests. Should you add more nodes and tools, you might want to insert a specific prompt to the AI agent to give more context about the tools and actions to perform.
  User Management and Permissions:** Customize the private app's permissions on your Pipedrive account to limit access.
  Error Handling and Notifications:** Add more robust error handling and notification systems to be alerted if a workflow run fails.

  Need help?
  Feel free to contact us at 1 Node.
  Get instant access to a library of free resources we created.

nodes_used:
  ["n8n-nodes-base.telegramTrigger","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.mcpClientTool","@n8n/n8n-nodes-langchain.mcpTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.pipedriveTool","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.gmail"]

workflow_json_compressed:
  [encoded data, 4564 characters]


name: Adaptive RAG with Google Gemini & Qdrant: Context-Aware Query Answering
author_name: Nisa
author_username: nisacayir
categories: []
created_at: 2025-05-14T15:10:47.350Z
updated_at: 2025-05-14T15:10:47.350Z
url: https://n8n.io/workflows/4043
scraped_at: 2025-12-24 13:02:42
description:
  Description
  This workflow automatically classifies user queries and retrieves the most relevant information based on the query type. 🌟 It uses adaptive strategies like;
     Factual, Analytical, Opinion, and Contextual to deliver more precise and meaningful responses by leveraging n8n's flexibility. Integrated with Qdrant vector store and Google Gemini, it processes each query faster and more effectively. 🚀

  How It Works?
  Query Reception: A user query is triggered (e.g., through a chatbot interface). 💬

  Classification: The query is classified into one of four categories:

  Factual: Queries seeking verifiable information.

  Analytical: Queries that require in-depth analysis or explanation.

  Opinion: Queries looking for different perspectives or subjective viewpoints.

  Contextual: Queries specific to the user or certain contextual conditions.

  Adaptive Strategy Application: Based on classification, the query is restructured using the relevant strategy for better results.

  Response Generation**: The most relevant documents and context are used to generate a tailored response. 🎯

  Set Up Steps

  Estimated Time: ⏳ 10-15 minutes
  Prerequisites: You need an n8n account and a Qdrant vector store connection.
  Steps:

  Import the n8n workflow: Load the workflow into your n8n instance.

  Connect Google Gemini and Qdrant: Link these tools for query processing and data retrieval.

  Connect the Trigger Interface: Integrate with a chatbot or API to trigger the workflow.

  Customize: Adjust settings based on the query types you want to handle and the output format. 🔧

  For more detailed instructions, please check the sticky notes inside the workflow. 📌

nodes_used:
  ["@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.switch","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.chatTrigger","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.embeddingsGoogleGemini","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.summarize","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.memoryBufferWindow","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.respondToWebhook","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 9884 characters]


