by Emmanuel Bernard
🎉 Do you want to master AI automation, so you can save time and build cool stuff? I’ve created a welcoming Skool community for non-technical yet resourceful learners. 👉🏻 Join the AI Atelier 👈🏻 This workflow exposes an API endpoint that lets you dynamically replace an image in Google Slides, perfect for automating deck presentations like updating backgrounds or client logos. *📺 Youtube Overview 📺 * Here's how to get started: Step 1: Set Up a Key Identifier in Google Slides Add a unique key identifier to the images you want to replace. Click on the image. Go to Format Options and then Alt Text. Enter your unique identifier, like client_logo or background. Step 2: Use a POST Request to Update the Image Send a POST request to the workflow endpoint with the following parameters in the body: presentation_id: The ID of your Google Slides presentation. You can find it in the URL of your Google presentation: https://docs.google.com/presentation/d/<this-part>/edit) image_key: The unique identifier you created. image_url: The URL of the new image. That's it! The specified image in your Google Slides presentation will be replaced with the new one from the provided URL. This workflow is designed to be flexible, allowing you to use the same identifier across multiple slides and presentations. I hope it streamlines your slide automation process! Example Curl Request to execute: curl --location 'https://workflow.url' \ --form 'presentation_id="google-presentation-id"' \ --form 'image_key="background"' \ --form 'image_url="https://picsum.photos/536/354"' Happy automating! The n8Ninja 🥷
by Audun
Description This workflow reads a sitemap.xml file, extracts all URLs, and allows you to filter out specific types of links—such as PDF files, images, or any other content—based on your needs. Who Is This For? SEO Specialists** looking to analyze specific URLs in their sitemap. Developers** who need to extract links for automated processing. Content Managers** filtering out downloadable assets like PDFs or images. How It Works Fetch sitemap.xml – The workflow reads the sitemap file from a given URL. Extract URLs – Parses all the URLs listed in the sitemap. Filter URLs – Use a simple filter to extract only the links you need (e.g., *.pdf). Export or Process – The filtered list can be sent via email, stored in a database, or used in another workflow. Customization Edit the Set sitemap URL block and edit the sitemapUrl value to the sitemap you want to fetch. Edit the Filter URLs block and edit the filter conditions to meet your needs.
by Vitali
📌 Validate Seatable Webhooks with HMAC SHA256 Authentication This mini workflow is designed to securely validate incoming Seatable webhooks using HMAC SHA256 signature verification. 🔐 What it does: Listens for incoming Seatable webhook requests. Calculates a SHA256 HMAC hash of the raw request body using your shared secret. Compares the computed hash with the x-seatable-signature header (after removing the sha256= prefix). If the hashes match: responds with 200 OK and forwards the request to subsequent nodes. If the hashes don’t match: responds with 403 Forbidden. ⚠️ Important Notes: This workflow is provided as a template and is not intended to work standalone. Please duplicate it and integrate it with your custom logic at the "Add nodes for processing" node. Configuration steps: Set your secret key in the “Calculate sha256” crypto node (replace the placeholder). Adjust the webhook path to suit your environment (or set it to "manual" for testing). Connect your actual logic after the verification step.
by Jaruphat J.
This workflow integrates LINE BOT, AI Agent (GPT), Google Sheets, and Google Drive to enable users to search for file URLs using natural language. The AI Agent extracts the filename from the message, searches for the file in Google Sheets, and returns the corresponding Google Drive URL via LINE BOT. Supports natural language queries (e.g., "Find file 1.pdf for me") AI-powered filename extraction Google Sheets Lookup for file URLs Auto-response via LINE BOT How to Use This Template 1. Download & Import Copy and save the Template Code as a .json file. Go to n8n Editor → Click Import → Upload the file. 2. Update Required Fields Replace YOUR_GOOGLE_SHEET_ID with your actual Google Sheet ID. Replace YOUR_LINE_ACCESS_TOKEN with your LINE BOT Channel Access Token. 3. Activate & Test Click Execute Workflow to test manually. Set Webhook URL in LINE Developer Console. Features of This Template Supports Natural Language Queries (e.g., “Find file 1.pdf for me”) AI-powered filename extraction using OpenAI (GPT-4/3.5) Real-time file lookup in Google Sheets Automatic LINE BOT Response Fully Automated Workflow
by Anthony
Use Case It is very convenient to add expenses via simple chat message. This workflow attempts to do exactly this using AI-powered n8n magic! Send message to a chat, something like "car wash; 59.3 usd; 25 jan 2024" And get a response: Your expense saved, here is the output of save sub-workflow:{"cost":59.3,"descr":"car wash","date":"2024-01-25","msg":"car wash; 59.3 usd; 25 jan 2024"} LLM will smartly parse your message to structured JSON and save the expense as a new row into Google Sheet! Installation 1. Set up Google Sheets: Clone this Sheet: https://docs.google.com/spreadsheets/d/1D0r3tun7LF7Ypb21CmbTKEtn76WE-kaHvBCM5NdgiPU/edit?gid=0#gid=0 (File -> Make a copy) Choose this sheet into "Save expense into Google Sheets" node. 2. Fix sub-workflow dropdown: open "Parse msg and save to Sheets" node (which is an n8n sub-workflow executor tool) and make sure the SAME workflow is chosen in the dropdown. it will allow n8n to locate and call "Workflow Input Trigger" properly when needed. 3. Activate the workflow to make chat work properly. Sent message to chat, something like "car wash; 59.3 usd; 25 jan 2024" you should get a response: Your expense saved, here is the output of save sub-workflow:{"cost":59.3,"descr":"car wash","date":"2024-01-25","msg":"car wash; 59.3 usd; 25 jan 2024"} and new row in Google sheets should be inserted!
by Jonathan
This workflow will take an alert from Syncro, determine if it's an agent_offline_trigger type, then determine if it's a new alert or a close to an existing alert, and then submit it to OpsGenie. New alerts will create a new alert in OpsGenie and resolved alerts will close the alert in OpsGenie. It doesn't require any kind of Google Sheets because OpsGenie allows you to submit a unique ID (known as an alias) along with the alert, which can be referenced later when closing the alert. The trigger type can be changed to suit your needs. You will need to create an API integration in OpsGenie. In Syncro, in addition to setting up the appropriate notification to webhook, you will also need a script that closes the agent_offline_trigger alert and an automated remediation to trigger that script when the asset goes offline (the script is queued and run when the asset comes back online). > This workflow is part of an MSP collection, The original can be found here: https://github.com/bionemesis/n8nsyncro
by Yaron Been
Prunaai Flux Schnell Image Generator Description This is a 3x faster FLUX.1 [schnell] model from Black Forest Labs, optimised with pruna with minimal quality loss. Contact us for more at pruna.ai Overview This n8n workflow integrates with the Replicate API to use the prunaai/flux-schnell model. This powerful AI model can generate high-quality image content based on your inputs. Features Easy integration with Replicate API Automated status checking and result retrieval Support for all model parameters Error handling and retry logic Clean output formatting Parameters Required Parameters prompt** (string): Prompt for generated image Optional Parameters seed** (integer, default: None): Random seed. Set for reproducible generation megapixels** (string, default: 1): Approximate number of megapixels for generated image speed_mode** (string, default: Juiced 🔥 (default)): Run faster predictions with model optimized for speed num_outputs** (integer, default: 1): Number of outputs to generate aspect_ratio** (string, default: 1:1): Aspect ratio of the output image output_format** (string, default: jpg): Format of the output images output_quality** (integer, default: 80): Quality when saving the output images, from 0 to 100. 100 is best quality, 0 is lowest quality. Not relevant for .png outputs num_inference_steps** (integer, default: 4): Number of denoising steps. 4 is recommended, and lower number of steps produce lower quality outputs, faster. How to Use Set up your Replicate API key in the workflow Configure the required parameters for your use case Run the workflow to generate image content Access the generated output from the final node API Reference Model: prunaai/flux-schnell API Endpoint: https://api.replicate.com/v1/predictions Requirements Replicate API key n8n instance Basic understanding of image generation parameters
by Harshil Agrawal
This workflow automatically monitors the functionality of a factory. The workflow logs machine data coming from factory sensors in a CrateDB database, generates an incident report in PagerDuty, and notifies the responsible staff members when the temperature of a machine crosses the threshold value. This workflow builds on a workflow that generates factory data. Read more about this use case and how to build both workflows with step-by-step instructions in the blog post How to automate your factory's incident reporting. Prerequisites A PagerDuty account and credentials AMQP, an ActiveMQ connection, and credentials A CrateDB instance running locally or on a server, and credentials. Nodes AMQP Trigger node starts the workflow. IF node filters sensor values higher than 50°C. PagerDuty node creates an incident in the account. Set nodes set the required incident information and sensor data, respectively. CrateDB nodes ingest the information data and machine sensor data, respectively. Function node converts degrees from Celsius to Fahrenheit.
by Anthony
This n8n workflow automates the process of researching companies by gathering relevant data such as traffic volume, foundation details, funding information, founders, and more. The workflow leverages the ProspectLens API, which is particularly useful for researching companies commonly found on Crunchbase and LinkedIn. ProspectLens is an API that provides very detailed company data. All you need to do is supply the company's domain name. You can obtain your ProspectLens API key here: https://apiroad.net/marketplace/apis/prospectlens In n8n, create a new "HTTP Header" credential. Set x-apiroad-key as the "Name" and enter your APIRoad API key as the "Value". Use this credential in the HTTP Request node of the workflow.
by Peter
Store a key with a value in a local json file. Multiple keys could be saved in a single file. Related workflow: GetKey Create a subfolder in your n8n homedir: /home/node/.n8n/local-files. In docker look at the data path and create a subfolder local-files. Set the correct access rights chmod 1000.1000 local-files. Put the workflow code in a new workflow named WriteKey. Create another workflow with a function item: return { file: '/4711.json', // 4711 should be your workflow id key: 'MyKey', value: 'MyValue' } Pipe the function item to an Execution Workflow that calls the WriteKey workflow. It would be nice if we could get someday a shiny built-in n8n node that does the job. :)
by Zacharia Kimotho
How to scrap emails from websites This workflow shows how to quickly build an Email scraping API using n8n. Email marketing is at the core of most marketing strategies, be it content marketing, sales, etc. As such, being able to find contacts in bulk for your business on a large scale is key. There are available tools available in the market that can do this, but most are premium; why not build a custom one with n8n? Usage The workflow gets the data from a website and performs an extraction based on the date around on the website Copy the webhook URL to your browser Add a query parameter eg ?Website=https://mailsafi.com . This should give you a URL like this {{$n8nhostingurl/webhook/ea568868-5770-4b2a-8893-700b344c995e?Website=https://mailsafi.com Click on the URL and wait for the extracted email to be displayed. This will return the email address on the website, or if there is no email, the response will be "workflow successfully executed." Make sure to use HTTP:// for your domains Otherwise, you may get an error.
by JPres
n8n Template: Store Chat Data in Supabase PostgreSQL for WhatsApp/Slack Integration This n8n template captures chat data (like user ID, name, or address) and saves it to a Supabase PostgreSQL database. It’s built for testing now but designed to work with WhatsApp, Slack, or similar platforms later, where chat inputs aren’t predefined. Guide with images can be found on: https://github.com/JimPresting/Supabase-n8n-Self-Hosted-Integration/ Step 1: Configure Firewall Rules in Your VPC Network To let your n8n instance talk to Supabase, add a firewall rule in your VPC network settings (e.g., Google Cloud, AWS, etc.). Go to VPC Network settings. Add a new firewall rule: Name: allow-postgres-outbound Direction: Egress (outbound traffic) Destination Filter: IPv4 ranges Destination IPv4 Ranges: 0.0.0.0/0 (allows all; restrict to Supabase IPs for security) Source Filter: Pick IPv4 ranges and add the n8n VM’s IP range, or Pick None if any VM can connect Protocols and Ports: Protocol: TCP Port: 5432 (default PostgreSQL port) Save the rule. Step 2: Get the Supabase Connection String Log into your Supabase Dashboard. Go to your project, click the Connect button in the header. Copy the PostgreSQL connection string: postgresql://postgres.fheraruzdahjd:[YOUR-PASSWORD]@aws-0-eu-central-1.pooler.supabase.com:6543/postgres Replace [YOUR-PASSWORD] with your Supabase account password (no brackets) and replace the string before that with your actual unique identifier. Note the port (6543 or 5432)—use what’s in the string. Step 3: Set Up the n8n Workflow This workflow takes chat data, maps it to variables, and stores it in Supabase. It’s built to handle messy chat inputs from platforms like WhatsApp or Slack in production. Workflow Steps Trigger Node: "When clicking 'Test workflow'" (manual trigger). For now, it’s manual. In production, this will be a WhatsApp or Slack message trigger, which won’t have a fixed input format. Set Node: "Set sample input variables (manual)". This node sets variables like id, name, address to mimic chat data. Why? Chat platforms send unstructured data (e.g., a message with a user’s name or address). We map it to variables so we can store it properly. The id will be something unique like a phone number, account ID, or account number. Sample Agent Node: Uses a model (e.g., GeminiFlash2.0 but doesn't matter). This is a placeholder to process data (e.g., clean or validate it) before saving. You can skip or customize it. Supabase PostgreSQL Node: "Supabase PostgreSQL Database". Connects to Supabase using the connection string from Step 2. Saves the variables (id, name, address) to a table. Why store extra fields? The id (like a phone number or account ID) is the key. Extra fields like name or address let us keep all user info in one place for later use (e.g., analytics or replies). Output Node: "Update additional values e.g., name, address". Confirms the data is saved. In production, this could send a reply to the chat platform. Why This Design? Handles Unstructured Chat Data**: WhatsApp or Slack messages don’t have a fixed format. The "Set" node lets us map any incoming data (e.g., id, name) to our database fields. Scales for Production**: Using id as a key (phone number, account ID, etc.) with extra fields like name makes this workflow flexible for many use cases, like user profiles or support logs. Future-Ready**: It’s built to swap the manual trigger for a real chat platform trigger without breaking. Step 4: Configure the Supabase PostgreSQL Node In the n8n workflow, set up the Supabase PostgreSQL node: Host: aws-0-eu-central-1.pooler.supabase.com (from the connection string) Port: 6543 (or what’s in the connection string) Database: postgres User: postgres.fhspudlibstmpgwqmumo (from the connection string) Password: Your Supabase password SSL: Enable (Supabase usually requires it) Set the node to Insert or Update: Map id to a unique column in your Supabase table (e.g., phone number, account ID). Map fields like name, address to their columns. Test the workflow to confirm data saves correctly. Security Tips Limit Firewall Rules**: Don’t use 0.0.0.0/0. Find Supabase’s IP ranges in their docs and use those. Hide Passwords**: Store your Supabase password in n8n’s environment variables. Use SSL**: Enable SSL in the n8n node for secure data transfer.