Miquel Colomer
As a passionate developer and AI agent creator, I’ve been at the forefront of automation, pioneering workflows and training AI to handle complex tasks seamlessly. I’m an early adopter and expert of n8n, having worked with its powerful capabilities to create automation solutions for diverse industries. I founded n8nhackers, the first AI-powered agency focused on n8n, where we help businesses transform their workflows with cutting-edge automation.
Categories
Templates by Miquel Colomer
Scrape and store data from multiple website pages
This workflow allows extracting data from multiple pages website. The workflow: 1) Starts in a country list at https://www.theswiftcodes.com/browse-by-country/. 2) Loads every country page (https://www.theswiftcodes.com/albania/) 3) Paginates every page in the country page. 4) Extracts data from the country page. 5) Saves data to MongoDB. 6) Paginates through all pages in all countries. It uses getWorkflowStaticData('global') method to recover the next page (saved from the previous page), and it goes ahead with all the pages. There is a first section where the countries list is recovered and extracted. Later, I try to read if a local cache page is available and I recover the cached page from the disk. Finally, I save data to MongoDB, and we paginate all the pages in the country and for all the countries. I have applied a cache system to save a visited page to n8n local disk. If I relaunch workflow, we check if a cache file exists to discard non-required requests to the webpage. If the data present in the website changes, you can apply a Cron node to check the website once per week. Finally, before inserting data in MongoDB, the best way to avoid duplicates is to check that swift_code (the primary value of the collection) doesn't exist. I recommend using a proxy for all requests to avoid IP blocks. A good solution for proxy plus IP rotation is scrapoxy.io. This workflow is perfect for small data requirements. If you need to scrape dynamic data, you can use a Headless browser or any other service. If you want to scrape huge lists of URIs, I recommend using Scrapy + Scrapoxy.
Generate dynamic contents for EMAILS or HTML pages
==Disclaimer: This template contains a community node and therefore only works for n8n self-hosted users== This is Miquel from Aprende n8n and Automate with n8n. We have created a new community node Document Generator that generates dynamic content using templates. You can compose complex content with no SETs or FUNCTION ITEMs nodes using this node, like: Send one email with a list of items in the body (i.e., one email with the last entries of an RSS feed). Send one email per item (i.e., one invoice per email). Emails are just a sample. You can create complex dynamic content to: Send messages to Telegram/Slack. Create WordPress entries. Create HTML pages for your website. Create tickets. And more! The sky is your limit ;) If you want to use this workflow, install the community node n8n-nodes-document-generator from Settings > Community nodes. Type "n8n-nodes-document-generator", check "I understand the risks..." and click on "Install": Later, copy and paste this workflow into your n8n. You will get this workflow: This workflow uses the Customer Datastore node to generate sample input items. You can render one template with all items (enable "Render All Items with One Template"): or one template per input item: Visit the oficial NPM page to see more samples. Learning n8n by yourself is nice, but a bit tricky :) We offer n8n training video courses at Aprende n8n. If you need custom trainings, let us know. Additionally, you can contact us at Automate with n8n if you need the next services: Custom installations. Custom nodes. Monitor and alarms. Delegate 12/5 or 24/7 workflow issue resolutions. Automated backups of your workflows. HTTP integrations of non-supported APIs. Complex workflows. I hope you will enjoy this new node and this workflow. Automate your life! Automate it with n8n!
LinkedIn profile finder via form using Bright Data & GPT-4o-mini
This n8n workflow template automates the process of finding LinkedIn profiles for a person based on their name, and company. It scrapes Google search results via Bright Data, parses the results with GPT-4o-mini, and delivers a personalized follow-up email with insights and suggested outreach steps. 🚀 What It Does Accepts a user-submitted form with a person’s full name, and company. Performs a Google search using Bright Data to find LinkedIn profiles and company data. Uses GPT-4o-mini to parse HTML results and identify matching profiles. Filters and selects the most relevant LinkedIn entry. Analyzes the data to generate a buyer persona and follow-up strategy. Sends a styled email with insights and outreach steps. 🛠️ Step-by-Step Setup Deploy the form trigger to accept person data (name, position, company). Build a Google search query from user input. Scrape search results using Bright Data. Extract HTML content using the HTML node. Use GPT-4o-mini to parse LinkedIn entries and company insights. Filter for matches based on user input. Merge relevant data and generate personalized outreach content. Send email to a predefined address. Show a final confirmation message to the user. 🧠 How It Works: Workflow Overview Trigger: When User Completes Form Search: Edit Url LinkedIn, Get LinkedIn Entry on Google, Extract Body and Title, Parse Google Results Matching: Extract Parsed Results, Filter, Limit, IF LinkedIn Profile is Found? Fallback: Form Not Found if no match Company Lookup: Edit Company Search, Get Company on Google, Parse Results, Split Out Content Generation: Merge, Create a Followup for Company and Person Email Delivery: Send Email, Form Email Sent 📨 Final Output An HTML-styled email (using Tailwind CSS) with: Matched LinkedIn profile Company insights Persona-based outreach strategy 🔐 Credentials Used BrightData account for scraping Google search results OpenAI account for GPT-4o-mini-powered parsing and content generation SMTP account for sending follow-up emails ❓Questions? Template and node created by Miquel Colomer and n8nhackers. Need help customizing or deploying? Contact us for consulting and support.
Parse email body message
Who we are We are Aprende n8n, the first n8n Spanish course for all n8n lovers. If you want to learn more, you can find out more at Aprende n8n. Task goal This task allows extracting data from any email body with a NoCode snippet. An small explanation You receive an email when a user submits a form from your website. All those emails usually have the same structure as the next one: Name: Miquel Email: miquel@aprenden8n.com Subject: Welcome aboard Message: Hi Miquel! Thank you for your signup! This task allows to parse any email body and assign all values to the defined labels, getting an output like this: { "Name": "Miquel", "Email": "miquel@aprenden8n.com", "Subject": "Welcome aboard", "Message" "Hi Miquel! Thank you for your signup!" } After importing it When you import the import, you get the next task in your n8n: We recommend importing this workflow into your current task and adapting it. You define a couple of variables in the "Set values" SET: body: the email body you want to parse. You can add this as an expression from previous variables. labels: the keywords you want to detect and parse. Labels are case insensitive. We define the next values: Body Name: Miquel Email: miquel@aprenden8n.com Subject: Welcome aboard Message: Hi Miquel! Thank you for your signup! Labels Name,Email,Subject,Message A screenshot of the Set output is the next one If we check the "Function item" Node, we get the next content after executing the task: Capabilities The task has the next features: You can detect as many labels as you want. Label detection is case insensitive. You can use the snippet as an independent workflow to call it generically, adding the Function item to the workflow and passing body and labels as paremeters. Limitations This task has limitations: The parser only accepts the multiline values at the end of the email. Help and comments If you have any doubt about this snippet, please, contact us at miquel@aprenden8n.com. You can contact us at Aprende n8n or in the Spanish n8n community
Monitor SSL certificate of any domain with uProc
Do you want to check the SSL certificate expiration dates of your customers or servers? This workflow gets information of an SSL certificate using the uProc Get Certificate by domain tool. You can use this workflow to query SSL certificates in bulk and send alarms when any certificate has expired. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. You can replace "Create Domain Item" with any integration containing a domain, like Google Sheets, MySQL, or Zabbix server. Every "uProc" node returns the next fields per every analyzed SSL certificate: issuer: Contains the issuer. provider: Contains the provider. valid_from: Contains the start date. valid_to: Contains the end date. serial_number: Contains the serial number. type: Contains if supports one or multiple domains. protocol: Contains the protocol. valid: Contains its validity. domains: Contains all domains and subdomains supported. An "IF" node detects if the certificate is valid or not. Finally, the workflow sends an alarm to a Telegram channel to know if the certificate has expired.
Create screenshots with uProc, save to Dropbox and send by email
Do you want to create a website screenshot without browser extensions? This workflow creates screenshots of any website using the uProc Get Screenshot by URL tool and sends an email with the screenshots. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. Node "Create Web + Email Item" can be replaced by any other supported service returning Website and Email values, like Google Sheets, Mailchimp, MySQL, or Typeform. Every "uProc" node returns an image URL of the captured website. This generated URL will remain only 24 hours in our server. You can set up the uProc node with several parameters: width: you can choose one of the predefined values to generate the screenshot, or you can set up a custom width you want. full-page: the tool will return a screenshot of the website from top to bottom with the defined width. In our workflow, we generate two screenshots: 1) One screenshot of 640 pixels width. 2) One full-page screenshot of 640 pixels width. Screenshots are downloaded by "Get File" nodes and saved to the screenshots folder in Dropbox. Finally, we use the Amazon SES node to send an HTML email with both screenshots to the specified email. We will receive the next email:
Get DNS entries of any domain with uProc
Do you want to control the DNS domain entries of your customers or servers? This workflow gets DNS information of any domain using the uProc Get Domain DNS records tool. You can use this workflow to check existing DNS records in real-time to ensure that any domain setup is correct. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. You can replace "Create Domain Item" with any integration containing a domain, like Google Sheets, MySQL, or Zabbix server. Every "uProc" node returns multiple items with the next fields per every item: type: Contains the DNS record type (A, ALIAS, AAAA, CERT, CNAME, MX, NAPTR, NS, PTR, SOA, SRV, TXT, URL). values: Contains the DNS record values.
Verify a phone number with uProc
Do you want to avoid communication problems when launching phone calls? This workflow verifies landline and mobile phone numbers using the uProc Get Parsed and validated phone tool with worldwide coverage. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. Node "Create Phone Item" can be replaced by any other supported service with phone values, like databases (MySQL, Postgres), or Typeform. The "uProc" node returns the next fields per every parsed and validated phone number: country_prefix: contains the international country phone prefix number. country_code: contains the 2-digit ISO country code of the phone number. local_number: contains the phone number without international prefix. formatted: contains a formatted version of the phone number, according to country detected. valid: detects if the phone number has a valid format and prefix. type: the phone number type (mobile, landline, or something else). "If" node checks if the phone number is valid. You can use the result to mark invalid phone numbers in your database or discard them from future telemarketing campaigns.
Custom deal recommendations by email using Forms, Bright Data & GPT-4o-mini
This n8n workflow template automates the process of collecting and delivering the "Top Deals of the Day" from MediaMarkt, tailored to user preferences. By combining user-submitted forms, Bright Data web scraping, GPT-4o-mini deal generation, and email delivery, this workflow sends personalized product recommendations straight to a user’s inbox. > ⚠️ Note: This workflow uses community nodes (Bright Data and Document Generator) which only work on self-hosted n8n instances. --- 🚀 What It Does Collects user preferences via a form (categories + email) Scrapes MediaMarkt’s deals page using Bright Data Uses GPT-4o-mini (OpenAI) to recommend top deals Generates a structured HTML email using a template Sends the personalized deals directly via email --- 🧩 Community Node Integration We created and used the following community nodes: Bright Data – To scrape MediaMarkt deals using proxy-based scraping Document Generator – To generate a templated HTML document from deal data These nodes are not available in n8n Cloud and require self-hosted n8n. --- 🛠️ Step-by-Step Setup Install Community Nodes Make sure you're on a self-hosted n8n instance. Install: n8n-nodes-brightdata n8n-nodes-document-generator Configure Credentials Bright Data API Key (Proxy + Scraping setup) OpenAI API Key (GPT-4o-mini access) SMTP Credentials for sending emails Customize the Form Adapt the form node to collect desired categories and email addresses. Typical categories include appliances, phones, laptops, etc. Design Your HTML Template In the Document Generator node, you can tweak the HTML/CSS to change how deals appear in the final email. Test the Workflow Submit the form with test data and check that the entire flow—from scraping to email—executes as expected. --- 🧠 How It Works: Workflow Overview User Interaction via Form Users select product categories and enter their email. This triggers the workflow. Data Extraction via Bright Data Bright Data scrapes the MediaMarkt offers page and returns HTML content. HTML Parsing Key elements like product names, prices, and links are extracted for processing. GPT-4o-mini Recommendation Generation The extracted data is sent to OpenAI (GPT-4o-mini), which filters, ranks, and enhances deals based on the user’s preferences. Data Structuring & Split The result is split into individual deal items to be formatted. HTML Document Creation Document Generator populates a clean HTML template with the top recommended deals. Email Delivery The final document is emailed via SMTP to the user with a friendly message. --- 📨 Final Output Users receive a custom HTML email featuring a curated list of top MediaMarkt deals based on their selected categories. --- 🔐 Credentials Used Bright Data API – Web scraping with proxy support OpenAI API – Generating personalized recommendations SMTP – Sending personalized deal emails --- ✨ Customization Tips Change the Data Source: You can adapt this to scrape other e-commerce sites. Update the Email Template: Make it match your branding or include images. Extend the Form: Add preferences like price range or specific brands. Add Scheduling: Use Cron to run the workflow daily or weekly. --- ❓Questions? Template and node created by Miquel Colomer and n8nhackers.com. Need help customizing or deploying? Contact us for consulting and support.
Discover company data by name with uProc
Do you want to discover company-related information to enrich a signup process? This workflow enriches any company by name using the uProc Get Company by Name tool. This tool combines Google Maps and emails research on the internet to return results. You get no results if the company has no presence on Google Maps. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. You can replace node "Create Company Item" with any other supported service returning Company names and countries, like Hubspot, Google Sheets, MySQL, or Typeform. You can set up the uProc node with several parameters: country: the country name you want to use. name: the name of the company you need to locate. Every "uProc" node returns the next fields per every located company: name: Contains the company's given name. email: Contains the company's given email. cif: Contains company's cif number. address: Contains company's formatted address. city: Contains the city location of the company. state: Contains province location of the company. county: Contains state location of the company country: Contains country location of the company zipcode: Contains zipcode code of the company phone: Contains phone number of the company website: Contains website of the company latitude: Contains latitude of the company longitude: Contains longitude of the company Next, you can save results to a CRM or Google Sheets, and prepare returned email or phone to launch an email or telemarketing campaign.
Detect web visitors country by IP address with uProc
Do you want to know where a web visitor lives? This workflow enriches any lead by IP address using the uProc.io Location By IP address tool and sends an email in Spanish or English depending on the detected web visitor country. You need to add your credentials (Email and API Key - real -) located at Integration section to n8n. Node "Create IP and Email Item" can be replaced by any other supported service with IP and Email values, like Mailchimp, Calendly, or MySQL. The "uProc" node returns the location of the provided IP address. "If" node checks if the web visitor country code belongs to Spain (ES Isocode). If positive, we use the Spanish language in our emails. Otherwise, we will use the English language in our communications. Depending on the detected country code, we use the Amazon SES node to send the customized email adapted to the right language.
Discover professional emails with uProc and send via Telegram
This n8n workflow template uses uProc's "Get Email by Domain, Firstname and Lastname" tool to discover a professional email address, and then sends that email to a Telegram channel. > ⚠️ Note: You must set up your uProc credentials (Email + API Key) from the Integration settings before running this workflow. --- 🚀 What It Does Uses user-provided data: first name, last name, and company domain Calls uProc to discover the most likely email address for that person Sends the discovered email and confidence level to a Telegram group --- 🛠️ Step-by-Step Setup Add uProc Credentials Go to the uProc integration page and copy your email and API key. Add them as credentials in your n8n instance. Set Tool Parameters Use the Set node to define: firstname: First name of the person lastname: Last name of the person domain: Their company domain Replace the Set Node (Optional) You can dynamically fetch the firstname, lastname, and domain from other sources like: Google Sheets MySQL or Postgres Webhook or Form submissions Run the Workflow Trigger the flow manually or integrate it with a larger automation. --- 🔍 uProc Parameters Explained domain: The company domain (e.g., uproc.io) firstname: First name of the person lastname (in parameter: language): Last name of the person mode: verify: Verifies email in real-time with mail server guess: Guesses based on company format (e.g., firstname.lastname@domain.com) --- 📦 uProc Response Fields email: Discovered email address confidence: Indicates if the result is verified or risky (e.g., catch-all) score: Reliability score from 0 (unreliable) to 99 (highly reliable) --- 📬 Notification via Telegram After discovering the email, the result is sent to a specified Telegram channel with this format: text User Miquel Colomer has next email on uproc.io: contact@uproc.io (verified - 99) Clicking the email allows you to send a message directly to the recipient. --- 🔐 Credentials Used uProc API – For discovering email addresses Telegram API – To send messages to a specific group/channel --- ✨ Customization Tips Loop over a list of people: Replace the set node with a data source that contains multiple people. Filter by score or confidence before sending. Add additional outputs: You can send the data via Email, Slack, or save it to a database. Trigger automatically: Combine with a webhook or time-based trigger for automation. --- ❓Questions? Template created by Miquel Colomer and n8nhackers.com. Need help customizing or deploying? Contact us for consulting and support.