by Omer Fayyaz
Automatically discover and extract article URLs from any website using AI to identify valid content links while filtering out navigation, category pages, and irrelevant content—perfect for building content pipelines, news aggregators, and research databases. What Makes This Different: AI-Powered Intelligence** - Uses GPT-5-mini to understand webpage context and identify actual articles vs navigation pages, eliminating false positives Browser Spoofing** - Includes realistic User-Agent headers and request patterns to avoid bot detection on publisher sites Smart URL Normalization* - Automatically strips tracking parameters (utm_, fbclid, etc.), removes duplicates, and standardizes URLs Source Categorization** - AI assigns logical source names based on domain and content type for easy filtering Rate Limiting Built-In** - Configurable delays between requests prevent IP blocking and respect website resources Deduplication on Save** - Google Sheets append-or-update pattern ensures no duplicate URLs in your database Key Benefits of AI-Powered Content Discovery: Save 10+ Hours Weekly** - Automate manual link hunting across dozens of publisher sites Higher Quality Results** - AI filters out 95%+ of junk links (nav pages, categories, footers) that rule-based scrapers miss Scale Effortlessly** - Add new seed URLs to your sheet and the same workflow handles any website structure Industry Agnostic** - Works for news, blogs, research papers, product pages—any content type Always Up-to-Date** - Schedule daily runs to catch new content as it's published Full Audit Trail** - Track discovered URLs with timestamps and sources in Google Sheets Who's it for This template is designed for content marketers, SEO professionals, researchers, media monitors, and anyone who needs to aggregate content from multiple sources. It's perfect for organizations that need to track competitor blogs, curate industry news, build research databases, monitor brand mentions, or aggregate content for newsletters without manually checking dozens of websites daily or writing complex scraping rules for each source. How it works / What it does This workflow creates an intelligent content discovery pipeline that automatically finds and extracts article URLs from any webpage. The system: Reads Seed URLs - Pulls a list of webpages to crawl from your Google Sheets (blog indexes, news feeds, publication homepages) Fetches with Stealth - Downloads each webpage's HTML using browser-like headers to avoid bot detection Converts for AI - Transforms messy HTML into clean Markdown that the AI can easily process AI Extraction - GPT-5-mini analyzes the content and identifies valid article URLs while filtering out navigation, categories, and junk links Normalizes & Saves - Cleans URLs (removes tracking params), deduplicates, and saves to Google Sheets with source tracking Key Innovation: Context-Aware Link Filtering - Unlike traditional scrapers that rely on CSS selectors or URL patterns (which break when sites update), the AI understands the semantic difference between an article link and a navigation link. It reads the page like a human would, identifying content worth following regardless of the website's structure. How to set up 1. Create Your Google Sheets Database Create a new Google Spreadsheet with two sheets: "Seed URLs" - Add column URL with webpages to crawl (blog homepages, news feeds, etc.) "Discovered URLs" - Add columns: URL, Source, Status, Discovered At Add 3-5 seed URLs to start (e.g., https://abc.com/, https://news.xyz.com/) 2. Connect Your Credentials Google Sheets**: Click the "Read Seed URLs" and "Save Discovered URLs" nodes → Select your Google Sheets account OpenAI**: Click the "OpenAI GPT-5-mini" node → Add your OpenAI API key Select your spreadsheet and sheet names in both Google Sheets nodes 3. Customize the AI Prompt (Optional) Open the "AI URL Extractor" node Modify the system message to add industry-specific rules: // Example: Add to system message for tech blogs For tech sites, also extract: Tutorial and guide URLs Product announcement pages Changelog and release notes Adjust source naming conventions to match your taxonomy 4. Test Your Configuration Click "Test Workflow" or use the Manual Trigger Check the execution to verify: Seed URLs are being read correctly HTML is fetched successfully (check for 200 status) AI returns valid JSON array of URLs URLs are saved to your output sheet Review the "Discovered URLs" sheet for results 5. Schedule and Monitor Adjust the Schedule Trigger (default: daily at 6 AM) Enable the workflow to run automatically Monitor execution logs for errors: Rate limiting: Increase wait time if sites block you Empty results: Check if seed URLs have changed structure AI errors: Review AI output in execution data Set up error notifications via email or Slack (add nodes after Completion Summary) Requirements Google Sheets Account** - OAuth2 connection for reading seed URLs and saving results OpenAI API Key** - For GPT-5-mini (or swap for any LangChain-compatible LLM)
by WeblineIndia
Automated Failed Login Detection with Jira Security Tasks, Slack Notifications Webhook: Failed Login Attempts → Jira Security Case → Slack Warnings This n8n workflow monitors failed login attempts from any application, normalizes incoming data, detects repeated attempts within a configurable time window and automatically: Sends detailed alerts to Slack, Creates Jira security tasks (single or grouped based on repetition), Logs all failed login attempts into a Notion database. It ensures fast, structured and automated responses to potential account compromise or brute-force attempts while maintaining persistent records. Quick Implementation Steps Import this JSON workflow into n8n. Connect your application to the failed-login webhook endpoint. Add Jira Cloud API credentials. Add Slack API credentials. Add Notion API credentials and configure the database for storing login attempts. Enable the workflow — done! What It Does Receives Failed Login Data Accepts POST requests containing failed login information. Normalizes the data, ensuring consistent fields: username, ip, timestamp and error. Validates Input Checks for missing username or IP. Sends a Slack alert if any required field is missing. Detects Multiple Attempts Uses a sliding time window (default: 5 minutes) to detect multiple failed login attempts from the same username + IP. Single attempts → standard Jira task + Slack notification. Multiple attempts → grouped Jira task + detailed Slack notification. Logs Attempts in Notion Records all failed login events into a Notion database with fields: Username, IP, Total Attempts, Attempt List, Attempt Type. Formats Slack Alerts Single attempt → lightweight notification. Multiple attempts → summary including timestamps, errors, total attempts, and Jira ticket link. Who’s It For This workflow is ideal for: Security teams monitoring authentication logs. DevOps/SRE teams maintaining infrastructure access logs. SaaS platform teams with high login traffic. Organizations aiming to automate breach detection. Teams using Jira + Slack + Notion + n8n for incident workflows. Requirements n8n (Self-Hosted or Cloud). Your application must POST failed login data to the webhook. Jira Software Cloud credentials (Email, API Token, Domain). Slack Bot Token with message-posting permissions. Notion API credentials with access to a database. Basic understanding of your login event sources. How It Works Webhook Trigger: Workflow starts when a failed-login event is sent to the failed-login webhook. Normalization: Converts single objects or arrays into a uniform format. Ensures username, IP, timestamp and error are present. Prepares a logMessage for Slack and Jira nodes. Validation: IF node checks whether username and IP exist. If missing → Slack alert for missing information. Multiple Attempt Detection: Function node detects repeated login attempts within a 5-minute sliding window. Flags attempts as multiple: true or false. Branching: Multiple attempts → build summary, create Jira ticket, format Slack message, store in Notion. Single attempts → create Jira ticket, format Slack message, store in Notion. Slack Alerts: Single attempt → concise message Multiple attempts → detailed summary with timestamps and Jira ticket link Notion Logging: Stores username, IP, total attempts, attempt list, attempt type in a dedicated database for recordkeeping. How To Set Up Import Workflow → Workflows → Import from File in n8n. Webhook Setup → copy the URL from Faield Login Trigger node and integrate with your application. Jira Credentials → connect your Jira account to both Jira nodes and configure project/issue type. Slack Credentials → connect your Slack Bot and select the alert channel. Notion Credentials → connect your Notion account and select the database for storing login attempts. Test the Workflow → send sample events: missing fields, single attempts, multiple attempts. Enable Workflow → turn on workflow once testing passes. Logic Overview | Step Node | Description | |---------------------------------|-----------------------------------------------| | Normalize input | Normalize Login Event — Ensures each event has required fields and prepares a logMessage. | | Validate fields | Check Username & IP present — IF node → alerts Slack if data is incomplete. | | Detect repeats | Detect Multiple Attempts — Finds multiple attempts within a 5-minute window; sets multiple flag. | | Multiple attempts | IF - Multiple Attempts + Build Multi-Attempt Summary — Prepares grouped summary for Slack & Jira. | | Single attempt | Create Ticket - Single Attempt — Creates Jira task & Slack alert for one-off events. | | Multiple attempt ticket | Create Ticket - Multiple Attempts — Creates detailed Jira task. | | Slack alert formatting | Format Fields For Single/Multiple Attempt — Prepares structured message for Slack. | | Slack alert delivery | Slack Alert - Single/Multiple Attempts — Posts alert in selected Slack channel. | | Notion logging | Login Attempts Data Store in DB — Stores structured attempt data in Notion database. | Customization Options Webhook Node** → adjust endpoint path for your application. Normalization Function** → add fields such as device, OS, location or user-agent. Multiple Attempt Logic** → change the sliding window duration or repetition threshold. Jira Nodes** → modify issue type, labels or project. Slack Nodes** → adjust markdown formatting, channel routing or severity-based channels. Notion Node** → add or modify database fields to store additional context. Optional Enhancements: Geo-IP lookup for country/city info. Automatic IP blocking via firewall or WAF. User notification for suspicious login attempts. Database logging in MySQL/Postgres/MongoDB. Threat intelligence enrichment (e.g., AbuseIPDB). Use Case Examples Detect brute-force attacks targeting user accounts. Identify credential stuffing across multiple users. Monitor admin portal access failures with Jira task creation. Alert security teams instantly when login attempts originate from unusual locations. Centralize failed login monitoring across multiple applications with Notion logging. Troubleshooting Guide | Issue | Possible Cause | Solution | |-------------------------------|---------------------------------------------------|-------------------------------------------------------------| | Workflow not receiving data | Webhook misconfigured | Verify webhook URL & POST payload format | | Jira ticket creation fails | Invalid credentials or insufficient permissions | Update Jira API token and project access | | Slack alert not sent | Incorrect channel ID or missing bot scopes | Fix Slack credentials and permissions | | Multiple attempts not detected| Sliding window logic misaligned | Adjust Detect Multiple Attempts node code | | Notion logging fails | Incorrect database ID or missing credentials | Update Notion node credentials and database configuration | | Errors in normalization | Payload format mismatch | Update Normalize Login Event function code | Need Help? If you need help setting up, customizing or extending this workflow, WeblineIndia can assist with full n8n development, workflow automation, security event processing and custom integrations.
by Khairul Muhtadin
Automate your B2B lead generation by scraping Google Maps, generating AI business summaries, and extracting hidden contact emails from websites, all triggered via Telegram. Why Use This Workflow? Time Savings: Reduces lead research time from 4 hours of manual searching to 5 minutes of automated execution per 50 leads. Cost Reduction: Replaces expensive monthly lead database subscriptions with a pay-as-you-go model using Apify and OpenAI. Error Prevention: Uses AI to deduplicate results and ensure company summaries are professional and consistent for your CRM. Scalability: Allows you to trigger massive scraping tasks from your mobile phone via Telegram while the backend handles the heavy lifting. Ideal For Sales Development Reps (SDRs):** Rapidly building targeted lists of local businesses for cold outreach or door-knocking campaigns. Marketing Agencies:** Identifying new businesses in specific sectors (e.g., "Dentists in Paris") to offer SEO or advertising services. Real Estate Investors:** Finding specific commercial properties or business types in a geographic area to identify investment opportunities. How It Works Trigger: The workflow starts when you send a message to your Telegram bot in the format: Sector; Limit; MapsURL. Data Collection: n8n parses these parameters and triggers an Apify Actor to scrape Google Maps for business details. Processing: The workflow retrieves the results, removes duplicate entries, and begins a loop to process each business. Intelligence Layer (Summary): OpenAI analyzes the business data to create a natural, human-like summary of the company. Enrichment (Email Hunting): If the business has a website, Jina AI fetches the page content, and OpenAI extracts the most authoritative contact email. Output & Delivery: Core data is upserted into Google Sheets, and the email is updated once found. A "DONE" notification is sent to Telegram upon completion. Setup Guide Prerequisites | Requirement | Type | Purpose | |-------------|------|---------| | n8n instance | Essential | Workflow execution and logic | | Apify Account | Essential | Scrapes Google Maps data | | OpenAI API Key | Essential | Generates summaries and extracts emails | | Google Sheets | Essential | Data storage and lead management | | Telegram Bot | Essential | User interface for triggering searches | | Jina AI Key | Essential | Converts websites to LLM-friendly Markdown | Installation Steps Import the JSON file into your n8n instance. Configure credentials: Telegram: Create a bot via @BotFather and add your token to the Telegram nodes. Apify: Provide your API token to the "Run Maps Scraper" and "Fetch Dataset" nodes. OpenAI: Add your API key to the enrichment nodes. Google Sheets: Connect your Google account and select your target Spreadsheet ID. Set up the Sheet: Ensure your Google Sheet has headers matching the "Upsert" node (Title, Email, Category, Website, etc.). Test execution: Send a message like Coffee Shops; 5; https://www.google.com/maps/search/coffee+shops+london to your bot. Technical Details Core Nodes | Node | Purpose | Key Configuration | |------|---------|-------------------| | Telegram Trigger | Captures user input | Listens for /message updates | | Apify Node | Executes Maps Scraper | Uses nwua9Gu5YrADL7ZDj actor ID | | OpenAI Node | AI Analysis | Configured for JSON output (Summary) and extraction (Email) | | Jina AI | Web Scraping | Converts HTML to Markdown for AI readability | | Google Sheets | Database | Uses Append or Update based on the business Title | Workflow Logic The workflow utilizes a Split In Batches loop to ensure stability. It first performs a "shallow" save of business details (name, phone, address) and then attempts a "deep" enrichment only if a website URL is detected. This two-stage approach ensures you don't lose data if a website crawl fails. Customization Options Basic Adjustments: Rate Limit:** Adjust the "Wait" node duration (default 2s) to comply with Google Sheets or API limits. Language:** Modify the OpenAI prompt to generate summaries in your preferred language (e.g., English, French, Spanish). Advanced Enhancements: CRM Integration:** Replace Google Sheets with HubSpot or Pipedrive for direct lead injection. Slack Notifications:** Send the final lead list or business summary directly to a sales channel. Auto-Emailer:** Add a Gmail/Outlook node to automatically send an introductory email once a lead is found. Troubleshooting Common Issues: | Problem | Cause | Solution | |---------|-------|----------| | Empty Email column | Website protected by bot-blockers | Try a different scraper or use a proxy in Jina AI | | Apify Timeout | Scraping limit set too high | Lower the "limit" parameter in your Telegram message | | 429 Errors | Google Sheets rate limits | Increase the duration in the "Wait Rate Limit" node | Use Case Examples Scenario 1: Local SEO Agency Challenge: Finding local contractors with poor reviews but high revenue potential. Solution: Use the workflow to scrape "Plumbers" in a city, use AI to summarize their online presence, and collect emails. Result: A curated list of 100 leads with contact info and a "Pitch" summary generated in minutes. Scenario 2: SaaS Cold Outreach Challenge: Getting the direct email of a business owner for a new booking software. Solution: Trigger the scraper via Telegram while in the field. The workflow extracts the "authoritative" email (manager/owner) from their site. Result: Accurate, high-intent lead data delivered directly to a master spreadsheet for the sales team. Created by: Khaisa Studio Category: Marketing | Tags: Lead Gen, AI, Google Maps, Telegram Need custom workflows? Contact us Connect with the creator: Portfolio • Workflows • LinkedIn • Medium • Threads
by Jitesh Dugar
Schedule social media posts from local files using UploadToURL, OpenAI, and Buffer Marketing teams often have design files sitting locally — campaign images, product videos, event graphics — that need to be published on social media. The usual process means downloading files, switching apps, uploading to each platform separately, and writing captions by hand. This workflow removes those steps. Send a file link or binary upload to the webhook. UploadToURL hosts it instantly and returns a clean public URL. OpenAI GPT-4.1 mini reads the filename and context to generate a platform-specific caption, hashtags, alt text, and a scroll-stopping hook. A Switch node routes to the correct Buffer profile — Twitter/X, Instagram, or LinkedIn — and the post is scheduled at the AI-suggested best time. What this workflow does Receives a file URL or binary upload via webhook along with platform, tone, and brand preferences Validates the payload — checks the platform, detects content type from the file extension, cleans the filename into readable words for the AI prompt Uploads the file to UploadToURL and retrieves a permanent public link Sends the link and context to OpenAI, which returns a structured JSON caption with hashtags, alt text, a hook line, and a UTC posting time Routes to the correct Buffer profile based on the platform field Schedules the post and returns a confirmation with the schedule ID, caption, hashtags, and estimated engagement Who this is for Marketing agencies** managing multiple brand accounts who need to go from a finished design file to a scheduled post without switching tools Solo creators** who want to publish immediately after finishing a piece of content without manually uploading to each platform E-commerce teams** who want to trigger social posts whenever new product photos are ready Setup Install the UploadToURL community node: n8n-nodes-uploadtourl Add credentials for UploadToURL API, OpenAI API, and Buffer (as HTTP Header Auth with your Buffer access token) Set three workflow variables: BUFFER_PROFILE_TWITTER, BUFFER_PROFILE_INSTAGRAM, BUFFER_PROFILE_LINKEDIN — find these IDs in your Buffer account under each profile's settings Activate and copy the webhook URL Webhook payload { "fileUrl": "https://cdn.example.com/summer-campaign.jpg", "filename": "summer-campaign.jpg", "platform": "instagram", "tone": "casual", "brand": "Acme Studio", "hashtags": true } To upload a binary file instead, send as multipart/form-data with field name file and omit fileUrl. Pass scheduleTime as an ISO 8601 string to override the AI scheduling suggestion. Notes The OpenAI node uses gpt-4.1-mini with response_format: json_object to guarantee structured output — no post-processing of freetext required Caption length is validated against per-platform limits before scheduling (Twitter: 280, Instagram: 2200, LinkedIn: 3000) To add Facebook or TikTok, add a new output on the Switch node and duplicate one of the Buffer HTTP request nodes The error handler returns a structured JSON 400 response so calling apps receive actionable feedback without needing to check n8n logs
by Davide
This workflow automates the full pipeline for extending short Viral UGC-style videos using AI, merging them, and finally publishing the output to cloud storage or social media platforms (TikTok, Instagram, Facebook, Linkedin, X, and YouTube). It integrates multiple external APIs (Fal.ai, Runpod/Kling 2.1, Postiz, Upload-Post, Google Sheets, Google Drive) to create a smooth end-to-end video-generation system. Key Advantages 1. ✅ Full End-to-End Automation The workflow covers the entire process: Read inputs Generate extended clips Merge them Save outputs Publish on social platforms No manual intervention required after starting the workflow. 2. ✅ AI-Powered Video Extension (Kling 2.1 or other models like Veo 3.1 or Sora 2) The system uses Kling 2.1 (Kling 2.1 or other models like Veo 3.1 or Sora 2) to extend short videos realistically, enabling: Longer UGC clips Consistent cinematic style Smooth transitions based on extracted frames Ideal for viral social media content. 3. ✅ Smart Integration with Google Sheets The spreadsheet becomes a control panel: Add new videos to extend Control merging Automatically store URLs and results This makes the system user-friendly even for non-technical operators. 4. ✅ Robust Asynchronous Job Handling Every external API includes: Status checks Waiting loops Error prevention steps This ensures reliability when working with long-running AI processes. 5. ✅ Automatic Merging and Publishing Once videos are generated, the workflow: Merges them in the correct order Uploads them to Google Drive Posts them automatically to selected social platforms This drastically reduces time required for content production and distribution. 6. ✅ Highly Scalable and Customizable Because it is built in n8n: You can add more APIs You can add editing steps You can connect custom triggers (e.g., Airtable, webhooks, Shopify, etc.) You can fully automate your video-production pipeline How It Works This workflow automates the process of extending and merging videos using AI-generated content, then publishing the final result to social media platforms. The process consists of five main stages: Data Input & Frame Extraction** The workflow starts by reading video and prompt data from a Google Sheet. It extracts the last frame from the input video using Fal.ai’s FFmpeg API. AI Video Generation** The extracted frame is sent to RunPod’s Kling 2.1 AI model to generate a new video clip based on the provided prompt and desired duration. Video Merging** Once the AI-generated clip is ready, it is merged with the original video using Fal.ai’s FFmpeg merge functionality to create a seamless extended video. Storage & Publishing** The final merged video is uploaded to Google Drive and simultaneously distributed to social media platforms via: YouTube (via Upload-Post) TikTok, Instagram, Facebook, X, and YouTube (via Postiz) Progress Tracking** Throughout the process, the Google Sheet is updated with the status, video URLs, and completion markers to keep track of each step. Set Up Steps To configure this workflow, follow these steps: Prepare the Google Sheet Use the provided template or clone this sheet. Fill in the START (video URL), PROMPT (AI prompt), and DURATION (in seconds) columns. Configure Fal.ai API for Frame Extraction & Merging Create an account at fal.ai. Obtain your API key. In the nodes “Extract last frame”, “Merge Videos”, and related status nodes, set up HTTP Header Authentication with: Name: Authorization Value: Key YOUR_API_KEY Set Up RunPod API for AI Video Generation Sign up at RunPod and get your API key. In the “Generate clip” node, configure HTTP Bearer Authentication with: Value: Bearer YOUR_RUNPOD_API_KEY Configure Social Media Publishing For YouTube: Create a free account at Upload-Post and set your YOUR_USERNAME and TITLE in the “Upload to Youtube” node. For Multi-Platform Posting: Sign up at Postiz and configure your Channel_ID and TITLE in the “Upload to Social” node. Connect Google Services Set up Google Sheets and Google Drive OAuth2 credentials in their respective nodes to allow reading from and writing to the sheet and uploading videos to Drive. Execute the Workflow Once all credentials are set, trigger the workflow manually via the “When clicking ‘Execute workflow’” node. The process will run autonomously, updating the sheet and publishing the final video upon completion. 👉 Subscribe to my new YouTube channel. Here I’ll share videos and Shorts with practical tutorials and FREE templates for n8n. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by ConnectSafely
Send AI-personalized LinkedIn connection requests from Google Sheets using ConnectSafely.AI API Who's it for This workflow is built for sales professionals, recruiters, founders, and growth marketers who want to scale their LinkedIn outreach without sacrificing personalization. Perfect for anyone tired of sending generic connection requests that get ignored, or manually crafting individual messages for hundreds of prospects. If you're running ABM campaigns, building a sales pipeline, recruiting talent, or expanding your professional network, this automation handles the heavy lifting while keeping your outreach authentic and human. How it works The workflow automates personalized LinkedIn connection requests by combining Google Sheets prospect tracking with AI-powered message generation through ConnectSafely.ai's API. The process flow: Reads pending prospects from your Google Sheet Immediately marks them "IN PROGRESS" to prevent duplicate sends Fetches complete LinkedIn profile data via ConnectSafely.ai API Generates a personalized, authentic message using Google Gemini AI Sends the connection request with your custom message Updates your sheet with "DONE" status and stores the message sent Random delays between requests mimic human behavior and maintain LinkedIn compliance. Watch the complete step-by-step implementation guide: Setup steps Step 1: Prepare Your Google Sheet Structure your Google Sheet with the following columns: | Column Name | Description | Required | |------------|-------------|----------| | First Name | Contact's first name | Optional | | LinkedIn Url | LinkedIn profile URL or username | Yes | | Tagline | Contact's headline/title | Optional | | Status | Processing status (PENDING/IN PROGRESS/DONE) | Yes | | Message | Stores the AI-generated message sent | Yes | Sample Data Format: First Name: John LinkedIn Url: https://www.linkedin.com/in/johndoe Tagline: VP of Sales at TechCorp Status: PENDING Message: (left empty - will be filled by workflow) Pro Tip: Use LinkedIn Sales Navigator export or a prospecting tool to populate your sheet with qualified leads. Step 2: Configure ConnectSafely.ai API Credentials Obtain API Key Log into ConnectSafely.ai Dashboard Navigate to Settings → API Keys Generate a new API key Add Bearer Auth Credential in n8n Go to Credentials in n8n Click Add Credential → Header Auth or Bearer Auth Paste your ConnectSafely.ai API key Save the credential This credential is used by both the "Fetch LinkedIn Profile" and "Send Connection Request" HTTP nodes. Step 3: Configure Google Sheets Integration 3.1 Connect Google Sheets Account Go to Credentials → Add Credential → Google Sheets OAuth2 Follow the OAuth flow to connect your Google account Grant access to Google Sheets 3.2 Configure "Get Pending Prospect" Node Open the Get Pending Prospect node Select your Google Sheets credential Enter your Document ID (from the sheet URL) Select the Sheet Name Add a filter: Lookup Column: Status Lookup Value: PENDING Enable Return First Match Only under Options 3.3 Configure "Mark as In Progress" Node Open the Mark as In Progress node Select the same document and sheet Configure column mapping: Matching Column: row_number Status: IN PROGRESS 3.4 Configure "Mark as Complete" Node Open the Mark as Complete node Select the same document and sheet Configure column mapping: Matching Column: row_number Status: DONE Message: {{ $('Generate Personalized Message').item.json.message }} Step 4: Configure Google Gemini AI Get Gemini API Key Go to Google AI Studio Create or select a project Generate an API key Add Gemini Credential in n8n Go to Credentials → Add Credential → Google Gemini (PaLM) API Paste your API key Save the credential Connect to Google Gemini Node Open the Google Gemini node Select your Gemini credential Step 5: Customize the AI Prompt The Generate Personalized Message node contains the system prompt that controls how messages are written. Customize it for your personal brand: Open the Generate Personalized Message node Find the System Message in Options Replace the placeholder text: MY CONTEXT: [CUSTOMIZE THIS: Add your name, role, and what you're looking for in connections] With your actual information, for example: MY CONTEXT: I'm Sarah, founder of a B2B SaaS startup. I'm interested in connecting with other founders, VCs, and sales leaders to exchange ideas and explore potential partnerships. Update the sign-off instruction from "- [YOUR NAME]" to your actual name Step 6: Test the Workflow Add a test prospect to your Google Sheet with Status: PENDING Click the Manual Trigger (for testing) node Click Test Workflow Verify: Profile data is fetched correctly AI generates an appropriate message Connection request is sent Sheet updates to DONE with the message stored Customization Message Personalization Edit the system prompt in the Generate Personalized Message node to adjust: Tone**: Formal, casual, or industry-specific language Length**: Modify character limits (LinkedIn allows up to 300 characters) Focus**: Emphasize mutual connections, shared interests, or achievements Sign-off**: Change the signature format to match your brand Timing Adjustments Schedule Trigger: Currently set to run every minute. Adjust the interval in the **Run Every Minute node Random Delay: The **Random Delay (1-5 min) node adds 1-5 minutes of random wait time. Modify the formula {{ Math.floor(Math.random() * 4) + 1 }} to change the range Rate Limiting Best Practices Start with 10-20 connection requests per day Gradually increase over 2-3 weeks Never exceed 100 requests per day Consider pausing on weekends Use Cases Sales Prospecting**: Connect with decision-makers at target accounts with personalized outreach Recruiting**: Reach out to passive candidates with messages that reference their specific experience Founder Networking**: Build relationships with fellow entrepreneurs, investors, and advisors Event Follow-up**: Send personalized connection requests to conference attendees and speakers Partnership Development**: Connect with potential partners by referencing their company achievements Troubleshooting Common Issues & Solutions Issue: AI generating messages over 300 characters Solution**: Add explicit character count requirement in the system prompt; the current prompt specifies 200-250 characters Issue: "Profile not found" errors from ConnectSafely.ai Solution**: Ensure LinkedIn URLs are complete (include https://www.linkedin.com/in/) Issue: Generic-sounding AI messages Solution**: Enhance the system prompt with more specific context about your background and goals Issue: Duplicate connection requests sent Solution**: Verify "Mark as In Progress" node runs before "Fetch LinkedIn Profile"; check that row_number column exists in your sheet Issue: Google Sheets not updating Solution**: Confirm row_number column exists and the matching column is correctly configured Issue: Bearer Auth errors Solution**: Verify your ConnectSafely.ai API key is valid and has proper permissions Documentation & Resources Official Documentation ConnectSafely.ai Docs**: https://connectsafely.ai/docs API Reference**: Available in ConnectSafely.ai dashboard Google Gemini API**: https://ai.google.dev/docs Support Channels Email Support**: support@connectsafely.ai Documentation**: https://connectsafely.ai/docs Custom Workflows**: Contact us for custom automation Connect With Us Stay updated with the latest automation tips, LinkedIn strategies, and platform updates: LinkedIn**: linkedin.com/company/connectsafelyai YouTube**: youtube.com/@ConnectSafelyAI-v2x Instagram**: instagram.com/connectsafely.ai Facebook**: facebook.com/connectsafelyai X (Twitter)**: x.com/AiConnectsafely Bluesky**: connectsafelyai.bsky.social Mastodon**: mastodon.social/@connectsafely Need Custom Workflows? Looking to build sophisticated LinkedIn automation workflows tailored to your business needs? Contact our team for custom automation development, strategy consulting, and enterprise solutions. We specialize in: Multi-channel engagement workflows AI-powered personalization at scale Lead scoring and qualification automation CRM integration and data synchronization Custom reporting and analytics pipelines
by WeblineIndia
AI-Powered News Risk Monitoring & Alert System (Google News + Groq + Gmail) This workflow acts as an automated, proactive monitoring system that separates "market noise" from actual "market risk". Instead of flooding your inbox with every single news mention about a company or topic, it uses artificial intelligence (Llama 3 via Groq) to act as a virtual risk analyst. The AI reviews recent Google News articles, categorizes the risk as Low, Medium or High and only sends you an email alert when the risk is significant (Medium or High). Fast Track Setup Prepare your Data: Create a Google Sheet named "Risk Keywords" and list your target companies or terms under a "Keyword" column. Connect Credentials: Add your Google Sheets, Groq API and Gmail credentials to your n8n instance. Configure Nodes: Select your specific spreadsheet in the "Fetch Risk Keywords" node and update the "Gmail Alert Dispatcher" node with your recipient email address. Run: Trigger the workflow manually to start receiving your filtered risk alerts. What It Does This workflow automates the tedious process of monitoring the news for potential business risks. It begins by fetching a customized list of keywords — such as company names, competitors or industry terms — from a Google Sheet. It then processes these keywords one by one, using an iterator to safely manage the flow of data. For each keyword, the workflow scrapes the top 4 most recent articles from a Google News RSS feed. To ensure the system doesn't overwhelm the AI service with too many requests at once, it introduces a brief 2-second rate-limit delay. Once the news data is collected, an AI Agent uses Llama 3 (via Groq) to read the headline and snippet of each article. The AI is instructed to determine the risk level and provide a one-sentence reason for its decision. The workflow then filters out any "Low" risk news, bundles the "Medium" and "High" risk alerts together, formats them into a clean text summary and emails the final report directly to you. Who’s It For Investors and Traders:** Who need to monitor sudden negative news about stocks in their portfolio without reading every minor press release. Risk Management Professionals:** Who must keep an eye on supply chain disruptions, regulatory changes or macroeconomic indicators like inflation. Public Relations (PR) Teams:** Who want instant alerts when a client or their own brand is mentioned in a potentially damaging context. Business Owners and Executives:** Who need to monitor competitor struggles or industry shifts that could impact their strategic planning. Requirements to use this workflow To successfully run this workflow, you will need: [An active n8n account](https://n8n.partnerlinks.io/om1efg2qgvwi ). A Google account to create the "Risk Keywords" Google Sheet. Google Sheets credentials configured within n8n. A Groq API key to power the Llama 3 AI analysis. Gmail credentials configured within n8n to send the final alerts. How It Works & Set Up Follow these step-by-step instructions to configure and use the workflow: Set Up the Google Sheet: Create a new Google Sheet and name it exactly "Risk Keywords". In the first tab (Sheet1), create a header row and name the first column "Keyword". Fill the rows below with the terms you want to monitor (e.g., "Tesla", "Nvidia", "Inflation Rate"). Configure n8n Credentials: Go to your n8n credentials page and ensure you have active connections for Google Sheets (OAuth2) and Gmail (OAuth2). Create a new credential for the Groq API and input your secret API key. Adjust the Google Sheets Node: Open the "Fetch Risk Keywords" node. Use the dropdown menus to select your "Risk Keywords" document and "Sheet1". Adjust the AI Node: Open the "Llama 3 (via Groq)" node and ensure your Groq credential is selected. Configure the Email Destination: Open the "Gmail Alert Dispatcher" node. Find the "Send To" field and replace "RECIPIENT_EMAIL_HERE" with your actual email address. How To Customize Nodes Top 4 Articles Filter (Limit Node):** Currently, the workflow only analyzes the top 4 recent articles to save API costs and time. You can open this node and change the maxItems value to 10 or 20 if you want a broader scan. API Rate-Limit Delay (Wait Node):** The workflow pauses for 2 seconds between batches. If you are using a free tier API with strict limits, you can increase this wait time to 5 or 10 seconds. Risk Analysis Agent (Agent Node):** You can open this node to tweak the AI's system message. For example, you can tell the AI to look specifically for "financial risk" or "reputational damage" rather than general risk. Add‑ons You can easily extend this workflow to make it even more powerful: Schedule Trigger:** Replace the manual "Start" node with a Schedule Trigger to run this scan automatically every morning at 8:00 AM or every hour. Slack or MS Teams Integration:** Instead of sending a Gmail alert, you can swap the Gmail node for a Slack or Microsoft Teams node to push high-risk alerts directly to a company channel. Database Logging:** Add an Airtable or Notion node right before the email dispatcher to keep a historical log of all high-risk events over time. Use Case Examples Here are a few ways this workflow can be utilized in the real world: Supply Chain Monitoring: Add keywords for your key suppliers or global shipping routes (e.g., "Suez Canal disruption"). Get alerted immediately if a medium or high risk threatens your inventory. Competitor Watchlist: Track your top 5 competitors. If a competitor faces a high-risk situation (like a lawsuit or product recall), you are notified and can capitalize on the market shift. PR Crisis Prevention: Input your own brand names and executive names. Catch negative press (high risk) the moment it hits Google News so your team can draft a response quickly. Macroeconomic Tracking: Monitor terms like "interest rate hike", "housing market crash" or "recession". Automatically filter out opinion pieces and only get alerted to high-risk factual reports. (Note: There are countless other use cases for this workflow depending on the keywords and AI prompt you choose!) Troubleshooting Guide | Issue | Possible Cause | Solution | | :--- | :--- | :--- | | Workflow fails at the Groq AI node | API Rate Limits exceeded or invalid API Key. | Check your Groq dashboard to ensure your API key is correct and you haven't hit your rate limit. Increase the wait time in the "API Rate-Limit Delay" node. | | No emails are being sent | All news was categorized as "Low" risk. | This is normal behavior! If you want to test the email, temporarily bypass the "Filter High/Medium Risk" node or add a highly controversial keyword to your sheet. | | Email formatting looks broken | The AI outputted invalid JSON data. | The "Format Alert Email" code node is designed to handle errors. However, to prevent this, you can refine the prompt in the "Risk Analysis Agent" to be stricter about JSON formatting. | | Google Sheets node fails | Incorrect document selected or permissions issue. | Re-authenticate your Google account in n8n credentials and ensure the sheet is exactly named "Risk Keywords". | Need Help? Building and customizing automated workflows can sometimes be tricky, especially when integrating AI and dealing with complex data structures. Whether you need help setting up this exact News Risk Alert workflow, customizing it with the Add-ons mentioned above or building an entirely new automation tailored to your business needs, our n8n workflow developers at WeblineIndia are here to help! Please feel free to contact WeblineIndia for expert assistance.
by Meet Soni
How it works Runs automatically on a weekly schedule and fetches the live HTML of every competitor page you define Strips all HTML tags and captures a clean text snapshot of each page Compares the current snapshot against the previously stored version using workflow static data — no external database needed Sends only changed pages to GPT-4.1-mini, which analyses differences across pricing, positioning, product launches, and feature updates Formats the AI analysis into a structured digest with an executive summary, material changes per competitor, suggested response actions, and watch items for next run Saves the digest as a Gmail draft addressed to your chosen recipient — ready to review and forward to your team Set up steps Open the Define Competitors node and replace the example entries with your competitor names, URLs, and what to watch for (e.g. pricing, features, messaging) Open the Build Digest Prompt node and replace replace-me@example.com with your recipient's email address Connect your OpenAI credential to the OpenAI node (GPT-4.1-mini or higher recommended) Connect your Gmail OAuth2 credential to the Gmail node Run the workflow once manually to store the first baseline snapshots — no digest will be sent on this first run Activate the workflow — it will now run every week and only alert you when something has actually changed
by Abi Odedeyi
This n8n template demonstrates how to triage tenant maintenance requests automatically; matching each ticket to the right contractor by category and postcode area, dispatching the job by email and SMS, and detecting duplicate tickets before they snowball. Use cases are many: residential lettings agencies juggling dozens of properties, short-let and HMO operators tired of duplicate "is anyone fixing this?" tickets, or commercial property managers who need a paper trail for every dispatch. Oher industries juggling tickets can use the system too! Good to know Each Twilio SMS is billed per message. See Twilio SMS pricing for the rate in your country; UK SMS costs ~$0.04 at time of writing. The postcode-matching logic in this template is built around UK postcodes (e.g. SW1A 1AA → SW1). For US ZIP codes or other formats, you'll need to adjust the Extract Postcode District code node. The duplicate-detection window is 24 hours by default; adjust it inside the Evaluate Duplicates code node for your portfolio size. Any CRM will do if you don't want to use Airtable. How it works The Airtable Trigger polls the Maintenance Tickets table every minute for new tenant submissions. Before anything else, we check for duplicates; same tenant, same property, same category, within the last 24 hours. Matches get flagged as Possible Duplicate and an alert email goes to the admin. For real new tickets, we normalise the postcode (e.g. SW1A 1AA becomes SW1) so the search matches on area rather than the full code. We then search the Vendors table for active vendors who handle that category and serve that postcode district, sorted by response time, and pick the fastest match. If we find a vendor, we update the ticket (assigned, status Assigned, timestamp), email the vendor the full job details, fire a Twilio SMS so they see it on their phone within seconds, and email the tenant a confirmation with the contractor's name and expected response time. If no vendor matches, we don't drop the ticket on the floor; we set the status to Pending Manual Assignment, email the admin so a human can step in, and email the tenant a holding message so they know the request landed. How to use Duplicate the Airtable base before you import; you need a Vendors table and a Maintenance Tickets table. The schema is documented in the sticky notes inside the workflow. The trigger polls every minute by default, but feel free to swap it for an Airtable webhook (instant) if you have an Enterprise plan, or a form/webhook trigger if tenants submit elsewhere. The vendor SMS uses Twilio; replace the from number with your verified Twilio number before going live. Set the admin email in the two admin Gmail nodes (Email to Admin - Alert and Send Duplicate Alert to Admin) so escalations land in the right inbox. Requirements Airtable base with Vendors and Maintenance Tickets tables Gmail account for vendor, tenant, and admin emails Twilio account with a verified from number for SMS Customising this workflow The same triage pattern works anywhere you need to route inbound requests by category and location. Try it for field-service dispatch, IT helpdesk ticket assignment, or routing customer support tickets to the right specialist based on issue type and language.
by Avkash Kakdiya
Quick Overview This workflow runs monthly to compare current vs. previous payroll data in Google Sheets, detect pay anomalies, alert Finance in Slack, email HR via Gmail, and log discrepancies back to a Google Sheets audit tab. How it works Runs on a monthly schedule (cron: 0 9 25 * *) to start a pre-payroll review. Reads the current pay run and the previous pay run from two Google Sheets tabs. Compares both periods per employee to flag duplicates, unmatched employees, pay without hours, and large net pay swings based on percentage thresholds. If no anomalies are found, posts an all-clear message to a Slack channel. For each flagged anomaly, classifies severity and posts an immediate Slack “payroll hold” alert for Critical items. Appends each flagged anomaly to an AnomalyLog tab in Google Sheets and emails HR a per-employee review message via Gmail. Aggregates all flagged items into a run-level digest and posts the summary and recommendation to Slack for Finance. Setup Add Google Sheets credentials and set your spreadsheet ID, ensuring it contains the CurrentPayRun, PreviousPayRun, and AnomalyLog tabs. Ensure your payroll sheets include the expected columns (employee_id, name, net_pay, hours, status, and email) so the discrepancy checks work correctly. Add Slack credentials and replace the Slack channel ID(s) used for critical holds, digests, and all-clear messages. Add Gmail credentials and set the HR recipient email address for anomaly review notifications. Adjust the schedule cron expression and the discrepancy thresholds in the detection code (for example, 15%, 40%, and 80%) to match your payroll policies.
by Julian Abt
Quick Overview This workflow runs daily, reads deadline rows from Google Sheets, and sends due-soon, due-today, or overdue reminder emails via Gmail, escalating overdue items to Slack and updating the sheet to prevent duplicate reminders. How it works Runs every day at 07:00 on a schedule. Reads all rows from a Google Sheets worksheet. Filters out completed items and rows already reminded today, then classifies remaining rows as due soon, due today, or overdue based on the DueDate. Sends an HTML reminder email through Gmail to the address in the Email column with a subject and message tailored to the urgency. Posts an escalation message to a specified Slack channel for items that are overdue. Updates each reminded row in Google Sheets by writing today’s date to the NotifiedOn column using the stored row number. Setup Add Google Sheets credentials and replace the spreadsheet URL/ID and sheet name used for reading and updating. Add a Gmail OAuth2 credential and ensure the Email column contains valid recipient addresses. Add Slack credentials and set the target channel (for example, #deadlines) for overdue escalations. Ensure your sheet includes the columns Title, DueDate (YYYY-MM-DD), Email, Status, and NotifiedOn, and uses Status = "Done" for completed items. Adjust the reminder window by changing REMINDER_WINDOW_DAYS in the date-classification code if needed.
by Missy Learns AI
Quick overview Track daily mood, energy, sleep, stress, focus, and habits with a simple form, then receive a weekly AI-generated personal analytics report with patterns, best/hardest day comparison, and one small experiment for the next week. The result helps users understand what conditions seem linked with better wellbeing. How it works Receives a daily check-in submission from an n8n Form. Normalizes the submitted fields and calculates daily wellbeing and habit scores, tags, a risk flag, and a small suggestion. Appends the daily entry to a Google Sheets daily_entries tab. Sends a Gmail confirmation email, using a more supportive message when the risk flag indicates needs_support. Runs every week on a schedule trigger and reads all daily entries from Google Sheets. Calculates weekly analytics for the previous Monday–Sunday week (including averages, best/hardest day, and detected patterns) and stops with a “not enough data” Gmail message if fewer than 3 entries exist. Generates a weekly coaching insight with an OpenAI Chat Model (via Groq), parses the returned JSON into email fields, appends the weekly report to a Google Sheets weekly_reports tab, and emails the formatted weekly insights via Gmail. Setup Connect Google Sheets OAuth2 credentials and update the spreadsheet ID and sheet tabs (daily_entries and weekly_reports) used by the Google Sheets nodes. Create the daily_entries and weekly_reports sheets with column names matching the fields the workflow appends (for example wellbeing_score, habit_score, risk_flag, and ai_summary). Connect Gmail OAuth2 credentials and replace YOUR_EMAIL_ADDRESS_PLACEHOLDER with your recipient email address in all Gmail nodes. Add an OpenAI-compatible API credential (configured here as Groq) and ensure the selected chat model is available to the OpenAI Chat Model node. Adjust the weekly schedule trigger (day/time) if you want the report to run at a different time zone or cadence. Test the daily branch and submit the daily form once. Confirm that a row appears in the daily_entries sheet. Confirm that the confirmation email is sent. Test the weekly branch. Add at least 3 daily entries. For a full test, add 7 entries covering Monday through Sunday. Run the weekly branch manually. Confirm that the weekly analytics node returns one weekly summary item. Confirm that the LLM returns valid JSON. Confirm that the final weekly email is rendered correctly. Requirements You need credentials for: Google Sheets, Gmail or Email Send, OpenAI Customization Change the daily questions: Edit the form fields if you want to track different habits. Change the scoring logic: Open the Calculate Daily Scores node to adjust wellbeing score weights, habit score rules, tags, risk flag thresholds and tiny suggestions Change the weekly reporting day: Open the Weekly Report Trigger node Change the LLM prompt: Open the Basic LLM Chain node and redesign the prompt to suit your need. If you change the prompt, keep the JSON structure the same unless you also update the parser and email template. Change the email design: Open the Email Weekly Insights node and update the body HTML format. Additional info This workflow is for personal reflection only. It does not provide medical advice, mental health diagnosis, or crisis support. The wellbeing score and habit score are simple personal analytics scores. They are not clinical scores. The AI-generated insight should be treated as a reflection aid, not as expert advice. If a user feels unsafe or at risk of harm, they should contact local emergency or crisis support.