AI-powered WhatsApp chatbot for text, voice, images, and PDF with RAG
Who is this for? This template is designed for internal support teams, product specialists, and knowledge managers in technology companies who want to automate ingestion of product documentation and enable AI-driven, retrieval-augmented question answering via WhatsApp. What problem is this workflow solving? Support agents often spend too much time manually searching through lengthy documentation, leading to inconsistent or delayed answers. This solution automates importing, chunking, and indexing product manuals, then uses retrieval-augmented generation (RAG) to answer user queries accurately and quickly with AI via WhatsApp messaging. What these workflows do Workflow 1: Document Ingestion & Indexing Manually triggered to import product documentation from Google Docs. Automatically splits large documents into chunks for efficient searching. Generates vector embeddings for each chunk using OpenAI embeddings. Inserts the embedded chunks and metadata into a MongoDB Atlas vector store, enabling fast semantic search. Workflow 2: AI-Powered Query & Response via WhatsApp Listens for incoming WhatsApp user messages, supporting various types: Text messages: Plain text queries from users. Audio messages: Voice notes transcribed into text for processing. Image messages: Photos or screenshots analyzed to provide contextual answers. Document messages: PDFs, spreadsheets, or other files parsed for relevant content. Converts incoming queries to vector embeddings and performs similarity search on the MongoDB vector store. Uses OpenAI’s GPT-4o-mini model with retrieval-augmented generation to produce concise, context-aware answers. Maintains conversation context across multiple turns using a memory buffer node. Routes different message types to appropriate processing nodes to maximize answer quality. Setup Setting up vector embeddings Authenticate Google Docs and connect your Google Docs URL containing the product documentation you want to index. Authenticate MongoDB Atlas and connect the collection where you want to store the vector embeddings. Create a search index on this collection to support vector similarity queries. Ensure the index name matches the one configured in n8n (data_index). See the example MongoDB search index template below for reference. Setting up chat Authenticate the WhatsApp node with your Meta account credentials to enable message receiving and sending. Connect the MongoDB collection containing embedded product documentation to the MongoDB Vector Search node used for similarity queries. Set up the system prompt in the Knowledge Base Agent node to reflect your company’s tone, answering style, and any business rules, ensuring it references the connected MongoDB collection for context retrieval. Make sure Both MongoDB nodes (in ingestion and chat workflows) are connected to the same collection with: An embedding field storing vector data, Relevant metadata fields (e.g., document ID, source), and The same vector index name configured (e.g., data_index). Search Index Example: { "mappings": { "dynamic": false, "fields": { "_id": { "type": "string" }, "text": { "type": "string" }, "embedding": { "type": "knnVector", "dimensions": 1536, "similarity": "cosine" }, "source": { "type": "string" }, "doc_id": { "type": "string" } } } }
Automate Rank Math SEO field updates for Wordpress or Woocommerce
This workflow automates the process of updating important Rank Math SEO fields (SEO Title, Description, and Canonical URL) directly via n8n. By leveraging a custom WordPress plugin that extends the WordPress REST API, this workflow ensures that you can programmatically manage SEO metadata for your posts and WooCommerce products efficiently. Bulk version available here. How it works: Sends a POST request to a custom API endpoint exposed by the Rank Math plugin. Updates SEO Title, Description, and Canonical URL fields for a specified post or product. Setup steps: Install and activate the Rank Math API Manager Extended plugin on WordPress. Provide the post or product ID you want to update in the workflow. Run the workflow to update the metadata automatically. Benefits: Full automation of SEO optimizations. Works for both standard posts and WooCommerce products. Simplifies large-scale SEO management tasks. To understand exactly how to use it in detail, check out my comprehensive documentation here. Rank Math API Manager Extended plugin on WordPress language // ATTENTION: Replace the line below with <?php - This is necessary due to display constraints in web interfaces. <?php / Plugin Name: Rank Math API Manager Extended v1.4 Description: Manages the update of Rank Math metadata (SEO Title, SEO Description, Canonical URL) via a dedicated REST API endpoint for WordPress posts and WooCommerce products. Version: 1.4 Author: Phil - https://inforeole.fr */ if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class RankMathAPIManagerExtended { public function construct() { addaction('restapiinit', [$this, 'registerapi_routes']); } / Registers the REST API route to update Rank Math meta fields. */ public function registerapiroutes() { registerrestroute( 'rank-math-api/v1', '/update-meta', [ 'methods' => 'POST', 'callback' => [$this, 'updaterankmath_meta'], 'permissioncallback' => [$this, 'checkroute_permission'], 'args' => [ 'post_id' => [ 'required' => true, 'validate_callback' => function( $param ) { $post = get_post( (int) $param ); if ( ! $post ) { return false; } $allowedposttypes = class_exists('WooCommerce') ? ['post', 'product'] : ['post']; return inarray($post->posttype, $allowedposttypes, true); }, 'sanitize_callback' => 'absint', ], 'rankmathtitle' => [ 'type' => 'string', 'sanitizecallback' => 'sanitizetext_field', ], 'rankmathdescription' => [ 'type' => 'string', 'sanitizecallback' => 'sanitizetext_field', ], 'rankmathcanonical_url' => [ 'type' => 'string', 'sanitizecallback' => 'escurl_raw', ], ], ] ); } / Updates the Rank Math meta fields for a specific post. * @param WPRESTRequest $request The REST API request instance. @return WPRESTResponse|WPError Response object on success, or WPError on failure. */ public function updaterankmathmeta( WPREST_Request $request ) { $postid = $request->getparam('post_id'); // Secondary, more specific permission check. if ( ! currentusercan('editpost', $postid) ) { return new WP_Error( 'rest_forbidden', 'You do not have permission to edit this post.', ['status' => 403] ); } $fields = ['rankmathtitle', 'rankmathdescription', 'rankmathcanonical_url']; $results = []; $updated = false; foreach ( $fields as $field ) { if ( $request->has_param( $field ) ) { $value = $request->get_param( $field ); $currentvalue = getpostmeta($postid, $field, true); if ($current_value === $value) { $results[$field] = 'unchanged'; } else { $updatestatus = updatepostmeta( $postid, $field, $value ); if ($update_status) { $results[$field] = 'updated'; $updated = true; } else { // This case is rare but could indicate a DB error or other failure. $results[$field] = 'failed'; } } } } if ( ! $updated && empty($results) ) { return new WP_Error( 'nofieldsprovided', 'No Rank Math fields were provided for update.', ['status' => 400] ); } return new WPRESTResponse( $results, 200 ); } / Checks if the current user has permission to access the REST API route. * @return bool */ public function checkroutepermission() { return currentusercan( 'edit_posts' ); } } new RankMathAPIManagerExtended(); Bulk version available here. : this bulk version, provided with a dedicated WordPress plugin, allows you to generate and bulk-update meta titles and descriptions for multiple articles simultaneously using artificial intelligence. It automates the entire process, from article selection to the final update in Rank Math, offering considerable time savings. . --- Phil | Inforeole | Linkedin 🇫🇷 Contactez nous pour automatiser vos processus
Search LinkedIn companies and add them to Airtable CRM
Search LinkedIn companies and add them to Airtable CRM Who is this for? This template is ideal for sales teams, business development professionals, and marketers looking to build a robust prospect database without manual LinkedIn research. Perfect for agencies, consultants, and B2B companies targeting specific business profiles. What problem does this workflow solve? Manually researching companies on LinkedIn and adding them to your CRM is time-consuming and error-prone. This automation eliminates the tedious process of finding, qualifying, and importing prospects into your database. What this workflow does This workflow automatically searches for companies on LinkedIn based on your criteria (keywords, size, location), retrieves detailed information about each company, filters them based on quality indicators (follower count and website availability), and adds new companies to your Airtable CRM while preventing duplicates. Setup Create a Ghost Genius API account and get your API key Configure HTTP Request nodes with Header Auth credentials (Name: "Authorization", Value: "Bearer yourapikey") Create an Airtable base named "CRM" with columns: name, website, LinkedIn, id, etc. Set up your Airtable credentials following n8n documentation Add your company search selection criteria to the “Set Variables” node. How to customize this workflow Modify search parameters in the "Set Variables" node to target different industries, locations, or company sizes Adjust the follower count threshold in the "Filter Valid Companies" node based on your qualification criteria Customize the Airtable fields mapping in the "Add Company to CRM" node to match your database structure Add notification nodes (Slack, Email) to alert you when new companies are added
Google calendar MCP server for AI agent with dynamic scheduling
Google Calendar AI Agent with Dynamic Scheduling Version: 1.0.0 n8n Version: 1.88.0+ Author: Koresolucoes License: MIT --- Description An AI-powered workflow to automate Google Calendar operations using dynamic parameters and MCP (Model Control Plane) integration. Enables event creation, availability checks, updates, and deletions with timezone-aware scheduling [[1]][[2]][[8]]. Key Features: 📅 Full Calendar CRUD: Create, read, update, and delete events in Google Calendar. ⏰ Availability Checks: Verify time slots using AVALIABILITYCALENDAR node with timezone support (e.g., America/SaoPaulo). 🤖 AI-Driven Parameters: Use $fromAI() to inject dynamic values like StartTime, EndTime, and Description [[3]][[4]]. 🔗 MCP Integration: Connects to an MCP server for centralized AI agent control [[5]][[6]]. --- Use Cases Automated Scheduling: Book appointments based on AI-recommended time slots. Meeting Coordination: Sync calendar events with CRM/task management systems. Resource Management: Check room/equipment availability before event creation. --- Instructions Import Template Go to n8n > Templates > Import from File and upload this workflow. Configure Credentials Add Google Calendar OAuth2 credentials under Settings > Credentials. Ensure the calendar ID matches your target (e.g., ODONTOLOGIA group calendar). Set Up Dynamic Parameters Use $fromAI('ParameterName') in nodes like CREATECALENDAR to inject AI-generated values (e.g., event descriptions). Activate & Test Enable the workflow and send test requests to the webhook path /mcp/:tool/calendar. --- Tags Google Calendar Automation MCP AI Agent Scheduling CRUD --- Screenshots --- License This template is licensed under the MIT License. --- Notes: Extend multi-tenancy by adding :userId to the webhook path (e.g., /mcp/:userId/calendar) [[7]]. For timezone accuracy, always specify options.timezone in availability checks [[8]]. Refer to n8n’s Google Calendar docs for advanced field mappings.
Tesla 1day indicators tool (Macro-Level Technical AI)
📅 Analyze Tesla’s daily trading structure with AI using 6 Alpha Vantage indicators. This tool evaluates long-term trend health, volatility patterns, and potential reversal signals at the 1-day timeframe. Designed for use within the Tesla Financial Market Data Analyst Tool, this agent helps swing and position traders anchor macro sentiment. ⚠️ Not standalone. Must be executed via Execute Workflow 🔌 Requires: Tesla Quant Technical Indicators Webhooks Tool Alpha Vantage Premium API Key OpenAI GPT-4.1 credentials --- 🔍 What It Does This tool queries a secured webhook (/1dayData) to retrieve real-time, trimmed JSON data for: RSI (Relative Strength Index) BBANDS (Bollinger Bands) SMA (Simple Moving Average) EMA (Exponential Moving Average) ADX (Average Directional Index) MACD (Moving Average Convergence Divergence) These values are then passed to a LangChain AI Agent powered by GPT-4.1, which returns: A 2–3 sentence market condition summary Structured indicator values Timeframe tag ("1d") --- 📋 Sample Output json { "summary": "TSLA shows consolidation on the daily chart. RSI is neutral, BBANDS are contracting, and MACD is flattening.", "timeframe": "1d", "indicators": { "RSI": 51.3, "BBANDS": { "upper": 192.80, "lower": 168.20, "middle": 180.50, "close": 179.90 }, "SMA": 181.10, "EMA": 179.75, "ADX": 15.8, "MACD": { "macd": -0.25, "signal": -0.20, "histogram": -0.05 } } } --- 🧠 Agent Components | Component | Description | | ----------------------------- | -------------------------------------------------- | | 1day Data (HTTP Node) | Pulls latest data from secured /1dayData webhook | | OpenAI Chat Model | GPT-4.1 powers the analysis logic | | Tesla 1day Indicators Agent | LangChain agent performing interpretation | | Simple Memory | Short-term session continuity | --- 🛠️ Setup Instructions Import Workflow into n8n Name: Tesla1dayIndicators_Tool Add Required Credentials Alpha Vantage Premium (via HTTP Query Auth) OpenAI GPT-4.1 (Chat Model) Install Webhook Fetcher Required: Tesla Quant Technical Indicators Webhooks Tool Endpoint /1dayData must be active Execution Context This tool is only triggered via: 👉 Tesla Financial Market Data Analyst Tool Inputs expected: message: optional context sessionId: session memory linkage --- 📌 Sticky Notes Overview 📘 Tesla 1-Day Indicators Tool – Purpose and integration 📡 Webhook Fetcher – Pulls daily Alpha Vantage data via HTTPS 🧠 GPT-4.1 Model – Reasoning for trend classification 🔗 Sub-Agent Trigger – Used only by Financial Market Analyst 🧠 Memory Buffer – Ensures consistent session logic --- 🔒 Licensing & Support © 2025 Treasurium Capital Limited Company This workflow—including prompts, logic, and formatting—is protected IP. 🔗 Don Jayamaha – LinkedIn 🔗 Creator Profile --- 🚀 Evaluate long-term Tesla price behavior with AI-enhanced technical analysis—critical for swing trading strategy. Required by the Tesla Financial Market Data Analyst Tool.
Automated Zalo OA token management with OAuth and webhook integration
Description (How it works) This workflow keeps your Zalo Official Account access token valid and easy to reuse across other flows—no external server required. High-level steps Scheduled refresh runs on an interval to renew the access token before it expires. Static Data cache (global) stores access/refresh tokens + expiries for reuse by any downstream node. OAuth exchange calls Zalo OAuth v4 with your appid and secretkey to get a fresh access token. Immediate output returns the current access token to the next nodes after each refresh. Operational webhooks include: A reset webhook to clear the cache when rotating credentials or testing. A token peek webhook to read the currently cached token for other services. Setup steps (estimated time ~8–15 minutes) Collect Zalo credentials (2–3 min): Obtain appid, secretkey, and a valid refresh_token. Import & activate workflow (1–2 min): Import the JSON into n8n and activate it. Wire inputs (2–3 min): Point the “Set Refresh Token and App ID” node to your env vars (or paste values for a quick test). Adjust schedule & secure webhooks (2–3 min): Tune the run interval to your token TTL; protect the reset/peek endpoints (e.g., secret param or IP allowlist). Test (1–2 min): Execute once to populate Static Data; optionally try the token peek and reset webhooks to confirm behavior.
Generate SEO meta tags with Gemini AI & competitor analysis using Google Sheets
This workflow automates the entire process of creating SEO-optimized meta titles and descriptions. It analyzes your webpage, spies on top-ranking competitors for the same keywords, and then uses a multi-step AI process to generate compelling, length-constrained meta tags. 🤖 How It Works This workflow operates in a three-phase process for each URL you provide: Phase 1: Self-Analysis When you add a URL to a Google Sheet with the status "New", the workflow scrapes your page's content. The first AI then performs a deep analysis to identify the page's primary keyword, semantic keyword cluster, search intent, and target audience. Phase 2: Competitor Intelligence The workflow takes your primary keyword and performs a live Google search. A custom code block intelligently filters the search results to identify true competitors. A second AI analyzes their meta titles and descriptions to find common patterns and successful strategies. Phase 3: Master Generation & Update The final AI synthesizes all gathered intelligence—your page's data and the competitor's winning patterns—to generate a new, optimized meta title and description. It then writes this new data back to your Google Sheet and updates the status to "Generated". ⚙️ Setup Instructions You should be able to set up this workflow in about 10-15 minutes ⏱️. 🔑 Prerequisites You will need the following accounts and API keys: A Google Account with access to Google Sheets. A Google AI / Gemini API key. A SerpApi key for Google search data. A ScrapingDog API key for reliable website scraping. 🛠️ Configuration Google Sheet Setup: Create a new Google Sheet. The workflow requires the following columns: URL, Status, Current Meta Title, Current Meta Description, Generated Meta Title, Generated Meta Description, and Ranking Factor. Add Credentials: Google Sheets Nodes: Connect your Google account credentials to the Google Sheets Trigger & Google Sheets nodes. Google Gemini Nodes: Add your Google Gemini API key to the credentials for all three Google Gemini Chat Model nodes. Scrape Website Node: In this HTTP Request node, go to Query Parameters and replace <your-api-key> with your ScrapingDog API key. Googl SERP Node: In this HTTP Request node, go to Query Parameters and replace <your-api-key> with your SerpApi API key. Configure Google Sheets Nodes: Copy the Document ID from your Google Sheet's URL. Paste this ID into the "Document ID" field in the following nodes: Google Sheets Trigger, Get row(s) in sheet1, and Update row in sheet. In each of those nodes, select the correct sheet name from the "Sheet Name" dropdown. ✅ Activate Workflow Save and activate the workflow. To run it, simply add a new row to your Google Sheet containing the URL you want to process and set the "Status" column to New.
Automatically add Gmail sender contacts to MySQL database
This workflow processes emails received in Gmail and adds the sender's name and email address to a MySQL database. Use Cases: A sales or marketing agency can use this to automatically save client contact info to a database to build a list of leads Companies can use this to automatically save contacts to a database in case of Gmail data loss / losing access to their Gmail account Companies can build mailing lists to automatically send promotions to all of the clients who have contacted them in a given time period Before using, you need to have: Gmail credential MySQL database credential A Table in the MySQL database to store your contacts The table should have a "name" column, which allows NULL values The table should have an "email" column, which should be UNIQUE How it works: The Gmail Trigger will listen for a new email every minute For each email, the code node will extract the name and email address of the sender. If there is no name, it will return null The MySQL node will insert the new contact into a table in your database If the contact email already exists in your database, the MySQL node will update the contact name How to use: Please set up the MySQL node by selecting the correct table to store contacts in Please choose your "email" column to match on Please choose your "name" column to store names Customizing this Workflow: You can customize this workflow to save more data to MySQL. Here are some examples: In the MySQL node, click "Add Value", and choose one of the fields from the Gmail node to save in your database column. You can try saving the following items: Subject line MessageID ThreadID Snippet Recipient Info
Swagger2OpenAPI converter MCP server
Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator? Join the community Complete MCP server exposing 6 Swagger2OpenAPI Converter API operations to AI agents. ⚡ Quick Setup Import this workflow into your n8n instance Credentials Add Swagger2OpenAPI Converter credentials Activate the workflow to start your MCP server Copy the webhook URL from the MCP trigger node Connect AI agents using the MCP URL 🔧 How it Works This workflow converts the Swagger2OpenAPI Converter API into an MCP-compatible interface for AI agents. • MCP Trigger: Serves as your server endpoint for AI agent requests • HTTP Request Nodes: Handle API calls to https://mermade.org.uk/api/v1 • AI Expressions: Automatically populate parameters via $fromAI() placeholders • Native Integration: Returns responses directly to the AI agent 📋 Available Operations (6 total) 🔧 Badge (1 endpoints) • GET /badge: Redirect to Badge SVG 🔧 Convert (2 endpoints) • GET /convert: Convert Swagger in Body • POST /convert: Convert a Swagger 2.0 definition passed in the body to OpenAPI 3.0.x 🔧 Status (1 endpoints) • GET /status: Check API Status 🔧 Validate (2 endpoints) • GET /validate: Validate OpenAPI in Body • POST /validate: Validate an OpenAPI 3.0.x definition supplied in the body of the request 🤖 AI Integration Parameter Handling: AI agents automatically provide values for: • Path parameters and identifiers • Query parameters and filters • Request body data • Headers and authentication Response Format: Native Swagger2OpenAPI Converter API responses with full data structure Error Handling: Built-in n8n HTTP request error management 💡 Usage Examples Connect this MCP server to any AI agent or workflow: • Claude Desktop: Add MCP server URL to configuration • Cursor: Add MCP server SSE URL to configuration • Custom AI Apps: Use MCP URL as tool endpoint • API Integration: Direct HTTP calls to MCP endpoints ✨ Benefits • Zero Setup: No parameter mapping or configuration needed • AI-Ready: Built-in $fromAI() expressions for all parameters • Production Ready: Native n8n HTTP request handling and logging • Extensible: Easily modify or add custom logic > 🆓 Free for community use! Ready to deploy in under 2 minutes.
Bulk WhatsApp & Gmail messenger with Google Sheets status tracking via InboxPlus
How it works This workflow sends WhatsApp messages and emails in bulk using contact data stored in Google Sheets. Contacts are processed in small batches to control throughput and avoid API rate limits. WhatsApp and email are treated as independent channels and are sent only when their status is marked as pending. All success and failure results are written back to Google Sheets to enable tracking, retries, and safe re-runs. Step-by-step Step 1: Fetch contacts & batch processing Manual Trigger – Starts the workflow manually. Get Contacts – Reads contact data from Google Sheets. Split In Batches – Processes contacts in controlled batch sizes. Step 2: Email preparation & sending Has Email Address – Checks whether the contact has an email address. IF Mail Pending – Ensures the email is still marked as pending. PrepareEmail email – Loads the selected InboxPlus email template. Build HTML Email – Builds the final HTML email body. Fetch Email Image – Downloads images for inline or attachment usage. Send Gmail – Sends the email via Gmail. Delivered – Confirms successful email delivery. Step 3: WhatsApp message sending Has Phone Number – Checks whether the contact has a phone number. IF WhatsApp Pending – Ensures the WhatsApp message is still pending. Send template – Sends the approved WhatsApp template message. Sent – Confirms message acceptance by WhatsApp. Step 4: Delivery status updates Update Sheet – Writes successful delivery results back to Google Sheets. Mail Failure – Updates Google Sheets if email delivery fails. Whatsapp Failure – Updates Google Sheets if WhatsApp delivery fails. Why use this? Prevents duplicate messages with channel-level pending checks Handles WhatsApp and email independently in one workflow Supports safe retries without resending completed messages Keeps Google Sheets as the single source of truth Scales bulk outreach safely using batch-based execution
Multilingual email auto-replies with DeepL, GPT-4o and Slack human approval
Who's it for Customer support teams, sales representatives, and international business professionals who need to handle multilingual email communication efficiently while maintaining quality control through human approval. How it works This workflow automates email responses by: Monitoring Gmail for emails with a specific label (e.g., "To_Process") Translating the email content using DeepL to your preferred language Generating an AI-powered summary and draft reply using OpenAI Requesting approval via Slack with a summary and one-click approval link Sending the reply only after human approval is received Removing the label to prevent reprocessing Set up steps Setup takes approximately 15-20 minutes: Configure credentials for Gmail, DeepL, OpenAI, and Slack Create a Gmail label for emails to process Update the Slack channel ID in the configuration node Ensure n8n is accessible via webhook (tunnel or production mode required) Requirements Gmail account with OAuth2 authentication DeepL API key (free tier available) OpenAI API key Slack workspace with OAuth2 app configured n8n instance accessible via webhook URL How to customize the workflow Change translation language: Modify the DeepL node's target language Adjust AI model: Switch between GPT-4 or GPT-3.5 in the OpenAI node Customize approval message: Edit the Slack message format Add multiple languages: Duplicate the translation node for multi-language support Filter specific senders: Add conditions to process only certain email addresses