by Growth AI
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Website sitemap generator and visual tree creator Who's it for Web developers, SEO specialists, UX designers, and digital marketers who need to analyze website structure, create visual sitemaps, or audit site architecture for optimization purposes. What it does This workflow automatically generates a comprehensive sitemap from any website URL and creates an organized hierarchical structure in Google Sheets. It follows the website's sitemap to discover all pages, then organizes them by navigation levels (Level 1, Level 2, etc.) with proper parent-child relationships. The output can be further processed to create visual tree diagrams and mind maps. How it works The workflow follows a five-step automation process: URL Input: Accepts website URL via chat interface Site Crawling: Uses Firecrawl to discover all pages following the website's sitemap only Success Validation: Checks if crawling was successful (some sites block external crawlers) Hierarchical Organization: Processes URLs into a structured tree with proper level relationships Google Sheets Export: Creates a formatted spreadsheet with the complete site architecture The system respects robots.txt and follows only sitemap-declared pages to ensure ethical crawling. Requirements Firecrawl API key (for website crawling and sitemap discovery) Google Sheets access Google Drive access (for template duplication) How to set up Step 1: Prepare your template (recommended) It's recommended to create your own copy of the base template: Access the base Google Sheets template Make a copy for your personal use Update the workflow's "Copy template" node with your template's file ID (replace the default ID: 12lV4HwgudgzPPGXKNesIEExbFg09Tuu9gyC_jSS1HjI) This ensures you have control over the template formatting and can customize it as needed Step 2: Configure API credentials Set up the following credentials in n8n: Firecrawl API: For crawling websites and discovering sitemaps Google Sheets OAuth2: For creating and updating spreadsheets Google Drive OAuth2: For duplicating the template file Step 3: Configure Firecrawl settings (optional) The workflow uses optimized Firecrawl settings: ignoreSitemap: false - Respects the website's sitemap sitemapOnly: true - Only crawls URLs listed in sitemap files These settings ensure ethical crawling and faster processing Step 4: Access the workflow The workflow uses a chat trigger interface - no manual configuration needed Simply provide the website URL you want to analyze when prompted How to use the workflow Basic usage Start the chat: Access the workflow via the chat interface Provide URL: Enter the website URL you want to analyze (e.g., "https://example.com") Wait for processing: The system will crawl, organize, and export the data Receive your results: Get an automatic direct clickable link to your generated Google Sheets - no need to search for the file Error handling Invalid URLs: If the provided URL is invalid or the website blocks crawling, you'll receive an immediate error message Graceful failure: The workflow stops without creating unnecessary files when errors occur Common causes: Incorrect URL format, robots.txt restrictions, or site security settings File organization Automatic naming: Generated files follow the pattern "[Website URL] - n8n - Arborescence" Google Drive storage: Files are automatically organized in your Google Drive Instant access: Direct link provided immediately upon completion Advanced processing for visual diagrams Step 1: Copy sitemap data Once your Google Sheets is ready: Copy all the hierarchical data from the generated spreadsheet Prepare it for AI processing Step 2: Generate ASCII tree structure Use any AI model with this prompt: Create a hierarchical tree structure from the following website sitemap data. Return ONLY the tree structure using ASCII tree formatting with ├── and └── characters. Do not include any explanations, comments, or additional text - just the pure tree structure. The tree should start with the root domain and show all pages organized by their hierarchical levels. Use proper indentation to show parent-child relationships. Here is the sitemap data: [PASTE THE SITEMAP DATA HERE] Requirements: Use ASCII tree characters (├── └── │) Show clear hierarchical relationships Include all pages from the sitemap Return ONLY the tree structure, no other text Start with the root domain as the top level Step 3: Create visual mind map Visit the Whimsical Diagrams GPT Request a mind map creation using your ASCII tree structure Get a professional visual representation of your website architecture Results interpretation Google Sheets output structure The generated spreadsheet contains: Niv 0 to Niv 5: Hierarchical levels (0 = homepage, 1-5 = navigation depth) URL column: Complete URLs for reference Hyperlinked structure: Clickable links organized by hierarchy Multi-domain support: Handles subdomains and different domain structures Data organization features Automatic sorting: Pages organized by navigation depth and alphabetical order Parent-child relationships: Clear hierarchical structure maintained Domain separation: Main domains and subdomains processed separately Clean formatting: URLs decoded and formatted for readability Workflow limitations Sitemap dependency: Only discovers pages listed in the website's sitemap Crawling restrictions: Some websites may block external crawlers Level depth: Limited to 5 hierarchical levels for clarity Rate limits: Respects Firecrawl API limitations Template dependency: Requires access to the base template for duplication Use cases SEO audits: Analyze site structure for optimization opportunities UX research: Understand navigation patterns and user paths Content strategy: Identify content gaps and organizational issues Site migrations: Document existing structure before redesigns Competitive analysis: Study competitor site architectures Client presentations: Create visual site maps for stakeholder reviews
by Oneclick AI Squad
This workflow automatically monitors blog posts or product pages for new/updated content, analyzes Google AI Overviews to identify optimization gaps, auto-generates optimized titles, summaries, and schema markup, and applies these improvements to enhance visibility in AI search results. Who's it for • SEO managers optimizing for AI-driven search results • Content teams publishing 5+ articles per week • E-commerce teams managing product page visibility • Digital marketers tracking AI Overview presence How it works / What it does Detects new or updated blog posts / product pages via webhook or schedule Fetches raw content and existing metadata Queries Google Search API to analyze AI Overview coverage gaps AI generates optimized title, meta summary, and JSON-LD schema markup Pushes improvements back to CMS or target endpoint Logs all changes and scores to Google Sheet tracker How to set up Import this workflow Set up credentials (Google Search API, OpenAI/Anthropic, CMS/HTTP, Google Sheets) Update your site URL and content preferences Activate workflow Requirements • Webhook endpoint or CMS trigger • Google Custom Search API key • OpenAI / Anthropic / Grok API • CMS REST API or target HTTP endpoint • Google Sheets for tracking How to customize the workflow • Change AI tone and schema type in the AI node • Modify Python keyword/gap detection logic • Update Google Sheet columns and Sheet ID • Adjust polling interval or wait times
by Jyothish S L
This workflow automatically converts uploaded documents and text into an AI-powered searchable knowledge base using semantic vector embeddings and Retrieval-Augmented Generation (RAG). Users can upload PDFs, JSON, CSV, XLS, XLSX, or raw text files, which are automatically processed, chunked, embedded, and stored in PostgreSQL PGVector for intelligent retrieval.Questions can then be asked directly through Telegram, where the system retrieves relevant context and generates AI-powered responses using Ollama and Llama 3. ⚙️ How it works Users can upload files or raw text through an n8n form interface. The workflow automatically extracts content from supported formats such as PDF, JSON, CSV, XLS, XLSX, and plain text, then splits the content into searchable chunks. Using the nomic-embed-text embedding model, vector embeddings are generated and stored in PostgreSQL with PGVector for semantic retrieval. Users can then ask questions through Telegram, where the system performs semantic similarity search to retrieve the most relevant document context. Finally, Llama 3 running via Ollama generates an AI-powered contextual response, which is sent back to the user through the Telegram bot. 📦 Requirements • Ollama • Llama 3 model • nomic-embed-text embedding model • PostgreSQL with PGVector extension • Telegram Bot API credentials • Docker • Cloudflare Tunnel or ngrok (optional for public access) 📚 Supported File Types • PDF • JSON • CSV • XLS • XLSX • Plain Text 🚀 Use Cases • Personal AI knowledge base • AI document assistant • Semantic document search • Internal company knowledge retrieval • Telegram AI chatbot • Private/self-hosted RAG system
by WeblineIndia
WhatsApp AI Sales Agent using PDF Vector Store This workflow turns your WhatsApp number into an intelligent AI-powered Sales Agent that answers product queries using real data extracted from a PDF brochure. It loads a product brochure via HTTP Request, converts it into embeddings using OpenAI, stores them in an in-memory vector store and allows the AI Agent to provide factual answers to users via WhatsApp. Non-text messages are filtered and only text queries are processed. This makes the workflow ideal for building a lightweight chatbot that understands your product documentation deeply. Quick Start: 5-Step Fast Implementation Insert your WhatsApp credentials in the WhatsApp Trigger and WhatsApp Send nodes. Add your OpenAI API Key to all OpenAI-powered nodes. Replace the PDF URL in the HTTP Request node with your own brochure. Run the Manual Trigger once to build the vector store. Activate the workflow and start chatting from WhatsApp. What It Does This workflow converts a product brochure (PDF) into a searchable knowledgebase using LangChain vector embeddings. Incoming WhatsApp messages are processed and if the message is text, the AI Sales Agent uses OpenAI + the vector store to produce accurate, brochure-based answers. The AI responds naturally to customer queries, supports conversation memory across the session and retrieves information directly from the brochure when needed. Non-text messages are filtered out to maintain clean conversational flow. The workflow is fully modular: you can replace the PDF, modify AI prompts, plug into CRM systems or extend it into a broader sales automation pipeline. Who’s It For This workflow is ideal for: Businesses wanting a WhatsApp-based AI customer assistant. Sales teams needing automated product query handling. Companies with large product catalog PDFs. Marketers wanting a zero-code product brochure chatbot. Technical teams experimenting with LangChain + OpenAI inside n8n. Requirements to Use This Workflow To run this workflow successfully, you need: An n8n instance (cloud or self-hosted). A WhatsApp Business API connection. An OpenAI API key. A publicly accessible PDF brochure URL. Basic familiarity with n8n node configuration. Optional: A custom vector store backend (Qdrant, Pinecone) – the template uses in-memory storage. How It Works & How To Set Up 1. Import the Workflow JSON Upload the workflow JSON provided. 2. Configure WhatsApp Trigger Open WhatsApp Trigger Add your WhatsApp credentials Set the webhook correctly to match your n8n endpoint 3. Configure WhatsApp Response Nodes The workflow uses two WhatsApp send nodes: Reply To User** → Sends AI response Reply To User1** → Sends “unsupported message” reply Add your WhatsApp credentials to both. 4. Replace the PDF Brochure In get Product Brochure (HTTP Request): Update the url parameter with your own PDF 5. Run the PDF → Vector Store Setup (One-Time Only) Use the Manual Trigger ("When clicking ‘Test workflow’") to: Download the PDF Extract text Split into chunks Generate embeddings Store them in Product Catalogue vector store > You must run this once after importing the workflow. 6. Set OpenAI Credentials Add your OpenAI API Key to the following nodes: OpenAI Chat Model OpenAI Chat Model1 Embeddings OpenAI Embeddings OpenAI1 7. Review the AI Agent Prompt Inside AI Sales Agent, you can edit the system message to match: Your brand Your product types Your tone of voice 8. Activate the Workflow Once activated, WhatsApp users can chat with your AI Sales Agent. How to Customize Nodes? Here are common customization options: Customize the PDF / Knowledgebase Change the URL in get Product Brochure or Upload your own file via other nodes. Customize AI Behavior Edit the systemMessage inside AI Sales Agent: Change personality Set product rules Restrict/expand scope Change Supported Message Types Modify Handle Message Types switch logic to allow: Image → OCR Audio → Whisper Documents → Additional processing Modify WhatsApp Message Templates Inside the textBody of response nodes. Extend or replace Vector Store Swap vectorStoreInMemory with: Qdrant Pinecone Redis vector store By updating the vector store node. Add-Ons (Optional Enhancements) You can extend this workflow with: 1. Multi-language support Add OpenAI translation nodes before agent input. 2. CRM Integration Send user queries and chat logs into: HubSpot Salesforce Zoho CRM 3. Product Recommendation Engine Use embeddings similarity to suggest products. 4. Order Placement Workflow Connect to Stripe or Shopify APIs. 5. Analytics Dashboard Log chats into Airtable / Postgres for analysis. Use Case Examples Here are some practical uses: Product Inquiry Chatbot Customers ask about specs, pricing, or compatibility. Digital Catalog Assistant Converts PDF brochures into interactive WhatsApp search. Sales Support Bot Reduces load on human sales reps by handling common questions. Internal Knowledge Bot Teams access manuals, training documents, or service guides. Event/Product Launch Assistant Provides instant details about newly launched items. And many more similar use cases where an AI-powered WhatsApp assistant is valuable. Troubleshooting Guide | Issue | Possible Cause | Solution | | ------------------------------------------ | -------------------------------------- | ------------------------------------------------------------- | | WhatsApp messages not triggering workflow | Wrong webhook URL or inactive workflow | Ensure webhook is correct & activate workflow | | AI replies are empty | Missing OpenAI credentials | Add OpenAI API key to all AI nodes | | Vector store not populated | Manual trigger not executed | Run the Test Workflow trigger once | | PDF extraction returns blank text | PDF is image-based | Use OCR before text splitting | | “Unsupported message type” always triggers | Message type filter misconfigured | Check conditions in Handle Message Types | | AI not using brochure data | VectorStore tool not linked properly | Check connections between Embeddings → VectorStore → AI Agent | Need Help with Support & Extensions? If you need help setting up, customizing or extending this workflow, feel free to reach out to our n8n automation developers at WeblineIndia. We can help with Custom WhatsApp automation workflows AI-powered product catalog systems Integrating CRM, ERP or eCommerce platforms Building advanced LangChain-powered n8n automations Deploying scalable vector stores (Qdrant/Pinecone) And so much more.
by Joe V
🔄 AI Video Polling Engine - Long-Running Job Handler for Veo, Sora & Seedance The async backbone that makes AI video generation production-ready ⚡🎬 🎥 See It In Action 🔗 Full Demo: youtu.be/OI_oJ_2F1O0 ⚠️ Must Read First This is a companion workflow for the main AI Shorts Generator: 🔗 Main Workflow: AI Shorts Reactor This workflow handles the "waiting game" so your main bot stays fast and responsive. Think of it as the backstage crew that handles the heavy lifting while your main workflow performs on stage. 🤔 The Problem This Solves Without This Workflow: User sends message ↓ Bot calls AI API ↓ ⏳ Bot waits 2-5 minutes... (BLOCKED) ↓ ❌ Timeout errors ❌ Execution limits exceeded ❌ Users think bot is broken ❌ Can't handle multiple requests With This Workflow: User sends message ↓ Bot calls AI API ↓ ✅ Bot responds instantly: "Video generating..." ↓ 🔄 This webhook polls in background ↓ ⚡ Main bot handles other users ↓ ✅ Video ready → Auto-sends to user Result: Your bot feels instant, scales infinitely, and never times out 🚀 🔁 What This Workflow Does This is a dedicated polling webhook that acts as the async job handler for AI video generation. It's the invisible worker that: 1️⃣ Receives the Job POST /webhook/poll-video { "sessionId": "user_123", "taskId": "veo_abc456", "model": "veo3", "attempt": 1 } 2️⃣ Responds Instantly 200 OK - "Polling started" (Main workflow never waits!) 3️⃣ Polls in Background Wait 60s → Check status → Repeat ⏱️ Waits 1 minute between checks (API-friendly) 🔄 Polls up to 15 times (~15 minutes max) 🎯 Supports Veo, Sora, and Seedance APIs 4️⃣ Detects Completion Handles multiple API response formats: // Veo format { status: "completed", videoUrl: "https://..." } // Market format (Sora/Seedance) { job: { status: "success", result: { url: "..." } } } // Legacy format { data: { video_url: "..." } } (No matter how the API responds, this workflow figures it out) 5️⃣ Delivers the Video Once ready: 📥 Downloads video from AI provider ☁️ Uploads to your S3 storage 💾 Restores user session from Redis 📱 Sends Telegram preview with buttons 🔄 Enables video extension (Veo only) 📊 Logs metadata for analytics ⚙️ Technical Architecture The Flow: Main Workflow Polling Webhook │ │ ├──[Trigger AI Job]──────────┤ │ "Task ID: abc123" │ │ │ ├──[Return Instantly] │ │ "Generating..." │ │ │ ├──[Handle New User] │ │ ├──[Wait 60s] │ │ │ ├──[Check Status] │ │ "Processing..." │ │ │ ├──[Wait 60s] │ │ │ ├──[Check Status] │ │ "Completed!" │ │ │ ├──[Download Video] │ │ │ ├──[Upload to S3] │ │ │ └──[Send to User] │ │ └──────────────────────────────────┘ "Your video is ready!" 🚀 Key Features ⚡ Non-Blocking Architecture Main workflow never waits Handle unlimited concurrent jobs Each user gets instant responses 🔄 Intelligent Polling Respects API rate limits (60s intervals) Auto-retries on transient failures Graceful timeout handling (15 attempts max) 🎯 Multi-Provider Support Handles different API formats: Veo** - record-info endpoint Sora** - Market job status Seedance** - Market job status 🛡️ Robust Error Handling ✅ Missing video URL → Retry with fallback parsers ✅ API timeout → Continue polling ✅ Invalid response → Parse alternative formats ✅ Max attempts reached → Notify user gracefully 💾 Session Management Stores state in Redis Restores full context when video is ready Supports video extension workflows Maintains user preferences 📊 Production Features Detailed logging at each step Metadata tracking (generation time, model used, etc.) S3 storage integration Telegram notifications Analytics-ready data structure 🧩 Integration Points Works Seamlessly With: | Use Case | How It Helps | |----------|--------------| | 🤖 Telegram Bots | Keeps bot responsive during 2-5 min video generation | | 📺 YouTube Automation | Polls video, then triggers auto-publish | | 🎬 Multi-Video Pipelines | Handles 10+ videos simultaneously | | 🏢 Content Agencies | Production-grade reliability for clients | | 🧪 A/B Testing | Generate multiple variations without blocking | Required Components: ✅ Main workflow that triggers video generation ✅ Redis for session storage ✅ S3-compatible storage for videos ✅ KIE.ai API credentials ✅ Telegram Bot (for notifications) 📋 How to Use Step 1: Set Up Main Workflow Import and configure the AI Shorts Reactor Step 2: Import This Webhook Add this workflow to your n8n instance Step 3: Configure Credentials KIE.ai API key Redis connection S3 storage credentials Telegram bot token Step 4: Link Workflows In your main workflow, call this webhook: // After triggering AI video generation const response = await httpRequest({ method: 'POST', url: 'YOUR_WEBHOOK_URL/poll-video', body: { sessionId: sessionId, taskId: taskId, model: 'veo3', attempt: 1 } }); Step 5: Activate & Test Activate this polling webhook Trigger a video generation from main workflow Watch it poll in background and deliver results 🎯 Real-World Example Scenario: User generates 3 videos simultaneously Without This Workflow: User A: "Generate video" → Bot: ⏳ Processing... (BLOCKED 5 min) User B: "Generate video" → Bot: ❌ Timeout (main workflow still processing User A) User C: "Generate video" → Bot: ❌ Never receives request With This Workflow: User A: "Generate video" → Bot: ✅ "Generating! Check back in 3 min" → Polling webhook handles in background User B: "Generate video" → Bot: ✅ "Generating! Check back in 3 min" → Second polling instance starts User C: "Generate video" → Bot: ✅ "Generating! Check back in 3 min" → Third polling instance starts 3 minutes later--- User A: 📹 "Your video is ready!" [Preview] [Publish] User B: 📹 "Your video is ready!" [Preview] [Publish] User C: 📹 "Your video is ready!" [Preview] [Publish] All three users served simultaneously with zero blocking! 🚀 🔧 Customization Options Adjust Polling Frequency // Default: 60 seconds // For faster testing (use credits faster): const waitTime = 30; // seconds // For more API-friendly (slower updates): const waitTime = 90; // seconds Change Timeout Limits // Default: 15 attempts (15 minutes) const maxAttempts = 20; // Increase for longer videos Add More Providers Extend to support other AI video APIs: switch(model) { case 'veo3': // Existing Veo logic case 'runway': // Add Runway ML polling case 'pika': // Add Pika Labs polling } Custom Notifications Replace Telegram with: Discord webhooks Slack messages Email notifications SMS via Twilio Push notifications 📊 Monitoring & Analytics What Gets Logged: { "sessionId": "user_123", "taskId": "veo_abc456", "model": "veo3", "status": "completed", "attempts": 7, "totalTime": "6m 32s", "videoUrl": "s3://bucket/videos/abc456.mp4", "metadata": { "duration": 5.2, "resolution": "1080x1920", "fileSize": "4.7MB" } } Track Key Metrics: ⏱️ Average generation time per model 🔄 Polling attempts before completion ❌ Failure rate by provider 💰 Cost per video (API usage) 📈 Concurrent job capacity 🚨 Troubleshooting "Video never completes" ✅ Check KIE.ai API status ✅ Verify task ID is valid ✅ Increase maxAttempts if needed ✅ Check API response format hasn't changed "Polling stops after 1 attempt" ✅ Ensure webhook URL is correct ✅ Check n8n execution limits ✅ Verify Redis connection is stable "Video downloads but doesn't send" ✅ Check Telegram bot credentials ✅ Verify S3 upload succeeded ✅ Ensure Redis session exists ✅ Check Telegram chat ID is valid "Multiple videos get mixed up" ✅ Confirm sessionId is unique per user ✅ Check Redis key collisions ✅ Verify taskId is properly passed 🏗️ Architecture Benefits Why Separate This Logic? | Aspect | Monolithic Workflow | Separated Webhook | |--------|--------------------|--------------------| | ⚡ Response Time | 2-5 minutes | <1 second | | 🔄 Concurrency | 1 job at a time | Unlimited | | 💰 Execution Costs | High (long-running) | Low (short bursts) | | 🐛 Debugging | Hard (mixed concerns) | Easy (isolated logic) | | 📈 Scalability | Poor | Excellent | | 🔧 Maintenance | Complex | Simple | 🛠️ Requirements Services Needed: ✅ n8n Instance (cloud or self-hosted) ✅ KIE.ai API (Veo, Sora, Seedance access) ✅ Redis (session storage) ✅ S3-compatible Storage (videos) ✅ Telegram Bot (optional, for notifications) Skills Required: Basic n8n knowledge Understanding of webhooks Redis basics (key-value storage) S3 upload concepts Setup Time: ~15 minutes Technical Level: Intermediate 🏷️ Tags webhook polling async-jobs long-running-tasks ai-video veo sora seedance production-ready redis s3 telegram youtube-automation content-pipeline scalability microservices n8n-webhook job-queue background-worker 💡 Best Practices Do's ✅ Keep polling interval at 60s minimum (respect API limits) Always handle timeout scenarios Log generation metadata for analytics Use unique session IDs per user Clean up Redis after job completion Don'ts ❌ Don't poll faster than 30s (risk API bans) Don't store videos in Redis (use S3) Don't skip error handling Don't use this for real-time updates (<10s) Don't forget to activate the webhook 🌟 Success Stories After Implementing This Webhook: | Metric | Before | After | |--------|--------|-------| | ⚡ Bot response time | 2-5 min | <1 sec | | 🎬 Concurrent videos | 1 | 50+ | | ❌ Timeout errors | 30% | 0% | | 😊 User satisfaction | 6/10 | 9.5/10 | | 💰 Execution costs | $50/mo | $12/mo | 🔗 Related Workflows 🎬 Main: AI Shorts Reactor - The full video generation bot 📤 YouTube Auto-Publisher - Publish completed videos 🎨 Video Style Presets - Custom prompt templates 📊 Analytics Dashboard - Track all generations 📜 License MIT License - Free to use, modify, and distribute! ⚡ Make your AI video workflows production-ready. Let the webhook handle the waiting. ⚡ Created by Joe Venner | Built with ❤️ and n8n | Part of the AI Shorts Reactor ecosystem
by Wessel Bulte
What this template does Receives meeting data via a webform, cleans/structures it, fills a Word docx template, uploads the file to SharePoint, appends a row to Excel 365, and sends an Outlook email with the document attached. Good to know Uses a community node: DocxTemplater to render the DOCX from a template. Install it from the Community Nodes catalog. The template context is the workflow item JSON. In your docx file, use placeholders. Includes a minimal HTML form snippet (outside n8n) you can host anywhere. Replace the placeholder WEBHOOK_URL with your Webhook URL before testing. Microsoft nodes require Azure app credentials with correct permissions (SharePoint, Excel/Graph, Outlook). How it works Webhook — Receives meeting form JSON (POST). Code (Parse Meeting Data) — Parses/normalizes fields, builds semicolon‑separated strings for attendees/absentees, and flattens discussion points / action items. SharePoint (Download) — Fetches the DOCX template (e.g., meeting_minutes_template.docx). Merge — Combines template binary + JSON context by position. DocxTemplater — Renders meeting_{{now:yyyy-MM-dd}}.docx using the JSON context. SharePoint (Upload) — Saves the generated DOCX to a target folder (e.g., /Meetings). Microsoft Excel 365 (Append) — Appends a row to your sheet (Date, Time, Attendees, etc.). Microsoft Outlook (Send message) — Emails the generated DOCX as an attachment. Requirements Community node DocxTemplater installed Microsoft 365 access with credentials for: SharePoint (download template + upload output) Excel 365 (append to table/worksheet) Outlook (send email) A Word template with placeholders matching the JSON keys Need Help 🔗 LinkedIn – Wessel Bulte
by Weilun
🔄 n8n Workflow: Check and Update n8n Version This workflow automatically checks if the local n8n version is outdated and, if so, creates a file to signal an update is needed. 🖥️ Working Environment Operating System:** Ubuntu 24.04 n8n Installation:** Docker container 📁 Project Directory Structure n8n/ ├── check_update.txt ├── check-update.sh ├── compose.yml ├── update_n8n.cron 🧾 File Descriptions check_update.txt Contains a single word: true: Update is needed false: No update required check-update.sh #!/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin if grep -q "true" /home/sysadmin/n8n/check_update.txt; then Place your update logic here echo "Update needed - please insert update logic" echo true > /home/sysadmin/n8n/check_update.txt fi Purpose: Checks the contents of check_update.txt If it contains true, executes update logic (currently a placeholder) Resets check_update.txt to true update_n8n.cron SHELL=/bin/sh 10 5 * * * /bin/sh /home/sysadmin/n8n/check-update.sh Purpose: Runs the check-update.sh script daily at 5:10 AM Uses /bin/sh as the shell environment 🧩 n8n Workflow Breakdown 1. Schedule Trigger 🕓 Purpose:** Triggers the workflow every day at 5:00 AM Node Type:** Schedule Trigger 2. Get the latest n8n version 🌐 Purpose:** Fetches the latest version of n8n from npm Endpoint:** https://registry.npmjs.org/n8n/latest Node Type:** HTTP Request 3. Get Local n8n version 🖥️ Purpose:** Retrieves the currently running n8n version Endpoint:** http://192.168.100.18:5678/rest/settings Node Type:** HTTP Request 4. If 🔍 Purpose:** Compares the local and latest versions Condition:** If not equal → update is needed 5. SSH1 🧾 Purpose:** Writes the result to a file on the host via SSH Logic:** echo "{{ $('If').params.conditions ? 'false' : 'true' }}" > check_update.txt Effect: Updates check_update.txt with "true" if an update is needed, "false" otherwise. 🛠️ Setting up Crontab on Ubuntu 1. Register the cron job with: crontab update_n8n.cron 2. Verify that your cron job is registered: crontab -l ✅ Result 5:00 AM** – n8n workflow checks versions and writes result to check_update.txt 5:10 AM** – Cron runs check-update.sh to respond to update flag
by Davide
This workflow allows you to send SMS messages globally using API without needing a physical phone number. 1. How It Works Consists of three main nodes: Manual Trigger**: The workflow starts when you click the "Test workflow" button in n8n. Set SMS Data**: This node defines the SMS message content and the recipient's phone number (including the international prefix). Send SMS**: This node sends the SMS using the ClickSend API. It uses HTTP Basic Authentication with your ClickSend credentials and sends a POST request to the ClickSend API endpoint with the message and recipient details. The workflow is simple and efficient, making it easy to automate SMS sending for various use cases, such as notifications, alerts, or marketing campaigns. 2. Set Up Steps To set up and use this workflow in n8n, follow these steps: Register on ClickSend: Go to ClickSend and create an account. Obtain your API Key and take advantage of the 2 € free credits provided. Set Up Basic Authentication in n8n: In the "Send SMS" node, configure the HTTP Basic Auth credentials: Username: Use the username you registered with on ClickSend. Password: Use the API Key provided by ClickSend. Configure the SMS Data: In the "Set SMS data" node, define: The message content (e.g., "Hi, this is my first message"). The recipient's phone number, including the international prefix (e.g., +39xxxxxxxx). Test the Workflow: Click the "Test workflow" button in n8n to trigger the workflow. The workflow will send the SMS using the ClickSend API, and you should receive the message on the specified phone number. Optional Customization: You can modify the workflow to dynamically set the message content or recipient phone number using data from other nodes or external sources. This workflow is a quick and efficient way to send SMS messages programmatically. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by Harshil Agrawal
This is an example that gets the logo, icon, and information of a company and stores it in Airtbale. You can set the values that you want to store in the Set node. If you want to store the data in a different database (Google Sheet, Postgres, MongoDB, etc.) replace the Airtable node with that node. You can refer to the documentation to learn how to build this workflow from scratch.
by Harshil Agrawal
This example workflow allows you to create, update, and get a document in Google Cloud Firestore. The workflow uses the Set node to set the data, however, you might receive data from a different source. Add the node that receives the data before the Set node and set the values you want to insert in a document, in the Set node. Also, update the Columns/ attributes fields in the Google Cloud Firestore node.
by Jonathan
This is the first of 4 workflows for a Mattermost Standup Bot. This workflow will create a default configuration file. You can set the default configuration in the Set node (Use Default Config) the values are: config.slashCmdToken - The token Mattermost provides when you make a new Slash Command config.mattermostBaseUrl - The base URL for your Mattermost instance config.botUserToken - The User token for your Mattermost bot config.n8nWebhookUrl - The URL for your "Action from MM" webhook in the "Standup Bot - Worker" workflow config.botUserId - The UserID for your Mattermost Bot user The config file is saved under /home/node/.n8n/standup-bot-config.json This workflow only needs to be run once manually as part of the setup .
by Jenny
Vector Database as a Big Data Analysis Tool for AI Agents Workflows from the webinar "Build production-ready AI Agents with Qdrant and n8n". This series of workflows shows how to build big data analysis tools for production-ready AI agents with the help of vector databases. These pipelines are adaptable to any dataset of images, hence, many production use cases. Uploading (image) datasets to Qdrant Set up meta-variables for anomaly detection in Qdrant Anomaly detection tool KNN classifier tool For anomaly detection The first pipeline to upload an image dataset to Qdrant. The second pipeline is to set up cluster (class) centres & cluster (class) threshold scores needed for anomaly detection. The third is the anomaly detection tool, which takes any image as input and uses all preparatory work done with Qdrant to detect if it's an anomaly to the uploaded dataset. For KNN (k nearest neighbours) classification The first pipeline to upload an image dataset to Qdrant. This pipeline is the KNN classifier tool, which takes any image as input and classifies it on the uploaded to Qdrant dataset. To recreate both You'll have to upload crops and lands datasets from Kaggle to your own Google Storage bucket, and re-create APIs/connections to Qdrant Cloud (you can use Free Tier cluster), Voyage AI API & Google Cloud Storage. [This workflow] KNN classification tool This tool takes any image URL, and as output, it returns a class of the object on the image based on the image uploaded to the Qdrant dataset (lands). An image URL is received via the Execute Workflow Trigger, which is then sent to the Voyage AI Multimodal Embeddings API to fetch its embedding. The image's embedding vector is then used to query Qdrant, returning a set of X similar images with pre-labeled classes. Majority voting is done for classes of neighbouring images. A loop is used to resolve scenarios where there is a tie in Majority Voting, and we increase the number of neighbours to retrieve. When the loop finally resolves, the identified class is returned to the calling workflow.