by simonscrapes
Use Case Transform web pages into AI-friendly markdown format: You need to process webpage content for LLM analysis You want to extract both content and links from web pages You need clean, formatted text without HTML markup You want to respect API rate limits while crawling pages What this Workflow Does The workflow uses Firecrawl.dev API to process webpages: Converts HTML content to markdown format Extracts all links from each webpage Handles API rate limiting automatically Processes URLs in batches from your database Setup Create a Firecrawl.dev account and get your API key Add your Firecrawl API key to the HTTP Request node's Authorization header Connect your URL database to the input node (column name must be "Page") or edit the array in Example fields from data source Configure your preferred output database connection How to Adjust it to Your Needs Modify input source to pull URLs from different databases Adjust rate limiting parameters if needed Customize output format for your specific use case More templates and n8n workflows >>> @simonscrapes
by Sira Ekabut
Facebook access tokens expire quickly, requiring regular updates for continued API access. This workflow simplifies the process of exchanging short-lived tokens for long-lived ones, saving time and reducing manual effort. What this workflow does Exchanges a short-lived Facebook User Access Token for a long-lived token using the Facebook Graph API. Optionally retrieves a long-lived Page Access Token associated with the user. Outputs both the user and page tokens for further use in automation or integrations. Setup Prerequisites: A valid Facebook App ID and App Secret. A short-lived User Access Token from the Facebook platform. (Optional) The App-Scoped User ID for fetching associated page tokens. Workflow Configuration: Replace placeholder values in the "Set Parameter" node with your Facebook credentials and token. Run the workflow manually to generate long-lived tokens. Documentation Reference: Follow the official Facebook guide for more details: https://developers.facebook.com/docs/facebook-login/guides/access-tokens/get-long-lived/
by Mario
Purpose This workflow allows you to import any workflow from a file or another n8n instance and map the credentials easily. How it works A multi-form setup guides you through the entire process At the beginning you have two options: Upload a workflow file (JSON) Copy workflow from a remote n8n instance If you choose the second option, you get to choose one of your predefined (in the Settings node) remote instances first, then it retrieves a list of all the workflows using the n8n API which you then can choose a workflow from. Now both initial options come together - the workflow file is being processed In parallel all credentials of the current instance are being retrieved using the Execute Command node The next form page enables a mapping of all the credentials used in the workflow. The matching happens between the names (because one workflow can contain different credentials of the same type) of the original credentials and the ones available on the current instance. Every option then shows all available credentials of the same type. In addition the user has always the choice to create a new credential on the fly. For every option which was set to create a new credential, an empty credential is being created on the current instance using the n8n API. An emoji is being appended to the name, which indicates that it needs to be populated. Finally the workflow gets updated with the new credential ID’s and created on the current instance using the n8n API. Then the user gets a message, if the process has succeeded or not. Setup Select your credentials in the nodes which require those Configure your remote instance(s) in the Settings node. (You can skip this step, if you only want to use the File Upload feature) Every instance is defined as object with the keys name, apiKey and baseUrl. Those instances are then wrapped inside an array. You can find an example described within a note on the workflow canvas. How to use Grab the (production) URL of the Form from the first node Open the URL and follow the instructions given in the multi-form Disclaimer Security: Beware, that all credentials are being decrypted and processed within the workflow. Also the API keys to other n8n instances are stored within the workflow. This solution is primarily meant for transferring data between testing environments. For production use consider the n8n enterprise edition which provides a reliable way to deploy workflows between different environments without the need of manual credential mapping.
by Jaber Zare
Who is this for? This workflow is for DevOps engineers, system administrators, and Docker users who want to automate the process of checking for updates, verifying them, and applying updates to their Docker-based deployment in a controlled manner. For example, this workflow is used to update the n8n Docker image. What does this workflow do? Fetches the latest Docker image version from GitHub. Compares it with the currently running version on the server. Sends a Telegram message requesting confirmation if an update is available. If confirmed, pulls the latest n8n Docker image, updates the container, and restarts it. Sends a Telegram message confirming the update is completed. Schedules automatic checks, Uses a cron trigger in n8n to check for updates at regular intervals. Setup Ensure n8n is installed and running in a Docker container. Create a Telegram bot using BotFather. Set up Telegram credentials. Set up SSH credentials (ensure the SSH user has sudo access). Obtain the bot token and chat ID. Set the Default variable node telegram-id (You can find it by messaging @get_id_bot). n8n-container-name (Specify the name of the n8n container.) working-directory (The directory where your docker-compose.yml is). You can use a manual trigger or a schedule trigger to update (for n8n, I use Cron every 3 days to check for a new version). How to customize this workflow Change the update mechanism: Modify the Docker commands if using a different container runtime or orchestration tool. Modify the confirmation flow: Add extra validation steps, such as checking for breaking changes before updating. Use a different notification method: Replace Telegram with Slack, email, or another notification service.
by VEED
Create AI screencast videos with VEED and automated slides Overview This n8n workflow automatically generates presentation-style "screen recording" videos with AI-generated slides and a talking head avatar overlay. You provide a topic and intention, and the workflow handles everything: scriptwriting, slide generation, avatar creation, voiceover, and video composition. Output: Horizontal (16:9) AI-generated videos with animated slides as the main content and a lip-synced avatar in picture-in-picture, ready for YouTube, LinkedIn, or professional presentations. What It Does Topic + Intention → Claude writes script → Parallel processing: ├── OpenAI generates avatar → ElevenLabs voiceover → VEED lip-sync └── FAL Flux Pro generates slides → Creatomate composites everything → Saved to Google Drive + logged to Sheets Pipeline Breakdown | Step | Tool | What Happens | |------|------|--------------| | 1. Script Generation | Claude Sonnet 4 | Creates hook, script (25-40 sec), slide prompts, caption, and avatar description | | 2. Avatar Generation | OpenAI gpt-image-1 | Generates photorealistic portrait image (1024×1536) | | 3. Slide Generation | FAL Flux Pro | Creates 5-7 professional slides (1920×1080) with text overlays | | 4. Voiceover | ElevenLabs | Converts script to natural speech (multiple voice options) | | 5. Talking Head | VEED Fabric 1.0 | Lip-syncs avatar to audio, creates 9:16 talking head video | | 6. Video Composition | Creatomate | Combines slides + avatar in 16:9 PiP layout | | 7. Storage | Google Drive | Uploads final MP4 | | 8. Logging | Google Sheets | Records all metadata (script, caption, URLs, timestamps) | Required Connections API Keys (entered in Configuration node) | Service | Key Type | Where to Get | |---------|----------|--------------| | Anthropic | API Key | https://console.anthropic.com/settings/keys | | OpenAI | API Key | https://platform.openai.com/api-keys | | ElevenLabs | API Key | https://elevenlabs.io/app/settings/api-keys | | FAL.ai | API Key | https://fal.ai/dashboard/keys | | Creatomate | API Key | https://creatomate.com/dashboard/settings | > ⚠️ OpenAI Note: gpt-image-1 requires organization verification. Go to https://platform.openai.com/settings/organization/general to verify. n8n Credentials (connect in n8n) | Node | Credential Type | Purpose | |------|-----------------|---------| | 🎬 Generate Talking Head (VEED) | FAL.ai API | VEED video rendering | | 📤 Upload to Drive | Google Drive OAuth2 | Store final videos | | 📝 Log to Sheets | Google Sheets OAuth2 | Track all generated content | Configuration Options Edit the ⚙️ Workflow Configuration node to customize: { // 📝 CONTENT SETTINGS topic: "How AI is transforming content creation", intention: "informative", // informative, lead_generation, disruption brand_name: "YOUR_BRAND_NAME", target_audience: "sales teams and marketers", trending_hashtags: "#AIvideo #ContentCreation #VideoMarketing", // 🎨 SLIDE STYLE slide_style: "vibrant_colorful", // See slide styles below // 🎥 VIDEO SETTINGS video_resolution: "720p", // VEED only supports 720p seconds_per_slide: 6, // How long each slide shows // 🖼️ BACKGROUND (Optional) background: "", // URL, gradient array, or empty // 🔑 API KEYS (Required) anthropic_api_key: "YOUR_ANTHROPIC_API_KEY", openai_api_key: "YOUR_OPENAI_API_KEY", elevenlabs_api_key: "YOUR_ELEVENLABS_API_KEY", creatomate_api_key: "YOUR_CREATOMATE_API_KEY", fal_api_key: "YOUR_FAL_API_KEY", // 🎤 VOICE SELECTION voice_selection: "susie", // cristina, enrique, susie, jeff, custom // 🎨 AVATAR OPTIONS (Optional) custom_avatar_description: "", // Leave empty for AI-generated custom_avatar_image_url: "", // Direct URL to use existing image // 📝 CUSTOM SCRIPT (Optional) custom_script: "" // Leave empty for AI-generated } Slide Style Options | Style | Description | Best For | |-------|-------------|----------| | dark_professional | Dark gradients, white text, sleek look | Tech, SaaS, premium brands | | light_modern | Light backgrounds, dark text, clean | Corporate, educational | | vibrant_colorful | Bold colors, energetic, eye-catching | Social media, startups | | minimalist | Lots of whitespace, simple, elegant | Luxury, professional services | | tech_corporate | Blue tones, geometric shapes | Enterprise, B2B | Background Options | Type | Example | Description | |------|---------|-------------| | None | "" | Full bleed layout, slides take 78% width | | URL | "https://example.com/bg.jpg" | Image background with margins | | Gradient | ["#ff6b6b", "#feca57", "#48dbfb"] | Gradient background with margins | Voice Options | Voice | Language | Description | |-------|----------|-------------| | cristina | Spanish | Female voice | | enrique | Spanish | Male voice | | susie | English | Female voice (default) | | jeff | English | Male voice | | custom | Any | Use your ElevenLabs voice clone ID | Intention Types | Intention | Content Style | Best For | |-----------|---------------|----------| | informative | Educational, value-driven, builds trust | Thought leadership, tutorials | | lead_generation | Creates curiosity, soft CTA | Product awareness, funnels | | disruption | Bold, provocative, scroll-stopping | Viral potential, brand awareness | Custom Avatar & Script Options Custom Avatar Description Leave custom_avatar_description empty to let Claude decide, or provide your own: custom_avatar_description: "female marketing influencer, cool, working in tech" Examples: "a woman in her 20s with gym clothes" "a bearded man in his 30s wearing a hoodie" "a professional woman with glasses in business casual" Custom Avatar Image URL Skip avatar generation entirely by providing a direct URL: custom_avatar_image_url: "https://example.com/my-avatar.png" > Image should be portrait orientation, high quality, with the subject looking at camera. Custom Script Leave custom_script empty to let Claude write it, or provide your own: custom_script: "This is my custom script. AI is changing how we create content..." Guidelines for custom scripts: Keep it 25-40 seconds when read aloud (60-100 words) Avoid special characters for TTS compatibility Write naturally, as if speaking Behavior Matrix | custom_avatar_description | custom_avatar_image_url | custom_script | What Claude Generates | |---------------------------|-------------------------|---------------|----------------------| | Empty | Empty | Empty | Avatar + Script + Slides + Caption | | Provided | Empty | Empty | Script + Slides + Caption | | Empty | Provided | Empty | Script + Slides + Caption | | Empty | Empty | Provided | Avatar + Slides + Caption | | Provided | Provided | Provided | Slides + Caption only | Video Layout The final video uses a picture-in-picture (PiP) layout: Without Background (Full Bleed) ┌─────────────────────────────────┬──────┐ │ │ │ │ │ │ │ SLIDES (78%) │AVATAR│ │ │(22%) │ │ │ │ │ │ │ └─────────────────────────────────┴──────┘ With Background (Margins + Rounded Corners) ┌─────────────────────────────────────────┐ │ BG ┌───────────────────────────┐ ┌────┐ │ │ │ │ │ │ │ │ │ SLIDES (74%) │ │AVA │ │ │ │ │ │TAR │ │ │ │ │ │20% │ │ │ └───────────────────────────┘ └────┘ │ └─────────────────────────────────────────┘ Output Per Video Generated | Asset | Format | Location | |-------|--------|----------| | Final Video | MP4 (1920×1080, 60fps) | Google Drive folder | | Avatar Image | PNG (1024×1536) | tmpfiles.org (temporary) | | Slide Images | PNG (1920×1080) | FAL CDN (temporary) | | Voiceover | MP3 | tmpfiles.org (temporary) | | Metadata | Row entry | Google Sheets | Google Sheets Columns | Column | Description | |--------|-------------| | topic | Video topic | | intention | Content intention used | | brand_name | Brand mentioned | | slide_style | Visual style used | | content_theme | 2-3 word theme summary | | script | Full voiceover script | | caption | Ready-to-post caption with hashtags | | num_slides | Number of slides generated | | video_url | Google Drive link to final video | | avatar_video_url | VEED talking head video URL | | audio_url | Temporary audio URL | | status | done/error | | created_at | Timestamp | Estimated Costs Per Video | Service | Usage | Approximate Cost | |---------|-------|------------------| | Claude Sonnet 4 | 2K tokens | $0.01 | | OpenAI gpt-image-1 | 1 image (1024×1536) | ~$0.04-0.08 | | FAL Flux Pro | 5-7 images (1920×1080) | ~$0.10-0.15 | | ElevenLabs | 100 words | $0.01-0.02 | | VEED/FAL.ai | 1 video render | ~$0.10-0.20 | | Creatomate | 1 video composition | ~$0.10-0.20 | | Total | | ~$0.35-0.65 per video | > Costs vary based on script length and current API pricing. Setup Checklist Step 1: Import Workflow [ ] Import create-ai-screencast-videos-with-veed-and-automated-slides.json into n8n Step 2: Configure API Keys [ ] Open the ⚙️ Workflow Configuration node [ ] Replace all YOUR_*_API_KEY placeholders with your actual API keys [ ] Verify your OpenAI organization at https://platform.openai.com/settings/organization/general Step 3: Connect n8n Credentials [ ] Click on 🎬 Generate Talking Head (VEED) node → Add FAL.ai credential [ ] Click on 📤 Upload to Drive node → Add Google Drive OAuth2 credential [ ] Click on 📝 Log to Sheets node → Add Google Sheets OAuth2 credential Step 4: Configure Storage [ ] Update the 📤 Upload to Drive node with your Google Drive folder URL [ ] Update the 📝 Log to Sheets node with your Google Sheets URL [ ] Create column headers in your Google Sheet (see Output section) Step 5: Customize Content [ ] Update topic, brand_name, target_audience, and trending_hashtags [ ] Choose your preferred slide_style and voice_selection [ ] Optionally configure background, custom_avatar_description, and/or custom_script Step 6: Test [ ] Execute the workflow [ ] Check Google Drive for the output video [ ] Verify metadata was logged to Google Sheets MCP Integration (Optional) This workflow can be exposed to Claude Desktop via n8n's Model Context Protocol (MCP) integration. To enable MCP: Add a Webhook Trigger node to the workflow (in addition to the Manual Trigger) Connect it to the ⚙️ Workflow Configuration node Go to Settings → Instance-level MCP → Enable the workflow Configure Claude Desktop with your n8n MCP server URL Claude Desktop Configuration (Windows): { "mcpServers": { "n8n-mcp": { "command": "supergateway", "args": [ "--streamableHttp", "https://YOUR_N8N_INSTANCE.app.n8n.cloud/mcp-server/http", "--header", "authorization:Bearer YOUR_MCP_ACCESS_TOKEN" ] } } } > Note: Install supergateway globally first: npm install -g supergateway Limitations & Notes Technical Limitations tmpfiles.org**: Temporary file URLs expire after ~1 hour. Final videos are safe in Google Drive. VEED processing**: Takes 1-3 minutes for the talking head. Creatomate processing**: Takes 30-60 seconds for composition. Total workflow time**: ~3-5 minutes per video. Content Considerations Scripts are optimized for 25-40 seconds (TTS-friendly) Avatar images are AI-generated (not real people) Slides are dynamically generated based on script length Slide count: 5-7 slides depending on script duration Best Practices Start simple: Test with default settings before customizing Review scripts: Claude generates good content but review before posting Monitor costs: Check API usage dashboards weekly Use backgrounds: Adding a background image creates a more polished look Match voice to content: Use Spanish voices for Spanish content Troubleshooting | Issue | Solution | |-------|----------| | "Organization must be verified" | Verify at platform.openai.com/settings/organization/general | | VEED authentication error | Re-add FAL.ai credential to VEED node | | Google Drive "no binary field" | Ensure Download Video outputs to binary field | | JSON parse error from Claude | Workflow has fallback content; check Claude node output | | Slides not matching script | Increase seconds_per_slide for fewer slides | | Avatar cut off in PiP | Avatar is designed for right-side placement | | MCP "Server disconnected" | Install supergateway globally: npm install -g supergateway | | Render timeout | Increase wait time in "⏳ Wait for Render" node | Version History | Version | Date | Changes | |---------|------|---------| | 2.1 | Jan 2026 | Renamed workflow, improved documentation with section sticky notes, consolidated setup information | | 2.0 | Jan 2026 | Added dynamic slide count, background options, FAL Flux Pro for slides, improved PiP layout | | 1.0 | Jan 2026 | Initial release with fixed slide count, basic composition | Credits Built with: n8n** - Workflow automation Anthropic Claude** - Script & slide prompt generation OpenAI** - Avatar image generation FAL.ai** - Slide image generation (Flux Pro) ElevenLabs** - Voice synthesis VEED Fabric** - AI lip-sync video rendering Creatomate** - Video composition Google Workspace** - Storage & logging
by David Ashby
Complete MCP server exposing all Oura Tool operations to AI agents. Zero configuration needed - all 4 operations pre-built. ⚡ Quick Setup Need help? Want access to more workflows and even live Q&A sessions with a top verified n8n creator.. All 100% free? Join the community Import this workflow into your n8n instance 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 • MCP Trigger: Serves as your server endpoint for AI agent requests • Tool Nodes: Pre-configured for every Oura Tool operation • AI Expressions: Automatically populate parameters via $fromAI() placeholders • Native Integration: Uses official n8n Oura Tool tool with full error handling 📋 Available Operations (4 total) Every possible Oura Tool operation is included: 🔧 Profile (1 operations) • Get a profile 🔧 Summary (3 operations) • Get activity summary • Get readiness summary • Get sleep summary 🤖 AI Integration Parameter Handling: AI agents automatically provide values for: • Resource IDs and identifiers • Search queries and filters • Content and data payloads • Configuration options Response Format: Native Oura Tool API responses with full data structure Error Handling: Built-in n8n error management and retry logic 💡 Usage Examples Connect this MCP server to any AI agent or workflow: • Claude Desktop: Add MCP server URL to configuration • Custom AI Apps: Use MCP URL as tool endpoint • Other n8n Workflows: Call MCP tools from any workflow • API Integration: Direct HTTP calls to MCP endpoints ✨ Benefits • Complete Coverage: Every Oura Tool operation available • Zero Setup: No parameter mapping or configuration needed • AI-Ready: Built-in $fromAI() expressions for all parameters • Production Ready: Native n8n error handling and logging • Extensible: Easily modify or add custom logic > 🆓 Free for community use! Ready to deploy in under 2 minutes.
by Anandkumar C
🛠 Website Downtime Monitoring with Scheduled Checks and Email Alerts Easily monitor your website uptime and receive instant email alerts when it becomes unreachable — using this no-code template powered by n8n, a free and flexible workflow automation tool. This ready-to-use workflow periodically checks your website’s status and sends an alert email if it’s down. ⚙️ How it Works Schedule Website Check** Triggers the workflow at regular intervals (e.g., every 8 hours by default). Check Website Status** Sends an HTTP GET request to your site. Evaluate Response** Determines if the site is reachable (expects HTTP status 200). Send Downtime Alert** If the site is down, an alert email is sent to the specified address. 🔧 Steps to Customize 1. HTTP Request Node Replace https://yourdomain.com with your actual website URL. 2. Send Email Node Update the To Email and From Email fields with your addresses. 3. Adjust Monitoring Frequency Modify the Schedule Trigger node to run every 5 minutes, hourly, or as needed. ✅ SMTP Configuration Instructions Before emails can be sent, you need to configure SMTP credentials in n8n. 📨 Option 1: Gmail SMTP Setup > Note: Gmail requires App Passwords (not your regular Gmail password) and 2FA to be enabled. Steps: Go to Google Account Security Settings. Enable 2-Step Verification. Go to App Passwords. Create a new app password (choose Mail and Other, name it n8n). In n8n: Go to Credentials → Create New → SMTP. Use the following values: Host: smtp.gmail.com Port: 465 (SSL) or 587 (TLS) User: your Gmail address (e.g., you@gmail.com) Password: the App Password you generated ✉️ Option 2: Generic SMTP Setup Use this if you're using your hosting provider's or business email SMTP server. Example Values: Host**: smtp.yourdomain.com or provider-specific (e.g., smtp.sendgrid.net) Port**: 587 (TLS) or 465 (SSL) User**: your email address (e.g., alerts@yourdomain.com) Password**: your email/SMTP password Secure**: Yes (if using 465 or TLS-enabled 587) Then in the workflow's Send Email node, select the SMTP credentials you created. 📌 Requirements A running instance of n8n (self-hosted or n8n.cloud) SMTP credentials configured in n8n for email delivery Basic familiarity with the n8n visual editor 🧠 Pro Tips Rename Nodes**: Use clear, descriptive names for maintainability. Sticky Notes**: Use stickies on the canvas to help explain logic for others. Expand Alerts**: Integrate with Slack, Discord, or Telegram for multi-channel alerts.
by Octoleo
Overview This workflow automates the backup of all workflows from your system to a Git repository hosted on Gitea. It runs on a scheduled trigger, fetching, encoding, and committing workflow data, ensuring seamless version control and disaster recovery. 📌 Quick Setup: Just update three global variables and configure authentication—no manual exports needed! How It Works (Quick Glance) 1️⃣ Scheduled Execution → Runs automatically at defined intervals. 2️⃣ Fetch Workflows → Uses the API to retrieve all workflows. 3️⃣ Process Workflows → Converts workflow data into a Git-friendly format. 4️⃣ Commit & Push to Git → Saves workflows in a Gitea repository. Setup Steps (⚡ Takes ~5 min) 1️⃣ Set Global Variables Go to the Globals section in the workflow and update: repo.url* → https://your-gitea-instance.com *(Replace with your actual Gitea URL) repo.name* → workflows *(Repository name where backups will be stored) repo.owner* → octoleo *(Gitea account that owns the repository) 📌 These three variables define where the workflows are stored. 2️⃣ Configure Gitea Authentication Go to your Gitea account* → Generate a *Personal Access Token** In the credential manager, create a new Gitea Token with: Name:** Authorization Value:** Bearer YOUR_PERSONAL_ACCESS_TOKEN 📌 Ensure there is a space after Bearer before the token! 3️⃣ Link Credentials to Git Nodes Attach the Gitea credentials to these three Git nodes: GetGitea** → Retrieves existing repository data PutGitea** → Updates workflows PostGitea** → Adds new workflows 4️⃣ Link Credentials for API Requests Add API authentication** in the node that fetches all workflows. 5️⃣ Test & Activate Run the workflow manually** to confirm backups work. Enable the schedule trigger for automation. 📌 The workflow automatically checks for changes before committing updates. Why Use This Workflow? ✅ Automated Backups → No manual exports needed. ✅ Version Control → Easily track workflow changes. ✅ Simple Setup → Just configure globals & credentials. ✅ Secure → Uses token-based authentication. Next Steps 💬 Have questions? Reach out on the forum! 🚀
by Geoffrey Saxena
👤 Who is this for? This workflow is great for n8n users who want to prevent duplicate or overlapping workflow runs. If you're a developer, DevOps engineer, or automation enthusiast managing tasks like database updates, syncing tools, or hitting rate-limited APIs, this one’s for you. 🧩 What problem does this solve? In the real world, automations can get triggered at the same time—whether that’s because of multiple webhook calls, overlapping schedules, or retries. And when two workflows try to do the same thing at once (like updating a record or syncing data), it can cause conflicts, data corruption, or wasted API calls. This workflow helps avoid that problem by using Redis as a lock system, so only one instance runs at a time. Think of it like putting up a “🚧 Workflow in Progress” sign while your logic is running. ⚙️ What this workflow does When the workflow starts, it tries to set a Redis key as a lock with a short expiry. If the lock is free: Your main business logic runs. Once it's done, the lock is cleared. If the lock is already taken (i.e., another run is in progress): The workflow will wait and retry a few times. If a duplicate request shows up while one is already being processed: It skips that duplicate to avoid unnecessary work. You can customize both the timeout and retry logic to match your needs. 🛠️ Setup guide To use this template: You’ll need access to a Redis instance (either self-hosted or managed like Upstash, Redis Cloud, etc). Set up your Redis credentials in the n8n Redis node. Swap out the webhook node with your actual trigger or logic. Adjust the lock timeout to match how long your task typically takes. > 💡 Bonus Tip: Use this pattern wherever you need idempotency or want to avoid duplicate processing. 🧪 Example use case Let’s say you have a workflow that syncs ClickUp tickets to Google Sheets. It runs daily at 9 AM and updates tickets, adds notes, and makes sure nothing is missed. But what if two runs start at the same time? Or someone triggers a manual sync while the scheduled one is still working? By wrapping that whole sync inside this Redis locking template, you can make sure it only runs one at a time, saving your APIs (and your sanity).
by Alex Huy
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Description This n8n workflow automatically scrapes Airbnb listings from a specified location and saves the data to a Google Sheet. It performs pagination to collect listings across multiple pages, extracts detailed information for each property, and organizes the data in a structured format for easy analysis. How it Works The workflow operates through these high-level steps: Search Initialization: Starts with an Airbnb search for a specific location (London) with defined check-in/check-out dates and guest count Pagination Loop: Automatically processes multiple pages of search results using cursor-based pagination Data Extraction: Parses listing information including names, prices, ratings, reviews, and URLs Detail Enhancement: Fetches additional details for each listing (house rules, highlights, descriptions, amenities) Data Storage: Saves all collected data to a Google Sheet with proper formatting Loop Control: Continues until reaching the page limit (2 pages) or no more results are available Setup Steps Prerequisites n8n instance with MCP (Model Context Protocol) support Google Sheets API credentials configured Airbnb MCP client properly set up Configuration Steps Configure MCP Client Set up the Airbnb MCP client with credential ID: Ensure the client has access to airbnb_search and airbnb_listing_details tools Google Sheets Setup Create a Google Sheet with ID: 15IOJquaQ8CBtFilmFTuW8UFijux10NwSVzStyNJ1MsA Configure Google Sheets OAuth2 credentials (ID: 6YhBlgb8cXMN3Ra2) Ensure the sheet has these column headers: "id, name, url, price_per_night, total_price, price_details beds_rooms, rating, reviews, badge, location houseRules, highlights, description, amenities" Search Parameters Location: "London" (can be modified in the "Airbnb Search" node) Adults: 7 Children: 1 Check-in: "2025-08-14" Check-out: "2025-08-17" Page limit: 2 (can be adjusted in the "If1" condition node) Execution Use the manual trigger "When clicking 'Execute workflow'" to start the process Monitor the workflow execution through the n8n interface Check the Google Sheet for populated data after completion Key Features Automatic Pagination: Processes multiple pages without manual intervention Comprehensive Data: Extracts both basic listing info and detailed property information Error Handling: Includes JSON parsing error handling and data validation Batch Processing: Uses split batches for efficient processing of individual listings Real-time Updates: Appends new data to existing Google Sheet records Output Data Structure Each listing contains: Basic info: ID, name, URL, pricing details, room/bed count Ratings: Average rating and review count Location: Latitude and longitude coordinates Enhanced details: House rules, highlights, descriptions, amenities Metadata: Page number, check-in/out dates, badges
by Ventsislav Minev
Automated Email Attachment Organizer Automatically process labeled emails with attachments into organized Google Drive folders Who Is This For? Teams or Individuals** needing to: Automatically sort invoices, receipts, and files. Organize client documents by date. Verify sender emails against a whitelist. Timestamp files to avoid duplicate names. What Does This Workflow Solve? 🕒 Manual Email Sorting: Saves time by automating the organization of email attachments. 📂 Disorganized Cloud Storage: Ensures attachments are neatly stored in Google Drive folders. 📧 Unverified Sender Issues: Filters and validates emails using a whitelist. 🔄 Duplicate Filenames: Uses timestamps to ensure every file name is unique. Setup Guide 1. Pre-Requisites Whitelist Sheet**: Make a copy of the Example Whitelist Sheet Gmail Filter**: Create a filter in Gmail to label emails with attachments. To Create a Gmail Filter: Open your Gmail Inbox. Click the search bar and select "Show search options". Enter your criteria (e.g., type has:attachment). Click "Create filter". Choose "Apply the label: Custom_Label" and save. 2. Credentials Setup Make sure your n8n instance is connected with: Gmail Account**: (via OAuth2) Google Drive Account**: (via OAuth2) Google Sheets** (via OAuth2) 3. Configure Your n8n Workflow Nodes 1. Trigger and Email Retrieval Gmail Trigger**: Setup check interval and filters for emails (i.e. emails labeled with Custom_Label) 2. Whitelist settings Lookup in Sheets**: Searches for a row with the sender email. Configure this node to point to your whitelist spreadsheet containing two columnds: |email|company| 3. File storage location Confirue parent folder to create sub-folders and store files into in the Create Company Folder node Parent Folder dropdown Final Steps Test Your Workflow: Run the workflow to verify emails are processed and files are uploaded correctly. Happy Automating!
by David Ashby
Complete MCP server exposing 3 Background Removal API operations to AI agents. ⚡ Quick Setup Need help? Want access to more workflows and even live Q&A sessions with a top verified n8n creator.. All 100% free? Join the community Import this workflow into your n8n instance Credentials Add Background Removal API 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 Background Removal 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://api.remove.bg/v1.0 • AI Expressions: Automatically populate parameters via $fromAI() placeholders • Native Integration: Returns responses directly to the AI agent 📋 Available Operations (3 total) 🔧 Account (1 endpoints) • GET /account: Fetch Account Balance 🔧 Improve (1 endpoints) • POST /improve: Submit Image for Improvement 🔧 Removebg (1 endpoints) • POST /removebg: Remove Image Background 🤖 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 Background Removal 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.