# templates

name: Extract Named Entities from Web Pages with Google Natural Language API
author_name: Hueston
author_username: hueston
categories: []
created_at: 2025-05-08T23:46:13.171Z
updated_at: 2025-05-08T23:46:13.171Z
url: https://n8n.io/workflows/3950
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Who is this for?

  Content strategists analyzing web page semantic content
  SEO professionals conducting entity-based analysis
  Data analysts extracting structured data from web pages
  Marketers researching competitor content strategies
  Researchers organizing and categorizing web content
  Anyone needing to automatically extract entities from web pages

  What problem is this workflow solving?
  Manually identifying and categorizing entities (people, organizations, locations, etc.) on web pages is time-consuming and error-prone. This workflow solves this challenge by:

  Automating the extraction of named entities from any web page
  Leveraging Google's powerful Natural Language API for accurate entity recognition
  Processing web pages through a simple webhook interface
  Providing structured entity data that can be used for analysis or further processing
  Eliminating hours of manual content analysis and categorization

  What this workflow does
  This workflow creates an automated pipeline between a webhook and Google's Natural Language API to:

  Receive a URL through a webhook endpoint
  Fetch the HTML content from the specified URL
  Clean and prepare the HTML for processing
  Submit the HTML to Google's Natural Language API for entity analysis
  Return the structured entity data through the webhook response
  Extract entities including people, organizations, locations, and more with their salience scores

  Setup
  Prerequisites:
  An n8n instance (cloud or self-hosted)
  Google Cloud Platform account with Natural Language API enabled
  Google API key with access to the Natural Language API

  Google Cloud Setup:

  Create a project in Google Cloud Platform
  Enable the Natural Language API for your project
  Create an API key with access to the Natural Language API
  Copy your API key for use in the workflow

  n8n Setup:

  Import the workflow JSON into your n8n instance
  Replace "YOUR-GOOGLE-API-KEY" in the "Google Entities" node with your actual API key
  Activate the workflow to enable the webhook endpoint
  Copy the webhook URL from the "Webhook" node for later use

  Testing:

  Use a tool like Postman or cURL to send a POST request to your webhook URL
  Include a JSON body with the URL you want to analyze: {"url": "https://example.com"}
  Verify that you receive a response containing the entity analysis data

  How to customize this workflow to your needs
  Analyzing Specific Entity 

  Modify the "Google Entities" node parameters to include entityType filters
  Add a "Function" node after "Google Entities" to filter specific entity types
  Create conditions to extract only entities of interest (people, organizations, etc.)

  Processing Multiple URLs in Batch:

  Replace the webhook with a different trigger (HTTP Request, Google Sheets, etc.)
  Add a "Split In Batches" node to process multiple URLs
  Use a "Merge" node to combine results before sending the response

  Enhancing Entity Data:

  Add additional API calls to enrich extracted entities with more information
  Implement sentiment analysis alongside entity extraction
  Create a data transformation node to format entities by type or relevance

  Additional Notes

  This workflow respects Google's API rate limits by processing one URL at a time
  The Natural Language API may not identify all entities on a page, particularly for highly technical content
  HTML content is trimmed to 100,000 characters if longer to avoid API limitations
  Consider legal and privacy implications when analyzing and storing entity data from web pages
  You may want to adjust the HTML cleaning process for specific website structures

  ❤️ Hueston SEO Team

nodes_used:
  ["n8n-nodes-base.respondToWebhook","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","data processing","natural language processing","content analysis","integration"],"complexity":"medium","use_cases":["Automatically extract people, organizations, locations and other entities from web pages","SEO entity-based content analysis and competitor research","Content strategy and semantic analysis of web pages","Batch processing of URLs to generate structured entity datasets","Enriching or filtering extracted entities for downstream workflows or databases"],"estimated_setup_minutes":20,"required_services":["n8n (cloud or self-hosted instance)","Google Cloud Platform - Natural Language API (API key)","HTTP/Webhook client (for testing, e.g., Postman or cURL)"],"key_features":["Webhook endpoint to receive URL input","Fetch and clean HTML content from target pages","Call Google Natural Language API to perform entity analysis","Return structured entity data including salience scores via webhook response","Configurable to filter entity types or process URLs in batches (Split In Batches/merge patterns)"],"target_audience":["Content strategists","SEO professionals","Data analysts and researchers extracting structured web data"]}


name: Extract and Organize Colombian Invoices with Gmail, GPT-4o & Google Workspace
author_name: Juan Sanchez
author_username: juansave
categories: []
created_at: 2025-05-09T00:09:17.630Z
updated_at: 2025-05-09T00:09:17.630Z
url: https://n8n.io/workflows/3951
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  🧾 Personal Invoice Processor

  This N8N workflow automates the extraction and organization of personal invoices in Colombia received via Gmail. It includes the following key steps:

  🔁 Flow Summary

  Email Trigger
     Polls Gmail every 30 minutes for emails with .zip attachments (assumed to contain invoices).
     Expects ZIP file following DIAN standards.

  ZIP File Handling
     Extracts all files.
     Filters only PDF and XML files for processing.

  Data Extraction & Processing
     Uses LangChain Agent + OpenAI (GPT-4o-mini) to extract:
       Tipo de documento (Factura / Nota Crédito)
       Número de factura
       Fecha de emisión (YYYY-MM-DD)
       NIT emisor y receptor (sin dígito de verificación)
       Razón social del emisor
       Subtotal, IVA, Total
       CUFE
       Resumen de compra (max 20 words, formatted sentence)

  Validation
     Ensures Total = Subtotal + IVA using a calculator node.

  Storage
     Uploads the original PDF to Google Drive.
     Renames the file to: YYYY-MM-DD-NUMERO_FACTURA.pdf.
     Inserts or updates invoice details in Google Sheets using a unique Key (NIT_Emisor + Numero_Factura) to prevent duplication.

  &gt; ⚙️ Designed for personal use with minimal latency tolerance and high automation reliability.

nodes_used:
  ["n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolCalculator","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.gmailTrigger","n8n-nodes-base.code","n8n-nodes-base.filter","n8n-nodes-base.compression","n8n-nodes-base.noOp","n8n-nodes-base.code","n8n-nodes-base.switch","n8n-nodes-base.extractFromFile","n8n-nodes-base.extractFromFile","n8n-nodes-base.xml","n8n-nodes-base.merge","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.googleDrive","n8n-nodes-base.merge","n8n-nodes-base.googleDrive","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6876 characters]

metadata_json:
  {"categories":["automation","document processing","integration","accounting"],"complexity":"complex","use_cases":["Automatically extract invoice data from emails","Personal bookkeeping and expense tracking","Preparing records for tax filing (Colombia DIAN standards)","Centralizing invoice storage and preventing duplicates","Generating short human-friendly purchase summaries"],"estimated_setup_minutes":45,"required_services":["Gmail (Google Workspace)","Google Drive","Google Sheets","OpenAI (GPT-4o / GPT-4o-mini)","LangChain agent (n8n integration)"],"key_features":["Polls Gmail for ZIP attachments (DIAN-standard)","Extracts PDFs and XMLs from ZIPs","Uses LLM (LangChain + OpenAI) to parse invoice fields (tipo, número, fecha, NITs, razón social, subtotal, IVA, total, CUFE)","Validates Total = Subtotal + IVA","Uploads and renames original PDFs to Google Drive (YYYY-MM-DD-NUMERO_FACTURA.pdf)"],"target_audience":["Individuals and freelancers in Colombia","Small business owners and sole proprietors","Accountants/bookkeepers handling personal invoices in Colombia user-level automation needs with low latency tolerance"]}


name: 🔐 Double Opt-In Email Verification System with Google Sheets
author_name: Un tal Camilo Medina
author_username: untalcamilomedina
categories: []
created_at: 2025-05-09T05:15:20.175Z
updated_at: 2025-05-09T05:15:20.175Z
url: https://n8n.io/workflows/3953
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This template implements a professional Double Opt-In email verification system using Google Sheets as a database. The workflow collects user emails, generates unique verification codes, stores them securely, and validates user access before proceeding with your main form.

  How it Works

  User submits their email through an initial form
  System generates a unique 6-digit verification code
  Code is stored in Google Sheets along with user data
  Verification email is sent to the user
  User enters the code to verify their email
  Upon successful verification, user accesses the main form

  Setup

  Follow these steps to configure the workflow:

  1. Google Sheets Configuration

  Create a Google Sheets spreadsheet with the following columns:

  | Column Name    | Data Type | Description                          |
  |----------------|-----------|--------------------------------------|
  | Start Date     | String    | Timestamp of form submission         |
  | ID             | String    | Workflow execution ID                |
  | Accepts Terms  | String    | Terms acceptance flag                |
  | Email          | String    | User's email address                 |
  | Code           | String    | 6-digit verification code            |

  2. Google Sheets Connection

  In n8n, go to Credentials
  Add new credential for Google Sheets OAuth2
  Follow the OAuth2 authorization flow
  In the workflow, update the "Store Data" node:
     Replace YOUR_GOOGLE_SHEET_ID with your spreadsheet ID
     Select the correct sheet tab

  3. SMTP Configuration

  Add SMTP credentials in n8n:
     Go to Credentials &gt; Add new &gt; SMTP
     Enter your SMTP server details
     Configure port, username, and password
  Update the "Send Email" node:
     Change sender email to your domain
     Customize subject line and message body
     Set reply-to address

  4. Form Customization

  Entry Form: Customize the title and privacy policy text
  Email Form: Update the description for your use case
  Verification Form: Modify instructions as needed
  Main Form: Add or modify fields for your requirements

  Configuration

  Email Settings

  From Email**: Replace no-reply@yourdomain.com with your sender address
  Subject**: Customize the verification email subject
  Message**: Personalize the email template with your branding
  Reply-To**: Set your support email address

  Form Messages

  Update all form descriptions to match your brand voice
  Customize button labels
  Modify error messages for better user experience

  Benefits

  GDPR Compliance**: Ensures legitimate user consent
  Spam Reduction**: Validates email ownership
  Data Quality**: Maintains clean contact lists
  User Trust**: Professional verification process

  Use Cases

  Newsletter subscriptions
  User registration flows
  Marketing campaign sign-ups
  Lead generation forms
  Event registrations

  Error Handling

  The workflow includes:
  Invalid code detection
  Second attempt opportunity
  Process restart option after multiple failures
  Clear error messaging

  Security Features

  Unique 6-digit codes for each session
  Temporary code storage
  Validation against stored data
  Multiple attempt limits

  Tags
  Double Opt-In, Email Verification, Forms, Google Sheets, GDPR, Data Protection, Email Marketing, Lead Generation

  Requirements

  n8n v1.0+
  Google Sheets account
  SMTP server access
  Basic understanding of n8n workflows

  Support

  For questions or issues with this template:
  Check the sticky notes in the workflow for detailed explanations
  Review the setup instructions above
  Ensure all credentials are properly configured
  Test with a personal email address first

  Best Practices

  Test the complete flow before going live
  Monitor Google Sheets for verification attempts
  Set up email delivery monitoring
  Consider implementing code expiration (advanced feature)
  Keep form messages clear and concise

nodes_used:
  ["n8n-nodes-base.formTrigger","n8n-nodes-base.form","n8n-nodes-base.code","n8n-nodes-base.emailSend","n8n-nodes-base.googleSheets","n8n-nodes-base.form","n8n-nodes-base.if","n8n-nodes-base.form","n8n-nodes-base.form","n8n-nodes-base.if","n8n-nodes-base.form","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE61Yy24bOxL9FaHXKoNFFl/aBU5uJri4YyDPmQRZFMmiI8Tq9kitJB7D/zCL2c8v3k+4aDmwFKeVxNKsu7rqHNYh63HdzEsza9Kb9PkJ/ut1WT9/Wd4scjNtFtJzM7tu5u2q5zbLs8GOY0g6BDLeMqHYbEkk1lJRsihXkq/WeyyWU9GKrAreVhO1Lj4T1tDcTJuWF9LMmj//99//TB5363Qhk7PLHp61kycLnl9MXstyXueZ+3nXTl5crXpZTD7P+w+Tp113fiGTFx9E+lUzbXo+XzWzd9e3FPQT/PCcH7HiL2evTv/xurmL9Orl6R/NtMlL4V7Ko34wVtqCsqDCS61niDOFJwHpbTNt1pfl52Y3069Rn759aU7P12ZOj1b4dP7vbdTHXboQOLvsn7U/Dq5mNpxEHX4SfGt2F/zV2/aq/r7sT4NZ/O3s6vdt8N+65WL107DqxCn987BfzW7eT5u2K7Jz5tFkUhQToAkClBNCVI4hMBeOFGytZQvqrJ3UbrmYrNZpMV+t5t1wMP3V5fCtDS1snEPilZwMdi+X8/NzWTbT5rJbzQc1NLN3QOTUFNCp99Pms6QPXfdxo0w0orRlAVYegZyNwMUROOZEtVTtchhc8ZIX0sty1cyuBzF2vayetb9ddJ+bWeWLldxCei3LDcCZPtF3521sKIGKBxMwARWJELIVKFhiCFklYr+le6vmIRM/pHmfH9IoP2ezi0U74CIVKJQIIdUKuqLVNdsskQ7hh3fsikLlSmYQUxDIpgxJCQErzp6D5qjMlt1TaWXJvUxOuyJ7Cebbj7sETVB3BB+ejWnDF5/5anW27i/X/WMe3qh+uZY7Fs7Gqoz2kEkEyNYAbEKBoCQOqtSqpC2LF9KW22dnLwUZvg5293koPZoozz54IQ3JawtkiSFGceCxRhucKcbXw4S4TRVnW2rCCFFbGkgWiDol0MUHNsrpanGHZN8tZbI5q30kzzdP693L+g1P2ghSH5QvOrF3oDf0HXkQVgooaYRULIF3lQxSjdrtPBbfVIGHXiLt1WhuikbOChXo4DWQ0Qq4mgSuWjExlBzEHneJxJiaXC5gY9ZAORDEYhFsDtVzRdG8k5nTD5I//vgGzet9biYccX92XjPypRgvBKRiBtKlQLSWICFlDMnZnNQW6h88f3geMAzaIbqfB5u1jlU7QDfcEeM8sKkRJBWds5GgCY/Lg0JXq3cCqKsD0lKAi8mgDWUbbHGo3ZbcszZ3y6XkfpOLh9OMWk2dus8yu8heaQ9E1gCZxMBDhbJOYYmoow9yHMuELuoQCYy3EahaB6nEAJit54glJZN3H7vctWWyEd2v6w21Gsgdq7YagsmYh8KiIxBygCiZgKo20dWco9dbqM9lJf2D8+BITf33nYEripRm0IoRiF2GyCkAmmysYZQq/sjKmY2xPhA4azSQOAOJGMGmmKv3yRZxu8/xPH+8mvy962WCe+mtNlaD0f0GwQ536lZt32Buctf20g493NBm78Gq0anErIEVIlAqARKlBIwYyIoy+hvJ7GDVB2DVR2F1VYqP5CDzoJSQFQTjCgRnavCcsbAax2oejtUMl/hwrFRCSTkLYMkGKFQG1jUCWofiTIzk9DhWOgCrU8dgNQlzSamADtUAacWQrPKg2CsvYZCyHcdqD8CKR52rjdq7EiwUjR4oBAPB8VCvvCSvVDCljmN1D8eqw1Hn6rIqlYwCE7MCKjlCUkzgUmTNwinjHg34A7BSOAarstGbFBKk4A0QZQdBewJMLOgRQ05hHGs4AOugAXMoVCQfE0ULWDAAsTIQaklQtHfJGPGK9zxZ8eFQcXOs+vt299ewxmicMZhB12SBClXgFAqkofVHxd5m3lMK1MPB+qCmdHAlYEGDEsDFoS5q1BCwOIiWOXG1uRjZA/WAsrWRAHg6GCzpKKkAOZWB2BhI2Xrw1jsxKFhl51xPu7aft2uZvBn2Rv/s1svJpo7vQ912Z5djbc/X1vV+a7DvSkVjI2kBw0PTV20GzqpCZFVKdoFzGM/9ISrdDJ/qobl/P2049/NPctfSrKTv5+355lf5Ink9hDhbFlk2s+YTDj4+3f5/27lzFs1WAKvLQBkNsHIRiseSk9YiOAxxuWtbyYOrjePt8DC7bhY8Hzi8u95sk34lW5s/ps28LfKlmamb9+9vpruz05jTkXnlOzfTrfkPJ4DR+DvrnbH4e/Yjo652ut0xV2OLpFE/O9uMMT8/GKnH3W33BmPuxnYne2DtzB3/h1yNDQejgb/NwSiHkdXIqKvvz25UySPz/Ki7kVXoUZkfk+94zsZGwBGXNzd/ATceqQoaGAAA

metadata_json:
  {"categories":["automation","integration","data processing","email"],"complexity":"medium","use_cases":["Newsletter subscriptions","User registration flows","Marketing campaign sign-ups","Lead generation forms","Event registrations"],"estimated_setup_minutes":30,"required_services":["n8n (v1.0+)","Google Sheets (Google account / OAuth2)","SMTP server / email provider"],"key_features":["Double opt-in email verification (6-digit codes)","Stores and validates codes in Google Sheets","Sends verification emails via SMTP","Form-driven entry, code entry, and main form gating","Invalid-code handling with retry and restart options','Configurable email and form messaging"],"target_audience":["Marketers","Product managers","Developers/automation engineers implementing onboarding flows"]}


name: Generate Logos and Images with Consistent Visual Styles using Imagen 3.0
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2025-05-09T08:58:19.404Z
updated_at: 2025-05-09T08:58:19.404Z
url: https://n8n.io/workflows/3954
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:31
description:
  This n8n template allows you to use AI to generate logos or images which mimic visual styles of other logos or images. The model used to generate the images is Google's Imagen 3.0.

  With this template, users will be able to automate design and marketing tasks such as creating variants of existing designs, remixing existing assets to validate different styles and explore a range of designs which would have been otherwise too expensive and time-consming previously.

  How it works
  A form trigger is used to capture the source image to reference styles from and a prompt for the target image to generate.
  The source image is passed to Gemini 2.0 to be analysed and its visual style and tone extracted as a detailed description.
  This visual style description is then combined with the user's initial target image prompt. This final prompt is given to Imagen 3.0 to generate the images.
  A quick webpage is put together with the generated images to present back to the user.
  If the user provided an email address, a copy of this HTML page will be sent.

  How to use
  Ensure the workflow is live to share the form publicly.
  The source image must be accessible to your n8n instance - either a public image of the internet or within your network.
  For best results, select a source image which has strong visual identity as these will allow the LLM to better describe it.
  For your prompt, refer to the imagen prompt guide found here: https://ai.google.dev/gemini-api/docs/image-generation#imagen-prompt-guide

  Requirements
  Gemini for LLM and Imagen model.
  Cloudinary for image CDN.
  Gmail for email sending.

  Customising this workflow
  Feel free to swap any of these out for tools and services you prefer.
  Want to fully automate? Switch the form trigger for a webhook trigger!

nodes_used:
  ["n8n-nodes-base.splitOut","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.formTrigger","n8n-nodes-base.if","n8n-nodes-base.form","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.convertToFile","n8n-nodes-base.html","n8n-nodes-base.convertToFile","n8n-nodes-base.form","n8n-nodes-base.if","n8n-nodes-base.gmail","n8n-nodes-base.extractFromFile","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 7300 characters]

metadata_json:
  {"categories":["automation","design","content creation","AI image generation","marketing"],"complexity":"medium","use_cases":["Generate logo and image variants in a consistent visual style","Remix existing assets to explore alternative designs","Rapid prototyping for marketing and branding","A/B testing and creative iteration for product/marketing teams","Automate delivery of generated image gallery via email or web page"],"estimated_setup_minutes":30,"required_services":["Google Gemini (LLM)","Imagen 3.0 (image generation)","Cloudinary (image CDN/hosting)","Gmail (email delivery)"],"key_features":["Extract visual style/tone from a source image using an LLM","Combine extracted style description with user prompt to produce targeted Imagen prompts","Generate multiple image variants with Imagen 3.0","Assemble a quick HTML gallery to present generated images","Optional email delivery of results if an address is provided"],"target_audience":["designers and creative teams","marketers and brand managers","product managers and UX teams needing quick mockups or variants 
  (agencies) 
  developers/automation engineers integrating AI-driven design into workflows"]}


name: Boost Sales: Convert Product Photos into 360° Videos Instantly
author_name: Aayushman Sharma
author_username: ajstyle0411
categories: []
created_at: 2025-05-09T09:46:12.736Z
updated_at: 2025-05-09T09:46:12.736Z
url: https://n8n.io/workflows/3957
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:33
description:
  Transform Product Images into Stunning 360° Videos with AI (OpenAI + RunwayML Workflow)

  Turn static product photos into eye-catching 360° rotating product videos—fully automated with AI.  
  Perfect for Shopify, WooCommerce, Amazon sellers, digital marketers, and content creators looking to boost engagement, increase conversions, and stand out online.

  Why This Workflow is a Game-Changer

  With this AI-powered product video automation, you can:

  Convert simple product shots into premium, studio-quality videos**—no expensive gear or editing required.
  Speed up your product media pipeline** from hours to minutes.
  Boost click-through rates** on ads, listings, and social media posts.
  Maintain consistent brand visuals across all product media.

  How the Automation Works

  This n8n + OpenAI + RunwayML workflow takes a product image, title, and description from a form submission and delivers a ready-to-publish video—completely hands-off:

  Upload Product Photo → Saved to Google Drive for processing.
  Generate AI-Optimized Prompt → OpenAI enhances details for visual quality.
  Refine the Image → AI improves lighting, sharpness, and background for a premium look.
  Create a 360° Product Spin Video → RunwayML API generates a smooth rotating showcase.
  Deliver the Final Video → (Optional) Send via email or store in cloud storage.

  Best Use Cases

  eCommerce Product Pages** → Give customers a 360° view for higher purchase confidence.
  Social Media Marketing** → Auto-generate reels, TikToks, and carousel videos.
  Paid Ads & Campaigns** → Create thumb-stopping visuals for Facebook, Instagram, and Google Ads.
  Product Launches** → Showcase new arrivals without manual editing.

  Quick Setup Guide

  Prerequisites
  Active n8n instance (self-hosted or cloud)
  API credentials for:
    Google Drive OAuth2 / Service Account
    OpenAI API Key
    RunwayML API Key
    (Optional) SMTP / Email service for notifications

  Installation Steps
  Import the Workflow → Upload the provided JSON file into n8n.
  Connect API Credentials:
     Google Drive for storage.
     OpenAI for prompt generation.
     RunwayML for video rendering.
  Update Placeholders:
     {{GDRIVE_FOLDER_ID}}
     Email address: admin@example.com
  Deploy & Test → Trigger via form submission or webhook.

  Customization Possibilities

  Style Tweaks** → Change backgrounds, lighting, and colors.
  Video Settings** → Adjust rotation speed, duration, and aspect ratio (1:1, 4:5, 16:9).
  Brand Elements** → Add logos, watermarks, or custom overlays.
  Delivery Channels** → Save to Google Drive, Dropbox, or auto-post to social media.
  Notification Emails** → Use branded templates for delivery.

  Workflow Highlights

  End-to-End Automation** → From upload to final video, all handled by AI.
  No Technical Skills Needed** → Plug-and-play with minimal setup.
  Scalable** → Works for a single product or thousands.
  Secure** → Credentials stored safely—no hardcoding.

  Keywords for SEO Targeting

  360° product video automation  
  AI product video generator  
  eCommerce product videography workflow  
  Shopify product video automation  
  RunwayML product showcase  
  OpenAI product image enhancement  
  n8n eCommerce automation

  Ready to make your product listings impossible to scroll past?  
  Deploy this AI-powered workflow today and start generating professional 360° videos—on autopilot.

nodes_used:
  ["n8n-nodes-base.formTrigger","n8n-nodes-base.googleDrive","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.convertToFile","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.wait","n8n-nodes-base.googleDrive","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.emailSend","n8n-nodes-base.emailSend","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.switch","n8n-nodes-base.wait"]

workflow_json_compressed:
  H4sIAAAAAAAAE72Y224byRGGX2UwF7liOX2oPvEqinc3cOBdG/IhCQwhqO6ulgZLziicobWGoHfKM+TJgiG1Fi0OZVFCckeQxeqvqv7ururrusn1vP7lw1/f/uP1xy8vl6+XP56c/L2e1UseqJ5f103bD9QmfjXaKUoeY5EFUZBg7wKRzUFaa4mkjSi1lYZc0JkUEkpHTmRWQqFOGKme1QMvLxc08MsV5/4dD+vLl93ycsED53o+rNZ8M6tbWnI9r9+vqO1Lt1pWb1ddXqehenvRDV1fNe3QVdqK//y7+thk7vrqqhkuqjeX3J68qv5Qna7bK/ry8+txOTrv6/mns1nddpnHj9fbkGVIoZC2IIpOgJgiUEwStKMivJUySlt/RXnTVhuQfh2XTd83XTv6/nI5/tb6FjbOIVLPL0a796vm/JxX9ay+7PpmGM3nn8RMnM3qK44XXffrJp0ek81eZwg6ekD2DkJwCD5Ho6MtOccw+qAVLXngVV/Pr2+2637k1YZirl6om9ltTEkSOrQMJIsFZMVAghQky86apLLIfBfTh8tFR7l6s2rOm5YW2+QeDOu8684X/MOq+czfhqXUNrAHKfVXRqlROCsL6CIzoLEJPOsCqcSgWRiWMt0xnryqTs65He6w/tT69o93bAtqz9MFNe0LurXbQUN8BJp84b/CRbJK5cJgg3SAqDKQLxmsIiN00hqx7Ihiq7eXFzRUP3eZF4+gXCxH880/m31YqR6Bu1NvrYtkbSGOykUsHmIQCYpRMZrkFVO4w33ZtZ95NVRDV/3ULPhgpdPW7n13a7XDKLUQM/sIRvmVkUgLHWUCFhIBo0WIqiBIYk9CWh9wh/Ev3PKKBt7u64OIF8Nwecr/WnN/v+JCzPT3AXEniUSxWM8GNDoNWEyGiDmC8MZiCUVRsLuAw1PZnD2azaZI1ooAOkkCTFzAZ1vARBI+Ru9yMXdsf6NmqLSoek4H6a6ouYdl/O9Yu0eTQ51KchkwZgsoU4SoUEBgJVMK0uby3aNpVwZKWmN91BCtdYCUCaKgAjnqRCUJR7yT5R+6q3ZzOD0o1INHkhdHHUnWJfJJZchyDFgLBAregfSJlYmiCB93ttGKR4GecmlaztWrJZ0fRjwoBinsY3bSrhiiLdohRSAmC4gBIQotoGjlY1FFUgrfCvXD6esnkB0v0+BtkcloSLKMd6lRQMaMJxIKQUV7FfId2buhSb9+qX7phsN56zc2tyY7cIBiBn4Prk5dO4zH/7yu91T4FdMIZJ2KgRSsAdTRQiyOwImSLGeHOcdJTHk0p/TP4CSDrkQjgFI0gKoYICcESETjVBJGBJzkVEdzjuflkzk9Wud5rPgIi0ox+CQSEHrpRCgYCk9y6qM53XPqXqRgGbUAkbMBDD5C1BjBx5KMTTrY3Y2zw4lHc4Zn1T1IUjpEEITjBk8EMRFBEspxcCYm5SY5zfH6FGKm9jf54zidZGMVSYjGMSBLO34yYHMxrGIQFmmS0x7NqfE5nJYiCxsh2yABrSUIYZRBGGWrUCWa1qc7Pp/jhvf73dvjQBWlXLyzUAIjYJEMlBWBcsrEwkaGLCdB/dNAn5xRYwQa7QWgyBowRAYKKMBqUXwMFEPZqfymT6puW7qma6ufqFmsV1z9uKRmcRCdx1/fcZvvkavxYsL7jYqMLm1mqISiAFrWEFVSgEWYIkkXh+77M9RdiBYFc0kR0JgIqJ2HYDUBGnKoiKLdvcv2Qny3Ton7fhvidizd2jx0Fz8UsRX/64gjkxFGGlCyeECPGrwXCF5rG7WQJcXpazE8TX0Gn6i+YAyb4DMkXxBQBQveFgdBZGeYgtXqwP0tntBoPOckl9lyoSRAe0GAzjCQjgjJ22wKG2f0Dulptx64Oknj0n31Z+o5V6OUBhrWfVVW3bLa09n7rju8g/qrZkgX924mK2ZqP569rninrVMccvIxQ/AoAZ0PEE3KEKxPIWYnvJH3pg9TvTtq+JAKxSyo+xK3xUWhpQH0gQG9LRBk1iBSEFEWxZ7SY6aPs1lNaRjng3mhRc+zuudhaNrzTSn5N07rEeTNKvOqntef5VjTz1sP2zEoWCFRBeBoPKBVBJG1h2QlxiiiVJu9kbq25W39Rse/997z63pJzRjnp+vN+9MDE+7GcFY3bebf6rm4OTu7md09f0x5OjAkTTq6G1unPD1fgJOL7ihiOhN7o/RhN7dj7XP8fJuvKU8Pj3YHEvtNOae8To7lk87uv9Acivabu2TS0/7T1Py6puaf40PUms759rsdv/svbXvme4vsP4pOEX/nnXE6E1OVmCzZoUetSbfTKFN+99Mx6fDJO2dqzcf2S3skswd8PK4hecjl1MH+f7c/u7m5+S8LsZjXrRgAAA==

metadata_json:
  {"categories":["automation","eCommerce","media processing","AI/ML","video generation"],"complexity":"medium","use_cases":["Create 360° product videos for eCommerce product pages","Auto-generate social media reels/TikToks/carousels","Produce ad creatives for paid campaigns","Automate product launch visuals at scale","Batch processing of product catalogs"],"estimated_setup_minutes":30,"required_services":["n8n instance (self-hosted or cloud)","Google Drive (OAuth2 or Service Account)","OpenAI API key","RunwayML API key","SMTP / Email service (optional)","Form provider or webhook endpoint for uploads"],"key_features":["Convert product photos into 360° rotating videos","AI-enhanced prompt and image refinement (OpenAI)","RunwayML-driven video rendering","Automatic storage/delivery to cloud or email","Customizable video settings (speed, duration, aspect ratio) and branding (logos/watermarks)"],"target_audience":["Shopify/WooCommerce/Amazon sellers","Digital marketers and growth teams","Content creators and social media managers」「Ecommerce managers and product teams」「Marketing or creative agencies"]}


name: Automate New Customer Onboarding with HubSpot, Google Calendar, and AI-Powered Gmail
author_name: PollupAI
author_username: zeerobug
categories: []
created_at: 2025-05-09T10:11:20.532Z
updated_at: 2025-05-09T10:11:20.532Z
url: https://n8n.io/workflows/3958
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n workflow streamlines the onboarding process for new customers by automating personalized email communication, calendar scheduling, and contact assignment in HubSpot. It is perfect for businesses looking to ensure a smooth and personalized onboarding experience for new clients.

  🧑‍💼 Who is this for?

  Customer success teams who need to onboard new clients efficiently.
  Sales teams who want to ensure smooth transitions from prospect to customer.
  Small businesses that want to automate customer onboarding without complex systems.

  🧩 What problem is this workflow solving?

  This workflow reduces the manual effort involved in onboarding new customers by:

  Automatically sending personalized welcome emails.
  Scheduling a welcome meeting using a calendar tool.
  Assigning the customer to a Customer Success Manager (CSM) in HubSpot.

  ⚙️ What this workflow does

  Trigger via Webhook or HubSpot:
     The workflow can be triggered either by a webhook (direct API call) or a HubSpot trigger (e.g., when a new contact is created).

  HubSpot Connection:
     Retrieves the list of HubSpot owners (users with contact access).
     Identifies the owner of the new contact.

  Calendar Management:
     Utilizes a Calendar Agent to schedule a welcome meeting with the new customer.
     The Calendar Agent can create, update, or delete events as needed.

  Personalized Email Creation:
     Uses an AI-powered Email Writer (OpenAI) to generate a personalized welcome email.
     Transforms the email text into HTML for a polished format.

  Email Sending via Gmail:
     Sends the personalized email to the customer using Gmail.
     Sets the new contact’s owner in HubSpot for further communication tracking.

  🛠️ Setup

  Webhook Setup in n8n:
  	Create a new workflow and add a Webhook node.
  	Set the Webhook URL path (e.g., /webhook-customer-onboarding).
  	Make sure the workflow is active.

   Webhook Setup in HubSpot:
  	Go to HubSpot Developer Account.
  	Navigate to Settings &gt; Integrations &gt; Webhooks.
  	Create a new webhook and set the URL as the n8n Webhook URL.
  	Choose POST as the request method.
  	Test the webhook to ensure it triggers the workflow in n8n.

   Calendar Agent Configuration:
  	The Calendar Agent can be configured to create, update, or delete events.
  	Connect it to your calendar tool (Google Calendar, Outlook, etc.).
  	Customize the calendar event details (title, description, time).

   Email Writer Setup:
  	Customize the AI prompt in the Email Writer node to match your brand’s voice.
  	Adjust the email text format for your specific needs.

   Gmail Integration:
  	Connect your Gmail account in n8n.
  	Set the recipient email to the new customer’s email address.

  ✏️ How to customize this workflow to your needs

  Modify the AI-Powered Email**:
    Adjust the email prompt for the AI model to create a different welcome message.
    Change the email format or add custom variables (e.g., customer name, service details).

  Customize Calendar Settings**:
    Set default time slots for welcome meetings.
    Specify which calendar to use for scheduling.

  Add Additional Steps**:
    Extend the workflow to automatically assign the customer to a specific HubSpot list.
    Add a follow-up email or survey after the welcome meeting.

  This workflow is perfect for businesses seeking an efficient and personalized onboarding process, ensuring new customers feel welcomed and supported from day one.

nodes_used:
  ["n8n-nodes-base.webhook","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.executeWorkflowTrigger","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.filter","n8n-nodes-base.stickyNote","n8n-nodes-base.hubspotTrigger","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.hubspot","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.gmail","n8n-nodes-base.hubspot","n8n-nodes-base.stickyNote","n8n-nodes-base.markdown","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 8148 characters]

metadata_json:
  {"categories":["automation","integration","communication"],"complexity":"medium","use_cases":["Automated new-customer onboarding","Personalized welcome email generation","Scheduling welcome/onboarding meetings","Assigning contacts to owners in CRM","Reducing manual customer-success handoff work"],"estimated_setup_minutes":45,"required_services":["n8n (workflow host)","HubSpot (CRM & webhook)","Google Calendar or Outlook (calendar agent)","Gmail (email sending)","OpenAI or compatible AI provider (email generation)","Public webhook endpoint / accessible URL"],"key_features":["Trigger via HubSpot or webhook","Retrieve and assign HubSpot contact owners","AI-powered personalized welcome email generation","Convert plain text to HTML email","Schedule/create/update/delete calendar events via Calendar Agent (Google/Outlook)"],"target_audience":["Customer success teams","Sales teams","Small businesses / founders automating onboarding processes"]}


name: Redesign T-Shirt Mockups to Print-Ready Files with GPT-4 Vision & Imagen 4
author_name: Thong
author_username: duythong
categories: []
created_at: 2025-05-09T11:07:57.285Z
updated_at: 2025-05-09T11:07:57.285Z
url: https://n8n.io/workflows/3959
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:31
description:
  🧠 What This Workflow Does

  This n8n workflow allows you to upload a T-shirt mockup design (even if it's rough or outdated), and automatically turns it into a refined, print-ready artwork using the power of AI.

  It starts with an image of a T-shirt design, analyzes it using OpenAI's vision model, and then generates a cleaner, upgraded prompt to be used with OpenAI’s image generation API (gpt-image-1). The final output is a new T-shirt graphic optimized for printing on solid black background, with no visible shirt or mockup framing.

  ⚙️ How It Works

  User Sends a T-shirt Mockup Image Link
  The workflow begins when the user drops an image link (T-shirt mockup) into a chat interface or input trigger.

  AI Analyzes the Image (OpenAI Vision)
  Using OpenAI’s GPT-4 vision capabilities, the workflow extracts the key design elements from the image:

  Characters, text, layout
  Graphic style, composition
  Visual tone and focus
  AI Agent Creates a Refined Prompt
  The extracted details are passed to an AI agent that:
  Preserves the original layout and message
  Enhances the visual composition and typography
  Removes mockup elements like shirt collar, sleeves, shadows.
  Locks the artwork on a pure black background only
  Outputs a clean, artistic, JSON-safe one-line prompt for generation

  Text Escaping for API Compatibility
  A JavaScript function node escapes the prompt (quotes, slashes, line breaks) to make it safe for use in downstream JSON requests.

  Image Generation via GPT-Image-1 API or IMAGEN 4 from GOOGLE
  The final prompt is sent to OpenAI’s gpt-image-1 to generate a brand-new artwork — ideal for direct printing on a black T-shirt.

  ⚠️ Cost Notice for gpt-image-1 Usage

  This workflow uses OpenAI's gpt-image-1 model to generate high-quality T-shirt artwork from refined prompts. Please note that this model is a paid service, and each image generation request may cost approximately $0.25 per design, depending on resolution and usage.

  We strongly recommend users to review their OpenAI API usage plan and be mindful of costs when running this workflow, especially if generating in bulk or integrating into larger automation flows.

  You can monitor your usage at: https://platform.openai.com/docs/models/gpt-image-1

  (Optional) You can send the result to Telegram, upload to Notion, or store it in your design system.

  ✅ Key Features
  Works from any uploaded mockup image
  Converts design concepts into print-ready artwork prompts
  Avoids outputting shirt models, collars, or product mockups
  Optimized for solid black background with no distractions
  Modular and easy to connect with file delivery or approval flows

  🚀 How to Use

  Import the .json workflow into n8n
  Configure your OpenAI credentials for both vision and image APIs
  Trigger the flow by sending an image url of a T-shirt mockup
  Let the workflow generate and return a brand-new design from that concept

nodes_used:
  ["@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.chatTrigger","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.convertToFile","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.openAi"]

workflow_json_compressed:
  [encoded data, 4236 characters]

metadata_json:
  {"categories":["automation","image-generation","design","integration","AI/ML"],"complexity":"medium","use_cases":["Convert rough/mockup T‑shirt designs into print‑ready artwork","Automate generation of new T‑shirt graphics from existing designs","Create consistent black‑background assets for print‑on‑demand","Prep design assets for delivery to clients or upload to asset stores","Batch processing of mockups into production‑ready files"],"estimated_setup_minutes":30,"required_services":["n8n","OpenAI (GPT‑4 Vision and gpt-image-1)","Optional: Google Imagen 4 (alternative image generation)","Optional: Telegram, Notion, or cloud storage for delivery"],"key_features":["Analyzes uploaded mockup with OpenAI vision to extract design elements","AI agent refines and enhances prompts while preserving layout/message","Generates JSON-safe, one-line prompts and escapes text for API use","Creates new print‑ready images optimized for pure black backgrounds","Removes mockup artifacts (collars, sleeves, shadows) from outputs"],"target_audience":["Graphic designers","Print‑on‑demand sellers and e‑commerce merchants","Creative agencies and studios producing merch assets"]}


name: Automated Financial Tracker: Telegram Invoices to Notion with Gemini AI Reports
author_name: Rizqi Pratama Ramadhani
author_username: rizqiramadhani
categories: []
created_at: 2025-05-09T11:57:48.753Z
updated_at: 2025-05-09T11:57:48.753Z
url: https://n8n.io/workflows/3960
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  Automated Financial Tracker: Telegram Invoices to Notion with AI Summaries & Reports

  Tired of manually logging every expense? Streamline your financial tracking with this powerful n8n workflow!

  Snap a photo of your invoice in Telegram, and let AI (powered by Google Gemini) automatically extract the details, record them in your Notion database, and even send you a quick summary. Plus, get scheduled weekly reports with charts to visualize your spending. Automate your finances, save time, and gain better insights with this easy-to-use template!

  Transform your expense tracking from a chore into an automated breeze. Try it out!

  Overview:

  This workflow revolutionizes how you track your finances by automating the entire process from invoice capture to reporting. Simply send a photo of an invoice or receipt to a designated Telegram chat, and this workflow will:

  Extract Data with AI: Utilize Google Gemini's capabilities to perform OCR on the image, understand the content, and extract key details like item name, quantity, price, total, date, and even attempt to categorize the expense.
  Store in Notion: Automatically log each extracted transaction into a structured Notion database.
  Instant Feedback: Send a summary of the processed transaction back to your Telegram chat.
  Scheduled Reporting: Generate and send a visual summary of your expenses (e.g., weekly spending by category) as a chart to your preferred Telegram chat or group.

  This workflow is perfect for individuals, freelancers, or small teams looking to effortlessly manage their expenses without manual data entry.

  Key Features & Benefits:

  Effortless Expense Logging:** Just send a picture – no more typing!
  AI-Powered Data Extraction:** Leverages Google Gemini for intelligent invoice processing.
  Centralized Data in Notion:** Keep all your financial records neatly organized in a Notion database.
  Automated Categorization:** AI helps in categorizing your expenses (e.g., Food & Beverage, Transportation).
  Instant Summaries:** Get immediate confirmation and a summary of what was recorded.
  Visual Reporting:** Receive scheduled charts (e.g., bar charts of spending by category) directly in Telegram.
  Customizable:** Easily adapt the workflow to your specific needs, categories, and reporting preferences.
  Time-Saving:** Drastically reduces the time spent on manual financial administration.

  How It Works (Workflow Breakdown):

  The workflow is divided into two main parts:

  Part 1: Real-time Invoice Processing & Logging (## Auto Notes Transaction with Telegram and Notion database)

  Telegram Trigger (Telegram Trigger | When recive photo): Activates when a new photo is sent to the configured Telegram chat.
  Get Photo Info (Get Info Photo from telegram chat): Retrieves the details of the received photo.
  Get Image Info (Get Image Info): Prepares the image data.
  AI Data Extraction (Google Gemini Chat Model & Basic LLM Chain):
      The image data is sent to the Google Gemini Chat Model.
      A specific prompt instructs the AI to extract details (date, ID, name, quantity, price, total, category, tax) in a JSON array format and provide a summary message. The categories include Food & Beverage, Transportation, Utilities, Shopping, Healthcare, Entertainment, Housing, and Education.
  Parse AI Output (Parse To your object | Table): Structures the AI's JSON output for easier handling.
  Split Transactions (Split Out | data transaction): If an invoice contains multiple items, this node splits them into individual records.
  Record to Notion (Record To Notion Database): Each transaction item is added as a new page/entry in your specified Notion database, mapping fields like Name, Quantity, Price, Total, Category, Date, and Tax.
  Send Telegram Summary (Sendback to chat and give summarize text): The summary message generated by the AI is sent back to the original Telegram chat.

  Part 2: Scheduled Financial Reporting (## Schedule report to send on chanel or private message)

  Schedule Trigger (Schedule Trigger | for send chart report): Runs at a predefined interval (e.g., every week) to generate reports.
  Get Recent Data from Notion (Get Recent Data from Notions): Fetches transaction data from the Notion database for a specific period (e.g., the past week).
  Summarize Data (Summarize Transaction Data): Aggregates the data, for example, by summing up the 'total' amount for each 'category'.
  Prepare Chart Data (Convert Data to JSON chart payload): Transforms the summarized data into a JSON format suitable for generating a chart (e.g., labels for categories, data for spending amounts).
  Generate Chart (Generate Chart): Uses the QuickChart node to create a visual chart (e.g., a bar chart) from the prepared data.
  Send Chart to Telegram (Send Chart Image to Group or Private Chat): Sends the generated chart image to a specified Telegram chat ID or group.

  Nodes Used (Key Nodes):

  Telegram Trigger & Telegram Node:** For receiving images and sending messages/images.
  Google Gemini Chat Model (Langchain):** For AI-powered OCR and data extraction from invoices.
  Basic LLM Chain (Langchain):** To interact with the language model using specific prompts.
  Output Parser Structured (Langchain):** To structure the output from the language model.
  Notion Node:** For reading from and writing to your Notion databases.
  Schedule Trigger:** To automate the reporting process.
  Summarize Node:** To aggregate data for reports.
  Code Node:** Used here to format data for the chart.
  QuickChart Node:** For generating charts.
  SplitOut Node:** To process multiple items from a single invoice.

  Setup Instructions:

  Credentials:
      Telegram: Create a Telegram bot and get its API token. You'll also need the Chat ID where you'll send invoices and where reports should be sent.
      Google Gemini (PaLM) API: You'll need an API key for Google Gemini.
      Notion: Create a Notion integration and get the API key. Create a Notion database with properties corresponding to the data you want to save (e.g., Name (Title), Quantity (Number), Price (Number), Total (Number), Category (Select), Date (Text or Date), Tax (Number)). Share this database with your Notion integration.
  Configure Telegram Trigger:
      Add your Telegram Bot API token.
      When you first activate the workflow or test the trigger, send /start to your bot in the chat you want to use for sending invoices. n8n will then capture the Chat ID.
  Configure Google Gemini Node (Google Gemini Chat Model):
      Select or add your Google Gemini API credentials.
      Review the prompt in the Basic LLM Chain node and adjust if necessary (e.g., date format, categories).
  Configure Notion Nodes:
      Record To Notion Database:
          Select or add your Notion API credentials.
          Select your target Notion Database ID.
          Map the properties from the workflow (e.g., ={{ $json.name }}) to your Notion database columns.
      Get Recent Data from Notions:
          Select or add your Notion API credentials.
          Select your target Notion Database ID.
          Adjust the filter if needed (default is "past_week").
  Configure Telegram Node for Reports (Send Chart Image to Group or Private Chat):
      Select or add your Telegram Bot API token.
      Enter the Chat ID for the group or private chat where you want to receive the reports.
  Configure Schedule Trigger (Schedule Trigger | for send chart report):
      Set your desired schedule (e.g., every Monday at 9 AM).
  Test: Send an image of an invoice to your Telegram bot and check if the data appears in Notion and if you receive a summary message. Wait for the scheduled report or manually trigger it to test the reporting functionality.

  Sticky Note Text for Your n8n Template:

  (These are suggestions. You would place these directly into the sticky notes within your n8n workflow editor.)

  Existing High-Level Sticky Notes:

  ## Auto Notes Transaction with Telegram and Notion database
  ## Schedule report to send on chanel or private message

  Specific Sticky Notes to Add:

  On Telegram Trigger | When recive photo:**
          📸 INVOICE INPUT 📸
      Bot listens here for photos of your receipts/invoices.
      Ensure your Telegram Bot API token is set in credentials.
      Near Google Gemini Chat Model & Basic LLM Chain:**
          🤖 AI MAGIC HAPPENS HERE 🧠
      Image is sent to Google Gemini for data extraction.
      Check 'Basic LLM Chain' to customize the AI prompt (e.g., categories, output format).
      Requires Google Gemini API credentials.
      On Parse To your object | Table:**
          ✨ STRUCTURING AI DATA ✨
      Converts the AI's text output into a usable JSON object.
      Check the schema if you modify the AI prompt significantly.
      On Record To Notion Database:**
          📝 SAVING TO NOTION 📝
      Extracted transaction data is saved here.
      Configure with your Notion API key & Database ID.
      Map fields correctly to your database columns!
      On Sendback to chat and give summarize text:**
          💬 TRANSACTION SUMMARY 💬
      Sends a confirmation message back to the user in Telegram
      with a summary of the recorded expense.
      On Schedule Trigger | for send chart report:**
          🗓️ REPORTING SCHEDULE 🗓️
      Set how often you want to receive your spending report (e.g., weekly, monthly).
      On Get Recent Data from Notions:**
          📊 FETCHING DATA FOR REPORT 📊
      Retrieves transactions from Notion for the report period.
      Default: "Past Week". Adjust filter as needed.
      Requires Notion API credentials & Database ID.
      On Summarize Transaction Data:**
          ➕ SUMMARIZING SPENDING ➕
      Aggregates your expenses, usually by category,
      to prepare for the chart.
      On Convert Data to JSON chart payload (Code Node):**
          🎨 PREPARING CHART DATA 🎨
      This Code node formats the summarized data
      into the JSON structure needed by QuickChart.
      On Generate Chart (QuickChart Node):**
          📈 GENERATING VISUAL REPORT 📈
      Creates the actual chart image based on your spending data.
      You can customize chart type (bar, pie, etc.) here.
      On Send Chart Image to Group or Private Chat:**
          📤 SENDING REPORT TO TELEGRAM 📤
      Delivers the generated chart to your chosen Telegram chat/group.
      Set the correct Chat ID and Bot API token.
      General Sticky Note (Place where relevant):**
          🔑 CREDENTIALS NEEDED 🔑
      Remember to set up API keys/tokens for:
      Telegram
      Google Gemini
      Notion
      General Sticky Note (Place where relevant):**
          💡 CUSTOMIZE ME! 💡
      Adjust AI prompts for better accuracy.
      Change Notion database structure.
      Modify report frequency and content.
      `

nodes_used:
  ["@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.notion","n8n-nodes-base.summarize","n8n-nodes-base.quickChart","n8n-nodes-base.telegram","n8n-nodes-base.code","n8n-nodes-base.telegramTrigger","n8n-nodes-base.editImage","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.splitOut","n8n-nodes-base.telegram","n8n-nodes-base.notion","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.telegram"]

workflow_json_compressed:
  [encoded data, 6760 characters]

metadata_json:
  {"categories":["automation","integration","data processing","finance"],"complexity":"medium","use_cases":["Automated expense/receipt capture","Personal finance tracking","Freelancer or small-business bookkeeping","Automated categorization of expenses","Scheduled visual spending reports"],"estimated_setup_minutes":45,"required_services":["n8n instance","Telegram Bot API (Bot token, Chat ID)","Google Gemini (PaLM) API key","Notion API (integration token and Database ID)","QuickChart (or similar chart generation service)"],"key_features":["Send photo in Telegram -> AI OCR & structured data extraction","Automatic recording of transactions into Notion database","AI-driven expense categorization and item splitting","Immediate Telegram confirmation summary","Scheduled aggregated reports with charts (weekly, etc.) via QuickChart -> Telegram"],"target_audience":["Individuals tracking personal expenses","Freelancers and contractors","Small business owners and teams with lightweight bookkeeping needs"]}


name: Convert LLM Output into Rich Telegram Messages — Auto-Media & Smart Chunking
author_name: Dmitry Mikheev
author_username: dmitry-expert
categories: []
created_at: 2025-05-09T12:51:34.675Z
updated_at: 2025-05-09T12:51:34.675Z
url: https://n8n.io/workflows/3961
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Telegram Rich Output Helper Workflow

  Who is this for?  
  Builders of Telegram chat‑bots, AI assistants, or notification services who already run n8n and need to convert long, mixed‑media answers from an LLM (or any upstream source) into Telegram‑friendly messages.

  Prerequisites

  A Telegram bot created with @BotFather.  
  The bot’s HTTP API token saved as a Telegram API credential in n8n.  
  n8n ≥ 1.0 with the built‑in Telegram node still installed.  
  A parent workflow that calls this one via Execute Workflow and passes:  

     chatId — the destination chat ID (integer).  
     output — a string that can contain plain text and HTTP links to images, audio, or video.

  What the workflow does

  Extract Links – A JavaScript Code node scans output, deduplicates URLs, and classifies each by file extension.  
  Link Path  
     If no media links exist, the text path is used.  
     Otherwise, each link is routed through a Switch node that triggers the correct Telegram call (sendPhoto, sendAudio, sendVideo) so users get inline previews or players.  
  Text Path  
     An IF node checks whether the remaining text exceeds Telegram’s 1 000‑character limit.  
     When it does, a Code node slices the text at line boundaries; SplitInBatches then sends the chunks sequentially so nothing is lost.  
  All branches converge, keeping the whole exchange inside one execution.

  Customisation tips

  Adjust the character limit** – edit the first expression in “If text too long”.  
  Filter/enrich links** – extend the regex or add MIME checks before dispatch.  
  Captions & keyboards** – populate additionalFields in the three “Send back” nodes.  
  Throughput vs. order* – tweak the batch size in both *SplitInBatches** nodes.

  With this template in place, your users receive the complete message, playable media, and zero manual formatting – all within Telegram’s API limits.

nodes_used:
  ["n8n-nodes-base.telegram","n8n-nodes-base.telegram","n8n-nodes-base.telegram","n8n-nodes-base.telegram","n8n-nodes-base.if","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.splitInBatches","n8n-nodes-base.if","n8n-nodes-base.splitOut","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.splitInBatches","n8n-nodes-base.telegram","n8n-nodes-base.limit","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.switch"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["messaging","integration","automation","data processing"],"complexity":"medium","use_cases":["Format LLM or upstream text+links into Telegram-friendly messages","Send inline media previews (photos/audio/video) from links","Chunk and sequentially send long text to respect Telegram limits","Build AI assistants or notification bots that include mixed media"],"estimated_setup_minutes":20,"required_services":["Telegram Bot API (bot token saved as Telegram credential in n8n)","n8n (>= 1.0) with built-in Telegram node","Upstream text/LLM output or any source providing the output string"],"key_features":["Extracts, deduplicates and classifies URLs by extension","Routes media links to appropriate Telegram methods (sendPhoto, sendAudio, sendVideo)","Splits and sends long text in chunks below Telegram's 1000-character limit","Maintains message order via SplitInBatches and converges branches into one execution","Configurable link regex/MIME checks, captions and inline keyboards support via node fields"],"target_audience":["Developers building Telegram chatbots","AI assistant builders integrating LLM outputs","Product engineers/DevOps automating notifications with media"]}


name: Automate Cal.com Meeting Attendee Management with Google Sheets, Beehiiv & Telegram
author_name: Aitor | 1Node
author_username: aitoralonso
categories: []
created_at: 2025-05-09T14:09:48.256Z
updated_at: 2025-05-09T14:09:48.256Z
url: https://n8n.io/workflows/3962
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n workflow template automates the process of managing meeting guests booked through Cal.com. It captures attendee information, logs it in a Google Sheet, and subscribes new guests to your Beehiiv newsletter, while also notifying you in Telegram.

  How it Works
  This workflow is designed to streamline your post-booking process. When a new meeting is booked via Cal.com, the workflow automatically triggers. It extracts the attendee details, adds a new row with the guest's information to a designated Google Sheet, and then adds the guest as a subscriber to your Beehiiv newsletter. Finally, it sends a notification to a specified Telegram channel, keeping you informed of new subscribers.

  Features
  Automated Data Entry:** Automatically log meeting guest details into Google Sheets.
  Newsletter Growth:** Effortlessly add new meeting guests to your Beehiiv subscriber list.
  Real-time Notifications:** Get instant alerts in Telegram for new subscribers.
  Seamless Integration:** Connects Cal.com, Google Sheets, Beehiiv, and Telegram.

  Set Up
  To use this workflow, you will need the following:

  Cal.com:** Set up a Cal.com account and configure a webhook to trigger the workflow on new bookings. You will need the webhook URL provided by the first node in this workflow.
  Google Cloud:** A Google Cloud account with access to Google Sheets. You will need to specify the Sheet and the range where data should be added.
  Beehiiv:** A Beehiiv account. You will need your Beehiiv API key and the publication ID of your newsletter.
  Telegram Account:** A Telegram account and a channel where you want to receive notifications. You will need your Telegram Bot Token and the chat ID of the channel.
  Configure each node** in the workflow with your respective API keys, IDs, and sheet details as required. The "Define your parameters" box in the workflow provides guidance on finding your Telegram chat ID and Beehiiv API key/publication ID.

  Additional Enhancements
  This workflow can be extended and customized further:

  Conditional Logic:** Add filters to only subscribe guests based on certain criteria (e.g., specific meeting types).
  Data Enrichment:** Integrate with other services to enrich guest data before adding to Google Sheets or Beehiiv.
  CRM Integration:** Connect to a CRM to create or update contact records for new guests.
  Custom Notifications:** Customize the content and format of the Telegram notification.

  Need Help?
  If you need assistance setting up this workflow, encounter any issues, or would like to explore setting up similar automation workflows tailored to your company's specific needs, please contact us at 1 Node.

nodes_used:
  ["n8n-nodes-base.splitOut","n8n-nodes-base.googleSheets","n8n-nodes-base.calTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.telegram","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","data-processing","notifications","marketing"],"complexity":"medium","use_cases":["Automatically log meeting attendees to a spreadsheet","Grow newsletter subscriber list from booked meetings","Send real-time notifications of new bookings/subscribers","Post-booking data collection and basic contact management","Trigger conditional subscriber flows based on meeting data"],"estimated_setup_minutes":20,"required_services":["Cal.com","Google Sheets (Google Cloud account)","Beehiiv (API key and publication ID)","Telegram (Bot token and chat ID)","n8n"],"key_features":["Webhook trigger on Cal.com booking","Append attendee rows to Google Sheets","Subscribe new guests to Beehiiv newsletter via API","Send Telegram notifications for each new subscriber","Configurable nodes for API keys, sheet range, and filters"],"target_audience":["Event organizers","Marketers/newsletter managers","Community managers and growth teams`,`Small business operators and ops teams`,`Developers/automation engineers"]}


name: 📊 AI Token Tracker for WhatsApp & Telegram – Save AI Usage to Google Sheets
author_name: Amanda Benks
author_username: amanda
categories: []
created_at: 2025-05-09T14:30:39.809Z
updated_at: 2025-05-09T14:30:39.809Z
url: https://n8n.io/workflows/3963
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  💸 GPT-4o Token Tracker – Measure AI Usage and Cost via WhatsApp or Telegram

  Hi! I'm Amanda — I create smart, useful AI automations for n8n and Make.  
  This workflow helps you monitor how many tokens are consumed per conversation with AI Agent Tokens, and logs that usage into Google Sheets — so you can track expenses and make smarter decisions about your AI usage.

  You can connect it to Telegram or WhatsApp (via Evolution API), and it will automatically capture:
  Prompt and completion tokens
  Total tokens
  Time of interaction
  The user/channel
  (Optional) Cost estimate in USD

  📊 What this workflow does

  Logs token usage from LangChain agents  
  Calculates token totals for each request  
  Appends the data to a structured Google Sheet  
  Works with WhatsApp (Evolution API) or Telegram bots  
  Ideal for tracking AI Agent Tokens usage over time and controlling costs

  🧪 Free Spreadsheet Template

  You can duplicate and use this template for logging token usage:  
  👉 Google Sheets Template

  Includes columns like:
  Date
  Input
  Output
  Tokens (Prompt / Completion / Total)
  Tool name or use case
  Estimated cost

  🛠️ Setup Instructions

  Import the workflow to your n8n (Cloud or self-hosted)
  Connect your Google Sheets account  
  Choose your trigger:
     WhatsApp (Evolution API webhook)  
     Telegram (Bot webhook or message input)  
  Fill out:
     AI Agent model used (e.g. gpt-4o)  
     Cost per 1K tokens (optional, for USD estimation)  
  Update spreadsheet ID and tab name in the Google Sheets node  
  (Optional) Connect as a sub-tool to an AI agent for automatic logging

  🧰 Tech Used

  OpenRouter
  LangChain  
  Google Sheets  
  Telegram or WhatsApp webhook (Evolution API)  
  Nodes: HTTP Request, Set, If, Google Sheets, Merge

  ✅ Who This Is For

  Developers or agencies that want to monitor AI Agent Tokens usage  
  Freelancers managing AI bots for clients  
  Teams that need billing visibility and cost control  
  Anyone who wants transparency in AI token spending

  ✅ Requirements

  OpenAI GPT-4o access  
  Google Sheets credential  
  Telegram Bot Token (or Evolution API access for WhatsApp)  
  n8n (Cloud or self-hosted)

  🌐 Want this template?

  ❤️ Buy more workflows at: https://iloveflows.com  
  ☁️ Try n8n Cloud: https://n8n.partnerlinks.io/amanda

nodes_used:
  ["n8n-nodes-base.gmailTool","n8n-nodes-base.airtableTool","n8n-nodes-base.googleSheets","n8n-nodes-base.googleCalendarTool","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.telegram","n8n-nodes-base.telegram","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.convertToFile","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.telegramTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.filter","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatOpenRouter","n8n-nodes-base.switch","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.switch"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","monitoring","cost-tracking","data-logging"],"complexity":"medium","use_cases":["Track prompt/completion/total tokens per AI conversation","Log AI usage to Google Sheets for billing and auditing","Estimate AI costs (USD) per interaction","Monitor usage from Telegram or WhatsApp bots","Integrate LangChain/OpenRouter/Agent token reporting into spreadsheets"],"estimated_setup_minutes":25,"required_services":["Google Sheets (Google API credentials)","OpenAI GPT-4o or OpenRouter access","LangChain (if using agents)","Telegram Bot API (Telegram bot token)","Evolution API (for WhatsApp integration)","n8n (Cloud or self‑hosted)"],"key_features":["Captures prompt, completion and total tokens per request","Appends structured rows to Google Sheets (date, input, output, tokens, tool/use case, estimated cost)","Works with Telegram webhook or WhatsApp via Evolution API","Optional USD cost estimation (configurable cost per 1K tokens)","Integrates with LangChain/AI agents and OpenRouter/OpenAI for token reporting"],"target_audience":["Developers building AI bots","Agencies managing multiple client bots","Freelancers tracking AI usage and billing clients accurately"]}


name: Build an On-Premises AI Kaggle Competition Assistant with Qdrant RAG and Ollama
author_name: JHH
author_username: jac2325057
categories: []
created_at: 2025-05-10T05:03:59.199Z
updated_at: 2025-05-10T05:03:59.199Z
url: https://n8n.io/workflows/3967
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  LLM/RAG Kaggle Development Assistant

  An on-premises, domain-specific AI assistant for Kaggle (tested on binary disaster-tweet classification), combining LLM, an n8n workflow engine, and Qdrant-backed Retrieval-Augmented Generation (RAG).
  Deploy via containerized starter kit.
  Needs high end GPU support or patience.
  Initial chat should contain guidelines on what to to produce and the challenge guidelines.
  Features

  Coding Assistance**  
    • "Real"-time Python code recommendations, debugging help, and data-science best practices  
    • Multi-turn conversational context
  Workflow Automation**  
    • n8n orchestration for LLM calls, document ingestion, and external API integrations  
  Retrieval-Augmented Generation (RAG)**  
    • Qdrant vector-database for competition-specific document lookup  
    • On-demand retrieval of Kaggle competition guidelines, tutorials, and notebooks after convertion to HTML and ingestion into RAG
  entirly On-Premises for Privacy**  
    • Locally hosted LLM (via Ollama) – no external code or data transfer  

  ALIENTELLIGENCE/contentsummarizer:latest for summarizing
  qwen3:8b for chat and coding
  mxbai-embed-large:latest for embedding
    
    • GPU acceleration required

  Based on:
  https://n8n.io/workflows/2339 breakdown documents into study notes using templating mistralai and qdrant/

nodes_used:
  ["n8n-nodes-base.localFileTrigger","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","n8n-nodes-base.set","n8n-nodes-base.merge","n8n-nodes-base.switch","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","@n8n/n8n-nodes-langchain.chainSummarization","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.markdown","@n8n/n8n-nodes-langchain.embeddingsOllama","@n8n/n8n-nodes-langchain.lmOllama","@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.toolVectorStore","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.vectorStoreQdrant","@n8n/n8n-nodes-langchain.lmChatOllama","@n8n/n8n-nodes-langchain.embeddingsOllama","@n8n/n8n-nodes-langchain.lmChatOllama"]

workflow_json_compressed:
  [encoded data, 4384 characters]

metadata_json:
  {"categories":["automation","integration","data-processing","AI-assistant","retrieval-augmented-generation"],"complexity":"complex","use_cases":["Kaggle competition assistance (code recommendations, debugging, best practices)","Domain-specific RAG for competition rules, tutorials and notebooks","Conversational multi-turn coding support and code generation","Automated document ingestion, conversion and vector indexing","On-premises private AI workflows for regulated or sensitive projects"],"estimated_setup_minutes":180,"required_services":["n8n (workflow engine)","Qdrant (vector database)","Ollama (local LLM runtime) with models: qwen3:8b, ALIENTELLIGENCE/contentsummarizer:latest, mxbai-embed-large:latest","Container runtime (Docker/Podman) and starter kit deployment","GPU with appropriate drivers/CUDA (high-end recommended)","Optional: Kaggle dataset access for downloading competition data"],"key_features":["Real-time Python coding recommendations and debugging help","Multi-turn conversational context via local LLM","n8n orchestration for LLM calls, ingestion, and external integrations","Qdrant-backed RAG for document lookup and relevance-based retrieval","Document conversion to HTML and templated summarization before ingestion (contentsummarizer)"],"target_audience":["Data scientists","ML engineers","Kaggle competitors and contest teams"]}


name: AI Email Triage & Alert System with GPT-4 and Telegram Notifications
author_name: Peter Joslyn
author_username: pjawz
categories: []
created_at: 2025-05-10T05:49:57.648Z
updated_at: 2025-05-10T05:49:57.648Z
url: https://n8n.io/workflows/3968
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Fully Automated AI Email System for n8n: Triage, Summarize & Alert—Never Check Your Inbox Again!





  Fully Automated Email Intelligence: Triage, Summarize, Escalate & Alert—Never Check Your Inbox Again

  🚀 Overview

  Turn every minute you waste in your inbox into revenue‑generating focus time.
  This is more than a workflow—it’s a profit engine disguised as an email assistant.





  ⚙️ Eliminate 90 % of inbox noise with AI triage and smart labeling.



  🚨 Instantly surface high‑value leads & crises via Telegram push alerts—before they cost you.



  📰 Digest newsletters in 60 seconds with bite‑size AI briefs that keep you ahead of the curve.



  🤖 Hand off replies, snoozes, and archiving to a tireless autonomous agent that never slips.

  Set‑up takes 10 minutes. The payoff starts within the first hour—hours reclaimed, opportunities captured, and the calm certainty your inbox is handled perfectly, 24/7.



  🎯 Who's It For?





  Startup Founders & CEOs – Stop wasting hours on inbox cleanup. Automatically surface leads, triage support, and escalate ops issues while you focus on growth.



  Agencies & Consultants – Instantly prioritize high-value client messages, flag urgent ops threads, and never drop the ball on critical communication.



  Busy Professionals & Teams – Reclaim 5–10 hours weekly by letting AI handle noise, flag what matters, and summarize newsletters into actionable insights.



  No-Code Builders & AI Engineers – Plug in, customize, and ship production-ready inbox automation in minutes—no training required.



  Remote Operators & Virtual Assistants – Delegate inbox management confidently with a system that flags what’s important and handles the rest.



  📌 High‑Impact Results

  What You’re Dealing With → What This System Solves Instantly





  Inbox Clutter & Constant Noise → 90% Noise Reduction
  Trivial, low-value messages are automatically triaged and labeled—only high-value threads stay in your spotlight.



  Missing Critical Emails → Real-Time Telegram Alerts
  Get instantly notified the moment a client, lead, or ops-critical email lands. Zero lag. Zero drop.



  Manual Reply Fatigue → AI-Generated Drafts in Seconds
  Fully contextual, brand-aligned replies ready at a click—cut response time from minutes to seconds.



  Newsletter Overload → Actionable 60-Second Summaries
  Dense newsletters converted into digestible, decision-ready highlights. Save hours while staying sharp.



  Information Chaos → Fully Structured Inbox Intelligence
  From raw email to labeled insights to escalated alerts—your inbox becomes an automated decision support system.

  This system doesn’t just "help"—it replaces hours of work per week, prevents costly misses, and ensures you never drown in emails again.



  ⚙️ Powerful Features





  📥 AI Email Triage – Classifies and sorts emails using GPT/Gemini, labeling by intent and urgency.



  📰 Newsletter Summarizer – Extracts concise, actionable insights from newsletters into structured summaries.



  🚨 Real-Time Priority Alerts – Instantly escalates mission-critical emails via Telegram.



  🤖 Autonomous Inbox Agent – Proactively manages email actions: replies, drafts, archives, and thread labeling.



  🧠 Persistent Context Memory – Remembers senders, conversation history, and adjusts responses accordingly.



  🏅 Why Choose This Solution?





  Fully Self-Hosted & Secure – Keep full control of your data and privacy. No external storage, no SaaS lock-in—just your infrastructure, your rules.



  Production-Grade Reliability – Built by a Lead Software Engineer. Tested, trusted, and optimized for uptime by myself.



  AI-Native Workflow Engine – Smart, adaptive, and deeply embedded in your processes. Automates with context, learns with use, and gets smarter over time.



  💰 Pricing

  Limited Time Launch Price: $29 (One-time payment)

  🎯 Lifetime access—pay once, save time forever.

  ⏱️ Designed to reclaim 5–10 hours per week per inbox.

  🚨 One missed priority email could cost more—this system prevents that.

  ⚡ Launch offer pricing will increase SOON!—lock in early.


  📦 What's Included?

  ✅ Fully documented and annotated n8n workflow (ready-to-import JSON)

  📂 Gmail labeling system (production-ready taxonomy)


  📲 Telegram integration and alert configuration



  🛠 Customizable AI prompt templates for Gemini/GPT



  🧠 Custom prompt templates for GPT & Gemini



  ⚙️ Autonomous email categorization & filtering



  📰 Newsletter summarizer with structured JSON output



  🤖 Optional AI agent for full inbox management tasks



  🚀 Quick Start Setup





  Import the full workflow into your self-hosted n8n environment.



  Connect your Gmail, Telegram, and preferred LLMs (OpenAI or Gemini).



  Deploy Gmail labels using the included taxonomy—ensures proper triage and filtering.



  Trigger test alerts from real email data to verify AI classification and Telegram escalation.



  Go live—start receiving summarized insights, escalations, and triaged inbox updates within minutes.



  ❓ FAQ

  Q: What kind of ROI can I expect?
  A: On average, users reclaim 5–10 hours per week per inbox by eliminating low-priority noise, surfacing urgent emails instantly, and automating replies and summaries. For a business leader or agency, that’s hundreds of dollars in time savings weekly—and zero dropped balls.

  Q: Can it scale for my team?
  A: Absolutely. It’s architected with modular nodes and reusable components so you can rapidly duplicate, extend, or adapt it across teams, departments, and workflows. Whether you’re a solo founder or managing 20+ inboxes, this system grows with you—without code rewrites.

  Q: Is my data secure?
  A: Absolutely!. This system runs entirely in your self-hosted n8n environment, so your data never leaves your control. External LLMs (like OpenAI or Gemini) are only used when needed and receive minimal, context-limited input. You control all API keys and endpoints. No data is stored externally unless you configure it.



  Made with ❤️ by Bluegrass Digital Advantage

nodes_used:
  ["n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.telegramTrigger","n8n-nodes-base.telegram","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.aggregate","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.noOp","n8n-nodes-base.stopAndError","n8n-nodes-base.telegram","n8n-nodes-base.stopAndError","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.gmailTrigger","n8n-nodes-base.set","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserAutofixing","n8n-nodes-base.switch","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.if","n8n-nodes-base.gmail","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.textClassifier","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.noOp","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.set","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.memoryPostgresChat","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","n8n-nodes-base.gmailTool","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 10212 characters]

metadata_json:
  {"categories":["automation","email management","AI/ML integration","notifications"],"complexity":"complex","use_cases":["Automated email triage and labeling","Real-time escalation of high-priority emails via Telegram","Automated newsletter summarization into actionable briefs","AI-generated reply drafting and autonomous inbox actions","Scaling inbox automation across teams"],"estimated_setup_minutes":10,"required_services":["Self-hosted n8n instance","Gmail (Google Workspace) API / account","Telegram Bot API / account","LLM provider (OpenAI GPT-4 or Google Gemini API)"],"key_features":["GPT/Gemini-powered email triage and intent/urgency labeling","Structured newsletter summarizer with JSON output","Real-time Telegram priority alerts","Autonomous inbox agent for replies, snoozes, archiving","Persistent context memory for senders and threads (stateful behavior)"],"target_audience":["Startup founders & CEOs","Agencies & consultants","Busy professionals & teams seeking productivity gains"]}


name: Summarise Slack Channel Activity for Weekly Reports with AI
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2025-05-10T08:37:45.163Z
updated_at: 2025-05-10T08:37:45.163Z
url: https://n8n.io/workflows/3969
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:31
description:
  This n8n template lets you summarize team member activity on Slack for the past week and generates a report.

  For remote teams, chat is a crucial communication tool to ensure work gets done but with so many conversations happening at once and in multiple threads, ideas, information and decisions usually live in the moment and get lost just as quickly - and all together forgotten by the weekend!

  Using this template, this doesn't have to be the case. Have AI crawl through last week's activity, summarize all threads and generate a casual and snappy report to bring the team back into focus for the current week. A project manager's dream!

  How it works
  A scheduled trigger is set to run every Monday at 6am to gather all team channel messages within the last week.
  Each message thread are grouped by user and data mined for replies.
  Combined, an AI analyses the raw messages to pull out interesting observations and highlights.
  The summarized threads of the user are then combined together and passed to another AI agent to generate a higher level overview of their week. These are referred to as the individual reports.
  Next, all individual reports are summarized together into a team weekly report. This allows understanding of group and similar activities.
  Finally, the team weekly report is posted back to the channel. The timing is important as it should be the first message of the week and ready for the team to glance over coffee.

  How to use
  Ideally works best per project and where most of the comms happens on a single channel. Avoid combining channels and instead duplicate this workflow for more channels.
  You may need to filter for specific team members if you want specific team updates.
  Customise the report to suit your organisation, team or the channel. You may prefer to be more formal if clients or external stakeholders are also present.

  Requirements
  Slack for chat platform
  Gemini for LLM (or switch for other models)

  Customising this workflow
  If the slack channel is busy enough already, consider posting the final report to email.
  Pull in project metrics to include in your report. As extra context, it may be interesting to tie the messages to production performance.
  Use an AI Agent to query for knowledgebase or tickets relevant to the messages. This may be useful for attaching links or references to add context.
  Channel not so busy or way too busy for 1 week? Play with the scheduled trigger and set an interval which works for your team. 

nodes_used:
  ["n8n-nodes-base.slack","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.code","n8n-nodes-base.slack","n8n-nodes-base.aggregate","n8n-nodes-base.splitOut","n8n-nodes-base.slack","n8n-nodes-base.aggregate","n8n-nodes-base.set","n8n-nodes-base.filter","n8n-nodes-base.noOp","n8n-nodes-base.splitOut","n8n-nodes-base.set","n8n-nodes-base.slack","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.splitInBatches","n8n-nodes-base.set","n8n-nodes-base.aggregate","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.switch","n8n-nodes-base.executeWorkflow","n8n-nodes-base.set","n8n-nodes-base.executeWorkflow","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.slack","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 11336 characters]

metadata_json:
  {"categories":["automation","integration","reporting","team collaboration","AI summarization"],"complexity":"complex","use_cases":["Weekly team activity summaries","Asynchronous status reporting","Highlighting decisions and action items","Onboarding/handovers and meeting prep","Monitoring channel engagement"],"estimated_setup_minutes":60,"required_services":["Slack","Google Gemini (or another LLM provider such as OpenAI)","Email (optional, for alternate delivery)","Knowledgebase or ticketing system (optional, e.g., Jira, Confluence)"],"key_features":["Scheduled trigger to collect last-week messages","Group threads and aggregate replies by user","AI-based thread summarization and extraction of highlights","Generate individual user reports, then a combined team weekly report","Post final report back to Slack channel (or email) for first-message visibility of the week"],"target_audience":["Project managers","Team leads","Remote teams and distributed squads」「Product managers"]}


name: Secure API Endpoint with Bearer Token Authentication and Field Validation
author_name: Audun
author_username: xqus
categories: []
created_at: 2025-05-10T10:23:31.512Z
updated_at: 2025-05-10T10:23:31.512Z
url: https://n8n.io/workflows/3970
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  A reusable and production-ready n8n workflow that secures public webhooks using Bearer Token authentication and dynamic request validation.

  ✨ What It Does

  Verifies Bearer Token**  
    Compares the Authorization header with a configured secret token.

  Validates Required Fields**  
    Checks that all expected fields are present in the incoming request body.

  Returns Standardized JSON Responses**  
    401 Unauthorized if token is missing or invalid  
    400 Bad Request if required fields are missing  
    200 OK with a custom success payload

  👤 Who It’s For

  Developers exposing n8n workflows as APIs
  No-code/low-code builders integrating with external forms or tools
  Anyone needing simple authentication and validation on incoming webhooks

  💡 Why Use It

  🔒 Secure: Prevents unauthorized access to your public workflows
  🧼 Clean: Centralized configuration for token and required fields
  ⚙️ Flexible: Easy to extend and customize for any use case

  🛠 Setup Instructions

  Configure Values in the Configuration Node
     Set your secret token:  
       config.bearerToken = YOUR_TOKEN
     Define required request fields by key:  
       Example:  
            config.requiredFields.message = true;
       config.requiredFields.email = true;
             ✅ Only the keys matter – values can be anything.

  Plug in Your Business Logic  
     Replace the "Add workflow nodes here" with your own logic.

  Customize the Success Response  
     Edit the Create Response node to shape your success payload.

  🧪 Use Cases

  Securing public form submissions 
  Creating internal API endpoints
  Validating data from external services

  📌 Use this as a base for building secure, API-style workflows in n8n.

  👋 Hello! I'm Audun / xqus 

  If my n8n workflows saved you time or sparked ideas, consider sending a little support my way. It helps me keep building cool stuff — and maybe grab a coffee ☕ along the way!

nodes_used:
  ["n8n-nodes-base.if","n8n-nodes-base.respondToWebhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.set","n8n-nodes-base.webhook","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.respondToWebhook","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4352 characters]

metadata_json:
  {"categories":["integration","security","automation","validation","webhook"],"complexity":"simple","use_cases":["Secure public form submissions","Create internal API endpoints in n8n","Validate incoming webhook payloads from external services","Provide a reusable authenticated webhook gateway for low-code integrations"],"estimated_setup_minutes":10,"required_services":["n8n (Webhook / Respond nodes)","Any webhook-producing service (forms, external APIs) — optional, for sending requests"],"key_features":["Bearer Token authentication via Authorization header","Configurable required-field validation for request body","Standardized JSON responses for 401, 400, and 200 statuses","Centralized configuration node for token and required fields","Replaceable business-logic section for custom processing (reusable template)"],"target_audience":["Developers exposing n8n workflows as APIs","No-code / low-code builders integrating external forms or tools","Integration engineers and SREs who need lightweight authenticated endpoints"]}


name: Summarise MS Teams Channel Activity for Weekly Reports with AI
author_name: Jimleuk
author_username: jimleuk
categories: []
created_at: 2025-05-10T15:05:32.396Z
updated_at: 2025-05-10T15:05:32.396Z
url: https://n8n.io/workflows/3971
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n template lets you summarize individual team member activity on MS Teams for the past week and generates a report.

  For remote teams, chat is a crucial communication tool to ensure work gets done but with so many conversations happening at once and in multiple threads, ideas, information and decisions usually live in the moment and get lost just as quickly - and all together forgotten by the weekend!

  Using this template, this doesn't have to be the case. Have AI crawl through last week's activity, summarize all messages and replies and generate a casual and snappy report to bring the team back into focus for the current week. A project manager's dream!

  How it works
  A scheduled trigger is set to run every Monday at 6am to gather all team channel messages within the last week.
  Messages are grouped by user.
  AI analyses the raw messages and replies to pull out interesting observations and highlights. This is referred to as the individual reports.
  All individual reports are then combined and summarized together into what becomes the team weekly report. This allows understanding of group and similar activities.
  Finally, the team weekly report is posted back to the channel. The timing is important as it should be the first message of the week and ready for the team to glance over coffee.

  How to use
  Ideally works best per project and where most of the comms happens on a single channel. Avoid combining channels and instead duplicate this workflow for more channels.
  You may need to filter for specific team members if you want specific team updates.
  Customise the report to suit your organisation, team or the channel. You may prefer to be more formal if clients or external stakeholders are also present.

  Requirements
  MS Teams for chat platform
  OpenAI for LLM

  Customising this workflow
  If the teams channel is busy enough already, consider posting the final report to email.
  Pull in project metrics to include in your report. As extra context, it may be interesting to tie the messages to production performance.
  Use an AI Agent to query for knowledgebase or tickets relevant to the messages. This may be useful for attaching links or references to add context.

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.microsoftTeams","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.markdown","n8n-nodes-base.microsoftTeams","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6340 characters]

metadata_json:
  {"categories":["automation","integration","reporting","team collaboration","AI summarization"],"complexity":"medium","use_cases":["Weekly team activity summaries","Project/channel weekly reports","Identifying highlights and action items from chat","Keeping remote teams aligned","Automated status reporting to channel or email"],"estimated_setup_minutes":30,"required_services":["Microsoft Teams","OpenAI (or compatible LLM API)"],"key_features":["Scheduled weekly trigger to collect channel messages","Group messages by user and generate individual summaries","AI-driven extraction of highlights, observations and action items","Combine individual summaries into a single team weekly report","Post final report back to the Teams channel (or optionally email)"],"target_audience":["Project managers","Team leads","Remote teams and ops managers who run standups/reports"]}


name: Multilingual WhatsApp Translator with OpenAI Whisper & GPT-4 and HubSpot Integration
author_name: Amanda Benks
author_username: amanda
categories: []
created_at: 2025-05-10T15:10:13.996Z
updated_at: 2025-05-10T15:10:13.996Z
url: https://n8n.io/workflows/3972
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  🌍 AI WhatsApp Translator + Voice Transcriber with HubSpot Integration

  Hello! I'm Amanda ❤️, a passionate automation creator and AI enthusiast.  
  With over 2 years of experience in n8n and Make.com, I design robust, intelligent agents  
  that make your operations smarter and smoother.

  This translator + transcriber assistant is perfect for multilingual communication via WhatsApp.  
  It automatically captures voice or text messages, identifies the customer's region and language,  
  transcribes audio using OpenAI Whisper, and generates friendly, culturally adapted translations  
  with GPT-4 or GPT-4o. All messages and contacts are saved in your HubSpot CRM—so no lead gets lost.

  ✅ What this Workflow Does:

  🎧 Transcribes audio messages using OpenAI Whisper (accurate + fast).
  🌐 Translates text & voice into the client’s native language or a default one.
  🇧🇷 Adapts tone, slang, emojis, and cultural expressions for natural conversation.
  💼 Saves contact info & history to HubSpot automatically (name, phone, and translation).
  📬 Replies via WhatsApp using Evolution API (also works with chatbots).
  ✨ Handles over 80+ countries and phone prefixes to detect preferred languages.

  🛠️ How to Use It:

  Clone the workflow to your n8n instance (cloud or self-hosted).
  Configure the Webhook URL in your Evolution API or WhatsApp provider.
  Set up credentials for:
     OpenAI (for transcription and GPT translation)
     HubSpot (to store leads)
  Optional: Adjust prompt logic and default languages inside the AI Agent node.
  Done! Your AI translator bot is live 💬🌎

  🧠 LLMs and Tools Used:

  OpenAI GPT-4o / GPT-4 Mini** for translation
  OpenAI Whisper** for transcription
  HubSpot CRM** integration
  Evolution API** for WhatsApp messaging
  Dynamic language detection based on phone prefix

  💡 Ideal For:

  Multinational businesses with global customers
  Customer support teams with multilingual needs
  Agencies serving clients in Latin America, Europe, or Asia
  Translating informal messages in real-time

  📁 Included:

  1x Complete n8n Workflow  
  Preconfigured translation agents  
  HubSpot contact mapper  
  Multi-country language index  
  Ready-to-use voice transcription logic

  ❤️ Support Materials and Templates:
  iloveflows.gumroad.com

  ☁️ Want to use this with n8n Cloud?  
  Use my affiliate link to get started:  
  👉 https://n8n.partnerlinks.io/amanda

  🔥 Buy a VPS server with a Super Discount: https://hostinger.com/vps

nodes_used:
  ["n8n-nodes-base.convertToFile","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.webhook","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.filter","@n8n/n8n-nodes-langchain.toolCalculator","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.httpRequest","n8n-nodes-base.if","n8n-nodes-base.convertToFile","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.httpRequest","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolCalculator","@n8n/n8n-nodes-langchain.toolThink","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.toolThink","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.convertToFile","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolCalculator","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.toolThink","n8n-nodes-base.if","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.filter","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.filter","n8n-nodes-base.filter","n8n-nodes-base.filter","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.n8n","n8n-nodes-base.stickyNote","n8n-nodes-base.n8n","n8n-nodes-base.splitInBatches","n8n-nodes-base.noOp","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.textClassifier","@n8n/n8n-nodes-langchain.textClassifier","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatGroq","n8n-nodes-base.filter","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.filter","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.hubspot","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.filter","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.wait","n8n-nodes-base.if","n8n-nodes-base.filter","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.if"]

workflow_json_compressed:
  [encoded data, 7232 characters]

metadata_json:
  {"categories":["automation","integration","data-processing","natural language processing","communications"],"complexity":"complex","use_cases":["Multilingual WhatsApp translation","Voice message transcription","Automated customer replies","Saving leads and conversation history to CRM","Region/language detection by phone prefix"],"estimated_setup_minutes":45,"required_services":["n8n (cloud or self‑hosted)","OpenAI (Whisper for transcription, GPT-4/GPT-4o for translation)","HubSpot CRM","WhatsApp provider (Evolution API or compatible)","Webhook-accessible endpoint"],"key_features":["Audio transcription with OpenAI Whisper","Cultural/tone-aware translations via GPT-4/GPT-4o","Automatic region and language detection (phone prefix)","Save contacts and conversation history to HubSpot","Send replies over WhatsApp (Evolution API) or chatbot integration options」「Preconfigured translation agents and voice transcription flow」「Supports 80+ country prefixes and multi-language handling"],"target_audience":["Customer support teams for multinational businesses","Agencies handling multilingual clients","Sales/CRM teams capturing leads from WhatsApp channels」「Automation engineers and developers building messaging workflows"]}


name: Create Secure Interactive Applications with WhatsApp Flows End-to-End Encryption
author_name: Flavio Angeleu
author_username: flavioangeleu
categories: []
created_at: 2025-05-10T16:32:23.891Z
updated_at: 2025-05-10T16:32:23.891Z
url: https://n8n.io/workflows/3973
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  WhatsApp Flows Encrypted Data Exchange Workflow

  Summary
  This workflow enables secure end-to-end encrypted data exchange with WhatsApp Flows for interactive applications inside Whatsapp.  It implements the WhatsApp Business Encryption protocol using RSA for key exchange and AES-GCM for payload encryption, providing a secure channel for sensitive data transmission while interfacing with WhatsApp's Business API. This follows the official WhatsApp Business Encryption specifications to establish an encrypted GraphQL-powered data exchange channel between your business and the WhatsApp consumer client.

  How It Works

  Encryption Flow
  Webhook Reception: Receives encrypted data from WhatsApp containing:
     encrypted_flow_data: The AES-encrypted payload
     encrypted_aes_key: The RSA-encrypted AES key
     initial_vector: Initialization vector for AES decryption

  Decryption Process:
     The workflow decrypts the AES key using an RSA private key
     Then uses this AES key to decrypt the payload data
     The inverted IV is used for response encryption

  Data Processing:
     The workflow parses the decrypted JSON data
     Routes requests based on the screen parameter.
   

  Response Generation:
     Generates appropriate response data based on the request type
     Encrypts the response using the same AES key and inverted IV
     Returns the base64-encoded encrypted response

  Key Components
  Webhook Endpoint**: Entry point for encrypted WhatsApp requests
  Decryption Pipeline**: RSA and AES decryption components
  Business Logic Router**: Screen-based routing for different functionality
  Encryption Pipeline**: Secure response encryption

  How to Use

  Deploy the Workflow:
     Import the workflow JSON into your n8n instance

  Set Up WhatsApp Integration:
     Configure your WhatsApp Business API to send requests to your n8n webhook URL
     Ensure your WhatsApp integration is set up to encrypt data using the public key pair of the private key used in this workflow

  Test the Flow:
     Send an encrypted test message from WhatsApp to verify connectivity
     Check if appointment data is being retrieved correctly
     Validate that seat selection is functioning as expected

  Production Use:
     Monitor the workflow performance in production
     Set up error notification if needed

  Requirements

  Authentication Keys

  RSA Private Key: Required for decrypting the AES key (included in the workflow)
  WhatsApp Business Public Key: Must be registered with the WhatsApp Business API
  PostgreSQL Credentials: For accessing appointment data from the database

  WhatsApp Business Encryption Setup
  As specified in the WhatsApp Business Encryption documentation:

  Generate a 2048-bit RSA Key Pair:

  The private key remains with your business (used in this workflow)
  The public key is shared with WhatsApp


  Register the Public Key with WhatsApp:

  Use the WhatsApp Cloud API to register your public key
  Set up the public key using the /v17.0/{WhatsApp-Business-Account-ID}/whatsapp_business_encryption endpoint


  Key Registration API Call:
  POST /v17.0/{WhatsApp-Business-Account-ID}/whatsapp_business_encryption
  {
    "business_public_key": "YOUR_PUBLIC_KEY"
  }

  Verification:

  Verify your public key is registered using a GET request to the same endpoint
  Ensure the key status is "active"

nodes_used:
  ["n8n-nodes-base.webhook","n8n-nodes-base.code","n8n-nodes-base.switch","n8n-nodes-base.respondToWebhook","n8n-nodes-base.code","n8n-nodes-base.respondToWebhook","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 7432 characters]

metadata_json:
  {"categories":["integration","secure messaging","automation","data processing"],"complexity":"complex","use_cases":["Secure interactive WhatsApp applications (Flows)","Appointment booking and seat selection via WhatsApp","Transmitting and processing sensitive data end-to-end encrypted","Implementing WhatsApp Business Encryption (RSA + AES-GCM) for webhook payloads","Encrypted GraphQL-powered data exchange between business backend and WhatsApp client"],"estimated_setup_minutes":90,"required_services":["WhatsApp Business Cloud API (whatsapp_business_encryption)","PostgreSQL database","n8n instance with a publicly reachable HTTPS webhook endpoint","RSA key pair (private key accessible to the workflow)","Optional: Key Management Service (KMS) for secure private key storage)"],"key_features":["RSA-based AES key decryption and AES-GCM payload decryption","Encrypt responses using AES with inverted IV and return base64-encoded payloads","Webhook entry point to receive encrypted WhatsApp Flow requests","Screen-based routing/business logic for different interactive flows (appointments, seat selection)","Integration with PostgreSQL for appointment data lookup and persistence"],"target_audience":["developers","security engineers","product teams building WhatsApp interactions (customer-facing)"]}


name: Prevent Concurrent Workflow Runs Using Redis
author_name: Hugues Stock
author_username: hpstock
categories: []
created_at: 2025-05-10T23:21:45.044Z
updated_at: 2025-05-10T23:21:45.044Z
url: https://n8n.io/workflows/3976
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  What does this template do?  
  This workflow sets a small "lock" value in Redis so that only one copy of a long job can run at the same time. If another trigger fires while the job is still busy, the workflow sees the lock, stops early, and throws a clear error. This protects your data and keeps you from hitting rate limits.  
  Because the workflow also stores simple progress flags ("working", "loading", "finishing"), you can poll the current status and show live progress for very long jobs.

  Use Case  
  Great when the same workflow can be called many times in parallel (for example by webhooks, cron jobs, or nested Execute Workflow calls) and you need an "only run once at a time" guarantee without building a full queue system.

  What the Workflow Does  
  ⚡ Starts through Execute Workflow Trigger called by another workflow  
  🔄 A Switch sends the run to Get, Set, or Unset actions  
  💾 Redis reads or writes a key named process_status_&lt;key&gt; with a time‑to‑live (default 600 s)  
  🚦 If nodes check the key and decide to continue or stop  
  ⏱️ Wait nodes stand in for the slow part of your job (replace these with your real work)  
  📈 Updates the key with human‑readable progress values that another workflow can fetch with action = get  
  🏁 When done, the lock is removed so the next run can start  

  Apps & Services Used  
  Redis  
  Core n8n nodes (Switch, If, Set, Wait, Stop and Error)  

  Pre‑requisites  
  A Redis server that n8n can reach  
  Redis credentials stored in n8n  
  A second workflow that calls this one and sends:  
    action set to get, set, or unset  
    key set to a unique name for the job  
    Optional timeout in seconds  

  Customization Tips  
  Increase or decrease the TTL in the Set Timeout node to match how long your job usually runs  
  Add or rename status values ("working", "loading", "finishing", and so on) to show finer progress  
  Replace Stop and Error with a Slack or email alert, or even push the extra trigger into a queue if you prefer waiting instead of failing  
  Use different Redis keys if you need separate locks for different tasks  
  Build a small "status endpoint" workflow that calls this one with action = get to display real‑time progress to users

  Additional Use Cases  

  🛑 Telegram callback spam filter  
  If a Telegram bot sends many identical callbacks in a burst, call this workflow first to place a lock. Only the first callback will proceed; the rest will exit cleanly until the lock clears. This keeps your bot from flooding downstream APIs.

  🧩 External API rate‑limit protection  
  Run heavy API syncs one after the other so parallel calls do not break vendor rate limits.

  🔔 Maintenance window lock  
  Block scheduled maintenance tasks from overlapping, making sure each window finishes before the next starts.

nodes_used:
  ["n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.switch","n8n-nodes-base.manualTrigger","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.redis","n8n-nodes-base.redis","n8n-nodes-base.redis","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stopAndError","n8n-nodes-base.noOp","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stopAndError","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.wait","n8n-nodes-base.executeWorkflow","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 5176 characters]

metadata_json:
  {"categories":["automation","integration","concurrency control","monitoring"],"complexity":"medium","use_cases":["Prevent concurrent workflow runs (distributed lock)","Expose job progress/status endpoint for long jobs","Protect against webhook or callback bursts (e.g., Telegram)","Protect external API rate limits by serializing heavy jobs","Prevent overlapping scheduled maintenance tasks"],"estimated_setup_minutes":15,"required_services":["Redis","n8n instance with Redis credentials stored"],"key_features":["Distributed lock implemented via Redis key with TTL","Get / Set / Unset actions to read/write lock and status","Human‑readable progress flags (e.g., working, loading, finishing)","Clear early stop/error if a lock exists to avoid duplicated work","Polling support so another workflow can fetch live progress/status values','Configurable TTL and status values to match job duration"],"target_audience":["Developers","DevOps / SREs","Integration engineers / automation engineers','Bot developers (Telegram, etc.)"]}


name: Auto-Generate And Post Tweet Threads Based On Google Trends Using Gemini AI
author_name: Amjid Ali
author_username: amjid
categories: []
created_at: 2025-05-11T10:14:48.535Z
updated_at: 2025-05-11T10:14:48.535Z
url: https://n8n.io/workflows/3978
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  AI-Powered Twitter Automation using n8n to Check BigQuery Latest Google Trend and Publish

  Who is this for?

  This template is designed for:

  Content creators
  Tech influencers
  Educators and marketers
    who want to automatically tweet trend-based threads using AI and stay relevant without spending time on manual research and content writing.

  What problem does this workflow solve?

  Creating daily engaging Twitter threads takes time and effort. This workflow:

  Finds trending search terms in your region (via Google Trends)
  Selects the most relevant topic using AI
  Generates a thread of five value-packed tweets
  Publishes them automatically on X (Twitter)

  You get high-quality, niche-specific content on autopilot — ideal for boosting visibility, brand awareness, and engagement.

  What this workflow does

  ⏰ Runs on a scheduled basis (daily at your preferred hour)
  🌍 Uses BigQuery to fetch the top 25 trending search terms
  🎯 AI Agent selects one niche-relevant trend
  ✍️ AI generates a 5-part tweet thread using Gemini or OpenAI
  🐦 Tweets are published to X (Twitter) in sequence
  🔁 Works with any niche – simply modify the AI prompt

  Setup Instructions

  🔧 Google Cloud Setup

     Create a project in Google Cloud Console
     Enable BigQuery API
     Use the included SQL to fetch Google Trends

  🐦 Twitter Developer Setup

     Go to developer.twitter.com
     Create an app and generate OAuth 2.0 credentials

  🧠 AI Credentials

     Add either Gemini API Key or OpenAI Key in n8n

  ✨ Customize

     Modify the AI prompts to match your niche (e.g., marketing, health, finance)
     Adjust tweet tone, call to action, hashtags, or output format

  How to customize this workflow to your needs

  🌍 Change Google Trends region or country in the SQL query
  🧠 Switch to another AI model (Claude, GPT-4o, DeepSeek, etc.)
  📢 Replace Twitter with LinkedIn, Telegram, or Slack integration
  📊 Add metrics or logging for tweet performance (advanced)

  🎥 Watch How It Works



  &gt; In this tutorial, I walk you through the full automation – from pulling Google Trends to posting your AI-generated tweet thread using n8n.

  Example Use Cases

  🔍 Daily tweet series on trending tools or technologies
  💹 Market insights or productivity tips based on daily trends
  🎓 Educational content scheduled automatically
  🧠 Personal brand building using consistent, trend-aware posts

  Dependencies

  n8n (self-hosted or cloud)
  Google Cloud project with BigQuery enabled
  Twitter Developer Account (OAuth 2.0 setup)
  AI provider (Gemini or OpenAI)

  Keywords

  n8n twitter automation, tweet scheduler, X automation, auto post tweets, AI tweet writer, trending topics Twitter bot, Google Trends automation, AI content workflow, tweet generator using GPT, Twitter bot with Gemini, twitter + n8n

  Support & Credit

  Created by Amjid Ali —
  🏆 Global CIO200 | Founder of Syncbricks

  If this template saved you time, consider supporting:

  ➡️ paypal.me/pmptraining

  📚 Learn more:

  Enroll in the full n8n course
  LMS
  More automation templates
  Watch all YouTube tutorials

nodes_used:
  ["n8n-nodes-base.twitter","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.code","n8n-nodes-base.splitInBatches","n8n-nodes-base.wait","n8n-nodes-base.googleBigQuery","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE62YbW/bNhDHv4qh17qOzw9+tTYDigLruiHbWqAIhiN5dITakmHLy4og332QnNWKLcd2ujeGbB3/9yN5vDv6vlhQi8X0vqjqdYt1pHepmBZSJMey1ig12qBtdqQsCozca+2SzzpEit5J1Jr75KPwAS2XOavMRbRFWbS0WM6xpasVpfU1tZvlVbNYzqmlVEzb1YYeyqJuEq2L6ef7ouq8EmeW8xRAO4mg0ErARAgOibJx6JQ2RVnUuKBiWnzqnHxddo+1q6HXgoBretXeVW1Lq6Isls26aqumLqafhVCs1ILdlMUSV7igllbrYnr/sFX5k1br3lA8lI84gnJS1hAEQgXKCQchugiRK89RMWfUAOe66mY3eU+LZvV1h/Zj7eofdnxzrGfxFqv61aI3fLPJmVYfqzo1d095lWClUydx+Sv5Ddh6KWOWAazkHlTSGjz3AdA7LWIUTuuwA37bNLM5Td7SoqqrydUttpP3TaL5GezzRWe+FdiO31trxkpnTrN/I2fZO46GAc8+gCJpIHAuwWuGhltLPOCO/PWmbSBX/1T1bPJh0y437eRXXK37HT+F3vT2W/NOZyvzFN8wVpozln4XKZERYw6BlOOgbOIQmM2QKPmYMxqe+SBS2tUmtpsVpe+i38k8pXfd4rszAmcX6RkZ94osWJssKBcIkLIGkZ0UGmMW1g2WfzZb0QxbOnoAcWAxIAPhWGkviQtOybEUIiRLEZSmCL57ikk4jlExn+IO7MOS6tfvXhLK/cjqMArOCeLhOtpotEUEGz11CUwBovTAZZcvUUjlBgfw9xXVaXJNc4ptc87u44zqdi9LMFbKczbblwXO7/DrehtyP2GX9TPO17SLYk5kMXvQ6Bkoyhy8zxoUT9xqpyxXckB/R9RO3lJNK3wxPu+S8nn83zAVenQ8B+BCSlDRCHA2M8BIKIm4khZPZzn+P6Q5zhUr7UWJArV1Hh0EjQ6UCRycMRowCaGsDI7JtGO/atLxMxa3L4c4RrBSswsqnHdSG3IepJIGlI0egmEKyFurU9QyCr/D+blplpMPf9Nq8q6lxfoo2Xo5r9p39Rts4y2t9xi9O4txV9QMmmzQOWDZSlDaJQiRBDjHs8zaM5EHVfgjVu1RsLvty2Gh0ua/puCOwm3TfOnbH0/OkBYKDBcJlJUKkDkLinlGLFLgvk+6z4fsYNudI+eVBieCBZUtgQ/BQUxohdQBoxEHIdunh/Xk9R/XRyc06y3fVLPfNtQ3HcNkKxkr1en8JYacTGlE7yALK0BpjuB1CGA9cuNJB50H6fY63lLa9KTVbDasX/sB8Wi4sxtycmZYaS8rWII8OacJPEcClZQCl3gEniXThinNaQjaVvHL18kvzTMla93bPJo8wdNdN3AYsUVs6rZLaNOiOH7goxVZhORASGa7xiZByEmA0Toy67iJPo+Ccv5i1JeRmhhDlFyDjlqCyoQQRLIgWY7e52SYoXFScTmp7prbl4Iic95xBZ4pD0qjAfTJAWmeWSYWrB3fey4vBu0S/Es5k3ImWxvAu74ZiAjedC25kEpIKUmZI1uvLudk7OWg5NBwzw1onztQRAjSp674o3GCJDNqHFRfDurM5aA3Zfe+ptiJ9Oafuo8FVp3k5/v+HnmQ/PvXZVHVif4ppuzh5uah3JbUsbFHi9uoTO/p+2V2nfSY1rH+cFTq6fVzel9g9dfi8csZmjvrfeG9EaOgx1rBUdL9JRoo3pQ70U8nZPadjoE9baDG122/iI3pPFORR0UP7cdUR+5Ro2qH15rt9naN6gZn9PjbUPn0Bflg/JE5HP49cMr5MyH2vMej9+Ktx+Hd9wWzfTL84CAelTjh+5nJPuvw+LXk5PIeO2wn1vfh4V+HQE0x7BMAAA==

metadata_json:
  {"categories":["automation","social media","AI content generation","data integration","scheduling"],"complexity":"medium","use_cases":["Automatically generate and post trend-based tweet threads","Daily content automation for personal brands or companies","Niche-specific audience engagement using trending topics","Social media growth and visibility boosting","Automated market/educational insights distribution"],"estimated_setup_minutes":60,"required_services":["n8n (self-hosted or cloud)","Google Cloud Project with BigQuery enabled","Twitter (X) Developer Account - OAuth 2.0 credentials","AI provider API (Gemini or OpenAI)"],"key_features":["Scheduled daily runs","Fetch top Google Trends via BigQuery SQL","AI agent selects the most relevant trend","Generates a 5-part tweet thread with Gemini/OpenAI","Sequential publishing to X (Twitter) via OAuth2 app credentials and posting node(s) in n8n"],"target_audience":["Content creators","Tech influencers","Educators and course creators  / marketers (social media)  "]}


name: Raw Materials Inventory Management with Google Sheets, Supabase and Approvals
author_name: Immanuel
author_username: spectrabit
categories: []
created_at: 2025-05-11T13:15:27.989Z
updated_at: 2025-05-11T13:15:27.989Z
url: https://n8n.io/workflows/3979
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  Automated Raw Materials Inventory Management with Google Sheets, Supabase, and Gmail using n8n Webhooks

  Description

  What Problem Does This Solve? 🛠️
  This workflow automates raw materials inventory management for businesses, eliminating manual stock updates, delayed material issue approvals, and missed low stock alerts. It ensures real-time stock tracking, streamlined approvals, and timely notifications. 

  Target audience: Small to medium-sized businesses, inventory managers, and n8n users familiar with Google Sheets, Supabase, and Gmail integrations.

  What Does It Do? 🌟
  Receives raw material data and issue requests via form submissions.
  Updates stock levels in Google Sheets and Supabase.
  Manages approvals for material issue requests with email notifications.
  Detects low stock levels and sends alerts via Gmail.
  Maintains data consistency across Google Sheets and Supabase.

  Key Features 
  Real-time stock updates from form submissions.
  Automated approval process for material issuance.
  Low stock detection with Gmail notifications.
  Dual storage in Google Sheets and Supabase for redundancy.
  Error handling for robust data validation.

  Setup Instructions

  Prerequisites 
  n8n Instance**: Self-hosted or cloud n8n instance.
  API Credentials**:
    Google Sheets API: Credentials from Google Cloud Console with Sheets scope, stored in n8n credentials.
    Supabase API: API key and URL from Supabase project, stored in n8n credentials (do not hardcode in nodes).
    Gmail API: Credentials from Google Cloud Console with Gmail scope.
  Forms**: A form (e.g., Google Form) to submit raw material receipts and issue requests, configured to send data to n8n webhooks.

  Installation Steps 
  Import the Workflow:
     Copy the workflow JSON from the “Template Code” section (to be provided).
     Import it into n8n via “Import from File” or “Import from URL”.
  Configure Credentials:
     Add API credentials in n8n’s Credentials section for Google Sheets, Supabase, and Gmail.
     Assign credentials to respective nodes. For example:
       In the Append Raw Materials node, use Google Sheets credentials: {{ $credentials.GoogleSheets }}.
       In the Current Stock Update node, use Supabase credentials: {{ $credentials.Supabase }}.
       In the Send Low Stock Email Alert node, use Gmail credentials.
  Set Up Nodes:
     Webhook Nodes (Receive Raw Materials Webhook, Receive Material Issue Webhook): Configure webhook URLs and link them to your form submissions.
     Approval Email (Send Approval Request): Customize the HTML email template if needed.
     Low Stock Alerts (Send Low Stock Email Alert, Send Low Stock Email After Issue): Configure recipient email addresses.
  Test the Workflow:
     Submit a test form for raw material receipt and verify stock updates in Google Sheets/Supabase.
     Submit a material issue request, approve/reject it, and confirm stock updates and notifications.

  How It Works

  High-Level Steps 
  Receive Raw Materials: Processes form submissions for raw material receipts.
  Update Stock: Updates stock levels in Google Sheets and Supabase.
  Handle Issue Requests: Processes material issue requests via forms.
  Manage Approvals: Sends approval requests and processes decisions.
  Monitor Stock Levels: Detects low stock and sends Gmail alerts.

  Detailed Descriptions
  Detailed node descriptions are available in the sticky notes within the workflow screenshot (to be provided). Below is a summary of key actions.

  Node Names and Actions

  Raw Materials Receiving and Stock Update
  Receive Raw Materials Webhook**: Receives raw material data from a form submission.
  Standardize Raw Material Data**: Maps form data into a consistent format.
  Calculate Total Price**: Computes Total Price (Quantity Received * Unit Price).
  Append Raw Materials**: Records receipt in Google Sheets.
  Check Quantity Received Validity**: Ensures Quantity Received is valid.
  Lookup Existing Stock**: Retrieves current stock for the Product ID.
  Check If Product Exists**: Branches based on Product ID existence.
  Calculate Updated Current Stock**: Adds Quantity Received to stock (True branch).
  Update Current Stock**: Updates stock in Google Sheets (True branch).
  Retrieve Updated Stock for Check**: Retrieves updated stock for low stock check.
  Detect Low Stock Level**: Flags if stock is below minimum.
  Trigger Low Stock Alert**: Triggers email if stock is low.
  Send Low Stock Email Alert**: Sends low stock alert via Gmail.
  Add New Product to Stock**: Adds new product to stock (False branch).
  Current Stock Update**: Updates Supabase Current Stock table.
  New Row Current Stock**: Inserts new product into Supabase.
  Search Current Stock**: Retrieves Supabase stock records.
  New Record Raw**: Inserts raw material record into Supabase.
  Format Response**: Removes duplicates from Supabase response.
  Combine Stock Update Branches**: Merges branches for existing/new products.

  Material Issue Request and Approval
  Receive Material Issue Webhook**: Receives issue request from a form submission.
  Standardize Data**: Normalizes request data and adds Approval Link.
  Validate Issue Request Data**: Ensures Quantity Requested is valid.
  Verify Requested Quantity**: Validates Product ID and Submission ID.
  Append Material Request**: Records request in Google Sheets.
  Check Available Stock for Issue**: Retrieves current stock for the request.
  Prepare Approval**: Checks stock sufficiency for the request.
  Send Approval Request**: Emails approver with Approve/Reject options.
  Receive Approval Response**: Captures approver’s decision via webhook.
  Format Approval Response**: Processes approval data with Approval Date.
  Verify Approval Data**: Validates the approval response.
  Retrieve Issue Request Details**: Retrieves original request from Google Sheets.
  Process Approval Decision**: Branches based on approval action.
  Get Stock for Issue Update**: Retrieves stock before update (Approved).
  Deduct Issued Stock**: Reduces stock by Approved Quantity (Approved).
  Update Stock After Issue**: Updates stock in Google Sheets (Approved).
  Retrieve Stock After Issue**: Retrieves updated stock for low stock check.
  Detect Low Stock After Issue**: Flags low stock after issuance.
  Trigger Low Stock Alert After Issue**: Triggers email if stock is low.
  Send Low Stock Email After Issue**: Sends low stock alert via Gmail.
  Update Issue Request Status**: Updates request status (Approved/Rejected).
  Combine Stock Lookup Results**: Merges stock lookup branches.
  Create Record Issue**: Inserts issue request into Supabase.
  Search Stock by Product ID**: Retrieves Supabase stock records.
  Issues Table Update**: Updates Supabase Materials Issued table.
  Update Current Stock**: Updates Supabase stock after issuance.
  Combine Issue Lookup Branches**: Merges issue lookup branches.
  Search Issue by Submission ID**: Retrieves Supabase issue records.

  Customization Tips
  Expand Storage Options **: Add nodes to store data in other databases (e.g., Airtable) alongside Google Sheets and Supabase.
  Modify Approval Email **: Update the Send Approval Request node to customize the HTML email template (e.g., adjust styling or add branding).
  Alternative Notifications **: Add nodes to send low stock alerts via other platforms (e.g., Slack or Telegram).
  Adjust Low Stock Threshold **: Modify the Detect Low Stock Level node to change the Minimum Stock Level (default: 50).!

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.webhook","n8n-nodes-base.gmail","n8n-nodes-base.code","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.merge","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.merge","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.supabase","n8n-nodes-base.itemLists","n8n-nodes-base.merge","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.webhook","n8n-nodes-base.set","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.supabase","n8n-nodes-base.if","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.supabase","n8n-nodes-base.if"]

workflow_json_compressed:
  [encoded data, 18688 characters]

metadata_json:
  {"categories":["automation","integration","inventory management","notifications"],"complexity":"complex","use_cases":["Real-time raw materials stock tracking","Automated material issue approval workflows","Low-stock detection and alerting","Dual persistence for redundancy (Google Sheets + Supabase)","Form-driven inventory receipts and issue requests"],"estimated_setup_minutes":60,"required_services":["n8n instance (self-hosted or cloud)","Google Sheets API (Google Cloud credentials)","Supabase (project URL + API key)","Gmail API (Google Cloud credentials)","Form provider capable of POSTing to webhooks (e.g., Google Forms)"],"key_features":["Receive material receipts and issue requests via webhooks/forms","Map and validate incoming form data","Update and synchronize stock in Google Sheets and Supabase","Approval email workflow with approve/reject capture","Low-stock detection and Gmail alerts (pre- and post-issue)」「Error handling and data validation nodes to ensure consistency\",\"Dual-write and merge branches for new and existing products\",\"Audit/record creation for receipts and issues in Supabase\"],"],"target_audience":["Small and medium-sized businesses (SMBs)","Inventory managers and operations teams","n8n users and automation engineers/developers"]}


name: Audit & Generate JSON-LD Schema Markup for SEO with GPT-4.1-mini + Gmail
author_name: Ari Nakos
author_username: just-aristides
categories: []
created_at: 2025-05-11T13:47:31.383Z
updated_at: 2025-05-11T13:47:31.383Z
url: https://n8n.io/workflows/3980
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Schema Markup Generator
  Automatically audit and optimize your site’s JSON-LD structured data and email a step-by-step implementation guide.

  What It Does

  Collects a website URL & email via form
  Extracts existing JSON-LD, identifies gaps
  Generates optimized schema markup (GPT-4.1-mini)
  Builds an HTML before/after guide with action items
  Emails the full implementation instructions

  Prerequisites

  n8n instance (self-hosted, Desktop, or Cloud)
  Gmail OAuth2 credentials
  OpenRouter API key (for GPT-4.1-mini)

  Quick Setup

  Gmail: Add OAuth2 credential → select in “Send Email” node
  OpenRouter: Store API key → link in “Schema Markup Agent” node
  Form: Configure fields websiteUrl & emailAddress in your Webhook/Form node

  Customization

  AI Prompt**: Tweak system message to focus on specific schema types or output style
  Email Template**: Modify HTML header/footer or add sections

  Troubleshooting & Limits

  Monitor OpenRouter rate limits and Gmail send quotas
  Ensure target sites allow scraping for schema extraction

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.toolCode","n8n-nodes-base.formTrigger","n8n-nodes-base.httpRequestTool","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatOpenRouter"]

workflow_json_compressed:
  H4sIAAAAAAAAE61WTW/bRhD9KwLPGne/P3RqYKBoDmmCxOjFMIrZ3VmZsESq5BKJYei/F5SVSLJkW056FDnz9r03b0d8qJZUsJo9VHXTF2wivU/VrNLBY86MYqLArfU8MhW8JIxWkPRkPNc8ZjTSMucdI528NBjIS+aCi9W0KrRcLbDQZUep/0JlWF22y9WCCqVqVrqB1tOqaRP11ez6oarHU4MVzsioQCJFUEYnQM0iEFL0jkhTGpEbXFI1q76UOt7dT/5qC43H3a/Gh41rYIMKAXu66Dc125JV29elbptqdg2SOTZVht1MqxV2uKRCXT/aENumUFOqWVWtH1H/pq7fdPH1dEvUMZ2tSAw8ZwZU8BG8yhaEEsi1NJ5zdpKofDtTIcUvMA2Cq4wOIUUrQWlP4LNIwGwODgmVpdNM+U94atgvMJVGGO5FgBwwgQpZg1MKAV0IObKYg+B7TKlJk9JO7tuhm9AS68WzfOfbtwemcsemTo1Uv1K4bdu7TeydjqiiDmDJICitOKAzHKRPPEgSWoRcPVG3iXGh/n3zx6L9+hjtJyLFxU4mc4ahVQaISwKVOAGKqEGj8WS45YbbkwMRbx+IUoxNQfxsyI0KWkoBKiGCSipAsMqCdlprP77DvMc03tISJx+wuxtWk3fzEf4H4d8b1/y2Y73AZh5vsW4ucFt3MBsvvs/mqdGHTC/8D67csOx1lGBQW1DZEngUElJiTgYlMVDacf24ouZzOxTqzqC4WF7eYjloOVwkhk05O079C0mXUkbLOZhkDShtDDhJAqxg3EpilPbJXraJzqBZ2naxLT0w055L70LsJq9czjpxIMLRzaTAS5GBS++9zUhamz03m0luu+WkH8Ky7jdozyV1rLvq6vn82EalTl1IlXJwISWQJC0oFQV4QwmCNjnkqDEYOnEhn9y+PWVeRJGSgay9ARW1gRC5B+sxKKGCDcHtlP15dfVp8pn+Hagvz2q6LWW1rblq26NFM4b5HP/VHkttWZaaO8iZEFSWGbznCpQJPPkcEhLtWL4bSgu5/lY388nHoayGMvmEXX9WuNtN/WP5iPMIc5ShUYNgb4h4VDlrLjh4LQKMP8CFLMBFnbkUwkeX9rdcN8QydJS2At7IfNf/lPn4j8Tl29Jv8+bLx4APLICyLoJP1oKRWvHIg80yn9ol/NeXiXDn8l3fTMct3lAcezdLfXP7Zw8V1v+My6CaXV8/bL6wXtvO3xumVd0k+lbN2PrmZj3dX5OPsKOOAef0oU30NvzDzucP4q+edEbaXz3v4F7/n44dB/kRfT+sP6HmoP3IvOP1O3uollg35+vZVB+JOdFxEvmFT7GTwM+LfsWt12bygk/r9X+xKwCZ6gwAAA==

metadata_json:
  {"categories":["SEO","automation","AI-assisted content","integration"],"complexity":"medium","use_cases":["Audit existing JSON-LD structured data","Generate optimized JSON-LD schema markup","Create before/after implementation guide with action items","Email step-by-step implementation instructions to developers/clients","Customize schema generation via AI prompts"],"estimated_setup_minutes":30,"required_services":["n8n instance (self-hosted, Desktop, or Cloud)","Gmail account with OAuth2 credentials","OpenRouter API key (for GPT-4.1-mini)","Target website(s) that allow scraping for schema extraction"],"key_features":["Collect website URL and recipient email via form/webhook","Extract existing JSON-LD from target pages","Identify gaps and issues in structured data","Generate optimized JSON-LD using GPT-4.1-mini","Produce HTML before/after guide with actionable changes and code snippets (toolCode node)"],"target_audience":["SEO specialists","Web developers / engineers","Digital marketers and agencies doing technical SEO audits"]}


name: Auto-Update Notion CRM and Send Email from Google Form Submissions
author_name: Harsh Sharma
author_username: hksharma2004
categories: []
created_at: 2025-05-11T17:46:53.147Z
updated_at: 2025-05-11T17:46:53.147Z
url: https://n8n.io/workflows/3985
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Who is this for?

  This is for marketers, educators, HR teams, startups, and freelancers who use Google Forms to collect information and want to automatically send it to Notion while emailing the respondent.

  What problem does it solve?

  Manual data entry from Google Forms into CRMs is time-consuming. This template eliminates that, ensuring leads are captured in your Notion database in real time and respondents are notified instantly — improving speed and accuracy.

  What this workflow does?

  Node 1 – Google Sheets Trigger**:
    Listens for new rows in the spreadsheet connected to your Google Form.
  Node 2 – Notion**:
    Creates a new entry in your CRM-style Notion database.
  Node 3 – Gmail**:
    Sends a confirmation email to the person who filled the form.

  🛠 Setup Guide

  1. Prepare Google Form and Sheets

  Create your Google Form.
  Connect it to a Google Sheet (Responses tab &gt; "Link to Sheets").

  2. n8n - Google Sheets Trigger Setup

  Add Google Sheets Trigger node.
  Authentication: Use OAuth2 (preferred).
  Select your spreadsheet and worksheet.
  Trigger type: On new row (not "updated").

  3. n8n - Notion Node

  Add Notion node (action: "Create Page").
  Connect your Notion integration:

    In Notion, create a new integration and copy the token.
    Share your CRM database with that integration.
  In the node, map form responses to your database properties:

    e.g., Name → Title, Email → Email, etc.
    Use {{$json["Full Name"]}} for mapped fields.
  Common error: Check Notion property types (email must be set to type: email).

  4. n8n - Gmail Node (Optional Auto Reply)

  Add Gmail node (action: "Send Email").
  Auth: OAuth2 with your Gmail account.
  To: {{$json["Email Address"]}}
  Subject: "Thanks for contacting us!"
  Body:

      Hi {{$json["Full Name"]}},
    Thanks for reaching out via the form. We’ve received your info and will follow up soon!
  🧩 How to Customize

  Replace Gmail with Outlook or SendGrid if needed.
  Map more fields into Notion like phone, tags, etc.
  Add Slack or Discord notifications for internal alerts.

  🧾 SEO Optimized Title Suggestions

  Auto-sync Google Forms with Notion CRM and send a confirmation email
  Add Google Form leads to Notion and auto-send thank-you email via Gmail

  📎 Required Permissions / Dependencies

  Google Sheets and Gmail authenticated in n8n
  Notion integration shared with your CRM database
  Enable “Impersonate User” if using Google Service Account

nodes_used:
  ["n8n-nodes-base.googleSheetsTrigger","n8n-nodes-base.notion","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE42TW2vbQBCF/4qZZ03Yu9Z6bKAlLW2hKXlo8MNeRo6ItTLSxk0w/u9FktOYJKZ9E8zZT+fMnt1DE6GCD19u5Oenq5teUCD5awcFtJQdVHto0pBdCnQ16kqtay5Ku4zSasG8lVpZKZY1WV9K5jiXgkdb6yhYGaSI3nkdSS1V7Z1mNRSQqd1uXKbLnuJwTflhe9m12w1lilDl/oEOBSTXElTwqevWG1p87Pp2WORu8a3LTZcuf3wdMW49QHW7KiB1kcbP/RzFlsp7r0tUvDSoNGfolpJQG0eCjJBWB3j9i+s7ojwsfvbNek39iH/ajuNkE0589G6gi/WknsUv2m03NKMxqG5ZwVYFbF3vWsrUD1DtDzPshvph0vBDcXTKXKmt4yUqx2tUquTog1hiTYoFFizVRr84ncOftZaexyduhPgPP+JC/HWkeG0s8xwZBY6qZhwdixq5tkE5Gaw19cnuWtdszu/qOD3xo9Ts5zf5u667nxrlFY/ELUfGhEEVAkOnvEamvZQ8eEuGwz8jvCzVCV8TVxoNLxUqbQxayxy6pdDSSC+NPYlwnZtw/zQWi84GGSbNUXKSBrlgBQr7ZsMQupQpZagA3t7+qgAXcrOjue0FDJRzk9bTSXqk8DDyv/eReqhgx0fEbj4+LUx5Tq5UhDaaGpXwDi23hJx8ENpyoeQYMHQpURhRE/jYnmoPrWtG97f76eG8vcZpXkCTIj1CxQ6r1aE480zeo72u6Tu4w+EPHXgM13YEAAA=

metadata_json:
  {"categories":["automation","integration","CRM","email"],"complexity":"simple","use_cases":["Auto-create CRM contacts from Google Form responses","Send confirmation/thank-you emails to respondents","Eliminate manual data entry and sync leads in real time","Lead capture and tracking for marketing or sales","Onboarding new signups/applicants"],"estimated_setup_minutes":15,"required_services":["Google Forms / Google Sheets","Notion (integration with shared database)","Gmail (or alternative email service: Outlook, SendGrid)","n8n"],"key_features":["Triggers on new Google Sheets rows (Form responses)","Creates a new page/record in a Notion CRM database","Sends a confirmation email to the respondent via Gmail","Field mapping from form fields to Notion properties","Supports swapping Gmail for other email providers and adding internal notifications (Slack/Discord)"],"target_audience":["Marketers","Educators","HR teams / Recruiters / Talent teams with intake forms (small-medium) startups) freelancers"]}


name: Personalized AI Tech Newsletter Using RSS, OpenAI and Gmail
author_name: Miha
author_username: miha
categories: []
created_at: 2025-05-11T19:47:23.634Z
updated_at: 2025-05-11T19:47:23.634Z
url: https://n8n.io/workflows/3986
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:31
description:
  Combine Tech News in a Personalized Weekly Newsletter

  This n8n template automates the collection, storage, and summarization of technology news from top sites, turning it into a concise, personalized weekly newsletter.

  If you like staying informed but want to reduce daily distractions, this workflow is perfect for you. It leverages RSS feeds, vector databases, and LLMs to read and curate tech content on your behalf—so you only receive what truly matters.

  How it works

  A daily scheduled trigger fetches articles from multiple popular tech RSS feeds like Wired, TechCrunch, and The Verge.
  Fetched articles are:

    Normalized to extract titles, summaries, and publish dates.
    Converted to vector embeddings via OpenAI and stored in memory for fast semantic querying.
  A weekly scheduled trigger activates the AI summarization flow:

    The AI is provided with your interests (e.g., AI, games, gadgets) and the desired number of items (e.g., 15).
    It queries the vector store to retrieve relevant articles and summarizes the most newsworthy stories.
    The summary is converted into a clean, email-friendly format and sent to your inbox.

  How to use

  Connect your OpenAI and Gmail accounts to n8n.
  Customize the list of RSS feeds in the “Set Tech News RSS Feeds” node.
  Update your interests and number of desired news items in the “Your Topics of Interest” node.
  Activate the workflow and let the automation run on schedule.

  Requirements

  OpenAI** credentials for embeddings and summarization
  Gmail** (or another email service) for sending the newsletter

  Customizing this workflow

  Want to use different sources? Swap in your own RSS feeds, or use an API-based news aggregator.
  Replace the in-memory vector store with Pinecone, Weaviate, or another persistent vector DB for longer-term storage.
  Adjust the agent's summarization style to suit internal updates, industry-specific briefings, or even entertainment recaps.
  Prefer chat over email? Replace the email node with a Telegram bot to receive your personalized tech newsletter directly in a Telegram chat.

nodes_used:
  ["n8n-nodes-base.splitOut","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.gmail","n8n-nodes-base.markdown","n8n-nodes-base.stickyNote","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.vectorStoreInMemory","n8n-nodes-base.set","n8n-nodes-base.rssFeedRead","@n8n/n8n-nodes-langchain.vectorStoreInMemory","@n8n/n8n-nodes-langchain.embeddingsOpenAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["automation","integration","content curation","AI summarization","newsletter"],"complexity":"medium","use_cases":["Personalized weekly tech newsletter","Reduce daily news noise / curated briefings","Monitoring topics (AI, gadgets, games)","Research / competitor news aggregation","Converting article streams into email-ready summaries"],"estimated_setup_minutes":20,"required_services":["OpenAI (embeddings + LLM access)","Gmail (or another SMTP/email service)","Tech RSS feeds (e.g., Wired, TechCrunch, The Verge)","Optional: Persistent vector DB (Pinecone, Weaviate) for long-term storage"],"key_features":["Daily RSS ingestion and normalization (title, summary, publish date)","Vector embeddings for semantic storage and fast retrieval","In-memory vector store with option to swap persistent DBs","Weekly LLM-driven semantic query + summarization based on user interests","Configurable topics and item count for personalized digests','Email formatting and scheduled delivery via Gmail"],"target_audience":["tech enthusiasts and readers","Product managers and founders who need concise updates","Developers/engineers experimenting with LLM workflows and vector stores','Marketers and analysts monitoring industry news"]}


name: Send Telegram Text and Audio Messages to Notion with DeepSeek Summaries & OpenAI Transcription
author_name: Wild Nomad
author_username: rahimin3d
categories: []
created_at: 2025-05-11T19:49:53.476Z
updated_at: 2025-05-11T19:49:53.476Z
url: https://n8n.io/workflows/3987
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  Streamline Your Communication and Task Management with the Telegram to Notion Automation

  This powerful automation effortlessly connects your Telegram messages with your Notion workspace, transforming how you capture information and manage tasks.

  What it does:

  Automatic Capture: Instantly captures messages, voice notes, and audio files sent to your designated Telegram chat.

  Intelligent Processing:

  Text messages are automatically summarized into clear, plain-text descriptions using advanced AI (DeepSeek).

  Voice notes and audio files are transcribed into text using OpenAI's powerful transcription service.

  Organized in Notion:

  Text message summaries are added as new entries to your "Tasks Tracker" database in Notion, with the original message as the title and the summary as the description. The current date is also included.

  Transcriptions of voice notes and audio files are saved to your "Transcribes" database in Notion, making them easily searchable and reviewable.

  Saves You Time: Eliminates the manual effort of copying and pasting information, transcribing audio, and creating new entries in Notion.
  Boosts Productivity: Keeps all your important communications and tasks organized in one central location.

  This automation is perfect for anyone who uses Telegram for work or personal notes and wants to seamlessly integrate that information into their Notion workflow for better organization and productivity.

nodes_used:
  ["n8n-nodes-base.telegramTrigger","@n8n/n8n-nodes-langchain.lmChatDeepSeek","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.notion","n8n-nodes-base.switch","n8n-nodes-base.telegram","n8n-nodes-base.notion","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.telegram","n8n-nodes-base.notion","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE6WX224bNxCGX0Xg9Y7L80FXNZybFGjT1m5QxDCKITmUF5F2hdU6cWDo3YOVHUu21rKc3pLDf7/h8B9y71id2ZS1H/961+n029k/tukEXbCKLahHNr1jdbPqsUn0fogjH4KyKmvthAsJyRilbDFKRWl1LM6qYIKjoEQsyjsVi/aSky8YPXpkFetpsZxjT2cd5dU59TfLs3axnFNPmU377obWFWtwQWzKLmhOsw4Xkwu67avJx7ZONPmj7WnSdpPTm1y3k1LPadK3w2jdNpN32GPEFQ3fwdmKTS/v7hM8u55d/O1u/63tdfpk+Yo9fuRP6lZtg/PN2klHy7brh+nUEfaUT3s2ZZJLA9wADxdSTKWfKnMivP/EKnazzK+Hra8q1rSZdoBQG8+9iFBMQNDcOPBFayCyQkbui8HERnaiq2cz6ob8vi2HmcY3sJGGIe+T/iFwG7dsV/WwN2x6qTSvwPKrin2leN22nzc1DUEFEoKDly6DDqKAj4KDE9ELaTgPVg462OGCeupWbHq3vv/+R+pWG2mxrh7yKjxGLYWCGIoHLZIG76SAFCn4EJOKgrZ5vSNanhN9npxdYz/5vc0036b2a+ObX7b5zbGZpWusm5P5Ygj/sfZpjoJbXgk/JHkksaUiinUFrCgRtCsKUFgJkqTyiqsopdoSn76fnM6o6Y/AxIe4J3SPJThMdxIe+VzwPhcnwTtyoLN2gClnkCUX1BFjIbHluzeCePGANJv5p1RSHEclT+S2zlkJlS0CZldAEyLgcJKLMrZYm7EIvqU6/1r36fplqtVm/imV5UdBqR0oWYTnJglIIknQOkuIPFvgxLPPWmsT5L6pXjXTWA2Nfu4jdDp7LwpgEB50SgIQNUFImSjmUBKZV320kwxJaVwJDgxPbugQBJFQAQ/aO2eCEzo+r/tPlP0+kVfqvnULGRuLSRKiHbqFjhYiCQfZJqd1Lk6kHaoPS2pO3x/hlXYIrJ9ttDmSb6f7KIFOxwAqiAzaWAE4IBalHZlkPHc7dOd9nT5/29woB47mJmiIeUanPa/A7dOx1Db94PwpYy+TBlO0jZIDT6hAY0jgRTJAKmLIMZI1aZRUvplUDi3x50mTz05TTsALRdAkNEQpBZDPw0jEMnZTvbyhB1y1byrvhBAxZLAqRtBRGEBCGpqfi8GGiDy9xVSSXChcRqCgh203ClCRBulldCoq4ax7bqqXd/xFV73RVF4XCqQ0lJIlaIEasBgJ6EUMBbk32Tw3lfxZVzl5FN+WLnMrVTQEQkoErUSCYHIG5CGkYIX3evyovt1TRvJK7ff84w5qtI4MGgHR8QTaFgfecILsNHprPBXhRjnV2y0l+P8A5Y6H7HUAypqDzkUA8oxgYsLhSDpn1CiofjOoG6z/ZtCrimHq6y90/yKv2Ir6vm5mm5V0S+lmkP/QZerYlH0Rg8SX++Ub1xp0MWlnACPZ4XFAEEOOUByPAa0qwQyPg9Q2DaVBaiP8cIVN79gC6wH+8upqXf24Q3aG7zaP6ZFLbxNQsbrJdMumfL2zXh4QkK8o/Hi9jCnsPyL2JKpt9P7r8VD0SC8d5XtUfTnF1yQe0xiTeH6LH1QY36a9nnVQ4/E3Z0xq7y05KjX2ZzG9Y1j/N7THG5zRw9jloershT/9zHr9HcJJLqJADwAA

metadata_json:
  {"categories":["automation","integration","data processing","productivity"],"complexity":"medium","use_cases":["Automatically capture and summarize Telegram messages into Notion","Transcribe voice notes and audio files to searchable text","Centralize tasks and notes from Telegram in a Notion Tasks Tracker","Create a searchable transcript archive for meetings, interviews, or voice memos","Reduce manual copying/pasting and manual transcription work"],"estimated_setup_minutes":30,"required_services":["Telegram API / Bot","Notion API","OpenAI (transcription, e.g., Whisper)","DeepSeek (AI summarization)"],"key_features":["Automatic capture of Telegram text messages, voice notes, and audio files","AI summarization of text messages (DeepSeek) into plain-text descriptions","Audio transcription via OpenAI to produce searchable text","Creates entries in two Notion databases: Tasks Tracker (summaries) and Transcribes (transcriptions)","Preserves original message as title and adds current date metadata for entries"],"target_audience":["knowledge workers and productivity enthusiasts","remote teams and managers","content creators, podcasters, and journalists collecting voice notes or interviews"]}


name: Access Control for AI Agents (RBAC) using Airtable and Telegram
author_name: Mario
author_username: octionic
categories: []
created_at: 2025-05-11T20:09:38.591Z
updated_at: 2025-05-11T20:09:38.591Z
url: https://n8n.io/workflows/3988
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  Purpose

  This workflow allows granular control over the access to tools connected to AI Agents (including Multi-Agent setups) using Role Based Access Control.

  Demo & Explanation

  How it works

  User permissions are managed in Airtable where every restricted AI tool is listed by name and connected via roles to users
  Requests to the Main Agent can be sent through a Telegram message (can be replaced by Whatsapp, IMAP or similar)
  On every request the Telegram username is used to query a list of all allowed tools which are linked in Airtable
  A LangChain Code node is used to compare that list against the connected tools
  Every tool which is not permitted to be used is being replaced by a tool, which has a status response, telling the Agent to return a message to the user, that he is not authorized to use the tool
  Otherwise allowed tools are passed through to the Agent, as if they were connected directly to the Agent
  The parameters can also be passed to a sub-agent called as a sub-workflow where permissions can be checked the same way
  Every response is sent back to the same Telegram conversation

  Setup

  Clone the workflow and select the belonging credentials. You'll need an OpenAI and Airtable Account as well as a Telegram Bot (refer to the docs for the Telegram credentials).
  Copy this Airtable Template into your workspace
  Follow the instructions given in the yellow sticky notes
  Activate the workflow

  How to use

  Try this example:

  Create a new line in Airtable under “Users” containing your Telegram username and your full name
  Set the roles “basic” and “info”
  Consider temporarily disconnecting or resetting the chat memories so they do not remember previous confirmations
  Start a new chat, asking about your permitted roles - you should get a list of those
  Ask about the current weather in your city - you should be informed, that you do not have permission to access that information
  Back in Airtable add the role “weather” to your user
  Now ask the Agent the same question again - It should give you a proper answer this time

  From here on you can add tools and create roles to your likings.

  Disclaimer

  Please note, that this workflow can only run on self-hosted n8n instances, since it requires the LangChain Code Node.

nodes_used:
  ["@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.code","n8n-nodes-base.telegramTrigger","n8n-nodes-base.set","n8n-nodes-base.airtable","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.code","@n8n/n8n-nodes-langchain.toolCode","@n8n/n8n-nodes-langchain.toolCode","@n8n/n8n-nodes-langchain.toolCalculator","@n8n/n8n-nodes-langchain.toolWikipedia","@n8n/n8n-nodes-langchain.toolHttpRequest","@n8n/n8n-nodes-langchain.toolHttpRequest","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.telegram","n8n-nodes-base.telegram","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6796 characters]

metadata_json:
  {"categories":["automation","integration","security","AI/ML"],"complexity":"complex","use_cases":["Enforce role-based access to AI tools","Secure multi-agent or sub-agent orchestration","Gate and audit tool usage by user/role","Prototype RBAC policies for conversational agents","Replace unauthorized tool calls with safe responses"],"estimated_setup_minutes":45,"required_services":["n8n (self-hosted with LangChain Code node)","OpenAI (or compatible LLM)","Airtable","Telegram Bot API (or alternative input like WhatsApp/IMAP)"],"key_features":["Airtable-driven permissions table mapping users → roles → tools","Telegram-based user input and response delivery","LangChain Code node compares allowed tools and dynamically swaps unauthorized tools for safe stub responses","Support for multi-agent and sub-workflow permission checks","Seamless passing of allowed tools/parameters to agents when authorized','Demo-ready Airtable template and setup notes"],"target_audience":["Developers building conversational agents","AI/ML engineers and ops","Security engineers implementing access controls for automation tools','n8n self-hosted administrators"]}


name: Backup N8N Workflows to Github
author_name: Dat Proto
author_username: datproto
categories: []
created_at: 2025-05-12T05:05:39.188Z
updated_at: 2025-05-12T05:05:39.188Z
url: https://n8n.io/workflows/3990
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  Introduction
  This workflow will backup all of your existed workflows to a single Github repository.

  The Backup folders' name are based on the current backup date and have default format: "yyyy/MM/dd" (setup at "Create sub path" node).

  Throughout the backup process, the N8N will inform user via discord with clear message about Start, Success and Failure backups.

  The workflow will be 

  Tech Stack
  The following nodes / services / libraries are used in this workflow:

  Nodes:
  Discord: To send message to configured setup channel.
  N8N: To get all workflows' information.
  Github: To store backup data.
  Code: To run data comparison (Existed vs Latest workflow data).
  Wait: To avoid discord message rate limit.

  External libraries:
  Underscore.js: JavaScript library that provides lots of common Javascript functions, to help user save time when using code node.

  Guideline
  Open "Config" node and setup the following information:
      repo_owner: Your Github username.
      repo_name: The repository that you want to store workflows backup data.
  Open "Create sub path" node and change the naming and path format of backup folder(s).
  Setup custom messages in 3 discord nodes:
      Starting Message: N8N inform user at the time workflow start.
      Inform Success Flows: After each success backup, N8N will notify user.
      Inform Failed Flows: After each failure backup, N8N will notify user to have appropriate action.
      Completed Notifications: Then at the final, the workflow will give user a summary.
  Setup "Schedule Trigger" node to change default automated backup time.

  Screenshots

  Discord output

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.n8n","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.merge","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.noOp","n8n-nodes-base.github","n8n-nodes-base.github","n8n-nodes-base.splitInBatches","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.discord","n8n-nodes-base.discord","n8n-nodes-base.github","n8n-nodes-base.executeWorkflow","n8n-nodes-base.wait","n8n-nodes-base.github","n8n-nodes-base.wait","n8n-nodes-base.code","n8n-nodes-base.switch","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.discord","n8n-nodes-base.discord"]

workflow_json_compressed:
  [encoded data, 6244 characters]

metadata_json:
  {"categories":["automation","backup","integration","devops"],"complexity":"medium","use_cases":["Automated backup of n8n workflows to version-controlled storage","Disaster recovery and configuration preservation","Change auditing and versioning of workflow definitions","Team notifications on backup status"],"estimated_setup_minutes":15,"required_services":["n8n (self-hosted or cloud)","GitHub (repository + API access token)","Discord (webhook or bot token/channel)","Underscore.js (used inside Code node)"],"key_features":["Scheduled automatic export of all n8n workflows to a single GitHub repository","Date-based folder naming (configurable path format)","Comparison logic to skip unchanged workflows","Per-workflow success and failure Discord notifications plus a final summary","Wait handling to avoid Discord rate limits"],"target_audience":["n8n users and administrators","Developers and DevOps engineers","IT/SRE teams responsible for automation reliability"]}


name: Readable Workflow Export & Deployment Pipeline for Multi-Environment CI/CD
author_name: Klaasjan te Voortwis
author_username: voortwis
categories: []
created_at: 2025-05-12T08:05:06.961Z
updated_at: 2025-05-12T08:05:06.961Z
url: https://n8n.io/workflows/3994
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. 

  Export workflows with readable names, tagged for different environments

  To ensure understandable workflow exports, ease of use in delivery pipelines, and a better developer experience, this workflow helps with exporting workflows.

  Inner workings
  First, the workflow ensures that the directory structure for storing the workflows is correct.
  Exports all workflows.
  Next, it processes all workflow files and stores them with readable names.
  Based on tags, it will also export to dev and prod folders for easy commit and usage in a delivery pipeline.

  Configration
  No special setup is required for readable exporting.

  Usage
  Create a workflow and tag it with 'Auto deploy to dev'
  Run the workflow, this will create the needed folders and workflows with readable names.
  Commit these in your version control.
  Have a CICD pipeline build an n8n container
  —see the attached Dockerfile. 

  Check our Auto Starter workflow for auto-starting workflows after deployment.

  CI/CD Bonus:
  Attached are two nodes with some example configuration on building your own automated n8n deployment. 
  A Dockerfile, to get the new entrypoint and exported workflows packaged in the container.
  An updated entrypoint to build your own container, import the workflows, and run the Auto Starter.

  Set the following environment variables:

  STARTUP_WORKFLOWS_LOAD_LOCATION: to specify the folder to import from and distinguish between environments.
  STARTUP_WORKFLOW_ID: the ID of the workflow to run after starting n8n.  
    &gt; Note: The 'Instance Started' n8n trigger won't work, as all workflows are disabled upon import.

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger","n8n-nodes-base.executeCommand","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","n8n-nodes-base.convertToFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.convertToFile","n8n-nodes-base.convertToFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4276 characters]

metadata_json:
  {"categories":["automation","devops","ci/cd","deployment","developer-experience"],"complexity":"medium","use_cases":["Export n8n workflows with human-readable filenames","Tag-based multi-environment export (dev/prod) for CI/CD","Prepare workflow files for version control and container builds","Automate importing/auto-start of workflows after deployment","Integrate exported workflows into Docker-based n8n deployments"],"estimated_setup_minutes":30,"required_services":["self-hosted n8n instance","Docker (for container builds)","Git or other version control system","CI/CD platform (e.g., GitHub Actions, GitLab CI)","Filesystem access for export/import","Community nodes installed in n8n"],"key_features":["Creates and enforces folder structure for exports","Exports workflows with readable names","Filters/duplicates exports into environment-specific folders based on tags","Provides Dockerfile and custom entrypoint for packaging exports into images","Supports AUTO starter workflow pattern to enable post-import startup behavior (via env vars)  STARTUP_WORKFLOWS_LOAD_LOCATION and STARTUP_WORKFLOW_ID)  Note: uses community nodes and self-hosted only)"],"target_audience":["DevOps engineers","n8n self-hosted administrators","Developers packaging workflows into CI/CD pipelines\",\"SREs and platform teams"]}


name: Auto-Start Tagged Workflows Using n8n API after Deployment
author_name: Klaasjan te Voortwis
author_username: voortwis
categories: []
created_at: 2025-05-12T08:24:08.367Z
updated_at: 2025-05-12T08:24:08.367Z
url: https://n8n.io/workflows/3996
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:33
description:
  Auto Starter

  On importing workflows these will not be auto started, even if the old version was running. To fix this we created this workflow that can be run after n8n starts. It fits in our auto deploy pipeline and modified n8n container that will import workflows, start n8n and start the tagged workflows.

  Start this workflow after n8n starts.
  It will get all workflows in the running n8n instance.
  If the files have a tag 'Auto start' the workflow will be started.

  Check our Export workflows with readable names workflow for autostarting workflows after deployment.

  Configuration
  You need a a n8n api key configured.

nodes_used:
  ["n8n-nodes-base.n8n","n8n-nodes-base.if","n8n-nodes-base.n8n","n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE8VW227jNhD9FYItsLuCaOhC6wZsi7QPbV52CyTYokiCxYgc2Uxk0qUoO4ZhYD+j/b39koKSHSdxsu1b30TrzJwzZ4Yjb6k2EjtaXW2pkrSiMU+SPBcZy1OYMl6XJSux5CxPsum0rjFCKGhINSyQVlQXmobUbZb7AxuysRo6nIzvlqZTThlNqyvGkyhkcRLdhHQJFhbo0Ha02tJGtfvHXUgt/tlj5z4ufdjw2y6kwqJE7RS0Q4Au9NlS+adBNF/F5a/9T7+t73lqurV6IpCAEKbXjvo8XuontN2gKN6F+wQZyCZKRc14XHLGszhjZSkjlvFyClkWiaRIj0kvz375kZz1zpDOgXWvOqCaZwbExSsGmGOxIRVGS3U4P3pFVwfhSUhbbNwnaHtPS0MqoMML1J5qhbRytsd9sdAqCaMA2jmrhKMDx6JWGpyxtKKgJX1Ke5iGKE14LKOIlShixpN4yooozVgik7iEvMi5qGlIzRLtmGt7sAKshc3Dq5FeGO1A6Y6G1KrZ3F3uoXrjJT2u6P12S76/7YyeOJh1kwUs37419e078v4HYurbiW/EO7LbHTId4h41ZXdz0u9kkjx0vKglL7ICWCZRMF7UJSumZcrSrAbZ8ETmTfNkjOL/Puhx9Gqbj2aAcGoFDmlI18beNa1Zn0sP+vzZtocOLoz0hMr3Z3XijZLegv/pyoikziGPMwb1tGEcecnqlEcMoc7yJBbTBPkx6e9z1ES0StwpPSNfv/x1iZ0jh8K/fvn7VXcXoHtoL62azdA+u08Zf9no11VHURlBylOWp41kXExTVhdRzZJcyiQvSih4eVR94ZS425APxg21vCywG0Ae81ydv+3T4nQMhGn9XZmGdK2km9MqS6KQztFPMq38lhyuCmpHK/rduGku/FCjvdbX+qMmarE01nkrDxZ2xM2xQ7JWbUu0caRGAg+3AWVIcIWaqMbjiGkl2W8TsoaO2F5rpWcTcmlIo+6Jm6uOrJEIi+BQ7s97KuLm4IgA7Tlsrwk0Di3xczOQdRNy7kijXEeUJqa3oxCJy9ZsyFItsVUaCWhJFkaqRqEcgvfrAe1IMFQyFnqsMhwpBrxPMJ58SQ5mM5RH5MRbxUbfnuk/0euB53vGGToCbfvIWKUHgr1HQ5zSnQMtcIwcPW1Uix2ZwwoJeDUkCN4c99GbIBhQDyIGshoP/RnkXusg+NnoRs36cU8EgSf4w/REI0oCBEgQDLUvFbnDTRB41wY8ygk9nfubYZQ0ioePiN9W1ZYuQPkhvdoOfwC+9VEbkCFVWuI9raLdzc0uPEG/lPHp0nwxzb+vhVcSfzPvbvcPmMwpkNcIAAA=

metadata_json:
  {"categories":["automation","devops","deployment","workflow-management"],"complexity":"simple","use_cases":["Auto-start workflows after import or deployment","Integrate workflow start into CI/CD or container startup","Ensure previously running workflows resume after n8n restart or upgrade","Filter and start only workflows tagged for auto-start"],"estimated_setup_minutes":10,"required_services":["n8n (self-hosted) with API access","n8n API key configured"],"key_features":["Queries n8n for all workflows via API","Filters workflows by tag 'Auto start'","Starts matching workflows automatically","Designed to run once after n8n starts (fits into deployment pipeline)","Uses minimal nodes (n8n, if, manual, stickyNote)"],"target_audience":["DevOps engineers","Platform/SRE teams","n8n administrators/maintainers','Developers managing n8n deployments"]}


name: GitLab Merge Request Review & Risk Analysis with Claude/GPT AI
author_name: Vishal Kumar
author_username: vishalquantana
categories: []
created_at: 2025-05-12T11:59:11.770Z
updated_at: 2025-05-12T11:59:11.770Z
url: https://n8n.io/workflows/3997
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:31
description:
  Trigger

  The workflow runs when a GitLab Merge Request (MR) is created or updated.

  Extract & Analyze

  It retrieves the code diff and sends it to Claude AI or GPT-4o for risk assessment and issue detection.

  Generate Report

  AI produces a structured summary with:
  Risk levels
  Identified issues
  Recommendations
  Test cases

  Notify Developers

  The report is:
  Emailed to developers and QA teams
  Posted as a comment on the GitLab MR

  Setup Guide

  Connect GitLab
  Add GitLab API credentials
  Select repositories to track

  Configure AI Analysis
  Enter Anthropic (Claude) or OpenAI (GPT-4o) API key

  Set Up Notifications
  Add Gmail credentials
  Update the email distribution list

  Test & Automate
  Create a test MR to verify analysis and email delivery

  Key Benefits

  Automated Code Review** – AI-driven risk assessment and recommendations
  Security & Compliance** – Identifies vulnerabilities before code is merged
  Integration with GitLab CI/CD** – Works within existing DevOps workflows
  Improved Collaboration** – Keeps developers and QA teams informed

  Developed by Quantana, an AI-powered automation and software development company.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.merge","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.lmChatAnthropic","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.gitlabTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.gmail","n8n-nodes-base.gitlabTrigger","n8n-nodes-base.gitlabTrigger"]

workflow_json_compressed:
  [encoded data, 9272 characters]

metadata_json:
  {"categories":["automation","integration","developer tools","security","CI/CD"],"complexity":"complex","use_cases":["Automated code review for merge requests","AI-driven risk assessment and vulnerability detection","Generating actionable remediation recommendations and test cases","Notifying developers and QA via email and GitLab comments","Integrating AI analysis into GitLab CI/CD pipelines"],"estimated_setup_minutes":45,"required_services":["GitLab (API access)","Anthropic (Claude) or OpenAI (GPT-4o) API key","Gmail (or SMTP) for email notifications","Webhook/HTTP endpoint access for triggers"],"key_features":["Trigger on GitLab MR create/update","Extracts code diffs and sends to Claude/GPT for analysis","Generates structured report: risk levels, identified issues, recommendations, test cases","Emails report to developers and QA teams","Posts AI report as a comment on the GitLab MR"],"target_audience":["Software developers","DevOps / Site Reliability engineers","QA engineers / Testers"]}


name: Automate Medical Billing with Google Sheets and Gmail
author_name: David Olusola
author_username: dae221
categories: []
created_at: 2025-05-12T14:37:10.030Z
updated_at: 2025-05-12T14:37:10.030Z
url: https://n8n.io/workflows/3998
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Automate Medical Billing with Google Sheets and Gmail

  Note: This template is designed for self-hosted n8n instances. The workflow image above shows the complete automation flow.

  This n8n workflow automates the patient billing process—from form submission to invoice generation, email delivery, and Google Sheets logging.

  🏥 Who is this for?

  This workflow is ideal for:

  Private medical clinics
  Health service providers
  Medical office administrators
  Telehealth services
  Billing departments

  💡 What problem does this workflow solve?

  Medical billing often involves repetitive data entry, invoice calculation, and communication. This workflow:

  Eliminates manual invoice generation
  Ensures accurate and consistent pricing for treatments
  Sends automated, personalized invoices to patients
  Logs all billing details in a Google Sheet for recordkeeping
  Alerts staff when patient data is missing

  ⚙️ What this workflow does

  This automation builds a streamlined billing system that:

  Captures patient info via an embedded n8n form
  Formats visit dates for professional presentation
  Calculates invoice totals based on treatment selection
  Sends email invoices to patients using Gmail
  Logs billing data into Google Sheets
  Notifies admin via Slack if submission is incomplete

  ✅ Setup Instructions

  🔑 Prerequisites

  Before starting, ensure you have:

  A self-hosted n8n instance
  A Google account with access to:

    Gmail
    Google Sheets
  A Slack Webhook URL (optional but included)
  A designated Google Sheet to store invoices

  📋 Step 1: Google Sheet Setup

  Create a new Google Sheet and add the following columns in the first row (must match exactly):

  Invoice No | Patient Name | Email | Date | Total Cost | Line Items | Payment Status

  &gt; ✅ Customizable: You can add columns like “Insurance Provider” or “Payment Status” if needed—just update the mapping in the Google Sheets node.

  🗂️ Step 2: Configure Google Credentials in n8n

  In n8n:

  Go to Settings → Credentials
  Add:

    Google Sheets OAuth2
    Gmail OAuth2
  Ensure proper scopes are granted:

    .../auth/spreadsheets
    .../auth/gmail.send

  🧾 Step 3: Configure Treatment Pricing

  In the Calculate prices code node:

  const treatmentPrices = {
    "General Consultation": 60,
    "Blood Test - Basic Panel": 45,
    "Blood Test - Comprehensive": 120,
    "X-Ray - Single": 80,
    "Physical Therapy Session": 75,
    "Vaccination - Standard": 40,
    "Specialist Consultation": 120,
    "Minor Procedure": 150
  };

  &gt; ✏️ Customizable: Add, remove, or change treatment names and prices.

  🌐 Step 4: Embed the Patient Billing Form

  In the On form submission node:

  The form collects:

    Patient Name
    Email Address
    Visit Date
    Selected Treatments (multi-select dropdown)

  &gt; ✏️ Customizable: Modify the form fields to include phone number, insurance info, etc.

  📬 Step 5: Customize the Email Template

  Open the Send Patient Invoice Email node:

  Example message:

  Hi {{ $json.patientName }},

  Thank you for visiting MediSure Clinic on {{ $json.formattedDate }}.
  Here is a summary of your treatments:
  {{ $json.lineItems }}

  Total Due: ${{ $json.totalCost }}

  Best regards,  
  MediSure Billing Department

  &gt; ✏️ Customizable: Adjust the message, branding, and subject line to match your practice.

  🧠 Step 6: Handle Errors

  The Error Check and Generate Error Message nodes ensure:

  No invoice is sent without an email
  Admins are alerted via Slack if critical info is missing

  &gt; ✏️ Customizable: Replace Slack with email, webhook, or CRM notification if preferred.

  🧾 Step 7: Log to Google Sheets

  The Log Invoice to Googlesheets node appends each record:

  Invoice number
  Patient name
  Email
  Date
  Total cost
  Line items

  &gt; ✏️ Customizable: You can change the target spreadsheet or sheet name.

  🔄 Testing

  Once configured:

  Toggle the workflow Active
  Submit a test form
  Check:

     Email receipt is accurate
     Data is correctly appended in Google Sheets
     No errors are logged

  ✨ How to Customize This Workflow

  | Component               | How to Customize                               |
  | ----------------------- | ---------------------------------------------- |
  | Treatment Prices    | Edit Calculate prices node code              |
  | Form Fields         | Modify the On form submission node           |
  | Email Body          | Change message in Send Patient Invoice Email |
  | Slack Alerts        | Replace Slack node with email or CRM action    |
  | Google Sheet Fields | Add/remove columns and update mappings         |

  🧩 Integrate with Your Stack

  Add downstream automations easily:

  Push to QuickBooks or Stripe for payment processing
  Create a calendar invite for follow-ups
  Sync with a CRM like HubSpot

  🛠️ Troubleshooting

  | Issue                    | Fix                               |
  | ------------------------ | --------------------------------- |
  | Email not sent           | Check Gmail credentials & quotas  |
  | Spreadsheet not updating | Confirm sheet ID and column names |
  | Pricing not accurate     | Review Calculate prices logic   |
  | Slack alert not sent     | Check webhook URL format          |

  🤝 Need Help?

  Review n8n documentation
  Ask questions in the n8n community forum
  Contact the template creator: David Olusola
  Support Email : Dimejicole21@gmail.com

nodes_used:
  ["n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.httpRequest","n8n-nodes-base.formTrigger","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.gmail","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE5WWTXPbNhCG/4oGZ24GIL51cx03k04cp7XbS8aHBbCQOZFIlYTcpB799w5l1/IH5dg3znDx4lnsvgvcsCaxOVv/9unk32a1+CHl8QUNv7OKraggm9+wph0KtpE+jnE15zwaxa2INXdKGm6C19FI63UI3HobleDScGW51mi0M8o7cloHbyhHVrFCq/USCx33lIZzKpv1cbdaL6lQYvPSb2hbsRZXxObslFITcTn7pVk27WJ29OfF2enRxcezz7OLk9Mvn44uTkY9XAxs/vWyYm2XaPy8uc0JpQ7WSwPciQSKxwQYRIJAVnAlpLaOs/u93mPB2XnpN7FsehKj8I/1+KN1LeyUIeBA7wYqrGLrbmhK07Vs/hVqxSvv+GXF1tjjigr1A5vfbG8V/qJ+2AWKbXUHFm2U0UkFVgkNyjoEl4QCr6SulU8ojN+DnfR918+Oryh+O0zV5MdQir+RSWKwMToDSoUASluEoDVCqGvnMwpU0uyZjtKqaWefu9LkJuK452G0q1LWf9DfGxqeHJx1vBK8fgMkcpUyjxmCcxmUVg5QWwUq86BkEtqntIc8a2e561ezYRNWzbDTOsQ4xl30zWJB/ZPiqvvi/kPhquu+7WwgclK6TgG0xARKIocgAwctNMcodNBUs5+kVb+r7xPjVnrUOkDMKYGyQYMTxoHGLExMViij94kd4zJuRgvN1n0TaTiYVuwSPc6nfl1f7MkQnazrkCBzbkFF0uBCVKBFtFzHnEnQnuzXrl9hmb3HQm+AgtcZaA+lpOAas4cc6gzKyQw+6ggimYBojHMh7qHOSxO//Ri79TDUsIu5C3mEZnhl1TM2Fru2UFvYnLHD/WowKW2CBeMpgxIewZPxkFCbmkerbLZ7zg/UUj9W9dbxpzQMuHjLJNJvNpSTMRmZBXgRA6hsCZzXHBx65JYcaVc/OEhq0+wLlobaMvvYXndNpNnJCpvlQcbF3d+HlIZXTj11lEoy19EKMHU2oKQP4Lz34KUOQSsdQsCfO2qfGXmJsaYahJAZlJEJUGUHtdAxm5BFMg/m2aducZ9Q6WYfum6xpOGKqBw212IXdP5/0JPB5p73zFNc9U7vO4VkDAo5kM8KlKk1oLMEXHPuozBKyzzZ0S+0x4GWlopX9nmTvNzRlxXDWJprYvOMy4EqNlApTbvYLaXvFDej/FmfqGdzdi1Gjevb9bv6ouKOS8dBiNGyPjpwXArgTksdfB0DV6waIVqKo9RO+OE8md+wFTZjBl9vdlf9i5NwF1qxpk30nc359vJyWz2+Sqf0fmrBZ7LVfvFr7DGJ9fTpMUU2OVkn1Z6dyZTc9KNiUm/iGp1SPPh+mhQ9dNBTyi8+NibVX6jE1Aavcv/ERtvtf2SpGXg+CwAA

metadata_json:
  {"categories":["automation","integration","data processing","healthcare"],"complexity":"medium","use_cases":["Automate patient invoicing and billing","Generate and email invoices","Log billing records to Google Sheets","Alert staff on incomplete submissions","Embed patient billing form for intake"],"estimated_setup_minutes":30,"required_services":["Self‑hosted n8n instance","Google Sheets (OAuth2)","Gmail (OAuth2)","Slack Webhook (optional)"],"key_features":["Embedded n8n form to capture patient data","Price calculation via code node (configurable prices)","Formatted invoice email sent via Gmail","Append billing records to Google Sheets","Slack notifications for missing/invalid submissions (optional)"],"target_audience":["Private medical clinics","Medical office administrators","Billing departments in healthcare practices」「Telehealth service operators」「Developers/IT staff implementing clinic automations"]}


name: Automated Daily Customer Win-Back Campaign with AI Offers
author_name: Onur
author_username: onurpolat05
categories: []
created_at: 2025-05-12T18:11:21.486Z
updated_at: 2025-05-12T18:11:21.486Z
url: https://n8n.io/workflows/4001
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  Proactively retain customers predicted to churn with this automated n8n workflow. Running daily, it identifies high-risk customers from your Google Sheet, uses Google Gemini to generate personalized win-back offers based on their churn score and preferences, sends these offers via Gmail, and logs all actions for tracking.

  What does this workflow do?

  This workflow automates the critical process of customer retention by:

  Running automatically every day** on a schedule you define.
  Fetching customer data** from a designated Google Sheet containing metrics like predicted churn scores and preferred categories.
  Filtering* to identify customers with a high churn risk (score &gt; 0.7) who haven't recently received a specific campaign (based on the created_campaign_date field - *you might need to adjust this logic).
  Using Google Gemini AI to dynamically generate one of three types of win-back offers, personalized based on the customer's specific churn score and preferred product categories:
      Informational: (Score 0.7-0.8) Highlights new items in preferred categories.
      Bonus Points: (Score 0.8-0.9) Offers points for purchases in a target category (e.g., Books).
      Discount Percentage: (Score 0.9-1.0) Offers a percentage discount in a target category (e.g., Books).
  Sending the personalized offer* directly to the customer via *Gmail**.
  Logging** each sent offer or the absence of eligible customers for the day in a separate 'SYSTEM_LOG' Google Sheet for monitoring and analysis.

  Who is this for?

  CRM Managers & Retention Specialists:** Automate personalized outreach to at-risk customers.
  Marketing Teams:** Implement data-driven retention campaigns with minimal manual effort.
  E-commerce Businesses & Subscription Services:** Proactively reduce churn and increase customer lifetime value.
  Anyone** using customer data (especially churn prediction scores) who wants to automate personalized retention efforts via email.

  Benefits

  Automated Retention:** Set it up once, and it runs daily to engage at-risk customers automatically.
  AI-Powered Personalization:** Go beyond generic offers; tailor messages based on churn risk and customer preferences using Gemini.
  Proactive Churn Reduction:* Intervene *before customers leave by addressing high churn scores with relevant offers.
  Scalability:** Handle personalized outreach for many customers without manual intervention.
  Improved Customer Loyalty:** Show customers you value them with relevant, timely offers.
  Action Logging:** Keep track of which customers received offers and when the workflow ran.

  How it Works

  Daily Trigger: The workflow starts automatically based on the schedule set (e.g., daily at 9 AM).
  Fetch Data: Reads all customer data from your 'Customer Data' Google Sheet.
  Filter Customers: Selects customers where predicted_churn_score &gt; 0.7 AND created_campaign_date is empty (verify this condition fits your needs).
  Check for Eligibility: Determines if any customers passed the filter.
  IF Eligible Customers Found:
      Loop: Processes each eligible customer one by one.
      Generate Offer (Gemini): Sends the customer's predicted_churn_score and preferred_categories to Gemini. Gemini analyzes these and the defined rules to create the appropriate offer type, value, title, and detailed message, returning it as structured JSON.
      Log Sent Offer: Records action_taken = SENT_WINBACK_OFFER, the timestamp, and customer_id in the 'SYSTEM_LOG' sheet.
      Send Email: Uses the Gmail node to send an email to the customer's user_mail with the generated offer_title as the subject and offer_details as the body.
  IF No Eligible Customers Found:
      Set Status: Creates a record indicating system_log = NOT_FOUND.
      Log Status: Records this 'NOT_FOUND' status and the current timestamp in the 'SYSTEM_LOG' sheet.

  n8n Nodes Used

  Schedule Trigger
  Google Sheets (x3 - Read Customers, Log Sent Offer, Log Not Found)
  Filter
  If
  SplitInBatches (Used for Looping)
  Langchain Chain - LLM (Gemini Offer Generation)
  Langchain Chat Model - Google Gemini
  Langchain Output Parser - Structured
  Set (Prepare 'Not Found' Log)
  Gmail (Send Offer Email)

  Prerequisites

  Active n8n instance (Cloud or Self-Hosted).
  Google Account** with access to Google Sheets and Gmail.
  Google Sheets API Credentials (OAuth2):** Configured in n8n.
  Two Google Sheets:**
      'Customer Data' Sheet: Must contain columns like customer_id, predicted_churn_score (numeric), preferred_categories (string, e.g., ["Books", "Electronics"]), user_mail (string), and potentially created_campaign_date (date/string).
      'SYSTEM_LOG' Sheet: Should have columns like system_log (string), date (string/timestamp), and customer_id (string, optional for 'NOT_FOUND' logs).
  Google Cloud Project** with the Vertex AI API enabled.
  Google Gemini API Credentials:** Configured in n8n (usually via Google Vertex AI credentials).
  Gmail API Credentials (OAuth2):** Configured in n8n with permission to send emails.

  Setup

  Import the workflow JSON into your n8n instance.
  Configure Schedule Trigger: Set the desired daily run time (e.g., Hours set to 9).
  Configure Google Sheets Nodes:
      Select your Google Sheets OAuth2 credentials for all three Google Sheets nodes.
      1. Fetch Customer Data...: Enter your 'Customer Data' Spreadsheet ID and Sheet Name.
      5b. Log Sent Offer...: Enter your 'SYSTEM_LOG' Spreadsheet ID and Sheet Name. Verify column mapping.
      3b. Log 'Not Found'...: Enter your 'SYSTEM_LOG' Spreadsheet ID and Sheet Name. Verify column mapping.
  Configure Filter Node (2. Filter High Churn Risk...):
      Crucially, review the second condition: {{ $json.created_campaign_date.isEmpty() }}. Ensure this field and logic correctly identify customers who should receive the offer based on your campaign strategy. Modify or remove if necessary.
  Configure Google Gemini Nodes: Select your configured Google Vertex AI / Gemini credentials in the Google Gemini Chat Model node. Review the prompt in the 5a. Generate Win-Back Offer... node to ensure the offer logic matches your business rules (especially category names like "Books").
  Configure Gmail Node (5c. Send Win-Back Offer...): Select your Gmail OAuth2 credentials.
  Activate the workflow.
  Ensure your 'Customer Data' and 'SYSTEM_LOG' Google Sheets are correctly set up and populated. The workflow will run automatically at the next scheduled time.

  This workflow provides a powerful, automated way to engage customers showing signs of churn, using personalized AI-driven offers to encourage them to stay. Adapt the filtering and offer logic to perfectly match your business needs!

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.filter","n8n-nodes-base.if","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.googleSheets","n8n-nodes-base.gmail","n8n-nodes-base.set","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6468 characters]

metadata_json:
  {"categories":["automation","integration","marketing","data-processing","AI personalization"],"complexity":"medium","use_cases":["Automated customer retention campaigns","Personalized win-back offers using AI","Churn prevention for e-commerce/subscription businesses","Automated email outreach and logging","Operational monitoring of retention outreach"],"estimated_setup_minutes":45,"required_services":["n8n instance (Cloud or self-hosted)","Google Sheets API (OAuth2)","Gmail API (OAuth2)","Google Cloud Project with Vertex AI / Google Gemini API access","Google Vertex AI / Gemini credentials configured in n8n"],"key_features":["Daily scheduled trigger","Reads customer data from Google Sheets","Filters high-risk customers (predicted_churn_score > 0.7)","Generates structured, personalized offers via Google Gemini (informational, points, or discount)","Sends emails through Gmail node with generated subject/body content」「Logs all sent offers or NOT_FOUND events to a SYSTEM_LOG Google Sheet」「Batch processing/looping for multiple customers」「Configurable filter logic and AI prompt for business-specific rules"],"target_audience":["CRM managers","Retention specialists","Marketing teams (growth/engagement) e-commerce businesses and subscription services\",\"Data/analytics teams managing churn prediction"]}


name: Scrape & Analyse Meta Ad Library Image Ads with Apify and OpenAI
author_name: Daniel Setzermann
author_username: danielsetzermann
categories: []
created_at: 2025-05-12T19:03:22.534Z
updated_at: 2025-05-12T19:03:22.534Z
url: https://n8n.io/workflows/4003
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  Meta Image Ads Analyzer
  This n8n template builds an automated system to scrape, analyze, and extract insights from Meta advertising content. The workflow uses AI to perform deep analysis of image ads and organize the results in a structured format.

  How it works
  The workflow connects to Facebook's Ad Library to scrape image ads based on a specified page ID.
  Images are filtered by reach and days running, then processed through OpenAI's GPT-4o to analyze their content.
  Each image ad is systematically analyzed to extract key components: visual description, hook elements, main offer, call-to-action, and psychological triggers.
  Results are processed through an AI agent that structures the data into standardized fields.
  Original images are saved to Google Drive for reference.
  All analysis and metadata are saved to a Google Sheet for easy access and further processing.

  How to use 
  Once you've set up your credentials and configured the output:
  Enter the Meta Ad Library URL you want to analyze in the Settings node.
  Adjust the maximum number of ads to scrape and analyze based on your needs (defaults: 300 to scrape, 10 to analyze).
  Configure the Google Drive folder to save the original ad images.
  Ensure your Google Sheets connection is set up to receive the structured analysis.
  Click "Test Workflow" to start the analysis process.

  Requirements
  Apify account (for Meta Ad Library scraping)
  OpenAI API key (for image analysis)
  Google Drive and Google Sheets access

  Customizing this workflow
  Modify the AI prompts in the "Analyze Image Contents" node to extract different information from the images.
  Adjust the output formats in the Structured Output Parser node.
  Change the Google Sheets mapping to match your desired output structure.
  Increase the number of ads analyzed for more comprehensive research.
  Filter ads based on different criteria by modifying the "Filter only Image Ads" node.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.sort","n8n-nodes-base.filter","n8n-nodes-base.limit","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.googleDrive","n8n-nodes-base.merge","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  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

metadata_json:
  {"categories":["web scraping","marketing","data processing","AI analysis","automation"],"complexity":"medium","use_cases":["Competitive ad creative research","Creative insight extraction and ideation","Ad performance auditing","Market / competitor monitoring","Building a structured ad creative library"],"estimated_setup_minutes":30,"required_services":["Apify (Meta Ad Library scraping)","OpenAI (GPT-4o API)","Google Drive","Google Sheets","n8n instance","Facebook Meta Ad Library (target URL or page ID)"],"key_features":["Scrapes image ads from Meta Ad Library via Apify","Filters ads by reach and days running","Analyzes image content using GPT-4o to extract visual description, hooks, offer, CTA, psychological triggers","Uses an AI agent to structure outputs into standardized fields","Saves original images to Google Drive for reference and audit trail"],"target_audience":["Marketers","Ad operations / media buyers","Creative directors and copywriters doing inspiration work"]}


name: Remote IOT Sensor monitoring via MQTT and InfluxDB
author_name: Tony Duffy
author_username: tduffy
categories: []
created_at: 2025-05-12T21:47:36.071Z
updated_at: 2025-05-12T21:47:36.071Z
url: https://n8n.io/workflows/4004
scraped_at: 2025-09-14 19:11:01
description:
  . 

  Read and store IOT sensor data with the MQTT Trigger and InfluxDB

  tonyduffy@protonmail.com


  This workflow is for users wanting a practical example of how to obtain data from remote IOT systems using the MQTT protocol in an n8n environment.

  The template provides typical n8n node implementation and configuration settings necessary to read and store IOT data.

  The workflow reads the temperature and humidity data from a remote IOT system in this case a DHT22 sensor connected to a ESP32 micro controller. The data is parsed into the correct JSON format and then ingested in an InfluxDB data bucket. From there the stored temperature and humidity values can be displayed in real time.

  The workflow can be easily modified to read any MQTT driven device data.

  Remote IOT Sensor Setup

  The ESP32 controller with the DHT22 sensor are running on a Wokwi simulator.  The simulator uses micro python to publish a MQTT "wokwi-weather" topic with the temperature and humidity payloads to an online Mosquitto MQTT broker. The n8n MQTT trigger node subscribes to the topic on the broker and reads the payload values when any changes are published. The code node then prepares the payload for JSON format. The HTTP request node ingests the data in a InfluxDB bucket 

  How to customise this workflow to your needs

  Wokwi IOT ESP32 simulator

  You will need to setup a free account at Wokwi.com
  Once created search for a project "Micro-Python MQTT Weather Logger (ESP32)"
  Then when the MQTT weather logger project is open change lines 28 and 29 to the following
      28 MQTT_CLIENT_ID = ""
      29 MQTT_BROKER    = "test.mosquitto.org"
  You then can start the simulation by clicking on the green arrow and it will connect the mosquitto broker and the "wokwi-weather" topic will be published.
  By clicking on the DHT22 sensor the temperature and humidity bar will appear and you can change the values to send updated payload values to the broker.

  InfluxDB

   You will require access to functioning InfluxDB database to utilise this workflow

  Note : You will have to provide the following for the HTTP request node to connect to InfluxDB.

  The URL and port of the desired InfluxDB (In this case the InfluxDB is running locally on port 8086 ie. http://localhost:8086.)
  InfluxDB bucket for the data. ( In this case the created bucket name is "wokwi-data")
  The Organization ID of the InfluxDB. This can be obtained for the InfluxDB admin page
  A generated API token to read and write to the InfluxDB bucket. Created from the InfluxDB admin

  n8n workflow.

   The MQTT trigger node is configured to subscribe to the "wokwi-weather" topic on the test Mosquitto MQTT broker. It reads the temperature and humidity data sent by ESP32.
   The code node uses Javascript to move the temperature and humidity payloads to JSON format. This is flexible and can easily modified.
   The HTTP request node posts the JSON payloads to the InfluxDB bucket.


   When the above is configured the workflow should function correctly.

  Thanks to the many who have downloaded this template. Let me know on what you would like to build.  Contact me at tonyduffy@protonmail.com

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.mqttTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]

workflow_json_compressed:
  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


name: AI-Generated LinkedIn Posts with OpenAI, Google Sheets & Email Approval Workflow
author_name: Aryan Shinde
author_username: shindearyan
categories: []
created_at: 2025-05-12T23:11:35.083Z
updated_at: 2025-05-12T23:11:35.083Z
url: https://n8n.io/workflows/4005
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:31
description:
  How it works
  This workflow automates the process of creating, approving, and optionally posting LinkedIn content from a Google Sheet. Here's a high-level overview:
  Scheduled Trigger: Runs automatically based on your defined time interval (daily, weekly, etc.).
  Fetch Data from Google Sheets: Pulls the first row from your sheet where Status is marked as Pending.
  Generate LinkedIn Post Content: Uses OpenAI to create a professional LinkedIn post using the Post Description and Instructions from the sheet.
  Format & Prepare Data: Formats the generated content along with the original instruction and post description for email.
  Send for Approval: Sends an email to a predefined user (e.g., marketing team) with a custom form for approval, including a dropdown to accept/reject and an optional field for edits.
  (Optional) Image Fetch: Downloads an image from a URL (if provided in the sheet) for future use in post visuals.

  Set up steps
  You’ll need the following before you start:

  A Google Sheet with the following columns: Post Description, Instructions, Image (URL), Status
  Access to an OpenAI API key
  A connected Gmail account for sending approval emails
  Your own Google Sheets and Gmail credentials added in n8n

  Steps:
  Google Sheet Preparation:
  Create a new Google Sheet with the mentioned columns (Post Description, Instructions, Image, Status, Output, Post Link).
  Add a row with test data and set Status to Pending.

  Credentials:
  In n8n, create OAuth2 credentials for:
  a. Google Sheets
  b. Gmail
  c. OpenAI (API Key)
  Assign these credentials to the respective nodes in the JSON.

  OpenAI Model:
  Choose a model like gpt-4o-mini (used here) or any other available in your plan.
  Adjust the prompt in the "Generate Post Content" node if needed.

  Email Configuration:
  In the Gmail node, set the recipient email to your own or your team’s address.
  Customize the email message template if necessary.

  Schedule the Workflow:
  Set the trigger interval (e.g., every morning at 9 AM).

  Testing:
  Run the workflow manually first to confirm everything works.
  Check Gmail for the approval form, respond, and verify the results.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.set","n8n-nodes-base.gmail","n8n-nodes-base.switch","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.if","n8n-nodes-base.linkedIn","n8n-nodes-base.linkedIn","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6212 characters]

metadata_json:
  {"categories":["automation","content creation","social media","integrations"],"complexity":"medium","use_cases":["Automate generation of LinkedIn posts from spreadsheet inputs","Email-based approval workflow for social content","Scheduled content drafting and optional automated posting","Centralize content requests and track status in Google Sheets"],"estimated_setup_minutes":45,"required_services":["Google Sheets (Google account)","OpenAI API (API key)","Gmail (Google account for sending approval emails)","LinkedIn API / LinkedIn account (for optional posting)","Accessible image URLs or image hosting (if using images)","Optional: HTTP/Webhooks if customizing approval responses"],"key_features":["Scheduled trigger to run at defined intervals","Reads first Pending row from a Google Sheet","Uses OpenAI to generate professional LinkedIn post content","Formats content and sends approval email with dropdown and edit field","Optional image download from URL for post visuals"],"target_audience":["marketers","social media managers","content teams and editors"]}


name: Generate Recipes from Ingredients with Ollama AI Chef Agent
author_name: Clown Mutiny
author_username: clownmutiny
categories: []
created_at: 2025-05-13T06:43:19.837Z
updated_at: 2025-05-13T06:43:19.837Z
url: https://n8n.io/workflows/4007
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  What It Does
  The Chef Agent is your AI-powered kitchen companion—ready to turn leftover ingredients into meal inspiration. It's a simple, fun n8n automation that:
  Accepts a list of ingredients via webhook
  Uses Ollama AI to suggest 5 creative recipes or food ideas
  Recommends up to 3 missing ingredients to improve the dish
  Returns a fallback message if the AI is unavailable
  Includes setup notes for beginners

  Requirements
  An active n8n instance (local or hosted)
  Ollama AI running locally (or another LLM via HTTP request)
  A webhook endpoint (defaults to /lets-cook)

  Why You’ll Love It
  Fully customizable for your use case or favorite LLM
  Great intro to AI + workflow automation
  Comes with playful Clown Mutiny flair:
  &gt; “Powered by Clown Mutiny’s taste-bud liberation division.”

  Installation
  Import the provided JSON template into your n8n workspace.
  Configure your AI node to match your local Ollama instance.
  Trigger the flow by sending a POST request to the webhook:

  {
    "ingredients": "eggs, rice, spinach"
  }

nodes_used:
  ["@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.lmChatOllama","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.toolThink","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.webhook","n8n-nodes-base.respondToWebhook"]

workflow_json_compressed:
  H4sIAAAAAAAAE6VW227bOBD9FYLPolcXUpL1tGkaoMYmmyKb3aAIAoOXsUxEIg2JshMY/vcFpfjWuImBvlnkmTNzDjlDr7HhNeACX85hhi5KMA4H2PGyxcXjU4CNVeB/rrFWuMAs5TwbU04ESyWhgisiJDASh3ECCc1pnIQ42HI+zMEgOecO1dC2vATUgAS9BOVzvC485k+Tmz9MbkifiVTclHLOtRn5uPtGlyU0OMAL22qnrcHFYxiQOAyfArwCMbf2eeILm07vrr5fX1xeTR8m99+mD1dfvt3e/jWdfJ1OfTRveA0OmhYXa7zoRKUlLlzTQYDtwvP6jc1mqOo/aNo+VTSKNsGb8iTlkCeKkShlKaGxkCRPwogkIHPgSark7ED5bVXxmqNLr/3GKqjOEFzVHj5EHitOw2BQfKzjuHLZgALjNK+GzZ7nYqH9hz5h0Y/bf++ml3dXX6/+vp9cXG+tOhbApbSdcfi9NTtjBKgwViImKYwFoYyHRADEhMZxJlXM4ojRPe8/ul5UgG6gts3rGabUPfBLN5tB86CNsqtja+I0DKL0vTfSGgcvbgi5BlO6OS5YGIbvzzjZSZFCZnkuIsIimhBKOSM8joCksRyHXCQiYuleyv1cm+czJDhrqy32oHKan6z810azJMmyLKaERREjNISICKYywviMQjiWfEzFvrqhnyf7lv6kSv6GO/Q2DgMSfXjxcPvaOqhvhvbGBf5hO8QbQBzNoVrMugpJa5+1KRFvW906btwIedBKV9V2HCDtoG6R893SBy+5rrioADmLav4MaGatQivt5iP0vbFLrXyGSrcO2Rli2/gBPEKTGXJz8ERNP3L0At7YtZFVpwBNTNmA0mDcQVpjHVoM7App4zmQgFIbo00ZIK6WuoV+tWuhGeLcHNohj/6ZcmW7SiEBqGzAIy3iyvOO0LWudb+QoFq3rXfnIHqETrTbaLy7B5FKqGQpEEUjIFSwhORSUJKrMKNRKCiX8mAGD0NyfwP2hy94C6PVbv9oxP7WfOW+2XAFriVy4P5gyMY7YTxJIcu5IOGYjQnN04iIOFcko5BzznLBDkfsHbQLa5S38TONzQC9tw+nxLL802t+4jzizVOAuXR6CbiY8aqFALfgnDZlHwwvIDsff9soaHCBlxHeBHg5MPSeZpmM0lwxko2zlFChFMnzMCQsylgsIM7HM3+Q0hoDctdxwygp1pjrqR8tuHh8XPfv9K+7fgsNsDYKXnARbp6eNsHuchRrXHNtzqHqcT/zHGNPsX10Wicpjx+KQW799nGW4Hr7xBzzvn+ZB24/CTtewtvaWSmOY96Z++t/P7/n92bzP+2Ih/e2CQAA

metadata_json:
  {"categories":["automation","AI","integration","food-tech"],"complexity":"medium","use_cases":["Generate recipe ideas from leftover ingredients","Meal planning and menu inspiration","Reduce food waste by suggesting uses for ingredients","Demo/learning project for LLM-driven workflows"],"estimated_setup_minutes":20,"required_services":["n8n instance (local or hosted)","Ollama AI running locally (or any LLM accessible via HTTP)","A reachable webhook endpoint (defaults to /lets-cook)"],"key_features":["Accepts ingredient list via webhook","Calls Ollama LLM to generate 5 creative recipes/ideas","Recommends up to 3 missing ingredients to improve dishes","Fallback message when AI is unavailable","Memory buffer support for context/agent interactions (memoryBufferWindow)"],"target_audience":["n8n users and automation builders","Developers experimenting with LLMs/agents","Home cooks and food bloggers wanting recipe inspiration tools','AI/automation hobbyists and learners"]}


name: AI-Powered Auto-Generate Exam Questions and Answers from Google Docs with Gemini
author_name: Davide
author_username: n3witalia
categories: []
created_at: 2025-05-13T09:26:31.458Z
updated_at: 2025-05-13T09:26:31.458Z
url: https://n8n.io/workflows/4008
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  This workflow automates the creation of exam questions (both open-ended and multiple-choice) from educational content stored in Google Docs, using AI-powered analysis and vector database retrieval

  This workflow saves educators hours of manual work while ensuring high-quality, curriculum-aligned assessments. Let me know if you'd like help adapting it for specific subjects!

  Use Cases  
  Educators**: Rapidly generate quizzes, midterms, or flashcards.  
  E-learning platforms**: Automate question banks for courses.  
  Corporate training**: Create assessments for employee onboarding.  

  Technical Requirements:  
  APIs**: Google Gemini, OpenAI, Qdrant, Google Workspace.  
  n8n Nodes**: LangChain, Google Sheets/Docs, HTTP requests, code blocks.  

  This workflow combines AI efficiency with human-curated quality, making it a powerful tool for modern education and training.  

  Advantages of This Workflow

  ✅ Fully Automated Exam Generation: From document to fully formatted quiz content with no manual intervention.
  ✅ Supports Comprehension and Critical Thinking: Questions are designed to go beyond factual recall, including inference and application.
  ✅ Uses AI and RAG for Accuracy: Ensures that answers are grounded in the document content, reducing hallucination.
  ✅ Seamless Google Integration: Pulls content from Google Docs and writes outputs to Google Sheets.
  ✅ Scalable for Any Subject: Works with any article or content domain as input.
  ✅ Modular and Customizable: Can be easily adapted to generate different question types or to use other LLMs or storage systems.

  How It Works  
  Document Ingestion:  
     The workflow starts by fetching an educational document (e.g., textbook chapter, lecture notes) from Google Docs.  
     Converts the document to Markdown for structured processing.  

  AI Processing:  
     Splits text into chunks and generates vector embeddings (via OpenAI) for semantic analysis.  
     Stores embeddings in Qdrant (vector database) for retrieval.  

  Question Generation:  
     Open-ended questions: Google Gemini AI creates 10 critical-thinking questions.  
     Multiple-choice questions: Generates 10 MCQs (1 correct + 3 plausible distractors) using RAG to validate answers against the vector DB.  

  Answer Validation:  
     For open questions: Retrieves context-aware answers from the vector store.  
     For MCQs: Ensures distractors are incorrect but believable via AI cross-checking.  

  Output:  
     Saves questions/answers to Google Sheets in two tabs:  
       Open questions: Question + AI-generated answer.  
       Closed questions: MCQ + options + correct answer.  

  Set Up Steps  
  Prerequisites:  
     APIs/Accounts:  
       Google Workspace (Docs + Sheets).  
       OpenAI (for embeddings).  
       Google Gemini (for question generation).  
       Qdrant (vector DB – self-hosted or cloud).  
     n8n Nodes: Ensure LangChain, Google Sheets/Docs, and HTTP request nodes are installed.  

  Configure Connections:  
     Link credentials for:  
       Google Docs/Sheets (OAuth2).  
       OpenAI (API key).  
       Google Gemini (API key).  
       Qdrant (URL + API key).  

  Customize Input:  
     Replace the default Google Doc ID in the "Get Doc" node with your source document.  
     Adjust chunk size/overlap (Token Splitter node) for optimal text processing.  

  Tweak Question Generation:  
     Modify prompts in:  
       "Open questions" node: Adjust criteria (e.g., difficulty, question types).  
       "Closed questions" node: Edit MCQ formatting rules.  

  Output Settings:  
     Update the Google Sheet ID in "Write open" and "Write closed" nodes.  
     Map columns in Google Sheets to match question/answer formats.  

  Run & Automate:  
     Trigger manually ("Test workflow") or schedule periodic runs (e.g., for updated content).  

  Need help customizing?  
  Contact me for consulting and support or add me on Linkedin. 

nodes_used:
  ["n8n-nodes-base.manualTrigger","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.documentDefaultDataLoader","@n8n/n8n-nodes-langchain.textSplitterTokenSplitter","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.googleDocs","@n8n/n8n-nodes-langchain.retrieverVectorStore","@n8n/n8n-nodes-langchain.vectorStoreQdrant","n8n-nodes-base.convertToFile","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserItemList","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserItemList","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.vectorStoreQdrant","@n8n/n8n-nodes-langchain.embeddingsOpenAi","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.toolVectorStore","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.chainRetrievalQa","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.embeddingsOpenAi","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 10288 characters]

metadata_json:
  {"categories":["education automation","AI-assisted content generation","integration","data processing"],"complexity":"complex","use_cases":["Generate quizzes and exams from course material","Build question banks for e-learning platforms","Create assessments for corporate training/onboarding","Produce flashcards and study guides","Validate AI-generated answers using RAG"],"estimated_setup_minutes":60,"required_services":["Google Workspace (Google Docs & Google Sheets)","Google Gemini API","OpenAI API (embeddings)","Qdrant (vector database)","n8n with LangChain and relevant nodes (HTTP, Google, code)"],"key_features":["Automated ingestion from Google Docs and Markdown conversion","Text chunking and OpenAI embeddings","Vector storage and retrieval with Qdrant (RAG)","AI-driven open-ended and multiple-choice question generation (Google Gemini)","Answer validation and distractor plausibility checks via retrieval and AI cross-checks"],"target_audience":["Educators and teachers","Instructional designers / e-learning developers","Corporate training teams / L&D professionals (learning & development)"]}


name: Deploy Docker Grafana, API Backend for WHMCS/WISECP
author_name: PUQcloud
author_username: puqcloud
categories: []
created_at: 2025-05-13T11:28:47.111Z
updated_at: 2025-05-13T11:28:47.111Z
url: https://n8n.io/workflows/4011
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Setting up n8n workflow

  Overview

  The Docker Grafana WHMCS module uses a specially designed workflow for n8n to automate deployment processes. The workflow provides an API interface for the module, receives specific commands, and connects via SSH to a server with Docker installed to perform predefined actions.

  Prerequisites

  You must have your own n8n server.
  Alternatively, you can use the official n8n cloud installations available at: n8n Official Site

  Installation Steps

  Install the Required Workflow on n8n

  You have two options:

  Option 1: Use the Latest Version from the n8n Marketplace

  The latest workflow templates for our modules are available on the official n8n marketplace.
  Visit our profile to access all available templates: PUQcloud on n8n

  Option 2: Manual Installation

  Each module version comes with a workflow template file.  
      
  You need to manually import this template into your n8n server.  
  n8n Workflow API Backend Setup for WHMCS/WISECP

  Configure API Webhook and SSH Access

  Create a Basic Auth Credential for the Webhook API Block in n8n.  
      
      
      
      
      
  Create an SSH Credential for accessing a server with Docker installed.  
  Modify Template Parameters

  In the Parameters block of the template, update the following settings:





  server_domain – Must match the domain of the WHMCS/WISECP Docker server.
  clients_dir – Directory where user data related to Docker and disks will be stored.
  mount_dir – Default mount point for the container disk (recommended not to change).

  Do not modify the following technical parameters:

  screen_left
  screen_right

  Deploy-docker-compose

  In the Deploy-docker-compose element, you have the ability to modify the Docker Compose configuration, which will be generated in the following scenarios:

  When the service is created
  When the service is unlocked
  When the service is updated

  nginx

  In the nginx element, you can modify the configuration parameters of the web interface proxy server.

  The main section allows you to add custom parameters to the server block in the proxy server configuration file.
  The main\_location section contains settings that will be added to the location / block of the proxy server configuration. Here, you can define custom headers and other parameters specific to the root location.

  Bash Scripts

  Management of Docker containers and all related procedures on the server is carried out by executing Bash scripts generated in n8n. These scripts return either a JSON response or a string.

  All scripts are located in elements directly connected to the SSH element.
  You have full control over any script and can modify or execute it as needed.

nodes_used:
  ["n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.webhook","n8n-nodes-base.respondToWebhook","n8n-nodes-base.code","n8n-nodes-base.ssh","n8n-nodes-base.switch","n8n-nodes-base.switch","n8n-nodes-base.respondToWebhook","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.set","n8n-nodes-base.switch","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.switch"]

workflow_json_compressed:
  [encoded data, 13040 characters]

metadata_json:
  {"categories":["automation","deployment","integration"],"complexity":"complex","use_cases":["Automate deployment and lifecycle of Grafana Docker containers for WHMCS/WISECP","Expose an API backend for WHMCS/WISECP modules via n8n webhooks","Remote server management via SSH to run deployment/maintenance scripts","Generate and update docker-compose and nginx proxy configurations on service events"],"estimated_setup_minutes":45,"required_services":["n8n instance (self-hosted or n8n cloud)","SSH-accessible server with Docker and docker-compose installed","WHMCS or WISECP billing panel (module consumer)","(optional) nginx reverse proxy"],"key_features":["API webhook endpoint with Basic Auth for module commands","SSH node executing generated Bash scripts that return JSON or strings","Parameterizable template fields (server_domain, clients_dir, mount_dir)","Automatic generation/updating of docker-compose on create/unlock/update events","Customizable nginx proxy server and location blocks via template parameters and main/main_location sections in nginx element"],"target_audience":["DevOps engineers","Systems administrators","Hosting providers and resellers using WHMCS/WISECP modules」「n8n workflow developers and integrators"]}


