by Praveena
Finance Research Analyst for Boutique M&A Agencies This workflow acts as a junior finance research analyst for a UK boutique M&A or corporate finance team. It listens for Slack messages, classifies the request, gathers company or market data, and produces structured outputs in Google Docs, Google Slides, Google Sheets, and PostgreSQL. It supports three user intents: Research this company X Prepare pitch materials for X Industry briefing on vertical X The workflow is designed for internal team use. It is not intended to send client-facing materials automatically without human review. Why This Template This template shows how a junior research analyst LIVE job and some of the key responsibilities might be automated with help of AI. 120+ junior analyst roles are live in London right now. This template does most of what they do. What This Template Does 1. Company Research When a user asks to research a company, the workflow: searches Companies House for the best UK entity match retrieves company profile, officers, and filing history gathers company and website context using Firecrawl retrieves public market quote data from Alpha Vantage when a ticker is available asks an LLM to synthesize the research into a structured company profile creates a Google Doc with the company profile upserts the company into PostgreSQL stores the generated research as reusable memory updates the client database in Google Sheets replies in the original Slack thread with the output link 2. Pitch Materials When a user asks to prepare pitch materials, the workflow: loads the stored company record from PostgreSQL pulls the most recent stored research memory asks an LLM to produce compact slide-ready bullet content copies a Google Slides pitch template replaces the template placeholders with generated content creates a Google Doc press release draft updates the pitch deck URL in PostgreSQL updates the client database in Google Sheets replies in the original Slack thread with the deck and document links 3. Industry Briefing When a user asks for a sector briefing, the workflow: gathers sector web and news context using Firecrawl retrieves ONS macro M&A context asks an LLM to generate a concise one-page industry briefing creates a Google Doc with the briefing replies in the original Slack thread with the document link Who This Is For This template is built for: boutique M&A advisory firms corporate finance teams fundraising advisors internal research analysts supporting pitch and origination work It is optimized for UK company research because it relies on Companies House as the authoritative company registry. Prerequisites Before using this template, you need: an n8n instance a Slack app configured for message triggers and posting replies a Google account with Drive, Docs, Slides, and Sheets access (Free) a PostgreSQL database (Free self hosted or use supabase) an OpenRouter credential for the LLM calls (Models used= haiku4.5, Sonnet 4.5) a Companies House API key configured as Basic Auth (Free) a Firecrawl API key configured as HTTP Header Auth (Free) API key for Alpha Vantage (free) fixed ONS URL for macro M&A context Required n8n Credentials Create or connect the following credentials in n8n before testing: Slack Trigger credential for incoming Slack events Slack credential for posting replies OpenRouter API Companies House Basic Auth Firecrawl Header Auth Google Drive OAuth2 Google Docs OAuth2 Google Slides OAuth2 Google Sheets OAuth2 Postgres Required External Assets 1. Google Drive Root Folder The workflow creates subfolders under a given root folder: research outputs pitch outputs briefing outputs Current root folder used in the workflow: Modify this to your own folder: https://drive.google.com/drive/u/0/folders/1GH-YouAAImKugZ11IbqA6Ouw8B9U17-I 2. Google Sheets Client Database The workflow writes to this spreadsheet: Modify this to your own google sheet: https://docs.google.com/spreadsheets/d/1yJ-UKOEUqIruCv-IBA33oN4taQTB1TA8M4a6D2iSiOU/edit?gid=0#gid=0 Required sheet name: Sheet1 Required columns: company_name sector companies_house_number market_cap last_researched profile_doc_url pitch_deck_url Best practice: make companies_house_number unique if possible keep column names exactly as shown above 3. Google Slides Pitch Template The workflow copies this Slides template: 1zQv_cbafHzd4JNsr711Rm0558O6W_S1SODc-u6tVS0k Required placeholders in text boxes: {company_name} {sector} {profile_summary} {financials} {opportunity_summary} {comps_note} Input Examples Use messages like these in Slack: Research Monzo, fintech Prepare pitch for Wise Industry briefing UK fintech Outputs Research Intent Outputs: Google Doc company profile PostgreSQL company record update PostgreSQL research memory insert Google Sheets client DB update Slack thread reply with doc link Pitch Intent Outputs: copied and populated Google Slides deck Google Doc press release draft PostgreSQL pitch deck URL update Google Sheets client DB update Slack thread reply with deck and doc links Brief Intent Outputs: Google Doc industry briefing Slack thread reply with doc link Database Expectations This template expects PostgreSQL tables to exist for: company records research memory At minimum, your database must support the queries used by the workflow for: upserting company records loading a company record by company_name storing research memory retrieving the latest research memory for pitch generation updating pitch_deck_url Limitations UK company research is strongest because the workflow depends on Companies House. private companies will not have public market quote data public-company quote data comes from Alpha Vantage GLOBAL_QUOTE, which is not a true market-cap endpoint the workflow does not create dynamic charts in Google Slides. the workflow does not replace human judgment on valuation, comps, or client-facing strategy
by Ian Kerins
Overview This n8n template automates the process of scraping job listings from Indeed, parsing the data into a structured format, and saving it to Google Sheets for easy tracking. It also includes a Slack notification system to alert you when new jobs are found. Built with ScrapeOps, it handles the complexities of web scraping - such as proxy rotation, anti-bot bypassing, and HTML parsing - so you can focus on the data. Who is this for? Job Seekers**: Automate your daily job search and get instant alerts for new postings. Recruiters & HR Agencies**: Track hiring trends and find new leads for candidate placement. Sales & Marketing Teams**: Monitor companies that are hiring to identify growth signals and lead opportunities. Data Analysts**: Gather labor market data for research and competitive analysis. What problems it solves Manual Searching**: Eliminates the need to manually refresh Indeed and copy-paste job details. Data Structure**: Converts messy HTML into clean, organized rows in a spreadsheet. Blocking & Captchas**: Uses ScrapeOps residential proxies to bypass Indeed's anti-bot protections reliably. Missed Opportunities**: Automated scheduling ensures you are the first to know about new listings. How it works Trigger: The workflow runs on a schedule (default: every 6 hours). Configuration: You define your search query (e.g., "Software Engineer") in the Set Search URL node. Scraping: The ScrapeOps Proxy API fetches the Indeed search results page using a residential proxy to avoid detection. Parsing: The ScrapeOps Parser API takes the raw HTML and extracts key details like Job Title, Company, Location, Salary, and URL. Filtering: A code node filters out invalid results and structures the data. Storage: Valid jobs are appended to a Google Sheet. Notification: A message is sent to Slack confirming the update. Setup steps (~ 10-15 minutes) ScrapeOps Account: Register for a free ScrapeOps API Key. In n8n, open the ScrapeOps nodes and create a new credential with your API key. Google Sheets: Duplicate this Google Sheet Template. Open the Save to Google Sheets node. Connect your Google account and select your duplicated sheet. Slack Setup: Open the Send a message node. Connect your Slack account and select the channel where you want to receive alerts. Customize Search: Open the Set Search URL node. Update the search_query value to the job title or keyword you want to track. Pre-conditions An active ScrapeOps account (Free tier available). A Google Cloud account with Google Sheets API enabled (for n8n connection). A Slack workspace for notifications. Disclaimer This template uses ScrapeOps as a community node. You are responsible for complying with Indeed's Terms of Use, robots directives, and applicable laws in your jurisdiction. Scraping targets may change at any time; adjust render/scroll/wait settings and parsers as needed. Use responsibly for legitimate business purposes. Resources ScrapeOps n8n Overview ScrapeOps Proxy API Documentation ScrapeOps Parser API Documentation
by Harvex AI
AI Lead Enrichment & Notification System This n8n template automates the lead enrichment process for your business. Once a lead fills out a form, the workflow scrapes their website, provides a summary of their business, and logs everything into a CRM before notifying your team on Slack. Some use cases: "Speed-to-Lead" optimization, lead enrichment, automated prospect research. How it works Ingestion: A lead submits their details (Name, Email, Website) via a form. Intelligent scraping: The workflow scrapes the provided URL. AI Analysis: OpenAI's model (GPT-4o) analyzes the extracted data and determines whether there is enough info or if the workflow needs to scrape the "About Us" page. CRM Sync: The CRM (Airtable) is updated with the enriched data. Notification: An instant Slack notification is sent to the team channel. How to use the workflow Configure the form: Open the trigger form and input the required fields. Setup OpenAI: Ensure that your credentials are connected. Database mapping: Ensure your Airtable base has the following columns: Name, Website, AI Insight, Email, and Date. Slack setup: Specify the desired Slack channel for notifications. Test it out! Open the form, enter sample data (with a real website), and watch the system enrich the lead for you. Requirements OpenAI API Key** (For analyzing website content and generating summaries) Airtable** (For CRM and logging) Slack** (For team notifications)
by Madame AI
Generate audio documentaries from web articles to Telegram with ElevenLabs & BrowserAct This workflow transforms any web article or blog post into a high-production-value audio documentary. It automates the entire production chain—from scraping content and writing an engaging narrative script to generating realistic voiceovers—delivering a listenable MP3 file directly to your Telegram chat. Target Audience Commuters, podcast enthusiasts, content creators, and researchers who prefer listening to content over reading. How it works Analyze Intent: The workflow receives a message via Telegram. An AI Agent (using Google Gemini) classifies the input to determine if it is a casual chat or a request to process a URL. Scrape Content: If a valid link is detected, BrowserAct executes a background task to visit the webpage and extract the raw text. Write Script: A Scriptwriter Agent (using Claude via OpenRouter) converts the dry article text into a dramatic, narrative-driven script optimized for audio, including cues for pacing and tone. Generate Audio: ElevenLabs synthesizes the script into high-fidelity speech using a specific voice model (e.g., "Liam"). Deliver Output: The workflow sends the generated MP3 file and a formatted HTML summary caption back to the user on Telegram. How to set up Configure Credentials: Connect your Telegram, ElevenLabs, OpenRouter, Google Gemini, and BrowserAct accounts in n8n. Prepare BrowserAct: Ensure the AI Summarization & Eleven Labs Podcast Generation template is saved in your BrowserAct account. Select Voice: Open the Convert text to speech node and select your preferred ElevenLabs voice model. Configure Model: Open the OpenRouter node to confirm the model selection (e.g., Claude Haiku) or switch to a different LLM for scriptwriting. Activate: Turn on the workflow and send a link to your Telegram bot to test it. Requirements BrowserAct* account with the *AI Summarization & Eleven Labs Podcast Generation** template. ElevenLabs** account. OpenRouter** account (or access to an LLM like Claude). Google Gemini** account. Telegram** account (Bot Token). How to customize the workflow Change the Persona: Modify the system prompt in the Scriptwriter node to change the narrative style (e.g., from "Documentary Host" to "Comedian" or "News Anchor"). Switch Output Channel: Replace the Telegram output node with a Google Drive or Dropbox node to archive the generated audio files for a podcast feed. Multi-Voice Support: Add logic to split the script into multiple parts and use different ElevenLabs voices to simulate a conversation between two hosts. Need Help? How to Find Your BrowserAct API Key & Workflow ID How to Connect n8n to BrowserAct How to Use & Customize BrowserAct Templates Workflow Guidance and Showcase Video How to Build an AI Podcast Generator: n8n, BrowserAct & Eleven Labs
by DIGITAL BIZ TECH
AI Product Catalog Chatbot with Google Drive Ingestion & Supabase RAG Overview This workflow builds a dual-system that connects automated document ingestion with a live product catalog chatbot powered by Mistral AI and Supabase. It includes: Ingestion Pipeline:** Automatically fetches JSON files from Google Drive, processes their content, and stores vector embeddings in Supabase. Chatbot:** An AI agent that queries the Supabase vector store (RAG) to answer user questions about the product catalog. It uses Mistral AI for chat intelligence and embeddings, and Supabase for vector storage and semantic product search. Chatbot Flow Trigger:** When chat message received or Webhook (from live website) Model:** Mistral Cloud Chat Model (mistral-medium-latest) Memory:** Simple Memory (Buffer Window) — keeps last 15 messages for conversational context Vector Search Tool:** Supabase Vector Store Embeddings:** Mistral Cloud Agent:** product catalog agent Responds to user queries using the products table in Supabase. Searches vectors for relevant items and returns structured product details (name, specs, images, and links). Maintains chat session history for natural follow-up questions. Document → Knowledge Base Pipeline Triggered manually (Execute workflow) to populate or refresh the Supabase vector store. Steps Google Drive (List Files) → Fetch all files from the configured Google Drive folder. Loop Over Items → For each file: Google Drive (Get File) → Download the JSON document. Extract from File → Parse and read raw JSON content. Map Data into Fields (Set node) → Clean and normalize JSON keys (e.g., page_title, comprehensive_summary, key_topics). Convert Data into Chunks (Code node) → Merge text fields like summary and markdown. → Split content into overlapping 2,000-character chunks. → Add metadata such as title, URL, and chunk index. Embeddings (Mistral Cloud) → Generate vector embeddings for each text chunk. Insert into Supabase Vectorstore → Save chunks + embeddings into the website_mark table. Wait → Pause for 30 seconds before the next file to respect rate limits. Integrations Used | Service | Purpose | Credential | |----------|----------|------------| | Google Drive | File source for catalog JSON documents | Google Drive account dbt | | Mistral AI | Chat model & embeddings | Mistral Cloud account dbt | | Supabase | Vector storage & RAG search | Supabase DB account dbt | | Webhook / Chat | User-facing interface for chatbot | Website or Webhook | Sample JSON Data Format (for Ingestion) The ingestion pipeline expects structured JSON product files, which can include different categories such as Apparel or Tools. Apparel Example (T-Shirts) [ { "Name": "Classic Crewneck T-Shirt", "Item Number": "A-TSH-NVY-M", "Image URL": "https://www.example.com/images/tshirt-navy.jpg", "Image Markdown": "", "Size Chart URL": "https://www.example.com/charts/tshirt-sizing", "Materials": "100% Pima Cotton", "Color": "Navy Blue", "Size": "M", "Fit": "Regular Fit", "Collection": "Core Essentials" } ] Tools Example (Drill Bits) [ { "Name": "Titanium Drill Bit, 1/4\"", "Item Number": "T-DB-TIN-250", "Image URL": "https://www.example.com/images/drill-bit-1-4.jpg", "Image Markdown": "", "Spec Sheet URL": "https://www.example.com/specs/T-DB-TIN-250", "Materials": "HSS with Titanium Coating", "Type": "Twist Drill Bit", "Size (in)": "1/4", "Shank Type": "Hex", "Application": "Metal, Wood, Plastic" } ] Agent System Prompt Summary > “You are an AI product catalog assistant. Use only the Supabase vector database as your knowledge base. Provide accurate, structured responses with clear formatting — including product names, attributes, and URLs. If data is unavailable, reply politely: ‘I couldn’t find that product in the catalog.’” Key Features Automated JSON ingestion from Google Drive → Supabase Intelligent text chunking and metadata mapping Dual-workflow architecture (Ingestion + Chatbot) Live conversational product search via RAG Supports both embedded chat and webhook channels Summary > A powerful end-to-end workflow that transforms your product data into a searchable, AI-ready knowledge base, enabling real-time product Q&A through a Mistral-powered chatbot. Perfect for eCommerce teams, distributors, or B2B companies managing large product catalogs. Need Help or More Workflows? Want to customize this workflow for your business or integrate it with your tools? Our team at Digital Biz Tech can tailor it precisely to your use case — from automation pipelines to AI-powered product discovery. 💡 We can help you set it up for free — from connecting credentials to deploying it live. Contact: rajeet.nair@digitalbiz.tech Website: https://www.digitalbiz.tech LinkedIn: https://www.linkedin.com/company/digital-biz-tech/ You can also DM us on LinkedIn for any help.
by Oneclick AI Squad
This n8n workflow helps users easily discover nearby residential construction projects by automatically scraping and analyzing property listings from 99acres and other real estate platforms. Users can send an email with their location preferences and receive a curated list of available properties with detailed information, including pricing, area, possession dates, and construction status. Good to know The workflow focuses specifically on residential construction projects and active developments Property data is scraped in real-time to ensure the most current information Results are automatically formatted and structured for easy reading The system handles multiple property formats and data variations from different sources Fallback mechanisms ensure reliable data extraction even when website structures change How it works Trigger: New Email** - Detects incoming emails with property search requests and extracts location preferences from email content Extract Area & City** - Parses the email body to identify target areas (e.g., Gota, Ahmedabad) and falls back to city-level search if specific area is not mentioned Scrape Construction Projects** - Performs web scraping on 99acres and other property websites based on the extracted area and city information Parse Project Listings** - Cleans and formats the scraped HTML data into structured project entries with standardized fields Format Project Details** - Transforms all parsed projects into a consistent email-ready list format with bullet points and organized information Send Results to User** - Delivers a professionally formatted email with the complete list of matching construction projects to the original requester Email Format Examples Input Email Format To: properties@yourcompany.com Subject: Property Search Request Hi, I am interested in buying a flat. Can you please send me the list of available properties in Gota, Ahmedabad? Output Email Example Subject: 🏘️ Property Search Results: 4 Projects Found in Gota, Ahmedabad 🏘️ Available Construction Projects in Gota, Ahmedabad Search Area: Gota, Ahmedabad Total Projects: 4 Search Date: August 4, 2025 📋 PROJECT LISTINGS: 🔷 Project 1 🏠 Name: Vivaan Oliver offers 🏢 BHK: 3 BHK 💰 Price: N/A 📐 Area: 851.0 Sq.Ft 🗓️ Possession: August 2025 📊 Status: under construction 📍 Location: Thaltej, Ahmedabad West 🕒 Scraped Date: 2025-08-04 🔷 Project 2 🏠 Name: Vivaan Oliver offers 🏢 BHK: 3 BHK 💰 Price: Price on Request 📐 Area: 891 Sq Ft 🗓️ Possession: N/A 📊 Status: Under Construction 📍 Location: Thaltej, Ahmedabad West 🕒 Scraped Date: 2025-08-04 🔷 Project 3 🏠 Name: It offers an exclusive range of 🏢 BHK: 3 BHK 💰 Price: N/A 📐 Area: 250 Sq.Ft 🗓️ Possession: 0 2250 📊 Status: Under Construction 📍 Location: Thaltej, Ahmedabad West 🕒 Scraped Date: 2025-08-04 🔷 Project 4 🏠 Name: N/A 🏢 BHK: 2 BHK 💰 Price: N/A 📐 Area: N/A 🗓️ Possession: N/A 📊 Status: N/A 📍 Location: Thaltej, Ahmedabad West 💡 Next Steps: • Contact builders directly for detailed pricing and floor plans • Schedule site visits to shortlisted properties • Verify possession timelines and construction progress • Compare amenities and location advantages 📞 For more information or specific requirements, reply to this email. How to use Setup Instructions Import the workflow into your n8n instance Configure Email Credentials: Set up email trigger for incoming property requests Set up SMTP credentials for sending property listings Configure Web Scraping: Ensure proper headers and user agents for 99acres access Set up fallback mechanisms for different property websites Test the workflow with sample property search emails Sending Property Search Requests Send an email to your configured property search address Include location details in natural language (e.g., "Gota, Ahmedabad") Optionally specify preferences like BHK, budget, or amenities Receive detailed property listings within minutes Requirements n8n instance** (cloud or self-hosted) with web scraping capabilities Email account** with IMAP/SMTP access for automated communication Reliable internet connection** for real-time property data scraping Valid target websites** (99acres, MagicBricks, etc.) access Troubleshooting No properties found**: Verify area spelling and check if the location has active listings Scraping errors**: Update user agents and headers if websites block requests Duplicate results**: Implement better deduplication logic based on property names and locations Email parsing issues**: Test with various email formats and improve regex patterns Website structure changes**: Implement fallback parsers and regular monitoring of scraping success rates
by Rakin Jakaria
Who this is for This workflow is for freelancers, job seekers, or service providers who want to automatically apply to businesses by scraping their website information, extracting contact details, and sending personalized job application emails with AI-powered content — all from one form submission. What this workflow does This workflow starts every time someone submits the Job Applier Form. It then: Scrapes the target business website** to gather company information and contact details. Converts HTML content** to readable markdown format for better AI processing. Extracts email addresses* and creates a company summary using *GPT-5 AI**. Validates email addresses** to ensure they contain proper formatting (@ symbol check). Accesses your experience data* from a connected *Google Sheet** with your skills and portfolio. Generates personalized application emails* (subject + body) using *GPT-5** based on the job position and company info. Sends the application email* automatically via *Gmail** with your name as sender. Provides confirmation** through a completion form showing the AI's response. Setup To set this workflow up: Form Trigger – Customize the job application form fields (Target Business Website, Applying As dropdown with positions like Video Editor, SEO Expert, etc.). OpenAI GPT-5 – Add your OpenAI API credentials for both AI models used in the workflow. Google Sheets – Connect your sheet containing your working experience data, skills, and portfolio information. Gmail Account – Link your Gmail account for sending application emails automatically. Experience Data – Update the Google Sheet with your relevant skills, experience, and achievements for each job type. Sender Name – Modify the sender name in Gmail settings (currently set to "Jamal Mia"). How to customize this workflow to your needs Add more job positions to the dropdown menu (currently includes Video Editor, SEO Expert, Full-Stack Developer, Social Media Manager). Modify the AI prompt to reflect your unique value proposition and application style. Enhance email validation with additional checks like domain verification or email format patterns. Add follow-up scheduling to automatically send reminder emails after a certain period. Include attachment functionality to automatically attach your resume or portfolio to applications. Switch to different email providers or add multiple sender accounts for variety.
by Wolf Bishop
A reliable, no-frills web scraper that extracts content directly from websites using their sitemaps. Perfect for content audits, migrations, and research when you need straightforward HTML extraction without external dependencies. How It Works This streamlined workflow takes a practical approach to web scraping by leveraging XML sitemaps and direct HTTP requests. Here's how it delivers consistent results: Direct Sitemap Processing: The workflow starts by fetching your target website's XML sitemap and parsing it to extract all available page URLs. This eliminates guesswork and ensures comprehensive coverage of the site's content structure. Robust HTTP Scraping: Each page is scraped using direct HTTP requests with realistic browser headers that mimic legitimate web traffic. The scraper includes comprehensive error handling and timeout protection to handle various website configurations gracefully. Intelligent Content Extraction: The workflow uses sophisticated JavaScript parsing to extract meaningful content from raw HTML. It automatically identifies page titles through multiple methods (title tags, Open Graph metadata, H1 headers) and converts HTML structure into readable text format. Framework Detection: Built-in detection identifies whether sites use WordPress, Divi themes, or heavy JavaScript frameworks. This helps explain content extraction quality and provides valuable insights about the site's technical architecture. Rich Metadata Collection: Each scraped page includes detailed metadata like word count, HTML size, response codes, and technical indicators. This data is formatted into comprehensive markdown files with YAML frontmatter for easy analysis and organization. Respectful Rate Limiting: The workflow includes a 3-second delay between page requests to respect server resources and avoid overwhelming target websites. The processing is sequential and controlled to maintain ethical scraping practices. Detailed Success Reporting: Every scraped page generates a report showing extraction success, potential issues (like JavaScript dependencies), and technical details about the site's structure and framework. Setup Steps Configure Google Drive Integration Connect your Google Drive account in the "Save to Google Drive" node Replace YOUR_GOOGLE_DRIVE_CREDENTIAL_ID with your actual Google Drive credential ID Create a dedicated folder for your scraped content in Google Drive Copy the folder ID from the Google Drive URL (the long string after /folders/) Replace YOUR_GOOGLE_DRIVE_FOLDER_ID_HERE with your actual folder ID in both the folderId field and cachedResultUrl Update YOUR_FOLDER_NAME_HERE with your folder's actual name Set Your Target Website In the "Set Sitemap URL" node, replace https://yourwebsitehere.com/page-sitemap.xml with your target website's sitemap URL Common sitemap locations include /sitemap.xml, /page-sitemap.xml, or /sitemap_index.xml Tip: Not sure where your sitemap is? Use a free online tool like https://seomator.com/sitemap-finder Verify the sitemap URL loads correctly in your browser before running the workflow Update Workflow IDs (Automatic) When you import this workflow, n8n will automatically generate new IDs for YOUR_WORKFLOW_ID_HERE, YOUR_VERSION_ID_HERE, YOUR_INSTANCE_ID_HERE, and YOUR_WEBHOOK_ID_HERE No manual changes needed for these placeholders Adjust Processing Limits (Optional) The "Limit URLs (Optional)" node is currently disabled for full site scraping Enable this node and set a smaller number (like 5-10) for initial testing For large websites, consider running in batches to manage processing time and storage Customize Rate Limiting (Optional) The "Wait Between Pages" node is set to 3 seconds by default Increase the delay for more respectful scraping of busy sites Decrease only if you have permission and the target site can handle faster requests Test Your Configuration Enable the "Limit URLs (Optional)" node and set it to 3-5 pages for testing Click "Test workflow" to verify the setup works correctly Check your Google Drive folder to confirm files are being created with proper content Review the generated markdown files to assess content extraction quality Run Full Extraction Disable the "Limit URLs (Optional)" node for complete site scraping Execute the workflow and monitor the execution log for any errors Large websites may take considerable time to process completely (plan for several hours for sites with hundreds of pages) Review Results Each generated file includes technical metadata to help you assess extraction quality Look for indicators like "Limited Content" warnings for JavaScript-heavy pages Files include word counts and framework detection to help you understand the site's structure Framework Compatibility: This scraper is specifically designed to work well with WordPress sites, Divi themes, and many JavaScript-heavy frameworks. The intelligent content extraction handles dynamic content effectively and provides detailed feedback about framework detection. While some single-page applications (SPAs) that render entirely through JavaScript may have limited content extraction, most modern websites including those built with popular CMS platforms will work excellently with this scraper. Important Notes: Always ensure you have permission to scrape your target website and respect their robots.txt guidelines. The workflow includes respectful delays and error handling, but monitor your usage to maintain ethical scraping practices.RetryClaude can make mistakes. Please double-check responses.
by Artur Mulagalijev
This workflow automates the full company enrichment pipeline: Simply import CSV company lists to Slack and save time on enrichment and CRM maintenance. It processes uploaded files, extracts company domains, checks for existing records in HubSpot, and uses conditional logic with user approval to decide which companies to enrich. The result is a clean, enriched CRM dataset without duplicates and context rich company profiles. Ideal for B2B sales, marketing, and RevOps teams. How It Works A file is uploaded to a Slack channel. The workflow downloads and extracts company data from the file. Company domains are inserted into a temporary data table. HubSpot is queried to identify existing companies (duplicates). If duplicates are found, the user is asked via Slack whether to enrich them. Approved companies are enriched using Coresignal multi-source data. Existing companies are updated, and new companies are created in HubSpot. A summary of results (created, updated, skipped) is posted to Slack. Tools used |Tool / Node|What it does in the workflow|Free / credentials needed?| |-|-|-| |Slack Trigger|Waits for a file to be uploaded in a Slack channel and sends file metadata|Slack app configuration required| |Slack Get File|Fetches the file download URL|Slack app configuration required| |Slack Message|Notifies user that workflow has started|Slack app configuration required| |HTTP Request|Downloads the file from Slack|Slack credentials required| |Extract from File|Parses CSV/Excel data|No credentials required| |Data Table (insert)|Stores company domains|No credentials required| |HubSpot Search Company|Checks for duplicates in HubSpot|HubSpot credentials required| |IF Node|Determines if company exists|No credentials required| |Slack Send & Wait|Asks user whether to enrich duplicates|Slack app configuration required| |Merge Node|Combines approval results|No credentials required| |Data Table (delete/get)|Manages temporary dataset|No credentials required| |Coresignal Enrich Company|Fetches company enrichment data|Coresignal API key required| |Code Node|Maps domains to HubSpot company IDs|No credentials required| |HubSpot Update Company|Updates existing companies|HubSpot credentials required| |HubSpot Create Company|Creates new companies|HubSpot credentials required| |Summarize Node|Counts number of companies (created, updated, skipped) throughout the workflow|No credentials required| |Merge Node (final)|Combines all summary results into one output|No credentials required| |Slack Message (final)|Sends summary of results to Slack channel|Slack app configuration required| How to Set Up 1. Slack Trigger - listen for the file_share event on your chosen channel. Select the channel by ID, connect your Slack API credential, and ensure your Slack app has permissions to read files and post messages. 2. Notify Slack on file download - send an informational message to the channel confirming processing has started. Use ephemeral mode if the message should only be visible to the triggering user. 3. Download & setch file contents - use a Slack node (resource: file, operation: get) to download the file using the trigger's file_id. Follow this with an HTTP Request node using your Slack credentials to fetch the private download URL - set responseFormat to file to retrieve a binary buffer. 4. Extract & stage data - parse the file with an Extract from File node (supports CSV, Excel, and other tabular formats). Before inserting, use a Data Table node (deleteRows) to clear any existing rows matching the current domain, then insert the fresh data with insertRows. Use the same Data Table ID for both operations. 5. Search HubSpot by domain - use a HubSpot node (searchByDomain) with the expression ={{ $json.Website }} and returnAll enabled to check whether the company already exists. Connect via OAuth2. 6. Branch: existing vs. new company - use an IF node to check whether a HubSpot company ID was returned. The true branch handles updates and duplicates; the false branch handles creation. 7. Slack approval for duplicates - for duplicate companies, use a sendAndWait Slack node with approvalType: double to ask the user whether to proceed with enrichment. Follow with an IF node - if declined, delete or skip the rows. 8. Enrich via Coresignal - use the Coresignal node (resource: company, operation: enrich) with the company website expression. Configure your Coresignal API key in credentials. 9. Map fields with a code node - run custom JavaScript to transform the Coresignal response into HubSpot-ready fields - calculate annual revenue, extract headquarters location, and build a description string. 10. Create or update in HubSpot - new company: HubSpot node (create) - map name, revenue, city, country, and description. Existing company: HubSpot node (update) - provide the companyId from the search result and map the same enriched fields. 11. Summarize & report - use Summarize nodes to count created, updated, and duplicate records. Merge the totals and post a summary message to the Slack channel. 12. Error handling - on HTTP Request and HubSpot nodes, configure retries and backoff under the Options tab. Enable continueOnFail where appropriate to prevent one failed record from stopping the workflow. Use Slack nodes to alert on critical failures. Customization Options You can easily adapt this workflow to: Support additional file formats or columns Enrich only specific companies based on filters Map additional Coresignal fields into HubSpot Route enriched data to other tools (CRM, database, BI tools) Automate lead scoring, segmentation or outreach after enrichment Add validation rules before creating companies Why Use This Workflow? Automates bulk enrichment from simply uploading CSV list to slack Prevents duplicate company records in HubSpot Adds human approval step for better control Keeps CRM data clean and standardized Saves hours of manual data entry and research Scales easily for sales ops and RevOps teams Limitations Recommended batch size: 300–500 companies per run Requires correct domain formatting in input data Slack approval step introduces manual dependency for duplicates Need help or want to customize this? Reach out directly: artur@coresignal.com Follow for more on linkedin: https://www.linkedin.com/in/artur-mulagalijev/
by WeblineIndia
📊 Generate Weekly Energy Consumption Reports with API, Email and Google Drive This workflow automates the process of retrieving energy consumption data, formatting it into a CSV report, and distributing it every week via email and Google Drive. ⚡ Quick Implementation Steps: Import the workflow into your n8n instance. Configure your API, email details and Google Drive folder. (Optional) Adjust the CRON schedule if you need a different time or frequency. Activate workflow—automated weekly reports begin immediately. 🎯 Who’s It For Energy providers, sustainability departments, facility managers, renewable energy operators. 🛠 Requirements n8n instance Energy Consumption API access Google Drive account Email SMTP access ⚙️ How It Works Workflow triggers every Monday at 8 AM, fetches consumption data, emails CSV report and saves a copy to Google Drive. 🔄 Workflow Steps 1. Schedule Weekly (Mon 8:00 AM) Type: Cron Node Runs every Monday at 8:00 AM. Triggers the workflow execution automatically. 2. Fetch Energy Data Type: HTTP Request Node Makes a GET request to: https://api.energidataservice.dk/dataset/ConsumptionDE35Hour (sample API) The API returns JSON data with hourly electricity consumption in Denmark. Sample Response Structure: { "records": [ { "HourDK": "2025-08-25T01:00:00", "MunicipalityNo": _, "MunicipalityName": "Copenhagen", "ConsumptionkWh": 12345.67 } ] } 3. Normalize Records Type: Code Node Extracts the records array from the API response and maps each entry into separate JSON items for easier handling downstream. Code used: const itemlist = $input.first().json.records; return itemlist.map(r => ({ json: r })); 4. Convert to File Type: Convert to File Node Converts the array of JSON records into a CSV file. The CSV is stored in a binary field called data. 5. Send Email Weekly Report Type: Email Send Node Sends the generated CSV file as an attachment. Parameters: fromEmail: Sender email address (configure in node). toEmail: Recipient email address. subject: "Weekly Energy Consumption Report". attachments: =data (binary data from the previous node). 6. Report File Upload to Google Drive Type: Google Drive Node Uploads the CSV file to your Google Drive root folder. Filename pattern: energy_report_{{ $now.format('yyyy_MM_dd_HH_ii_ss') }} Requires valid Google Drive OAuth2 credentials. ✨ How To Customize Change report frequency, email template, data format (CSV/Excel) or add-ons. ➕ Add-ons Integration with analytics tools (Power BI, Tableau) Additional reporting formats (Excel, PDF) Slack notifications 🚦 Use Case Examples Automated weekly/monthly reporting for compliance Historical consumption tracking Operational analytics and forecasting 🔍 Troubleshooting Guide | Issue | Cause | Solution | |-------|-------|----------| | Data not fetched | API endpoint incorrect | Verify URL | | Email delivery issues | SMTP configuration incorrect | Verify SMTP | | Drive save fails | Permissions/Drive ID incorrect | Check Drive permissions | 📞 Need Assistance? Contact WeblineIndia for additional customization and support, we're happy to help.
by Monfort N. Brian | 宁俊
How it works 8AM daily trigger Read domains from Google Sheet Check each domain's SSL certificate Filter: only domains expiring within 30 days or already expired Classify severity (expired / critical / warning / notice) Send one digest message to Slack Create a Linear issue[or Jira ticket] per critical or expired domain Append all flagged domains to the logs sheet Set up steps Setup takes about 8–12 minutes. 1. Google Sheets Create a spreadsheet with two sheets or download this: Sheet 1 is called domains and sheet 2 logs 2. Import the workflow Import this template into your n8n instance. 3. Connect credentials You need three credentials: Google Sheets** Slack** Linear API**
by WeblineIndia
Quick Overview This workflow runs daily at 10:00 and reads commodity news from OilPrice and Invezz RSS feeds, uses a Groq-hosted LLM to classify sentiment and extract commodity/impact details, appends the results to Google Sheets, and posts a Slack alert when aggregated sentiment crosses a threshold. How it works Runs every day at 10:00 on a schedule. Fetches the latest articles from the OilPrice and Invezz commodities RSS feeds, sorts them by publication date, and keeps the five most recent from each source. Merges both feeds and normalizes each article into a consistent structure (title, link, date, content, snippet, and source). Sends the article text to Groq (chat model) to return a JSON sentiment classification with confidence, commodity, impact level, and a one-line summary. Parses the model response and appends the structured result to a Google Sheets worksheet along with the article URL/title/source and a timestamp. Converts the sentiment label into a numeric score, aggregates average sentiment per commodity across the processed articles, and formats a Slack message with the trend and latest summary/link. Posts the Slack message when the average sentiment for a commodity is greater than 0.3 or less than -0.3, otherwise it ends without sending an alert. Setup Add Groq API credentials for the Groq chat model used for sentiment classification. Connect Google Sheets OAuth2 credentials and update the spreadsheet/document ID, sheet name, and column headers to match the fields being appended. Connect Slack OAuth2 credentials and set the target Slack user/channel configuration used to send alerts. Review and, if needed, adjust the RSS feed URLs and the alert thresholds (0.3 and -0.3) to fit your news sources and sensitivity.