# templates

name: Recipe Recommendation Engine with Bright Data MCP & OpenAI 4o mini
author_name: Ranjan Dailata
author_username: ranjancse
categories: []
created_at: 2025-06-02T13:18:54.970Z
updated_at: 2025-06-02T13:18:54.970Z
url: https://n8n.io/workflows/4591
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Notice
  Community nodes can only be installed on self-hosted instances of n8n.

  Who this is for

  Recipe Recommendation Engine with Bright Data MCP & OpenAI is a powerful automated workflow combines Bright Data's MCP for scraping trending or regional recipe data with OpenAI 4o mini to generate personalized recipe recommendations. 

  This automated workflow is designed for:

  Food Bloggers & Culinary Creators : Who want to automate the extraction and curation of recipes from across the web to generate content, compile cookbooks, or publish newsletters.

  Nutritionists & Health Coaches : Who need structured recipe data to analyze ingredients, calories, and nutrition for personalized meal planning or dietary tracking.

  AI/ML Engineers & Data Scientists : Building models that classify cuisines, predict recipes from ingredients, or generate dynamic meal suggestions using clean, structured datasets.

  Grocery & Meal Kit Platforms : Who aim to extract recipes to power recommendation engines, ingredient lists, or personalized meal plans.

  Recipe Aggregator Startups : Looking to scale recipe data collection, filtering, and standardization across diverse cooking websites with minimal human intervention.

  Developers Integrating Cooking Features : Into apps or digital assistants that offer recipe recommendations, step-by-step cooking instructions, or nutritional insights.

  What problem is this workflow solving?

  This workflow solves:

  Automated recipe data extraction from any public URL

  AI-driven structured data extraction

  Scalable looped crawling and processing

  Real-time notifications and data persistence

  What this workflow does

  1. Set Recipe Extract URL
  Configure the recipe website URL in the input node

  Set your Bright Data zone name and authentication

  2. Paginated Data Extract
  Triggers a paginated extraction across multiple pages (recipe listing, index, or search pages)

  Returns a list of recipe links for processing

  3. Loop Over Items
  Loops through the array of recipe links

  Each link is passed individually to the scraping engine

  4. Bright Data MCP Client (Per Recipe)
  Scrapes each individual recipe page using scrape_as_html

  Smartly bypasses common anti-bot protections via Bright Data Web Unlocker

  5. Structured Recipe Data Extract (via OpenAI GPT-4o mini)
  Converts raw HTML to clean text using an LLM preprocessing node

  Uses OpenAI GPT-4o mini to extract structured data

  6. Webhook Notification
  Pushes the structured recipe data to your configured webhook endpoint

  Format: JSON payload, ideal for Slack, internal APIs, or dashboards

  7. Save Response to Disk
  Saves the structured recipe JSON information to local file system

  Pre-conditions

  You need to have a Bright Data account and do the necessary setup as mentioned in the "Setup" section below.
  You need to have an OpenAI Account.

  Setup
  Sign up at Bright Data.
  Navigate to Proxies & Scraping and create a new Web Unlocker zone by selecting Web Unlocker API under Scraping Solutions.
  In n8n, configure the Header Auth account under Credentials (Generic Auth Type: Header Authentication).

  The Value field should be set with the
  Bearer XXXXXXXXXXXXXX. The XXXXXXXXXXXXXX should be replaced by the Web Unlocker Token.
  In n8n, configure the OpenAi account credentials.
  Make sure to set the fields as part of Set the Recipe Extract URL. Remember to set the webhook_url to send a webhook notification of recipe response.
  Set the desired local path in the Write the structured content to disk node to save the recipe response.

  How to customize this workflow to your needs

  You can tailor the Recipe Recommendation Engine workflow to better fit your specific use case by modifying the following key components:

  1. Input Fields Node
  Update the Recipe URL to target specific cuisine sites or recipe types (e.g., vegan, keto, regional dishes).

  2. LLM Configuration
  Swap out the OpenAI GPT-4o mini model with another provider (like Google Gemini) if you prefer.

  Modify the structured data prompt to extract custom fields that you wish.

  3. Webhook Notification
  Configure the Webhook Notification node to point to your preferred integration (e.g., Slack, Discord, internal APIs).

  4. Storage Destination

  Change the Save to Disk node to store the structured recipe data in:

  A cloud bucket (S3, GCS, Azure Blob etc.)

  A database (MongoDB, PostgreSQL, Firestore)

  Google Sheets or Airtable for spreadsheet-style access.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-mcp.mcpClient","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.splitInBatches","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-mcp.mcpClient","n8n-nodes-mcp.mcpClient","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.function","n8n-nodes-base.httpRequest","n8n-nodes-base.readWriteFile","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.wait"]

workflow_json_compressed:
  [encoded data, 4800 characters]

metadata_json:
  {"categories":["automation","integration","web scraping","data processing","AI/ML"],"complexity":"complex","use_cases":["Automated recipe extraction and curation for content publishing","Generate personalized recipe recommendations and meal plans","Build structured recipe datasets for ML/analytics","Power recipe search, aggregator, or grocery/meal-kit recommendations","Real-time notifications to apps or dashboards with recipe payloads"],"estimated_setup_minutes":30,"required_services":["Bright Data MCP / Web Unlocker (scraping)","OpenAI (GPT-4o mini)","n8n (self-hosted with community nodes)","Webhook receiver (Slack, internal API, Discord, etc.)","Storage destination (local disk, S3/GCS/Azure, or database)"],"key_features":["Paginated crawling of recipe listings and link extraction","Per-page scraping using Bright Data Web Unlocker to bypass anti-bot protections","LLM preprocessing and GPT-4o mini extraction to convert HTML into structured recipe JSON","Loop/batch processing of recipe links at scale","Push structured recipe JSON to configurable webhook endpoints in real time\",\"Persist recipe JSON to local disk or configurable storage destination"],"target_audience":["Food bloggers and culinary creators","Nutritionists and health coaches","AI/ML engineers and data scientists working with recipe data sets\",\"Grocery, meal-kit platforms and recipe aggregator startups\",\"Developers integrating recipe/recommendation features into apps or assistants"]}


name: AI-Powered Lead Scoring with Salesforce, GPT-4o, and Slack with Data Masking
author_name: Le Nguyen
author_username: leeseifer
categories: []
created_at: 2025-06-02T13:46:57.842Z
updated_at: 2025-06-02T13:46:57.842Z
url: https://n8n.io/workflows/4592
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Boost your sales team’s efficiency with an end-to-end, privacy-first lead-scoring engine—ready to drop straight into your n8n instance.

  🔹 What it does

  Salesforce Trigger watches for new or updated Leads every hour.

  HTTP Request fetches the full record so you never miss a field.

  Mask Data (JS Code) automatically tokenises PII (name, email, address, etc.) before any external call—ideal for GDPR/SOC 2 compliance.

  OpenAI (GPT-4o) scores each lead 0-100, assigns a grade A-F, lists key reasons, recommends one next action, and even drafts a personalised email template.

  Unmask Data (JS Code) swaps the tokens back in only when you explicitly need them—so sensitive data never leaks to logs or AI prompts.

  Slack Node delivers a concise, team-friendly summary (score, grade, reasons, next step, and draft email) right to the rep who needs it.

  🔹 Why you’ll love it

  Security by design – field-level masking with reversible tokens.

  No-code friendly – clear sticky notes explain every step; swap Salesforce for any CRM in minutes.

  AI you can trust – scoring rubric baked into the system prompt for consistent results.

  Instant hand-off – reps get an actionable Slack message instead of another spreadsheet.

  Perfect for rev-ops teams that want smarter prioritisation without rebuilding their stack—or exposing customer data. Plug it in, set your own masking list, and start converting the leads that matter most.

nodes_used:
  ["n8n-nodes-base.salesforceTrigger","n8n-nodes-base.splitInBatches","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.slack","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  H4sIAAAAAAAAE6WWW1PkNhCF/8qUnt1El9ZtnkJ2H0IlWVKB5IXiQZcWuJixnbHJhpqa/77lgeCB9Wwgedapo09HrW5t2ZqGwJZbVjf9EJpEZ5ktmQ/ayMRNMEpKFMWYEHLWMqDXIXtH1kRrOBWdSiKflPABrfYJbcoeiVVsoHW3CgN92FDuL2i47z60625FA2W2HDb3tKtY02bq2fJqy+px1yCtMAollGwQ0HEHDoWCXHSUCVNW1rGKNWFNbMkuwor60m4SLS439c0NbcZdH7pxrXEN7M0hhp5O+mfppOzavh7qtmHLKzDIK1COX1esC5uwpoE2PVtud4+Gf9Cm3yvFrnpCJbIkVUJQlhDQawFBJAcxY/QqC6uVmlB/bttucf4XbRZnA63745zdqh7Omh/CkG6pfwWp9pD8XyHVMyQmz6UwCqTIGjAIhOBCAieDyUiWB80nyPOOmtOzie37xjXfTYCr0Nyk21A3J+0orF/SoeMVyDckeOKe8SRZb1ELiM4qQBs9RCcMuIwpJa688f7gulch3R1P7mn1AEkI+cz0meJt297ta1tapbPyHlBJBIzIwaXMQStfdPLRJDvW7zePIU+mlHNAZzlmQKEzoFYGIi8cvA1alGKL52E6xo+Xl78ufqM/76kfjp7mdhi6SfOiUt8WM57IioXV5/DQn98P3f3wMYyvvIRVT8/gVgWZSjGgfdKAOmXwSkooXAfuuXBK6gn8l9OLnxYfTy9Pj1KnNtNLXIlvw5VTyRYXUy4FJB/DTImD1zaC1dLakAoKQRPT758eqcbDvZ3Ky/dS6ZJt0ToC19EAUpTgkkQQmIMISilB8aBShzrdPSw+tQMdr9e95klyeMF6fEjafAXHUtsM1AxsydjxtoTRCS+MA0eJA5YswHHFwSpfuBMhK3KzoOL9pGKsRfw6xreRKk7cFfIQow2AxSYIPBXQseisndQizkcq300qxkjxP0fqohExW0hJZEApA3hSArKyOQerjU1qFlS9G9SNzwXxnaDX1bjeUBpd9vLHVrncsnWoR9+r7X7SfmsQ7ZUVq5tMf7Ml311f76p/JsKc0ezLmzWZ+sacz+uhM2txuNmcyavRMOvxou/Omcz0t1mj1xEeeF1Xk918n591nPnI/N+72+2+AHW7iH/ZCQAA

metadata_json:
  {"categories":["automation","CRM integration","AI/ML","data privacy","notifications"],"complexity":"complex","use_cases":["Automated lead scoring and prioritization","Sales rep handoff with action recommendations","Privacy-first enrichment of CRM records","Generating personalised outreach email drafts","Compliance-focused data processing (GDPR/SOC 2)"],"estimated_setup_minutes":30,"required_services":["Salesforce (API access)","OpenAI (GPT-4o) API","Slack (incoming webhook or app)","n8n instance/runtime"],"key_features":["Field-level reversible data masking/tokenisation before external calls","Salesforce trigger + HTTP fetch to capture full lead records","GPT-4o scoring (0–100), grade (A–F), reasoning, next action, and email draft","Unmasking only when explicitly required to avoid leaks","Slack notifications with concise, actionable summaries for reps/teams"],"target_audience":["Revenue operations teams","Sales managers and reps","RevOps engineers implementing automation in n8n workflows"]}


name: 🚛🗺️ Geocoding for Logistics with Open Route API and Google Sheets
author_name: Samir Saci
author_username: samirsaci
categories: []
created_at: 2025-06-02T13:56:03.773Z
updated_at: 2025-06-02T13:56:03.773Z
url: https://n8n.io/workflows/4593
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  Tags*: Supply Chain, Logistics, Geocoding, Transportation, GPS API

  Context

  Hi! I’m Samir — a Supply Chain Engineer and Data Scientist based in Paris, and founder of LogiGreen Consulting.

  I help companies improve their logistics operations using data, AI, and automation to reduce costs and minimize environmental footprint.



  &gt; Let’s use n8n to analyze geographical data!

  📬 For business inquiries, you can add find me on LinkedIn

  Who is this template for?

  This workflow is designed for logistics and transport teams but also market analytics experts that need to process geocoding data (get GPS coordinates from addresses).



  Ideal for:
  Transportation Planning
  Supply Chain Network Design
  Route optimization studies 

  How does it work?

  This n8n workflow connects to a Google Sheet where you store addresses with country codes, and uses the OpenRouteService API to calculate:

  📏 GPS Coordinates (longitude, latitude) 
  🗺️ Neighbourhood, City and local information

  Steps:
  ✅ Load addresses with country codes
  🔁 Loop through each record  
  🚚 Query OpenRouteService 
  🧾 Extract and store results: longitude, latitude, neighbourhood
  📤 Update the Google Sheet with new values  

  What do I need to get started?

  This workflow is beginner-friendly and requires:

  A Google Sheet with route pairs (departure and destination coordinates)
  A free OpenRouteService API key  
    👉 Get one here

  Next Steps

  🗒️ Follow the sticky notes inside the workflow to:

  Select your sheet
  Plug in your API key
  Launch the flow!


  🎥 Check the Tutorial

  🚀 You can customise the workflow to:
  Add additional outputs from the API
  Connect to your TMS via API or EDI

  This template was built using n8n v1.93.0  
  Submitted: June 1, 2025

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.splitInBatches","n8n-nodes-base.googleSheets","n8n-nodes-base.set","n8n-nodes-base.wait","n8n-nodes-base.stickyNote"]

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

metadata_json:
  {"categories":["logistics","geocoding","data processing","automation","integration"],"complexity":"simple","use_cases":["Batch geocoding addresses to GPS coordinates","Enriching logistics datasets with neighbourhood/city info","Preparing route data for mapping and analysis","Transportation planning and supply chain network design","Pre-processing data for route optimization studies"],"estimated_setup_minutes":15,"required_services":["Google Sheets (access to the sheet with addresses)","OpenRouteService API key (free tier)","n8n instance"],"key_features":["Reads addresses from Google Sheets","Calls OpenRouteService to obtain latitude/longitude and local place info","Processes records in batches/looping","Writes geocoding results back to the Google Sheet","Beginner-friendly with sticky-note guidance inside the workflow"],"target_audience":["Logistics and transport teams","Supply chain engineers","Transport planners and analysts”，“Market analysts and data scientists"]}


name: Generate Website Screenshots On-Demand with ScreenshotMachine API via Webhooks
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T13:58:55.180Z
updated_at: 2025-06-02T13:58:55.180Z
url: https://n8n.io/workflows/4594
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template enables you to instantly generate high-quality screenshots of any specified public URL by simply sending a webhook request. It’s an indispensable tool for developers, content creators, marketers, or anyone needing on-demand visual captures of web pages without manual intervention, all while including crucial security measures.

  🔧 How it works
  Receive URL Webhook: This node acts as the entry point for the workflow. It listens for incoming POST requests and expects a JSON body containing a url property with the website you want to screenshot. You can trigger it from any application or service capable of sending an HTTP POST request.
  Validate URL for SSRF: This is a crucial security step. This Function node validates the incoming url to prevent Server-Side Request Forgery (SSRF) vulnerabilities. It checks for valid http:// or https:// protocols and, more importantly, ensures the URL does not attempt to access internal/private IP addresses or localhost. If the URL is deemed unsafe or invalid, it flags it for an error response.
  IF URL Valid: This IF node checks the isValidUrl flag set by the previous validation step.
    If the URL is valid (true), the workflow proceeds to take the screenshot.
    If the URL is invalid or flagged for security (false), the workflow branches to Respond with Validation Error.
  Take Screenshot: This node sends an HTTP GET request to the ScreenshotMachine API to capture an image of the validated URL. Remember to replace YOUR_API_KEY in the URL field of this node with your actual API key from ScreenshotMachine.
  Respond with Screenshot Data: This node sends the data received directly from the Take Screenshot node back to the original caller of the webhook. This response typically includes information about the generated screenshot, such as the URL to the image file, success status, and other metadata from the ScreenshotMachine API.
  Respond with Validation Error: If the IF URL Valid node determines the URL is unsafe or invalid, this node sends a descriptive error message back to the webhook caller, explaining why the request was denied due to security concerns or an invalid format.

  🔒 Security Considerations
  This template includes a dedicated Validate URL for SSRF node to mitigate Server-Side Request Forgery (SSRF) vulnerabilities. SSRF attacks occur when an attacker can trick a server-side application into making requests to an unintended location. Without validation, an attacker could potentially use your n8n workflow to scan internal networks, access sensitive internal resources, or attack other services from your n8n server.

  The validation checks for:

  Only http:// or https:// protocols.
  Prevention of localhost or common private IP ranges (e.g., 10.x.x.x, 172.16.x.x - 172.31.x.x, 192.168.x.x).

  While this validation adds a significant layer of security, always ensure your n8n instance is properly secured and updated.

  👤 Who is it for?
  This workflow is ideal for:

  Developers: Automate screenshot generation for testing, monitoring, or integrating visual content into applications.
  Content Creators: Quickly grab visuals for articles, presentations, or social media posts.
  Marketing Teams: Create dynamic visual assets for campaigns, ads, or competitive analysis.
  Automation Enthusiasts: Integrate powerful screenshot capabilities into existing automated workflows.
  Website Owners: Monitor how your website appears across different tools or over time.

  📑 Prerequisites
  To use this template, you will need:

  An n8n instance (cloud or self-hosted).
  An API Key from ScreenshotMachine. You can obtain one by signing up on their website: https://www.screenshotmachine.com/

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "url": "https://www.example.com"
  }

  If the URL is valid, the workflow will return the JSON response directly from the ScreenshotMachine API. This response typically includes information about the generated screenshot, such as the URL to the image file, success status, and other metadata:

  {
    "status": "success",
    "hash": "...",
    "url": "https://www.screenshotmachine.com/...",
    "size": 12345,
    "mimetype": "image/jpeg"
  }

  If the URL is invalid or blocked by the security validation, the workflow will return an error response similar to this:

  {
    "status": "error",
    "message": "Access to private IP addresses is not allowed for security reasons."
  }

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "File" &gt; "Import from JSON" and paste the provided workflow JSON.

  Configure Webhook Path:

    Double-click the Receive URL Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /website-screenshot).
  Add ScreenshotMachine API Key:

    Double-click the Take Screenshot node.
    In the 'URL' parameter, locate YOUR_API_KEY and replace it with your actual API key obtained from ScreenshotMachine.

  	Example URL structure: http://api.screenshotmachine.com/?key=YOUR_API_KEY&url={{ $json.validatedUrl }}

  Activate Workflow: Save and activate the workflow.
  📝 Tips
  Processing Screenshots: You're not limited to just responding with the screenshot data! You can insert additional nodes after the Take Screenshot node (and before the Respond with Screenshot Data node) to further process or utilize the generated image. Common extensions include:
    Saving to Cloud Storage: Use nodes for Amazon S3, Google Drive, or Dropbox to store the screenshots automatically, creating an archive.
    Sending via Email: Attach the screenshot to an email notification using an Email or Gmail node for automated alerts or reports.
    Posting to Chat Platforms: Share the screenshot directly in a Slack, Discord, or Microsoft Teams channel for team collaboration or visual notifications.
    Image Optimization: Use an image processing node (if available via an API or a custom function) to resize, crop, or compress the screenshot before saving or sending.
  Custom Screenshot Parameters: The ScreenshotMachine API supports various optional parameters (e.g., width, height, quality, delay, fullpage).
    Upgrade: Extend the Receive URL Webhook to accept these parameters in the incoming JSON body (e.g., {"url": "...", "width": 1024, "fullpage": true}).
    Leverage: Dynamically pass these parameters to the Take Screenshot HTTP Request node's URL to customize your screenshots for different use cases.
  Scheduled Monitoring:
    Upgrade: Combine this workflow with a Cron or Schedule node. Set it to run periodically (e.g., daily, hourly).
    Leverage: Automatically monitor your website or competitors' sites for visual changes. You could then save screenshots to cloud storage and even trigger a comparison tool if a change is detected.
  Automated Visual Regression Testing:
    Upgrade: After taking a screenshot, store it with a unique identifier. In subsequent runs, take a new screenshot, then use an external image comparison API or a custom function to compare the new screenshot with a baseline.
    Leverage: Get automated alerts if visual elements on your website change unexpectedly, which is critical for quality assurance.
  Dynamic Image Generation for Social Media/Marketing:
    Upgrade: Feed URLs (e.g., for new blog posts, product pages) into this workflow. After generating the screenshot, use it to create dynamic social media images or marketing assets.
    Leverage: Streamline the creation of engaging visual content, saving design time.

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

workflow_json_compressed:
  [encoded data, 4744 characters]

metadata_json:
  {"categories":["automation","integration","web capture","monitoring"],"complexity":"medium","use_cases":["On-demand website screenshots","Visual monitoring/website change detection","Generating visuals for content or social media","Automated visual regression testing (with extensions)","Archiving or sending screenshots via email/chat/storage"],"estimated_setup_minutes":15,"required_services":["ScreenshotMachine API (API key)","n8n instance (cloud or self-hosted)","Any service or app capable of making HTTP POST requests to the webhook"],"key_features":["Webhook-triggered screenshot generation","SSRF-safe URL validation (blocks localhost/private IPs)","HTTP request integration with ScreenshotMachine API","Branches to respond with screenshot data or validation error","Easily extensible: save to cloud storage, email/chat delivery, image processing, scheduling"],"target_audience":["Developers","Content creators","Marketers and growth teams」「QA/automation engineers」「Automation enthusiasts」「Website owners/operators"]}


name: TinyURL Shortener via Webhook
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T14:25:59.525Z
updated_at: 2025-06-02T14:25:59.525Z
url: https://n8n.io/workflows/4595
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template allows you to automatically create shortened URLs using the TinyURL API by simply sending a webhook request. It's a quick and efficient way to integrate URL shortening into your automated workflows, ideal for sharing long links in social media, emails, or other applications.

  🔧 How it works
  Receive Link Webhook: This node acts as the entry point for the workflow. It listens for incoming POST requests and expects a JSON body containing the url to be shortened and your api_key for TinyURL.
  Create TinyURL: This node sends a POST request to the TinyURL API, passing the long URL and your API key. It can also accept optional parameters like domain, alias, and description to customize the shortened link.
  Respond with Shortened URL: This node sends the response from the TinyURL API (which includes the new shortened URL) back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is ideal for:

  Content Managers & Marketers: Quickly shorten links for campaigns, social media posts, or tracking.
  Developers: Automate the process of link shortening within applications or scripts.
  Automation Enthusiasts: Integrate a URL shortener into various n8n workflows (e.g., after generating a report, before sending a notification).
  Anyone needing on-demand short links: A flexible solution for ad-hoc link shortening.

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "api_key": "YOUR_TINYURL_API_KEY",
    "url": "https://www.verylongwebsite.com/path/to/specific/page?param1=value1&param2=value2",
    "domain": "tinyurl.com",      // Optional: defaults to tinyurl.com
    "alias": "myCustomAlias",    // Optional: desired custom alias for the link
    "description": "My project link" // Optional: description for the link
  }

  The workflow will return the JSON response directly from the TinyURL API, which will include the short_url and other details about the newly created link.

  ⚙️ Setup Instructions
  Obtain TinyURL API Key: Before importing, make sure you have an API key from TinyURL. You can typically get this by signing up for an account on their website.
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive Link Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /shorten-link).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  Dynamic Inputs: The workflow is set up to dynamically use the url, api_key, alias, and description from the incoming webhook data. This makes it highly flexible.
  Error Handling: You can add an Error Trigger node to catch any issues (e.g., invalid API key, malformed URL) during the TinyURL creation process. Configure it to send notifications or log errors for easy troubleshooting.
  Post-Shortening Actions: After generating the shortened URL, you can insert additional nodes before the Respond with Shortened URL node to perform other actions. For example, you could:
    Save to a Database: Store the original and shortened URLs in a database like Airtable, Google Sheets, or a PostgreSQL database.
    Send a Message: Automatically send the shortened URL via Slack, Discord, email, or SMS.
    Update a Record: Update a CRM record or project management task with the new shortened link.
  Custom Domains: If you have a custom domain configured with your TinyURL account, you can change the domain parameter in the Create TinyURL node to use it.

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

workflow_json_compressed:
  H4sIAAAAAAAAE5VVa2/bNhT9KwQxwC0guqJepAT0w7p9WIA+0jRdtyVBQZFXNmeZdCnaqeHqvw+U7MRJnW77JvFx7r3nnHu5w1rhCm/rMv9ttj5/dbvgs1//+AtHeAle4GqHtem8MBLOwjnKGCvKoqnLRqkGoMhTYHGZxWVayKSmkPBa0IbWCvK0ZpQnTa0KqGNacs7iAvcRNmIJuMKX2mw/XrxGH+bWeTDg0EYL9AnqubULHGEvZh2urm4ibKyC8Lkbc22KRDUN5wRqrkhGM0bKMs2JUHlZFiyXjMb4Lsxb6wE11qFDvJ/Pz9AFfFlD50OU7SqcMtyQIQypRQfTzmu52IarOMIr22mvrcHVFY8jyuObCK+EE0vw4LpA0a1Wfo6rNI4jPAc9m3tcJTyOsLTGg/Gh2rnuUIiAOjCqQwKdv/twidyYCPIW+Tk8yNFbJB0ID0igbs+RQh8vXk/RmUfwdQXSd2giVvqztwswEySMQpO1ayeocXY5AGoj7VKbGbodeUW1VdspupwDmii7FNpMIjQRrRbdJBoBFHTS6VWoeIKEA2SHb9FOg3iBr9/BdQMftI/2mmQspXmRpIRDXpAsyRnheZaSJAElaFmWdcJOaHIB3coaFWo9Ev5/SZIncUSzpzVJjjRJsx9qEghzQ0Yd3FN4rMmzsPBAjIEzYbbI+jk45KCFjTAeKeHFc1QLuThoa52eaSNaJEXbgkO2GZb3wkzRn3aNpDBImw6c3+MNBKAaGusA+ZCvNRAQV85K6MacHyb0DKazaYQ6sRkOiiGVQGE0lIm0QQItoevEDJ4foMeylTazH6kc11nKSq5ISaUiWc2BlMBTIgvB6rThKlflvcq/jO7d8/eksHPvV/f9eKQs5XGUxt8ru3YtrvDLcK+rXrwQKz312mzXrp1Ku3wxNs04wOY2pP0ytBqO8GjkgNFH+O/OmldWbXGFd9cGoeuAe40rdI1f7nbop7A/Hbpl7VrU99c4Go+NbTOePIp7tz8000mgYQd9+4YmkweA9w138trR/tHla9PjCAdFxyq8W8P4/34N7n5hBVI3232lARRH+Es4cf6A1GOKr3YHCe+GC47wRrTrsPa4qJX+vIAt6nvc3/SPvZNNkzv3NEnJkqxsCG8yRbJGciIkKKLKTKV5QmXcwL17LkCC3gB6rc3iX4fD7d3+kX8ILQ4G2u8PT1jCC5GyOCWgYkmyuGREFLwgNaWM8TyTKZVkbfSXNRCt8GP3rUQYK3jfc6TVZvHYWsGZbw7m23vvMFfeWBXyP/y+Db+PSbunLG+oiClrSJZCQ7KaMSLyrCSMNzmTcV5LyY4pG6fprfbzu2d1GApPErfv+0v76RSDRXa6Ax9Uu4f4pAdeRNue7d+cMw/L7vtpMk36mwgL6fUGcNWItht86702swEdvoJchwDvnAKHK7yhAWUzIgwaQsaKmkpGSsYkyWTKSF0nnNQgeJbRmsY0w8OoNyAPuT4eSNUOh07G1VUw/KjLf6FwuBRhbRR8xVXc39z00Wm7norw1FQ8gdr3/wAMNcG2ngkAAA==

metadata_json:
  {"categories":["integration","automation","marketing","utilities"],"complexity":"simple","use_cases":["On-demand URL shortening via webhook","Automating short-link generation for social posts and emails","Embedding link shortening into app workflows or scripts","Pre-processing links before sharing (e.g., in notifications)","Storing or forwarding shortened links to databases or messaging channels"],"estimated_setup_minutes":10,"required_services":["TinyURL API (API key)"],"key_features":["Receive link and API key via webhook","Create shortened URL using TinyURL API (supports domain, alias, description)","Returns TinyURL API response to the webhook caller","Dynamic input handling (url, api_key, alias, description)","Easy to extend with database saves or messaging notifications (Slack, email, etc.)"],"target_audience":["Content managers","Marketers","Developers building integrations or apps with short links」「Automation enthusiasts"]}


name: QR Code Generator via Webhook
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T14:37:16.047Z
updated_at: 2025-06-02T14:37:16.047Z
url: https://n8n.io/workflows/4596
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n template allows you to instantly generate QR codes from any text or URL by simply sending a webhook request. It's a versatile tool for creating dynamic QR codes for various purposes, from marketing campaigns to event registrations, directly integrated into your automated workflows.

  🔧 How it works
  Receive Data Webhook: This node acts as the entry point for the workflow. It listens for incoming POST requests and expects a JSON body with a data property containing the text or URL you want to encode into the QR code.
  Generate QR Code: This node makes an HTTP GET request to the QR Server API (api.qrserver.com) to generate the QR code image. The content from your webhook is passed as the data parameter to the API.
  Respond with QR Code: This node sends the response from the QR Server API back to the service that initiated the webhook. The QR Server API directly returns the image data, so your webhook response will be the QR code image itself.

  👤 Who is it for?
  This workflow is ideal for:

  Marketers: Generate QR codes for product links, event registrations, or promotional materials on the fly.
  Developers: Integrate QR code generation into applications, websites, or internal tools.
  Event Organizers: Create dynamic QR codes for ticketing, information access, or check-ins.
  Businesses: Streamline processes requiring physical-to-digital transitions, like menu access or contact sharing.
  Automation Enthusiasts: Add QR code generation capabilities to any workflow.

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "data": "https://www.yourwebsite.com/your-specific-page-or-text-to-encode"
  }

  The workflow will return the QR code image directly in the response.

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive Data Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /generate-qr).
  Customize QR Code (Optional):
    Double-click the Generate QR Code node.
    You can adjust the size parameter in the URL (e.g., size=200x200 for a larger QR code) or add other parameters supported by the QR Server API (e.g., bgcolor, color, qzone).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  Handling the Image Output: Since the QR Server API directly returns the image, the webhook response will be the image data. Depending on your use case, you might want to:
    Save to File/Cloud: Insert a node (e.g., Write Binary File, Amazon S3, Google Drive) after Generate QR Code to save the image to a file system or cloud storage.
    Embed in HTML/Email: If you're building an HTML response or sending an email, you might need to convert the image data to a Base64 string or provide a URL to a saved image.
  Error Handling: Enhance workflow robustness by adding an Error Trigger node. This allows you to catch any issues during QR code generation and set up notifications or logging.
  Dynamic Size/Color: You can extend the Receive Data Webhook to accept parameters for size, color, or bgcolor in the incoming JSON. Then, dynamically pass these to the url of the Generate QR Code node to create highly customizable QR codes.
  Input Validation: For more advanced use cases, you could add a Function node after the webhook to validate the incoming data to ensure it's in a valid format (e.g., a URL).

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

workflow_json_compressed:
  H4sIAAAAAAAAE5WWbW/bNhDHv8qBGNYOEB09PwHBsK5FlmFN29RbMRR5QZEni41MKiRtxzP83QfKdp7qtOg7S6T+d/z/7o7eEClITeKpWzXR0K4urrtXrxevSEDm6BipN0Qq65jieO73RUVR5FXeNlUrRIuYZwkWYZWGVZLzuIkwLhsWtVEjMEuaIirjthE5NmFUlWUR5mQbEMXmSGry4RJ+1wLhDBUa5rSBpWTwCZtO62sSEMdmltSfrwKitED/c7PLNWJ5GzZFSNOijWjKooRWIsxplldZkaZJycKC3IW50A6h1eagDFMjZzM0PsJ68DtUqegYgjbM4sQ6ya/X/jMSkEFb6aRWpP4ch2FA0/AqIAMzbI4OjfX+dChnnSN1EocB4Vo5VI7UZNpJC14WemkdKjsmIRXXc6lm8P7dxykYvFmgdXYC5w7wdkDuLDD48+O7C2i0WMNKug4YvBDMsRcwGD2gcWt4qQ28sGw+9Ph6XGEW+MIYVK5fA9eqlbOFQfELrDrJO1jJvocGARXXAgVI5TS4DuHDJfg3E/hXL4AzBcis7NfAxJeFdeOW1d62gblu4vF51/5BY0dXom2wp9LkuSjajFHeljFNk0bQKow5TbBiRdryFBM8QuVJFXjRHwWTPQOG614bUscBWUnhOlLHZRh8H9ecXaMFpuCP6fQ9nL25wwT3pn1Es0QDv70/9y9nu9zxoaUg52yGE5h2eIfvkB1INW79+/IvkBYGPSx65lBAa/R8XLkrk737ex0r/8OHOp5Yg3taKKBDg99ihFkWZYloaRLnFU1zkdGShxGNywqbIk6jjB1jdOicS7SDVhZ/mFCZhgHNnyWU3BFKwoeE0mcIWVTCjj6ZfUb3zj2G83JX/9KCWw+Ss75ffw0JPB6QzmLfBqANsJGM0yAdyBbWvjc6pmY7wF7XK/0CDePXh6LQRs6kYv24hAZ0+7B77htMKovGgXYdmvE0FhpstfHaPk0Nli13gcbkgvG0PhM/HXHOZB8AOv4tzLxieRU3Bc3jRtA0xJiWvIppKJqGJ0WbYBTfYz47VO++FZ+l2zk3XO5a4UkDlmEQHWnAhelJTU79d7Y+OWGDnNwYO9KZcD0/WUYn3CBzSG8M9TxOfvUVfhpl4W2UhT97LqebDfz0xWo18QNxMqLabnfXU6f9aU/P3kxJQPTgs/Fxt0+dSSfxvTdNmGcsbGmWx4ymSdzSCkVKeZXGrRA5K8Py3ptL5CiXCH7KPryajvqzult/eGvkB2/2y+M1mld5mFQRp2XCW5pWTUIZKwUt8oiLMs4TUeR0oeTNAqkU5KmxfhaTmhzmDr0xjw0IiPf87cEhf9eQgBya5a2HXN89XvjHp5bdG8a4SNAbVuRVStOyyGhVpZwmTZJnPApbHj8yzIuK3cX1vYLaZSCm+tMx56r4eFU9Oude4pMcDWF9f76fnOcO5/brHpnE26uAMO7kEkndst5iQCw6J9VsVMdb5Asf4J0RaEhNlpFXWe4URnhxwhgvmpxikvv2KlLalJGgohG8KeMwTbOIjJNLIT/k+nWb1RsyZ9Kf9PNm/IvzXfvG7QGRSuAtqcPt1dU2OF6ix7Sf7/Mjutvt/4kYt9YZCgAA

metadata_json:
  {"categories":["automation","integration","utility"],"complexity":"simple","use_cases":["Generate QR codes from text or URLs via webhook","On-the-fly QR code creation for marketing materials or event tickets","Integrate QR generation into apps or internal tools","Save or embed QR images in emails/webpages","Automate QR creation and storage in cloud"],"estimated_setup_minutes":10,"required_services":["n8n instance (webhook endpoint)","QR Server API (api.qrserver.com)"],"key_features":["Receive input via webhook (JSON with data)","Generate QR code image via external QR API","Return QR image directly in webhook response","Configurable size/color parameters in API request","Can be extended to save images to cloud storage or convert to Base64 for embedding"],"target_audience":["Marketers","Developers","Event organizers/operations teams」「Businesses/operations teams」「Automation enthusiasts"]}


name: Fetch Random Dog Images from Dog CEO API via Webhook
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T14:47:21.533Z
updated_at: 2025-06-02T14:47:21.533Z
url: https://n8n.io/workflows/4598
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template allows you to instantly fetch a random dog image from the Dog CEO API by simply sending a webhook request. It's a fun and simple way to integrate random dog photos into your projects, whether for websites, applications, or playful automations.

  🔧 How it works
  Trigger Webhook: This node acts as the entry point for the workflow. It listens for any incoming POST request. No specific data is required in the webhook body, as the workflow fetches a random image.
  Fetch Random Dog Image: This node makes an HTTP GET request to https://dog.ceo/api/breeds/image/random. The API responds with a JSON object containing the URL of a random dog image.
  Respond with Image URL: This node sends the URL of the random dog image back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is ideal for:

  Developers: Quickly integrate random dog images into web applications, bots, or prototypes.
  Content Creators: Get fresh, random dog photos for social media, blogs, or presentations.
  Learning n8n: A straightforward example of using a webhook to trigger an API call and return data.

  Anyone who loves dogs!

  📑 Data Structure
  When you trigger the webhook, you can send an empty POST request body.

  The workflow will return a JSON response similar to this (the message URL will vary):

  {
    "message": "https://images.dog.ceo/breeds/hound-walker/n02089867_2626.jpg",
    "status": "success"
  }

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Trigger Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /get-dog-image).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  Download the Image: Instead of just returning the URL, you can download the image and then process it. Insert another HTTP Request node after Fetch Random Dog Image to download the image binary.
    Set the HTTP Request node's 'Response Format' to 'Binary'.
    Use the expression ={{ $json.message }} for the URL.
  Save to Cloud Storage: After downloading the image (as described above), you can save it to various cloud storage services:
    Google Drive: Add a Google Drive node. Connect it to the output of the image download node. Configure it to upload the binary data to a specific folder.
    Amazon S3: Add an AWS S3 node. Configure it to upload the binary data, specifying your bucket and desired filename.
  Dropbox: Use the Dropbox node to upload the image file.
  Send as a Message: Share the dog image directly in a chat or email:
    Slack/Discord/Telegram: Use the respective integration node to send the image URL or the downloaded image as an attachment.
    Email: Attach the downloaded image to an email using an Email or Gmail node.
  Display on a Web Page: If you're embedding this into a web application, you can simply use the returned URL in an  tag to display the image.
  Error Handling: You can add an Error Trigger node to catch any issues during the image fetching process (e.g., if the Dog CEO API is down) and send notifications.

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

workflow_json_compressed:
  H4sIAAAAAAAAE51WTW8bNxD9KwQvaYClzF1yP4EcitZN1aZ24Kh1g8AHLjm7Yi2RCklZMQz994K7kuXYspP2pgU5b+a9NzPUHdYKN9hcfKnZPHzk9m/7u5ltcIKXEARu7rA2PggjYRrvpWVZFnXRtXWnVAdQ5AxKWnNas0JmbQpZ1Yq0S1sFOWvLtMq6VhXQ0rSuqpIWeJtgI5aAG3whjLJL9LPt0XQpekA3WqBLaOfWXuMEB9F73Hy6SrCxCuLPu7FUkdOuKigjtKg7wlkmSFWkBSlV1xZ5C1XXFfg+y5kNgDrr9sho5nTfg4sZblfxhqkMGVKQVniY+KDl9W0MwwleWa+DtgY3n0pOE17QqwSvhBNLCOB8lGcOup8H3LCMJlhaE8AE3ODZXHsUYdFC+wDGD0VoI+1Smx69P/8wQw4+r8EHP0HTgIQMHgmPwhxQGGscQuL3xrrrbmE3E3RmkV+B1J2WSIkgUMwCoEAhbca7O56tVbc7AO3vEZKYQgfUQZBz8EggN9qgowWTaE+U5S9wfqCdbpOd7JXMGMtYRZjIC8KpkKRtM05EWuWyqkB1LTsi+y8x0cHk/yx7Sp/RXdqFdbjJErzRKsxxk1U0ObjBn3FjKa4jbYN+nc3eo7en9y6gYAf9Yqk/nZ6jH99P0Q/K9hMJ9kSs9EnrAJQ/GYQ6GVV7HYMGKQ9CKtuPYqI/L95N0GwOA1S4XWkpFotb5CCsnYnS//bh/AzZ9h+QAW10iCCvluC96OEVWjm7AhduUWQhtIldE+s7YL9glpJ1mQHLSSF5SnhOSyJyxghTVPKuyOJgvjAjF+BX1vj/4RarXnSL3bvFiu9xy4NR40i4XUmoc3b51KivlHmNWiGv94Zap3ttxAJF+cEh2z2ckwn6aNdICoO08eACsmEObsjuUQuddTBOULBI2Y1ZWKEOPiTIixuIAxUskgu7VsgH64YT64by46HwaCUidocE2jn8kn2ipa0E2pFalUC4UIqINGWEMdkVBUuhpg9W3Dhij9fps97NQ1hdjD3/yLyU06TgT81buwVu8JsY6JuTk28Mxfh0zG0k8ubt6Qwn2K5iioi1fUyaT7J72mUhO0rrmrQcasI5L4hgeU7qTlR5W2asyNWB9m6RP3wyjvLd3J8/4FrRPdXd8fC6dbIuqBQZ4XnBCedQkrbkinRQy5q3kPFMkbXRn9dAdCzla51WInY27iEQZXuidzY8YJ/gfR//YVWsdf95Fj8fa3NQhomS1SnNCJdx+aZZTmpeSyJyXpY5LZko+EGZcXzVuFOm+6l4VqCxBjWzl8eUSnN6vCuO0FKXelBALBbT3Us3DbD0T1t9km2vEixk0DeAm04sPCTYQwja9AM6fAG5jgnOnQKHG3yTRpSbEWFwS7YykyxlROQ0vkiqJm1aSlJQRmvIaVaWFA97xYDc1/qkbZo7vBQ6Mv10N/zV+I6JGgISrI2CL7ih26urbfJc0DH8bxl0BH+7/RfGsFCGqgkAAA==

metadata_json:
  {"categories":["integration","automation","prototyping"],"complexity":"simple","use_cases":["Provide random dog images to web apps or bots","Embed fresh images in content or social posts","Prototype webhook-driven image fetch flows","Learn n8n basics: webhook → API call → respond"],"estimated_setup_minutes":5,"required_services":["Dog CEO API (https://dog.ceo/api)","n8n instance with public webhook endpoint"],"key_features":["Webhook trigger to initiate workflow","HTTP request to fetch a random dog image URL","Responds to caller with JSON containing image URL","No request body required (works with empty POST)","Easy to extend: download image binary, save to cloud, or send to chat/email"],"target_audience":["Developers","Content creators","n8n beginners/learners','Hobbyists and automation enthusiasts"]}


name: Lookup IP Geolocation Details with IP-API.com via Webhook
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T14:59:14.608Z
updated_at: 2025-06-02T14:59:14.608Z
url: https://n8n.io/workflows/4599
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n template enables you to instantly retrieve detailed geolocation information for any given IP address by simply sending a webhook request. Leverage the power of IP-API.com to gain insights into user locations, personalize experiences, or enhance security protocols within your automated workflows.

  🔧 How it works
  Receive IP Webhook: This node acts as the entry point, listening for incoming POST requests. It expects a JSON body containing an ip property with the IP address you wish to look up.
  Get IP Geolocation: This node makes an HTTP GET request to the IP-API.com service, passing the IP address from your webhook. The API responds with a comprehensive JSON object detailing the IP's location (country, city, region), ISP, organization, and more.
  Respond with Geolocation Data: This node sends the full geolocation data received from IP-API.com back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is ideal for:

  Marketing & Sales Teams: Personalize website content, offers, or ads based on a visitor's geographic location. Tailor email campaigns by region.
  Customer Support: Quickly identify a customer's location to provide more localized or relevant assistance.
  Security & Fraud Detection: Analyze incoming connection IPs to identify suspicious activity, block known malicious regions, or flag potential fraud.
  Analytics & Reporting: Augment your analytics data with geographical insights about your users or traffic.
  Developers & Integrators: Easily add IP lookup functionality to custom applications, internal tools, or monitoring systems.
  Content Delivery Networks (CDNs): Route users to the closest servers for faster content delivery (though advanced CDNs usually handle this automatically).

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "ip": "8.8.8.8" // Replace with the IP address you want to look up
  }

  The workflow will return a JSON response similar to this (data will vary based on IP):

  {
    "status": "success",
    "country": "United States",
    "countryCode": "US",
    "region": "VA",
    "regionName": "Virginia",
    "city": "Ashburn",
    "zip": "20149",
    "lat": 39.0437,
    "lon": -77.4875,
    "timezone": "America/New_York",
    "isp": "Google LLC",
    "org": "Google Public DNS",
    "as": "AS15169 Google LLC",
    "query": "8.8.8.8"
  }

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive IP Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /ip-lookup).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  This workflow, while simple, is a powerful building block. Here's how you can make it even more useful:

  Conditional Logic: Add IF nodes after "Get IP Geolocation" to create conditional branches. For example:
    If countryCode is 'CN' or 'RU', send an alert to your security team.
    If city is 'New York', route the request to a specific sales representative.
  Data Enrichment: Integrate this workflow into larger automation. For instance:
    When a new sign-up occurs, pass their IP address to this workflow, then save the returned geolocation data (country, city, ISP) alongside their user profile in your CRM or database.
    For e-commerce, use the location data to pre-fill shipping fields or suggest local currency/language.
  Logging & Analytics: Store the lookup results in a spreadsheet (Google Sheets), database (PostgreSQL, Airtable), or logging service. This can help you track where your users are coming from over time.
  Rate Limiting: IP-API.com has rate limits for its free tier. If you anticipate high usage, consider adding a Delay node or implementing a caching mechanism with a Cache node to avoid hitting limits. For heavy use, you might need to upgrade to a paid plan.
  Dynamic Response: Instead of returning the full JSON, you could use a Function node to extract only specific pieces of information (e.g., just the country and city) and return a more concise response.
  Input Validation: For robust production use, add a Function node after the webhook to validate that the incoming ip value is indeed a valid IP address. If it's not, you can return an error message to the caller.

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

workflow_json_compressed:
  H4sIAAAAAAAAE5WWW2/bNhTHvwpBDOgKiA4l0boBfSiwIvOwNkbrLRiaPPByZLORSZWkkhqGv3tB2Umd1AlW+IUCyXP5/87h8RZrhRtc/8PTy69gBiF0cXFziRO8hsBxs8Xa+MCNhFk8l5ZlWdRFK+pWqRagmOZQ0prROi9kJlLIKsHTNhUKprko0yprhSpA0LSuqpIWeJdgw9eAGzybo3OwnZU8aGvQ39beDD261RxdglhZe4MTHPjS4+bzdYKNVRCX2328NBeqUgUjVZ4XhMl0SipQOeFtnjIGkKZpjh9cfbABUGvdvWW0cHq5BBc9bPp4wlSGjC6I4B4mPmh5s4nXcIJ763UMETef84omFb1OcM8dX0MA56NEd1qFFW6yiiZ4BXq5CocPaU0AE3CDFyvtUfSAOu0DGD/Go420a22WaH7xaYEcfB3ABz9Bs4DgWw8yeMTRX58uPiBh1Qbd6bBC3KBXun+Femd7cGGDohOuTTQTVoBmc8SVcuA92tgB3XETULCoi3kPPfodJstJgrZXWPdXuEFXuJqMvyu8ez1B/9kBSW4QcK+7DeLqy+DDaPfuoF3Pwyoa9IMO0YNDBkD5SUQb1fwXnB/VSnfJgVbZQstpXZK0ppIwURWkboUkKk0pFKpOc1GfoDWbH6rilzmVBU2KnzlJ21mHmyx5IFYcEcvpM8TW/AZ81P3PxWKOzt89kIoy7CUnb+ezibRr5MHdaglxZwkBKQhcd6DQ8qjUtWmtW+/XMc8n1Hpnb7UChcTmWPgJWqwAvZ3PkIMwOOOR4oGjTt8AknYwwW0SJHXYJMjBUluToNmneYK4UWhtHbwEiBV1wbgoSVmxKWEir0mdtTWpaZrylFWs5S+100fwvTUefplTmlKasGdB5cnJ1srZM6A8GOVHzdqh6x5pPmrlQIK+BYVaZ9fH1ASXN/cwrdNLbXiHJO86cMi2Tynog/SxTwQgpR3I0I2N6Ic1KGQdagcXVuAiTAneg7pvvM4ul6AS1OougIurIe5qE6+rURjexVNavkYCWusACYjNvccO6iWQVDBR1pkiOW05Ye10SkRdSCJqUVWK06xo6Q+Q5xDQ42f4WYKrEPqP+6p/jLBiNMmynxEOrsMNfhPvNWdnuie811Hrsy/emrPtFv0WF5P4rk10j3a7/chZ2ZjGm/N3C5xg20cn0dzuacpskj0kzQtZlowrUnNeECaoIFXBGJnWRaHKjGU1LX8k/XFfBDHxo0FzMum7h/2jhNlDwoftcTCWhWwprWsiGNSEMVYQnk+npG55NRVllhdTRQajvw5AtMJP1YqPKm6w7kl3/+IdJZ/gKOP7e3XisMAJdoeue29VjP3+80P8fCrXD7EAMpGVMiO8LlrC8qwlop5S0rZtzivFBSuyY7GiUbWfPMfj+g8e+LO67UNRC3t5SsA0o6dL5lHGBxuXehSGd93sMCtnAdb+5xaYZLvrBHMZ9C3gpuWdhwR7CEGb5WgdvoEcooMLp8DhBt+m0crt3sIIsS65SgtakYLTWEisjPw4AZjKNKNZnrUSj0+PAXkf66kuarZ4zXVM9vN2/Ovy/6Uc7yVYGwXfcEN319e75FTNnnLxUj+fsLvbfQf3C43X/gkAAA==

metadata_json:
  {"categories":["integration","automation","data enrichment","security"],"complexity":"simple","use_cases":["Personalize website content or offers by visitor location","Enrich analytics with geolocation data (country, city, timezone, ISP)","Security and fraud detection to flag or block suspicious regions","Customer support routing based on user location","Add IP geolocation to CRM or user profiles for segmentation"],"estimated_setup_minutes":5,"required_services":["IP-API.com (IP geolocation API)","n8n instance with a public webhook endpoint"],"key_features":["Receive IP via webhook (POST with JSON body {\"ip\": \"...\"})","Query IP-API.com to return full geolocation JSON (country, city, region, ISP, org, lat/lon, timezone, etc.)","Respond back to caller with the geolocation data","Easy to extend with IF nodes, logging (Sheets/DB), or caching to avoid rate limits","Includes guidance for input validation and rate-limit handling"],"target_audience":["Developers / Integrators","Marketing & Sales teams","Security / Fraud teams / SREs / Ops engineers supporting ingress monitoring and blocking rules members, support teams, analysts"]}


name: 🤖 AI content generation for Auto Service 🚘 Automate your social media📲!
author_name: N8ner
author_username: n8ner
categories: []
created_at: 2025-06-02T15:08:52.136Z
updated_at: 2025-06-02T15:08:52.136Z
url: https://n8n.io/workflows/4600
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:31
description:
  Who Is This For?

  🚘This workflow is designed for auto service / car repair businesses looking to streamline their social media marketing with Ai tools and automation via n8n. 
  Whether you’re a small garage owner, a car repair shop, an automotive specialist or automechanic - this tool helps you maintain an active online presence without spending hours creating content.

  💪🏼 Though this template is set up for Auto Service daily content uploads, but the underlying logic is universal. You can easily adapt it for any niche by editing prompts, adding nodes, and creating or uploading a variety of content to any platform. You can use any LLM and generative AI of your choice. Personally, I prefer the smooth and effective results from ChatGPT 4.1 combined with GPT Image 1. But you can generate videos instead of images for your posts as well 😉

  What Problem Is This Workflow Solving?

  🤦‍♂️ Many auto service businesses struggle with consistently posting engaging content due to time constraints or lack of marketing expertise. 
  💎This workflow solves that by automating the content creation and posting process, ensuring your social media channels stay fresh and active, ultimately attracting more customers.

  What This Workflow Does:

  Generates daily social media posts tailored specifically to the auto service niche using AI.
  Allows easy customization of post and image prompts.
  Integrates research links through the Tavily Internet Search tool for relevant content.
  Supports starting posts based on reference article links via Google Sheets.
  Automatically publishes posts to your connected social media platforms.
  Enables scheduled or trigger-based posting for maximum flexibility.

  How It Works?

  Easy, actually ☺️ 

  AI creates daily social media content made just for Auto Service. You can simply edit prompts for both posts and images, set up news or articles research links via the Tavily Internet Search tool. You can also start the workflow with a reference article link through Google Sheets.

  🎯 Consistently posting relevant and actual niche content helps attract new customers, all while leveraging AI and n8n tools to keep the process seamless and cost-effective. 

  Set Up Steps:

  I kept it quick and simple for you ✨

  If you’re happy with the current LLM and image model configurations, just connect your OpenAI API credentials to enable AI content generation.
  Link your social media accounts (Facebook, Telegram, X, etc.) for autoposting.
  Optionally connect Google Sheets if you want to trigger posts based on sheet updates with reference links.
  Customize prompts as needed to match your brand voice, style and marketing tasks.
  Choose between:
  1) Scheduled automatic generation and posting at the same time as socials algorythms like it.
  2) Google Sheets trigger with reference.
  3) Manual start.

  How to Customize This Workflow to Your Needs?
  Switch AI models and edit prompts to better reflect your specific services or promotions.
  Add or modify research links in Tavily to keep your posts timely and relevant.
  Adjust posting schedules to match peak engagement times for your audience.
  Expand or reduce the number of social platforms integrated depending on your marketing strategy.
  Use Google Sheets to batch upload ideas or curate specific content topics.


  After adjusting a few settings, activate the workflow and let it run. 

  🤖 The system will then automatically publish your content across your selected social platforms — saving you time and effort. 



  📌 You’ll find more detailed tips and additional ai models for customizing ai generation process inside the workflow via sticky notes.

  💬 Need help? For additional guidance, feel free to message me — here’s my profile in the n8n community for direct contact  👈 click!

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.telegram","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.manualTrigger","n8n-nodes-base.googleSheetsTrigger","n8n-nodes-base.splitOut","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.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatMistralCloud","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatXAiGrok","@n8n/n8n-nodes-langchain.lmChatDeepSeek","@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.lmChatOllama","@n8n/n8n-nodes-langchain.lmChatAzureOpenAi","n8n-nodes-base.apiTemplateIo","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.linkedIn","n8n-nodes-base.twitter","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","@tavily/n8n-nodes-tavily.tavilyTool","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json_compressed:
  [encoded data, 12500 characters]

metadata_json:
  {"categories":["automation","content generation","social media","marketing"],"complexity":"medium","use_cases":["Automate daily social media content for auto service / car repair businesses","Generate AI-written post copy and images for social channels","Schedule or trigger posts from Google Sheets or manual/start triggers","Create research-driven posts using internet search integration","Multi-platform autoposting (Telegram, Facebook, X, etc.)"],"estimated_setup_minutes":30,"required_services":["n8n","An LLM provider (e.g., OpenAI / ChatGPT 4.1)","Image generation model (e.g., GPT Image 1 or other)","Mistral Cloud (optional, lmChatMistralCloud node)","Tavily Internet Search (research links integration)","Google Sheets (optional trigger/source)","Social platform APIs (Facebook, X/Twitter, Telegram, or others)","Webhooks / HTTP endpoints (for integrations)"],"key_features":["Daily AI-generated social media posts tailored to auto service niche","Customizable prompts for post copy and images","Supports multiple LLMs and image models","Tavily internet search integration for research-driven content","Google Sheets trigger to create posts from article/reference links or batch ideas"],"target_audience":["Auto service / car repair shop owners","Small garage owners and automechanics","Local business marketers and social media managers focused on automotive niche"]}


name: Public Holiday Lookup with Nager.Date API via Webhook
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T15:51:35.317Z
updated_at: 2025-06-02T15:51:35.317Z
url: https://n8n.io/workflows/4601
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template empowers you to instantly fetch a list of public holidays for any given year and country using the Nager.Date API. This is incredibly useful for scheduling, planning, or integrating holiday data into various business and personal automation workflows.

  🔧 How it works
  Receive Holiday Request Webhook: This node acts as the entry point, listening for incoming POST requests. It expects a JSON body containing the year (e.g., 2025) and countryCode (e.g., US for United States, PH for Philippines, DE for Germany) for which you want to retrieve public holidays.
  Get Public Holidays: This node makes an HTTP GET request to the Nager.Date API (date.nager.at). It dynamically uses the year and countryCode from your webhook request to query the API. The API responds with a JSON array, where each object represents a public holiday with details like its date, name, and type.
  Respond with Holiday Data: This node sends the full list of public holidays received from Nager.Date back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is ideal for:

  Businesses with International Operations: Automatically check holidays for different country branches to adjust production schedules, customer service hours, or delivery estimates.
  HR & Payroll Departments: Accurately calculate workdays, plan leave schedules, or process payroll taking public holidays into account.
  Event Planners: Avoid scheduling events on public holidays, which could impact attendance or venue availability.
  Travel Agencies: Inform clients about holidays in their destination country that might affect local business hours or attractions.
  Content & Social Media Schedulers: Plan content around national holidays to maximize engagement or avoid insensitive postings.
  Personal Productivity & Travel Planning: Integrate holiday data into your calendar or task management tools to plan trips or personal time off more effectively.
  Developers: Easily integrate a reliable source of public holiday data into custom applications, dashboards, or internal tools without managing complex datasets.

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "year": 2025,
    "countryCode": "PH" // Example: "US", "DE", "GB", etc.
  }

  You can find a comprehensive list of supported country codes on the Nager.Date API documentation: https://www.nager.at/Country

  The workflow will return a JSON array, where each element is a holiday object, like this example for a single holiday:

  [
    {
      "date": "2025-01-01",
      "localName": "New Year's Day",
      "name": "New Year's Day",
      "countryCode": "PH",
      "fixed": true,
      "global": true,
      "counties": null,
      "launchYear": null,
      "types": [
        "Public"
      ]
    }
    // ... more holiday objects
  ]

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive Holiday Request Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /public-holidays).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  This workflow is a foundation for many powerful automations:

  Conditional Branching for Specific Holidays: Add an IF node after "Get Public Holidays" to check for a specific holiday (e.g., "Christmas Day"). You can then trigger different actions (e.g., send a reminder, adjust a schedule) only for that particular holiday.
  Filtering and Aggregating Data:
    Use a Filter node to only keep holidays of a certain type (e.g., "Public").
    Use a Code or Function node to count the number of public holidays, or extract just the names and dates into a simpler list.
  Storing Holiday Data:
    Google Sheets/Airtable: Automatically append new holidays to a spreadsheet for easy reference or further analysis.
    Database: Store holiday data in a database (like PostgreSQL or MySQL) to build a custom holiday calendar application.
  Scheduling and Reminders:
    Connect this workflow to a Cron or Schedule node to run periodically (e.g., once a year at the start of the year).
    Use the retrieved holiday dates to set up reminders in your calendar (Google Calendar node) or send notifications (Slack, Email, SMS) a few days before an upcoming holiday.
  Integrate with Business Logic:
    Employee Leave Management: Cross-reference employee leave requests with public holidays to ensure accuracy.
    Automated Messages: Schedule automated "Happy Holiday" messages to customers or employees.
    E-commerce Shipping: Adjust estimated shipping times based on upcoming non-working days.
  API Key (Not needed for Nager.Date free tier): The Nager.Date API used here does not require an API key for basic public holiday lookups, which makes this template very easy to use out-of-the-box.

nodes_used:
[cell repeats an earlier one in this file: 173 characters]

workflow_json_compressed:
  H4sIAAAAAAAAE5WWbW/bNhCA/8qBGNAVEB1SkvUG9MPQdmmGNQ1Sr8VQ5ANFnizOsqiStNMg8H8fKNlJmjrZ+s22xLvj8/B4viVakYqcn86/Npfmk93wP1Z2dUoiskYvSHVLdO+86CWehfd4nudZmTV12SjVIGbzBHNWpqxMMhnXHOOiFrzhtcJ5Uue8iJtaZVgzXhZFzjKyi0gv1kgqcrGpOy3hnem0EjfwpzGrzQBbLeAz1q0xKxIRL5aOVF+uItIbheHj7VRvwbM0ywpFWS1ims55TUWsJFVx0yg5T1UpGLlLdW48QmPsITIsrF4u0YYMN0N4oy96OqagtXA4c17L1U1YRiIyGKe9Nj2pvlCesSiJ2VVEBmHFGj1aFyBda+VbUiWMRaRFvWw9qZKYRUSa3mPvSUUWrXYQckCnncfejRXpXpq17pdw8eHjAix+3aDzbgZnHvDbgNI7EPDHxw/nUBt1A9fat/DiBoV9Ab/ibDmLIGbx/CWIXsELaTa9tzevjcK7x399jODiXQRv3r6EwZoBrdfowBto0MsWhklDO2lwM/hd9wr2kUAGJiB8Ba33g6tOTq6vr2e9WKKdCX/yenotWA0gP6F1Iyi+i/ai0lI0cZFJqvIyp2leFlTwLKecqULyeZnw7Jiow6n47eIMXouu+2lTMTsuSprOWFLF0c8pW4tV4NDDu8XiAk7f3qkKIH2LcD4ieSM8jjV7Axa91bhFEKNwMM1j1uNOw2I3oNSNRgXB7OhyL2AGi3aKaNFvbO9AoRe6c9DpFY6LlfAYQQAYjSsDp5AMhWwPqWbPGFJJKYo8rylrVE1Tlpe0nOc5zWslkzTBMmuea6VLdIPpHf60oXloJfakoeQJQ+kThhz2yo1AnqJtUaLeooLGmvVDYbWQq4NHY/VS96IDKboObYgTfr6edjuDv80GpOhB9w6tB+NbtGMBDmpsjA1O9NReuvNoowBrLXwEzhuLERgLzcaOywZrJLqp6H2VwaZ4zpaIWcmlRMqxYDTFNKFlWtQ0KTJR1pLVMsN7W6fo4ft71j3pKTT45XSoH7VSwaK0+FHUxnakIq8OF0M4h/c3gxj0yTY5mZIfcp/c3sIv/zjTz8JlNhsP+2736NcHlxjsdtMgak3Y+6vTtwsSETOEwkIJu8ec0ll8R4o3NZeZFFSILKVpnEpaMhHTHAuesjlTDON7UpfT4bi7ePYkHs6io9Su754/HBN3xPaPx9mZ8SQVKRY0x7ShqazDzEobOpecYTFPMq4yuun11w1Srchj3IMIzUCmU03be50PeEQk2Hh/ABZmComI3bfoe6PCDg5fz8PXxwTv+SmGOVdJTWuRxTRVCqlIMkXzWqSFZAlPBD7kF4KqaUAdIL4RXjxJbipDLcznYwiz7Pih+26z+xCf9UhGdN3ZfpqeeVy7H7toFu+uIiKk11skVSM6hxFx6L3ul2N0/IZyExJ8sAotqciWhyjbKcJocd4wnjZNSXlccJpmaU3L4JMVZS5ZXfCiSMh4RfUoD7UebcTqlqyFDpv9cjv+v/l/GMc1EdG9wm+kYrurq130n8f3WK5nL4cjWXa7fwEumtWaLQoAAA==

metadata_json:
  {"categories":["integration","automation","data lookup"],"complexity":"simple","use_cases":["Fetch public holidays by year and country","Adjust scheduling/shipping around holidays","Leave and payroll accuracy checks","Populate calendars or spreadsheets with holiday data","Trigger notifications or workflows for specific holidays"],"estimated_setup_minutes":5,"required_services":["Nager.Date API (date.nager.at)"],"key_features":["Webhook-triggered holiday lookup","Dynamic year and countryCode parameters","Returns full Nager.Date JSON holiday array","No API key required for basic lookups","Easy to extend with filters, calendar integration, or storage nodes"],"target_audience":["Developers","HR & payroll teams","Operations/logistics managers','Event planners','Marketing/content schedulers']} Ensure JSON is valid. Wait I see I mistakenly used mixed quotes and an extra sentence appended outside JSON? The assistant must output only the JSON object. My final message included trailing text "]}


name: Currency Converter via Webhook using ExchangeRate.host
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T16:14:32.860Z
updated_at: 2025-06-02T16:14:32.860Z
url: https://n8n.io/workflows/4602
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template allows you to perform real-time currency conversions by simply sending a webhook request. By integrating with the ExchangeRate.host API, you can get up-to-date exchange rates for over 170 world currencies, making it an incredibly useful tool for financial tracking, e-commerce, international business, and personal budgeting.

  🔧 How it works
  Receive Conversion Request Webhook: This node acts as the entry point for the workflow, listening for incoming POST requests. It's configured to expect a JSON body containing:

    from: The 3-letter ISO 4217 currency code for the source currency (e.g., USD, PHP).
    to: The 3-letter ISO 4217 currency code for the target currency (e.g., EUR, JPY).
    amount: The numeric value you want to convert.

  Important: The ExchangeRate.host API access_key is handled securely by n8n's credential system and should not be included in the webhook body or headers.

  Convert Currency: This node makes an HTTP GET request to the ExchangeRate.host API (api.exchangerate.host). It dynamically constructs the URL using the from, to, and amount from the webhook body. Your API access key is securely retrieved from n8n's pre-configured credentials (HTTP Query Auth type) and automatically added as a query parameter (access_key). The API then performs the conversion and returns a JSON object with the conversion details.

  Respond with Converted Amount: This node sends the full currency conversion result received from ExchangeRate.host back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is ideal for:

  E-commerce Platforms:
    Display prices in local currencies on the fly for international customers.
    Convert incoming international payments to your local currency for accounting.
    Calculate shipping costs in different currencies.
  Financial Tracking & Budgeting Apps:
    Update personal or business budgets with converted values.
    Track expenses incurred in foreign currencies.
    Automate portfolio value conversion for multi-currency investments.
  International Business & Freelancers:
    Generate invoices in a client's local currency based on your preferred currency.
    Quickly estimate project costs or earnings in different currencies.
    Automate reconciliation of international transactions.
  Travel Planning:
    Convert travel expenses from one currency to another while abroad.
    Build simple tools to estimate costs for trips in different countries.
  Data Analysis & Reporting:
    Standardize financial data from various sources into a single currency for unified reporting.
    Build dashboards that display converted financial metrics.
  Custom Integrations:
    Connect to CRMs, accounting software, or internal tools to automate currency-related tasks.
    Build chatbots that can answer currency conversion queries.

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "from": "USD",
    "to": "PHP",
    "amount": 100
  }

  The workflow will return a JSON response similar to this (results will vary based on currencies and amount):

  {
    "date": "2025-06-03",
    "historical": false,
    "info": {
      "rate": 58.749501,
      "timestamp": 1717398188
    },
    "query": {
      "amount": 100,
      "from": "USD",
      "to": "PHP"
    },
    "result": 5874.9501,
    "success": true
  }

  ⚙️ Setup Instructions
  Get an ExchangeRate.host Access Key:
    Go to https://exchangerate.host/ and sign up for a free API key.

  Create an n8n Credential for ExchangeRate.host:
    In your n8n instance, go to Credentials.
    Click "New Credential" and search for "HTTP Query Auth".
    Set the Name (e.g., ExchangeRate.host API Key).
    Set API Key to your ExchangeRate.host access key.
    Set Parameter Name to access_key.
    Set Parameter Position to Query.
    Save the credential.
  Import Workflow:
    In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.

  Configure ExchangeRate.host API Node:
    Double-click the Convert Currency node.
    Under "Authentication", select "Generic Credential Type".
    Choose "HTTP Query Auth" as the Generic Auth Type.
    Select the credential you created (e.g., "ExchangeRate.host API Key") from the dropdown.

  Configure Webhook Path:
    Double-click the Receive Conversion Request Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /convert-currency).
   
  Activate Workflow:
    Save and activate the workflow.
  📝 Tips
  This workflow is a powerful starting point. Here's how you can make it even more robust and integrated:

  Robust Error Handling:
    Add an IF node after Convert Currency to check {{ $json.success }}. If false, branch to an Error Trigger node or send an alert (e.g., Slack, Email) with {{ $json.error.info }} to notify you of API issues or invalid inputs.
    Include a Try/Catch block to gracefully handle network issues or malformed responses.

  Input Validation & Defaults:
    Add a Function node after the webhook to validate if from, to, and amount are present and in the correct format. If not, return a clear error message to the user.
    Set default from or to currencies if they are not provided in the webhook, making the API more flexible.
  Logging & Auditing:
    After a successful conversion, use a Google Sheets, Airtable, or database node (e.g., PostgreSQL, MongoDB) to log every conversion request, including the input currencies, amount, converted result, date, and possibly the calling IP (from the webhook headers). This is crucial for financial auditing and analysis.
  Rate Limits & Caching:
    If you anticipate many requests, be mindful of ExchangeRate.host's API rate limits. You can introduce a Cache node to store recent conversion results for a short period, reducing redundant API calls for common conversions.
    Alternatively, add a Delay node to space out requests if you're hitting limits.
  Format & Rounding:
    Use a Function node or Set node to format the result to a specific number of decimal places (e.g., {{ $json.result.toFixed(2) }}).
    Add currency symbols or full currency names to the output for better readability.
  Alerting on Significant Changes:
    Chain this workflow with a Cron or Schedule node to periodically fetch exchange rates for a pair you care about (e.g., USD to EUR).
    Use an IF node to compare the current rate with a previously stored rate. If the change exceeds a certain percentage, send an alert via Slack, Email, or Telegram to notify you of significant market shifts.
  Integration with Payment Gateways:
    For e-commerce, combine this with nodes for payment gateways (e.g., Stripe, PayPal) to automatically convert customer payments received in foreign currencies to your base currency before recording.
  Multi-currency Pricing for Products:
    Use this workflow in conjunction with your product database. When a user selects a different country/currency, trigger this webhook to dynamically convert product prices and display them instantly.

nodes_used:
[cell repeats an earlier one in this file: 173 characters]

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

metadata_json:
  {"categories":["automation","integration","data processing","finance"],"complexity":"simple","use_cases":["Real-time currency conversion for e-commerce pricing","Converting international payments for accounting","Invoice generation in client currency","Travel expense conversion","Normalizing multi-currency data for reporting/dashboards`,`Building chatbots or APIs that answer conversion queries"],"estimated_setup_minutes":10,"required_services":["ExchangeRate.host API (API key)","n8n instance with a publicly reachable webhook endpoint (or tunneling like ngrok)"],"key_features":["Webhook-triggered conversion (POST JSON input: from,to,amount)","Dynamic HTTP GET to ExchangeRate.host using request data","Uses n8n credential (HTTP Query Auth) to inject access_key securely","Returns full JSON conversion result to caller","Supports 170+ currencies and real-time rates"],"target_audience":["Developers","E-commerce operators","Finance/accounting teams and analysts`,`Freelancers and consultants building invoices or estimates`,`Travel app builders"]}


name: Content Summarizer via Webhook (ApyHub)
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-02T16:53:59.893Z
updated_at: 2025-06-02T16:53:59.893Z
url: https://n8n.io/workflows/4603
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template empowers you to instantly summarize long pieces of text by sending a simple webhook request. By integrating with ApyHub's summarization API, you can distil complex articles, reports, or messages into concise summaries, significantly boosting efficiency across various domains.

  🔧 How it works
  Receive Content Webhook:** This node acts as the entry point, listening for incoming POST 
  requests. It expects a JSON body containing:
    content: The long text you want to summarize.
    summary_length (optional): The desired length of the summary (e.g., 'short', 'medium', 'long'). Defaults to 'medium'. And a header containing your apy-token for the ApyHub API.
  Start Summarization Job:** This node sends a POST request to ApyHub's summarization endpoint (api.apyhub.com/sharpapi/api/v1/content/summarize). It passes the content and summary_length from the webhook body, along with your apy-token from the headers. ApyHub processes the text asynchronously, and this node immediately returns a job_id.
  Get Summarization Result:** Since ApyHub's summarization is an asynchronous process, this node is crucial. It polls ApyHub's job status endpoint (api.apyhub.com/sharpapi/api/v1/content/summarize/job/status/{{job_id}}) using the job_id obtained from the previous step. It continues to check the status until the summarization is finished, at which point it retrieves the final summarized text.
  Respond with Summarized Content:** This node sends the final, distilled summarized text back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is extremely useful for:

  Content Creators & Marketers:** Quickly summarize articles for social media snippets, email newsletters, or blog post intros.
  Researchers & Students:** Efficiently get the gist of academic papers, reports, or long documents without reading every word.
  Customer Support & Sales Teams:** Summarize customer inquiries, long email chains, or call transcripts to quickly understand key issues or discussion points.
  News Aggregators & Media Monitoring:** Automatically generate summaries of news articles from various sources for quick consumption.
  Business Professionals:** Condense lengthy reports, meeting minutes, or project updates into digestible summaries for busy stakeholders.
  Legal & Compliance:** Summarize legal documents or regulatory texts to highlight critical clauses or changes.
  Anyone Dealing with Information Overload:** Use it to save time and extract key information from overwhelming amounts of text.

  📑Data Structure
  When you trigger the webhook, send a POST ** request with a **JSON body and an apy-token in the headers:

  {
    "content": "Your very long text goes here. This could be an article, a report, a transcript, or any other textual content you want to summarize. The longer the text, the more valuable summarization becomes!",
    "summary_length": "medium" // Optional: "short", "medium", or "long"
  }

  Headers:
  apy-token: YOUR_APYHUB_API_KEY
  Note: You'll need to obtain an API Key from ApyHub to use their API services. They typically offer a free tier for testing.

  The workflow will return a JSON response similar to this (the summary content will vary based on input):

  {
    "summary": "Max Verstappen believes the Las Vegas Grand Prix is '99% show and 1% sporting event', not looking forward to the razzmatazz. Other drivers, like Fernando Alonso, were more equivocal about the hype, acknowledging the investment and spectacle. Lewis Hamilton praised the city's energy but emphasized it's 'a business, ultimately', believing there will still be good racing.",
    "status": "finished",
    "result_file_id": "..." // ApyHub might provide a file ID for larger results
  }

  ⚙️ Setup Instructions
  Get an ApyHub API Key:**
    Go to https://apyhub.com/ and sign up to get your API key.
  Import Workflow:** In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:**
    Double-click the Receive Content Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /summarize-content).
  Activate Workflow:** Save and activate the workflow.

  📝 Tips
  This content summarizer is a powerful component. Here's how to supercharge it and make it an indispensable part of your automation arsenal:

  Integrate with Document/File Storage:**
  Google Drive/Dropbox/OneDrive:* Automatically summarize documents uploaded to these services. Add a Watch New Files trigger (if available for your service) or a Cron node to regularly check for new files. Then, read the file content, pass it to this summarizer, and save the summary back to a designated folder or as a comment on the original file.
  CRM/CMS Systems:* Pull long notes, customer interactions, or article drafts from your CRM/CMS, summarize them, and update the records with the concise version.
  Email Processing & Triage:**
    Email Trigger: Use an Email node to trigger the workflow when new emails arrive. Extract the email body, summarize it, and then:
      Send a shortened summary as a notification to your Slack or Telegram.
      Add a summary to a task management tool (e.g., Trello, Asana) for quicker triaging.
      Create a summary for an email digest.
  Slack/Discord Bot Integration:**
    Create a Slack/Discord command (using a custom webhook or a dedicated Slack/Discord node) where users can paste long text. The bot then sends the summarized version back to the channel.
  Dynamic Summary Length & Options:**
    Allow the user to specify summary_length (short, medium, long) in the webhook body, as already implemented.
    Explore ApyHub's documentation for more parameters (if any) and dynamically pass them.
  Error Handling & User Feedback:**
    Add an IF node after Get Summarization Result to check for status: 'failed' or error messages. If an error occurs, send a helpful message back to the webhook caller or an internal alert.
    For very long texts that might exceed API limits, add a Function node to truncate the input content if it's too long, and notify the user.
  Multi-language Support (if ApyHub offers it):**
    If ApyHub supports summarization in multiple languages, extend the webhook to accept a language parameter and pass it to the API.
  Web Scraping & Article Summaries:**
    Combine this with a HTTP Request node to scrape content from a web page (e.g., a news article). Then, pass the extracted article text to this summarizer to get quick insights.
  Data Storage & Archiving:**
    Store the original content alongside its summary in a database (e.g., PostgreSQL, MongoDB) or a simple spreadsheet (Google Sheets, Airtable). This creates a searchable, summarized archive of your content.
  Automated Report Generation:**
    If you receive daily/weekly reports, use this workflow to summarize key sections, then compile these summaries into a concise digest or dashboard using a Merge node and send it out automatically.

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

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

metadata_json:
  {"categories":["automation","integration","data processing","NLP"],"complexity":"medium","use_cases":["Summarize long articles, reports, transcripts","Email triage and digest generation","Generate social media snippets or blog intros","Summarize customer support tickets and call transcripts","News aggregation and media monitoring"],"estimated_setup_minutes":10,"required_services":["ApyHub (summarization API)","n8n with a publicly reachable webhook endpoint"],"key_features":["Webhook-triggered summarization","Asynchronous job start + polling for completion","Configurable summary length (short/medium/long)","Returns JSON summary and status","Easy to extend to storage, CRM, chat, or email integrations"],"target_audience":["Content creators & marketers","Researchers & students","Customer support & sales teams (operations) or analysts who need quick digests of long text documents"]}


name: Automate Travel Agent Outreach with Web Scraping, OpenAI, and Google Sheets
author_name: Mohan Gopal
author_username: mohan
categories: []
created_at: 2025-06-02T18:01:17.136Z
updated_at: 2025-06-02T18:01:17.136Z
url: https://n8n.io/workflows/4606
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  🔧 Automated Workflow: Scrape Travel Agent Contacts and Send Personalized Survey Emails
  This workflow is designed to automate the process of scraping travel agent contact data, standardizing the information, storing it, and then sending out personalized survey emails using AI. It’s especially useful for outreach campaigns, research, or lead generation.

  ⚙️ Workflow Breakdown
  📍 Part 1: Scraping and Storing Travel Agent Data
  HTTP Scrape Website
  Type: HTTP Request (POST)

  Function: Calls a third-party scraping API (https://api.firecrawl.dev...) to scrape data from a travel agent listing site.

  Purpose: Extract raw HTML or structured data from a website containing contact info.

  OpenAI Standardise Data
  Type: OpenAI Message Model

  Function: Uses AI to clean and standardize the raw scraped data into structured JSON (e.g., name, email, agency, location).

  Purpose: Ensures uniformity in formatting, making data easier to process downstream.

  Split Out
  Type: Item Splitter

  Function: Splits the standardized array of agent records into individual items.

  Purpose: Allows appending each agent as a separate row in Google Sheets.

  Google Sheet - Data Store
  Type: Google Sheets (Append)

  Function: Stores each individual record in a spreadsheet.

  Purpose: Maintains a centralized and accessible log of scraped and processed contacts.

  📍 Part 2: Read Records and Send Personalized Survey Emails
  Triggered Manually – when “Test Workflow” button is clicked.

  Trigger – When clicking 'Test workflow'
  Type: Manual Trigger

  Function: Starts the second part of the workflow manually.

  Use Case: Testing or running the outreach email process on demand.

  Google Sheet Data Store (Read)
  Type: Google Sheets (Read)

  Function: Reads the stored travel agent records from the spreadsheet.

  Purpose: Retrieves contact details and context for personalized messaging.

  OpenAI Mail Composer
  Type: OpenAI Message Model

  Function: Generates a custom email for each agent using their details.

  Purpose: Creates human-like, engaging emails that include a survey link (optional input).

  Google Sheet Update Records
  Type: Google Sheets (Update)

  Function: Optionally marks the record as "emailed" or logs the date of outreach.

  Purpose: Prevents duplicate outreach and helps track campaign status.

  Send Email
  Type: Email Node (SMTP or integrated service)

  Function: Sends the personalized email generated by OpenAI.

  Purpose: Delivers the survey to each travel agent with contextually relevant messaging.

  🧠 Use Case:
  Targeted email outreach to travel agents.

  Collect insights or feedback via survey links.

  Use personalized messaging to improve response rates.

  📌 Benefits:
  ✅ Fully automated scraping and processing.

  ✅ Personalized at scale using OpenAI.

  ✅ Easily repeatable for different domains or campaigns.

  ✅ Centralized recordkeeping in Google Sheets.

  🛠️ Tech Stack:
  n8n: Automation and workflow management

  OpenAI: AI-based text standardization and email generation

  Firecrawl (or similar): Web scraping API

  Google Sheets: Data storage and tracking

  Email Node: Survey email delivery

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.splitOut","n8n-nodes-base.emailSend","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest"]

workflow_json_compressed:
  [encoded data, 6112 characters]

metadata_json:
  {"categories":["automation","lead generation","data processing","outreach","web-scraping"],"complexity":"medium","use_cases":["Targeted email outreach to travel agents","Lead generation and contact harvesting","Collecting survey responses/feedback","Standardizing and enriching scraped contact data","Campaign tracking and preventing duplicate outreach"],"estimated_setup_minutes":45,"required_services":["n8n","Web scraping API (e.g., Firecrawl)","OpenAI (Message model)","Google Sheets","Email service or SMTP (Gmail, SendGrid, etc.)"],"key_features":["Automated web scraping of travel agent listings","AI-powered data cleaning and JSON standardization","Item splitting and per-record processing","Append/read/update records in Google Sheets","Generate personalized emails with OpenAI including survey links`,`Send emails and mark records as \"emailed\" for tracking"],"target_audience":["Marketers","Sales and outreach teams","Growth hackers and demand gen specialists`,`Researchers running surveys or market research`,`Developers/automation engineers implementing outreach workflows"]}


name: Send Daily Weather Forecasts from OpenWeatherMap to Telegram with Smart Formatting
author_name: Aurélien P.
author_username: aurelienpp
categories: []
created_at: 2025-06-02T21:00:37.040Z
updated_at: 2025-06-02T21:00:37.040Z
url: https://n8n.io/workflows/4608
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  🌤️ Daily Weather Forecast Bot

  A comprehensive n8n workflow that fetches detailed weather forecasts from OpenWeatherMap and sends beautifully formatted daily summaries to Telegram.

  📋 Features

  📊 Daily Overview**: Complete temperature range, rainfall totals, and wind conditions
  ⏰ Hourly Forecast**: Weather predictions at key times (9AM, 12PM, 3PM, 6PM, 9PM)
  🌡️ Smart Emojis**: Context-aware weather icons and temperature indicators
  💡 Smart Recommendations**: Contextual advice (umbrella alerts, clothing suggestions, sun protection)
  🌪️ Enhanced Details**: Feels-like temperature, humidity levels, wind speed, UV warnings
  📱 Rich Formatting**: HTML-formatted messages with emojis for excellent readability
  🕐 Timezone-Aware**: Proper handling of Luxembourg timezone (CET/CEST)

  🛠️ What This Workflow Does

  Triggers daily at 7:50 AM to send morning weather updates
  Fetches 5-day forecast from OpenWeatherMap API with 3-hour intervals
  Processes and analyzes weather data with smart algorithms
  Formats comprehensive report with HTML styling and emojis
  Sends to Telegram with professional formatting and actionable insights

  ⚙️ Setup Instructions

  1. OpenWeatherMap API
  Sign up at OpenWeatherMap
  Get your free API key (1000 calls/day included)
  Replace API_KEY in the HTTP Request node URL

  2. Telegram Bot
  Message @BotFather on Telegram
  Send /newbot command and follow instructions
  Copy the bot token to n8n credentials
  Get your chat ID by messaging the bot, then visiting:
  https://api.telegram.org/bot&lt;YOUR_BOT_TOKEN&gt;/getUpdates
  Update the chatId parameter in the Telegram node

  3. Location Configuration
  Default location: Strassen, Luxembourg
  To change: modify q=Strassen in the HTTP Request URL
  Format: q=CityName,CountryCode (e.g., q=Paris,FR)

  🎯 Technical Details

  API Source**: OpenWeatherMap 5-day forecast
  Schedule**: Daily at 7:50 AM (configurable)
  Format**: HTML with rich emoji formatting
  Error Handling**: 3 retry attempts with 5-second delays
  Rate Limits**: Uses only 1 API call per day
  Timezone**: Europe/Luxembourg (handles CET/CEST automatically)

  📊 Weather Data Analyzed

  Temperature ranges and "feels like" temperatures
  Precipitation forecasts and accumulation
  Wind speed and conditions
  Humidity levels and comfort indicators
  Cloud coverage and visibility
  UV index recommendations
  Time-specific weather patterns

  💡 Smart Features

  Conditional Recommendations**: Only shows relevant advice
  Night/Day Awareness**: Different emojis for time of day
  Temperature Context**: Color-coded temperature indicators
  Weather Severity**: Appropriate icons for weather intensity
  Humidity Comfort**: Comfort level indicators
  Wind Analysis**: Descriptive wind condition text

  🔧 Customization Options

  Schedule**: Modify trigger time in the Schedule node
  Location**: Change city in HTTP Request URL
  Forecast Hours**: Adjust desiredHours array in the code
  Temperature Thresholds**: Modify emoji temperature ranges
  Recommendation Logic**: Customize advice triggers

  📱 Sample Output
  🌤️ Weather Forecast for Strassen, LU
  📅 Monday, 2 June 2025
  📊 Daily Overview
  🌡️ Range: 12°C - 22°C
  💧 Comfortable (65%)
  ⏰ Hourly Forecast
  🕒 09:00 ☀️ 15°C
  🕒 12:00 🌤️ 20°C
  🕒 15:00 ☀️ 22°C (feels 24°C)
  🕒 18:00 ⛅ 19°C
  🕒 21:00 🌙 16°C
  📡 Data from OpenWeatherMap | Updated: 07:50 CET

  🚀 Getting Started

  Import this workflow to your n8n instance
  Add your OpenWeatherMap API key
  Set up Telegram bot credentials
  Test manually first
  Activate for daily automated runs

  📋 Requirements

  n8n instance (cloud or self-hosted)
  Free OpenWeatherMap API account
  Telegram bot token
  Basic understanding of n8n workflows

  Perfect for: Daily weather updates, team notifications, personal weather tracking, smart home automation triggers.

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.code","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"]

workflow_json_compressed:
  [encoded data, 7316 characters]

metadata_json:
  {"categories":["automation","integration","notifications","data processing"],"complexity":"medium","use_cases":["Daily personal or team weather briefings","Smart home or automation triggers based on forecast","Outdoor event planning and notifications","Travel and commute planning","Telegram-based alerting for weather hazards"],"estimated_setup_minutes":15,"required_services":["OpenWeatherMap API","Telegram (bot & chat)","n8n instance (cloud or self‑hosted)"],"key_features":["Daily 5‑day/OpenWeatherMap forecast fetch (3‑hour intervals)","Smart aggregation: daily ranges, precipitation totals, wind and humidity","Hourly highlights at configurable times (e.g., 09/12/15/18/21)","Context‑aware emojis and temperature indicators","Conditional, contextual recommendations (umbrella, clothing, sun protection)」「Timezone‑aware formatting for Europe/Luxembourg (CET/CEST)」「HTML message formatting for rich Telegram output」「Retry/error handling (3 attempts, delays) and single API call per run"],"target_audience":["n8n users and workflow builders","Developers and DevOps wanting automated alerts","Smart‑home enthusiasts integrating weather into automations」「Team leads or community managers sending daily digests"]}


name: Automatic Workflow & Credentials Backup to GitHub with Change Detection
author_name: Hamed Nickmehr
author_username: hamed-nickmehr
categories: []
created_at: 2025-06-02T22:30:28.990Z
updated_at: 2025-06-02T22:30:28.990Z
url: https://n8n.io/workflows/4609
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  This n8n workflow template uses community nodes and is only compatible with the self-hosted version of n8n. 

  Title: n8n Credentials and Workflows Backup on Change Detection

  Purpose:
  Never lose track of your n8n changes again! This workflow smartly backs up all your workflows and credentials, automatically detects any changes using hash comparison, and pushes updates to GitHub—but only when something has actually changed. Set your own interval and stop cluttering your repo with redundant commits.

  Walkthrough Video on YouTube



  Trigger:

  Schedule Trigger**: Executes the entire process at a user-defined interval. No need to worry about traceability or managing countless backups, as the workflow only commits changes when a difference is detected.



  Workflow Backup Process:

  Set Workflow Path: Defines the local backup file path for workflows.
  Get Old Workflow Hash: Executes a helper workflow to retrieve the previous hash.
  Execute Workflow Backup: Runs n8n export:workflow to export all workflows to the defined file path.
  Get New Workflow Hash: Executes a helper workflow to generate the new hash from the exported file.
  Compare Hashes (If Workflow Updated): Checks if the new hash differs from the old one.
  If Updated:

     Read Workflow Data → Extract Text → Push to GitHub: Reads, extracts, and commits the updated workflow JSON to GitHub under a timestamped filename.

  Credential Backup Process:

  Set Credential Path: Defines the local backup file path for credentials.
  Get Old Credential Hash: Executes a helper workflow to retrieve the previous hash.
  Execute Credential Backup: Runs n8n export:credentials to export all credentials.
  Get New Credential Hash: Executes a helper workflow to generate the new hash from the exported file.
  Compare Hashes (If Credential Updated): Checks for changes.
  If Updated:

     Read Credential Data → Extract Text → Push to GitHub: Commits the new credentials JSON to GitHub if changes are found.

  Hash Generator (Helper Flow):
  Used in both workflow and credential backup paths:

  Read File* → *Extract Text* → *Hash Data**
  Outputs SHA-256 hash used for comparison

  GitHub Integration:

  Commits are created with ISO timestamp in the filename and message.
  Repository: https://github.com/your-github-name/n8n-onchange-bachup
  File paths: backups/WorkFlow Backup -timestamp-.json and backups/Credential Backup -timestamp-.json

  Change Detection Logic:

  Only commits files when hash changes are detected (i.e., actual content change).
  Avoids unnecessary GitHub commits and storage use.

  Error Handling:

  GitHub nodes are set to continue workflow execution on error, avoiding full process interruption.

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.readWriteFile","n8n-nodes-base.set","n8n-nodes-base.executeCommand","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","n8n-nodes-base.crypto","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.extractFromFile","n8n-nodes-base.github","n8n-nodes-base.executeWorkflow","n8n-nodes-base.executeWorkflow","n8n-nodes-base.readWriteFile","n8n-nodes-base.set","n8n-nodes-base.executeCommand","n8n-nodes-base.extractFromFile","n8n-nodes-base.github","n8n-nodes-base.if","n8n-nodes-base.if"]

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

metadata_json:
  {"categories":["automation","backup","devops","integration"],"complexity":"medium","use_cases":["Scheduled backups of n8n workflows and credentials","Detect and commit only actual configuration changes to GitHub","Version control and audit trail for automation changes","Disaster recovery and configuration export","Reduce redundant repository commits and storage use"],"estimated_setup_minutes":30,"required_services":["Self-hosted n8n instance with CLI/executeCommand access","GitHub repository and access token (repo push permissions)","Local filesystem access from the n8n host for temporary exports","Community nodes installed in n8n (used by the workflow)"],"key_features":["SHA-256 hash-based change detection to avoid redundant commits","Exports workflows and credentials via n8n CLI (executeCommand nodes)","Pushes timestamped JSON backups to GitHub with clear filenames and messages","Scheduled trigger with user-defined interval","Separate helper flow to generate hashes from exported files','Continues on GitHub node errors to avoid full-process interruption"],"target_audience":["Self-hosted n8n administrators","DevOps engineers and platform operators","Developers maintaining automation workflows"]}


name: Extract, Summarize & Analyze Amazon Price Drops with Bright Data & Google Gemini
author_name: Ranjan Dailata
author_username: ranjancse
categories: []
created_at: 2025-06-02T23:56:04.415Z
updated_at: 2025-06-02T23:56:04.415Z
url: https://n8n.io/workflows/4611
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  Notice
  Community nodes can only be installed on self-hosted instances of n8n.

  Who this is for
  This n8n-powered automation uses Bright Data's MCP Client to extract real-time data from a price drop site listing the amazon products, including price changes and related product details. 

  The extracted data is enriched with structured data transformation, content summarization, and sentiment analysis using Google Gemini LLM.

  The Amazon Price Drop Intelligence Engine is designed for:

  Ecommerce Analysts** who need timely updates on competitor pricing trends

  Brand Managers** seeking to understand consumer sentiment around pricing

  Data Scientists** building pricing models or enrichment pipelines

  Affiliate Marketers** looking to optimize campaigns based on dynamic pricing

  AI Developers** automating product intelligence pipelines

  What problem is this workflow solving?

  This workflow solves several key pain points:

  Reliable Scraping: Uses Bright Data MCP, a managed crawling platform that handles proxies, captchas, and site structure changes automatically.

  Insight Generation: Transforms unstructured HTML into structured data and then into human-readable summaries using Google Gemini LLM.

  Sentiment Context: Goes beyond raw pricing data to reveal how customers feel about the price change, helping businesses and researchers measure consumer reaction.

  Automated Reporting: Aggregates and stores data for easy access and downstream automation (e.g., dashboards, notifications, pricing models).

  What this workflow does

  Scrape price drop site with Bright Data MCP

  The workflow begins by scraping targeted price drop site for Amazon listings using Bright Data's Model Context Protocol (MCP). 

  You can configure this to target:

  Structured Data Extraction

  Once the HTML content is retrieved, Google Gemini is employed to:

  Parse and structure the product information (title, price, discount, brand, ratings)

  Summarization & Sentiment Analysis

  The extracted data is passed through an LLM chain to:

  Generate a concise summary of the product and its recent price movement

  Perform sentiment analysis on user reviews and public perception

  Store the Results

  Save to disk for archiving or bulk processing

  Updated in a Google Sheet, making it instantly shareable with your team or integrated into a BI dashboard

  Pre-conditions

  Knowledge of Model Context Protocol (MCP) is highly essential. Please read this blog post - model-context-protocol
  You need to have the Bright Data account and do the necessary setup as mentioned in the Setup section below.
  You need to have the Google Gemini API Key. Visit Google AI Studio
  You need to install the Bright Data MCP Server @brightdata/mcp
  You need to install the n8n-nodes-mcp

  Setup
  Please make sure to setup n8n locally with MCP Servers by navigating to n8n-nodes-mcp
  Please make sure to install the Bright Data MCP Server @brightdata/mcp  on your local machine.
  Sign up at Bright Data.
  Create a Web Unlocker proxy zone called mcp_unlocker on Bright Data control panel.
  Navigate to Proxies & Scraping and create a new Web Unlocker zone by selecting Web Unlocker API under Scraping Solutions.
  In n8n, configure the Google Gemini(PaLM) Api account with the Google Gemini API key (or access through Vertex AI or proxy).
  In n8n, configure the credentials to connect with MCP Client (STDIO) account with the Bright Data MCP Server as shown below.



  Make sure to copy the Bright Data API_TOKEN within the Environments textbox above as API_TOKEN=&lt;your-token&gt;

  How to customize this workflow to your needs

  Target different platforms**: Switch Amazon for Walmart, eBay, or any ecommerce source using Bright Data’s flexible scraping infrastructure.

  Enrich with more LLM tasks**: Add brand tone analysis, category classification, or competitive benchmarking using Gemini prompts.

  Visualize output**: Pipe the Google Sheet to Looker Studio, Tableau, or Power BI.

  Notification integrations**: Add Slack, Discord, or email notifications for price drop alerts.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-mcp.mcpClient","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.splitOut","n8n-nodes-base.splitInBatches","n8n-nodes-base.wait","@n8n/n8n-nodes-langchain.chainSummarization","@n8n/n8n-nodes-langchain.informationExtractor","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.merge","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-mcp.mcpClient","n8n-nodes-mcp.mcpClient","n8n-nodes-base.aggregate","@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 5628 characters]

metadata_json:
  {"categories":["automation","integration","data processing","web scraping","AI/ML"],"complexity":"complex","use_cases":["Competitor price monitoring and alerts","Enriching product datasets for pricing models","Consumer sentiment analysis for price changes","Affiliate marketing optimization based on price movements","Automated reporting and BI feeding (Google Sheets/Looker/Tableau)"],"estimated_setup_minutes":90,"required_services":["Bright Data (MCP, Web Unlocker proxy zone)","Google Gemini (PaLM / Vertex AI)","n8n self-hosted with n8n-nodes-mcp community node installed","Bright Data MCP Server (@brightdata/mcp)","Google Sheets (for output)","Local disk or object storage for archives"],"key_features":["Managed web scraping via Bright Data MCP (handles proxies/captchas)","HTML → structured product extraction (title, price, discount, brand, ratings)","LLM-powered summarization of price movements (Google Gemini)","Sentiment analysis on reviews/public perception","Save results to disk and update Google Sheets for BI/teams"],"target_audience":["Ecommerce analysts","Brand managers","Data scientists building pricing/enrichment pipelines」「Affiliate marketers」「AI developers integrating LLM-based enrichment pipelines"]}


name: Personal Budget & Expense Tracker with Google Sheets and Alerts MCP
author_name: Destiya Wijayanto
author_username: eantz
categories: []
created_at: 2025-06-03T08:01:11.360Z
updated_at: 2025-06-03T08:01:11.360Z
url: https://n8n.io/workflows/4612
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  This template provides a set of MCP tools to manage personal budgets and expenses. This MCP tools can be integrated to any AI client that support MCP integration.

  How it works
  It stores transaction records and budget in google sheet
  It will give warning if expense is above budget

  How to setup
  Sign in with google in google sheet nodes
  Copy google sheet template (link available in the sticky note)
  Target google sheet nodes to the right sheet
  Integrate with AI client
  Enjoy!!

nodes_used:
  ["@n8n/n8n-nodes-langchain.mcpTrigger","n8n-nodes-base.filter","n8n-nodes-base.executeWorkflowTrigger","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.googleSheetsTool","n8n-nodes-base.switch","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.crypto","n8n-nodes-base.if","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.executionData","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.googleSheets","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.if","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 9320 characters]

metadata_json:
  {"categories":["personal finance","automation","integration","alerts"],"complexity":"medium","use_cases":["Track personal expenses and income","Manage monthly budgets and category limits","Automated alerts when spending exceeds budget","Integrate budgeting tools with AI clients via MCP","Centralize transaction records in Google Sheets"],"estimated_setup_minutes":20,"required_services":["Google Sheets (Google account)","AI client that supports MCP integration"],"key_features":["Stores transactions and budgets in Google Sheets","Automated warnings when expenses exceed budget","MCP tool integration for AI-driven workflows","Conditional logic and filtering for expense checks","Reusable Google Sheets template and sticky notes for setup"],"target_audience":["individuals managing personal finances","freelancers","small business owners with simple bookkeeping needs"]}


name: Extract Google Ads Creatives by Domain with SerpAPI and Export to CSV
author_name: Nikan Noorafkan
author_username: nikkannoora
categories: []
created_at: 2025-06-03T10:21:34.135Z
updated_at: 2025-06-03T10:21:34.135Z
url: https://n8n.io/workflows/4616
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  🧾 Template: Extract Ad Creatives from Google’s Ads Transparency Center

  This n8n workflow pulls ad creatives from Google's Ads Transparency Center using SerpApi, filtered by a specific domain and region. It extracts, filters, categorizes, and exports ads into neatly formatted CSV files for easy analysis.

  👤 Who’s it for?

  Marketing Analysts** researching competitive PPC strategies
  Ad Intelligence Teams** monitoring creatives from specific brands
  Digital Marketers** gathering visual and copy trends
  Journalists & Watchdogs** reviewing ad activity transparency

  ✅ Features

  Fetch creatives** using SerpApi's google_ads_transparency_center engine
  Filter results** to include only ads with an exact match to your target domain
  Categorize** by ad format: text, image, or video
  Export CSVs**: Generates a downloadable file for each format under the /files/ directory

  🛠 How to Use

  Edit the “Set Domain & Region” node

     domain: e.g. example.com
     region: SerpApi numeric region code → See codes

  Add your SerpApi API key

     In the “Get Ads Page 1” node’s credentials section.

  Run the workflow

     Click "Test workflow" to initiate the process.

  Download your results

     Navigate to /files/ to find:

       text_{domain}_ads.csv
       image_{domain}_ads.csv
       video_{domain}_ads.csv

  📌 Notes

  Only the first page (up to 50 creatives) is fetched; pagination is not included.
  Sticky Notes inside the workflow nodes offer helpful internal annotations.
  CSV files include creative-level details: ad copy, images, video links, etc.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.manualTrigger","n8n-nodes-base.set","n8n-nodes-base.function","n8n-nodes-base.switch","n8n-nodes-base.spreadsheetFile","n8n-nodes-base.spreadsheetFile","n8n-nodes-base.spreadsheetFile","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"]

workflow_json_compressed:
  H4sIAAAAAAAAE71Z224ktxH9FaITZHeB4Wxf2LcJFGAjXxF7s7G1DoLVQqgmq2cY9bDbTbakgTzAPiRvRhzARi6AEectv5CHfM3+QPwJAdk9o5HUo73YyNPONsli8ZxTxSrq0luiAW926UmlDSiOHwpv5vmsFGkeiygEKIogK/IgKhhEUewXMRc+5lEQAQtDBB/TQgD3BYRlkSYceF6m3nriqVqg9mbPLj1pTSYxQImpTwteFpTxMKN5IgQNUpELEZYs9CNv4ilYojfz3kdDHglNnsAcSeBNPLNq7HeVKeoM0wI0ThfGNJ/g5x1q4028ptbSyFp5s2c0yvxJnPnPJ14DLSzRYKvtMbu28maeXadnDx9qbBto5JTXy4caoeWL6e91rbyJVzfWkl2ynnjQmQUqIzn05r05KmwlP2xR2O9QHVn3JpvvjzqzOOodtjv9psN2Zb95E+9z+/vJ1qWn0jq1ddHBNUCAai6VNXoGVWc/zOt6XuEJCH1iWlC6gRYVX51wVHbperJdavDC7Cw8uLz8qT3Ws2NP1EuQ6th7vl7vLmhxLt2xR5b0Y7eWQCNPTnG1s2ZVd+3JgKgbWj9fr3vmPsNWO+RCa6HXQxBnfpJwijljlIW8pDkwn8Y85JGfQxYn6ZUefrtARXgl+alUc/Lyxd+OUBtyXrenZVWfv3zx970SWYLqoDpq5XyO7Q2RBGEyqpKbXgdbr4NYICSYUx8SoKyAgAJGCU3DiJVxGZVlsKPiT9GQdxzi5Gfkkw3G435qvCnhLByXsMPb/dKmlWq+K5qe3x1S8AKWTYVW4XcSPsw76QdOeC3Q8nctEPaTmRVpkmES0iTJU8ryAGmWi4QmJTAfIEqSIL+C5d0L0wK3AU4OWwQjz1DvxaXsFDe9rzvgjPPmbSYfWvdnHq+VNsRAO0cz8HBApMGlfuY/d5E+7aP+5MrM1AbP1NQf1efYHoLG+w9+fqyOVYuma9WN1SBO+OYEx4qQaSkrg+19EOTgF+Q+iGm/+UnPC/niC3Lv3oPr1snBwcE1Hx84S0toNmYuid1sRkCQ9QPrjXdLoBMPqnNY6V93punMO2BzegmVxi1FsV9wxCSjceojZUVY0oIHjEYYBywrkwhFsqPcppKGFCvyXt0uwezPwPpcGm4TW9tVvSiHH88GoQZX+ahusN1kUPy8g8opcjtLLmGOr552JgXW49OsXndEEvv+JE5uq2Sfq+HGVbtf7ZB00G4Hew93R8Od0d4x58TW2Z08Wjok+zw68QQYGK6IIYr3J50YoiwuCkYhxYKyKExplgY5jYKggCQoMQvhirrDWp1ha8gRXvR3qKnJ4aef7WewaRGEXiCa92SF1+Ms9/1JGN6G8CoreKWs8HG/9cFD+x/90IJ4cnlJ3NFvhMB6bW+wKddn3vo6iaZ2++/HIcwSX6Q8oxlnMWUiiGieMEGZL5I4iTGFILuNw4eWtB8FiGQk49wNhBPMWyMxcSb7CLTZrJ+4D5yQ+aLwgfq8iChjLKcQZClNBEAcFhz8UtwG5zOr2R1w7gj0V6ETBG+sExcx/x94Cp4lvu8LiiItKEtyn0KQI42KPAtyP2Q8K3bSn5H8dEUe1wbD/Yi4SXbOzbLCFp9jaPC6qltvlk68cynMwptFiT/xFijnC+PNWOhP7JVlUNnz/IQ8rgWSR0rVxp1c22vo5bd/JNeLoXvXSqF7x2qodYhZ4PYz6cugakVEZ7MNMaiN/bduicAzrOpmicpM7Rbff/f1l+7os2P1VKMgpZtUdPP5sKJWSI1cIsEL5J3zbUoe14TXqpTzrieKKESBYnoHKSwKSlGKmOZx7FOGHGjGspyGSVkEYYJZmOEoKW/OSc7GKXktIl5++9V///0VGSnnLF7vYCkVkvOF5AsyiBeUIH0pRVZ1R85BGRthOFQ+ILRF9Rbcx8ruYYkb7NzH6Xw6ITtV3IPdWcMWnXaULpCobmkbEPIpts2jRm4m2HKu3+ubv5Kx5qfvLSgITXd7C9r3FrQ3o+9KPyzO4rQUlDE/pqxMLakioCwQaZSyIk19GKXyjoyzj0t7r781l99/9+WfyfX20iJzCFWlt7CZmpRo+IK873Bxc492cCH2+ibWS0FqtUvYFfEj5D7VqN3kzT53t3SkbwHtStvkyhY1ge3aR08+JL/ClR39GE6R6K7FXVFYzonURHdNU7cGhZ35u7ojHBRpYC4VGByko+yF3di7ytSnqIhUpOyMNSiXTVufoU0O+ocoCBp5V4WT8xCh8CnHJKUsiQoKgECLMuZJXvIiiMcTQfTm6kl+kHj+9U8y1r5YaN5ztb8mtapWjggQZNsdkPMFWn6uXXF4AdxUK7IEwxeobapoiVRNdzsRH6ujhdQEzmopNGm6qrK8darFCgwKAsLe51Jja5PLRhS6V4XzqMUKz2weGpJPv9tGti2Spq05apfwu9Ys3JPCPsIwS7Mg4DENy9D2wYLRLMwKipxFURTlURblo4SxNyZs32X6moR984LcaGZcAq1boweStB0yC5Qt6Wt0IpWpiUa7n0FStKAsPTNi69oJcUXdxN6Drn4ZoeqXm8Qw2CslVoLUJUHgCwIuEt9VlhpNeIWgbOlF+p6i58ZNdDjt56AMsjz2y5Tm3AZNWRY041lOi7BI/TBLReHHoxzEb8xBEOy5PoeKhm0rGpubt3RE/i06vv4D2dOgOFrAhoqF2fFihemgsYUesQcRPQknl71utyXiaK4lxoaMhdOuoS4K+I2IRXIuq4oUSDScobBburgYKlQiZIvc1O3qrrsvFokIWEGR8ZQyHxnN0wJpwcIwSwPO0zgZJSJ5OyLGXj7emIi//MeWNPuapA0VTuu0v+jAjc7I0NS8koHDWhmQSts8KOQSlcVNuxvSmSBPP/nI0XAHtKnwY45hSlmISFma5zTzU6CIReizwo/jOBqFNn1LjfvsR8D2T//YxfZmj3Ws3r1oXP5x+WNQukV26IdeH9neQCXVqSb3Pzj6+CPStHgm8Xz4ZjPJskAhUJDBxQcjaD93B1DIt83ajff32aXn3hVnz+xTY/+4dvcr3vAMKZXAC2/mr5/bZ5Fbr0pjdl/5fnHL9OT24v1N/+usvqMrHj/XyDvv2NH2/VVj1OgovmNW97/Vjdp99VP66CZ3PWWP7LNe/w+ppQNYWxoAAA==

metadata_json:
  {"categories":["automation","data extraction","marketing intelligence","integration"],"complexity":"medium","use_cases":["Extract ad creatives for a specific domain from Google Ads Transparency Center","Competitive PPC creative analysis","Ad monitoring and intelligence for brands","Researching ad copy, images, and video assets for trend analysis","Generating CSV exports for downstream analysis or reporting"],"estimated_setup_minutes":15,"required_services":["n8n instance","SerpApi (google_ads_transparency_center engine) — SerpApi API key"],"key_features":["Fetch ad creatives via SerpApi's google_ads_transparency_center engine","Filter results to exact-match domain","Categorize creatives by format: text, image, video","Export separate CSV files for each format (text_{domain}_ads.csv, image_{domain}_ads.csv, video_{domain}_ads.csv)","Configurable domain and region (SerpApi numeric region code) settings in workflow nodes"],"target_audience":["Marketing analysts","Ad intelligence teams","Digital marketers / PPC specialists"]}


name: Daily AI Stock Briefing Right to Your Email: OpenAI + Tavily + Gmail
author_name: Automate With Marc
author_username: marconi
categories: []
created_at: 2025-06-03T10:36:48.730Z
updated_at: 2025-06-03T10:36:48.730Z
url: https://n8n.io/workflows/4617
scraped_at: 2025-09-14 19:11:00
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. 

  📈 StockPulse: AI-Picked Daily News for Your Portfolio
  Stay ahead of the market with this automated, AI-powered stock market news briefing delivered straight to your inbox — no code required.

  Watch Step-by-step Video Tutorial Here:
  https://www.youtube.com/watch?v=iZvPej9eLYE&t=201s

  ⚙️ What it does:
  This workflow runs every morning and:

  Triggers a scheduled prompt to a Langchain AI Agent (OpenAI)

  Uses the Tavily Web Search API to fetch fresh financial news relevant to your watchlist or portfolio

  Summarizes the top stories, highlighting:

  🔍 Key headlines

  💡 Investment opportunities

  ⚠️ Risks and macro trends

  📊 Suggested trades

  Sends a clean, readable email via Gmail to your preferred address

  🔧 Built with:
  🧠 Langchain AI Agent (OpenAI GPT-4o)

  🔍 Tavily Search Tool

  📬 Gmail Node for Email Delivery

  ⏰ Daily Cron Trigger (customizable)

  💼 Who it’s for:
  Investors and traders who want to save time on news gathering

  Financial creators looking for curated, actionable insights

  Non-technical users interested in automating stock news monitoring

  Anyone who wants to combine AI + automation + market data

  🟢 Customize easily: Edit your stock list or news focus inside the Agent prompt
  📨 Email ready: Just plug in your Gmail credentials and you’re good to go
  ⏱️ 10-minute setup — no coding required!

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.memoryBufferWindow","@tavily/n8n-nodes-tavily.tavilyTool","n8n-nodes-base.gmail","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 4128 characters]

metadata_json:
  {"categories":["automation","integration","data processing","finance","AI"],"complexity":"medium","use_cases":["Daily automated stock market briefings","Monitoring news for a stock watchlist/portfolio","Curated summarization of financial headlines","Generating investment opportunities / risk highlights","Automated email delivery of market insights"],"estimated_setup_minutes":10,"required_services":["OpenAI (GPT-4o)","Tavily Web Search API","Gmail (Google account for SMTP/IMAP or Gmail API)","Self-hosted n8n with community nodes support"],"key_features":["Daily cron trigger to run the workflow","Langchain AI Agent (OpenAI) for summarization and analysis","Tavily web search integration to fetch fresh financial news","Summarizes headlines, opportunities, risks, macro trends, and suggested trades","Sends formatted email via Gmail node to recipients"],"target_audience":["Retail investors and traders","Financial content creators","Non-technical users who want no-code automation of market news collection and summaries\",\"Analysts seeking automated daily briefings"]}


name: Website Lead Capture with Apollo.io Enrichment, HubSpot Storage & Gmail Notifications
author_name: InfyOm Technologies
author_username: infyom
categories: []
created_at: 2025-06-03T10:46:49.152Z
updated_at: 2025-06-03T10:46:49.152Z
url: https://n8n.io/workflows/4618
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  What problem does this workflow solve?
  Capture leads from your website, enrich them via Apollo, store them in HubSpot, send a personalized thank-you email, and notify your team—all automatically.

  What does this workflow do?
  Capture leads from website forms automatically.
  Send a personalized thank-you email to each new lead.
  Enrich lead data using Apollo for deeper insights.
  Create or update a contact/lead in HubSpot CRM.
  Notify the internal team via email about the new lead.

  Setup

  Gmail Setup
  Create Gmail Credentials by creating a project in Google Cloud Console.

  Hubspot Setup
  Create Hubspot Credentials with App Token.

  How it Works:
  This workflow automates your lead capture, enrichment, and follow-up process to ensure no opportunity is missed. Here's how it works:

  1. Website Form Submission
  A visitor submits a lead form on your website. Lead details like name, email, company, and message are captured instantly.

  2. Personalized Thank-You Email
  A customized thank-you email is automatically sent to the lead, building trust and confirming receipt of their inquiry.

  3. Apollo Lead Enrichment
  The captured data is enriched using Apollo to fetch additional information like job title, LinkedIn profile, and other details. This helps you better understand and qualify your leads.

  4. Create Lead in HubSpot
  The enriched lead information is pushed into HubSpot as a new contact or lead. Duplicate checks ensure that there are no repeat entries.

  5. Internal Notification
  An email notification with enriched lead details is sent to your team. Your team can follow up immediately with a complete profile.

  Who can use it?
  This workflow can be used by any website owner with a "Get In Touch" or "Contact Us" button.

nodes_used:
  ["n8n-nodes-base.webhook","n8n-nodes-base.gmail","n8n-nodes-base.hubspot","n8n-nodes-base.gmail","n8n-nodes-base.httpRequest"]

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

metadata_json:
  {"categories":["automation","integration","CRM","lead management","marketing"],"complexity":"medium","use_cases":["Website lead capture and follow-up","Lead enrichment and qualification","Automatic CRM creation/updating","Immediate internal notifications for new leads","Personalized email follow-up to prospects"],"estimated_setup_minutes":30,"required_services":["Apollo.io (API)","HubSpot (API / App Token)","Gmail / Google Cloud (OAuth credentials)","Website or form provider able to POST to a webhook","n8n instance"],"key_features":["Capture website form submissions via webhook","Send personalized thank-you emails to leads","Enrich leads with Apollo data (title, LinkedIn, etc.)","Create or update contacts in HubSpot with duplicate checks","Notify internal team via email with enriched lead details"],"target_audience":["Website owners","Small business owners","Sales teams and SDRs"]}


name: Generate Visual Summary & Knowledge Graph Insights for Your Email
author_name: InfraNodus
author_username: infranodus
categories: []
created_at: 2025-06-03T11:22:49.112Z
updated_at: 2025-06-03T11:22:49.112Z
url: https://n8n.io/workflows/4619
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  The Ultimate Gmail Analysis and Visual Summarization Template

  This workflow showcases various useful Gmail search, filter, and AI categorization operations and generates a knowledge graph for your mail using the InfraNodus GraphRAG API, which you can use to reveal the main topics and blind spots in your correspondence. 

  InfraNodus will then target those blind spots to generate interesting research questions for you and send the topical summary and insights via Telegram. You can also click the generated graph and explore the blind spots inside InfraNodus using the interactive visual interface:

  What is it useful for?


  Learn about advanced Gmail search, filtering, and AI categorization functions** that can be useful for your other workflows
  Analyze all your personal messages for the last week to get an overview of the main topics 
  Analyze all your Sent messages to find recurrent topics and gaps and generate ideas based. on those gaps
  Generate ideas based on specific message filters (Personal, Promos, from a specific person, AI-defined criteria, e.g. urgency)
  Get an overview of an interaction with a specific person / company
  Get an overview of your notes
  Generate new ideas based on your correspondence on a certain topic (e.g. "business")
  Learn about various n8n nodes useful for email processing, filtering, and data conversion
  Never miss important topics, use AI filter to get notified of the urgent and important emails via Telegram

  How it works
  This template can be triggered in multiple ways: 
  automatically in regular intervals (daily, weekly), 
  manually in n8n, or 
  via a private password-protected URL form where you can specify your search and filtering criteria


  When you start the workflow, you specify:
  your Gmail search filters (can be combined, e.g. after:2025/06/01 label:personal business to search for all emails received after 1 June 2025, filed in the Personal category containing the word "business". (optional, if empty, will retrieve all the emails or limited to the number you set in the Gmail node)
  Additional Gmail labels (e.g. SENT or CATEGORY_PERSONAL or your custom categories). Use the search filter for faster processing (e.g. prefer label:person to CATEGORY_PERSONAL, but labels can be useful for additional filtering for your search queries) (optional, if empty, will retrieve all the emails)
  AI filtering criteria** — set an additional classification criteria used to filter out the emails, e.g. "Only the urgent, personal emails" — in that case, AI classification node working with Google's Gemini AI will be activated and will only pass through the email based on the criteria you specify.
  Whether you want to build a text graph or a social graph — see the workflow for detailed explanation of each
  Use snippets of emails (default) or full text (for thorough analysis). We prefer snippets as it's faster and your graph context doesn't get biased towards longer emails this way.


  Once you set up your search parameters in Steps 1 and 2, the template will follow the following steps:

  Step 3 — retrieve Google emails that satisfy your filter criteria. Filter them by additional labels provided if applicable.
  Step 4 - if the user chooses to analyze full text, use additional Gmail node that retrieves the full text of the email message
  Step 5 — if AI filter rule is provided, use the AI Classifier node with Google Gemini Pro 2.5 model to classify the email based on the rule provided. Bypass if empty.
  Step 6 - format the text or the email snippets to add the sender meta-data and category and to prepare to submit to InfraNodus
  Step 7 - submit the data to the InfraNodus HTTP graphAndEntries endpoint and generate a knowledge graph
  Step 8 - access this graph via the graphAndAdvice endpoint) and generate a topical summary based on the GraphRAG representation and insight questions bridging the gaps identified. Send the results via a Telegram bot. 

  We use Telegram, because it takes only 30 seconds to set up a bot with an API, unlike Discord or Slack, which is long and cumbersome to set up. You can also attach a Gmail send node and generate an email instead. 

  How to use

  You need an InfraNodus GraphRAG API account and key to use this workflow. 

  Create an InfraNodus account
  Get the API key at https://infranodus.com/api-access and create a Bearer authorization key for the InfraNodus HTTP nodes.
  Add this Authorization code in Steps 7 and 8 of the workflow.  
  Come up with the name of the graph and change it in the HTTP InfraNodus nodes in the steps 7 and 8 and also in the Telegram nodes that send a link to the graph.
  For additional settings you can use in the HTTP InfraNodus nodes, see the InfraNodus access points page. 
  Authorize your Gmail account for Steps 2 and 3 Gmail nodes. The easiest way to set it up is to open a free Google Console API account and to create an OAuth access point for n8n. You can then reuse it with other Google services like Google Sheets, Drive, etc. So it's a useful thing to have in general.
  Set up the Gemini AI API key using the instructions in the Step 5 Gemini AI node.
  Set up the Telegram node bot for the Step 8. It takes only 30 seconds: just go to @botfather and type in /newbot and you'll have an API key ready. To get the conversation ID, follow the n8n / Telegram instructions in the node itself. 
  Once everything is ready, try to run the default automated workflow to test if everything works well, then use the Form for playing around with specific filters that you may find useful.

  Requirements

  An InfraNodus account and API key
  An Google Cloud API OAuth client and key for Gmail access
  A Gemini AI API key
  A Telegram bot API key

  FAQ

  1. What's the best search query to use?

  I personally like starting with analyzing the messages Gmail tags as "personal" from the last week (using the after:2025/05/28 label:personal search query) using the social graph settings. It helps me see who I interacted with, what it was about, and gives me a good bird's eye view into my last week's interactions, helping me see if I didn't miss anything. 

  I also find it useful to analyze the sent messages (using the after:2025/05/28 label:sent search filter or SENT category filter) as it helps me see what I was writing about recently and understand some recurrent topics and gaps in my interactions. 

  Finally, I also like to analyze notes (label:notes) or specific correspondence (from:your_friend@gmail.com) to get an overview and find gaps in the conversations.

  2. Why use InfraNodus and not an AI summarization module?

  You probably get a lot of spam, so your AI will get overwhelmed with the content that's not really useful. The InfraNodus graph helps you see the important patterns and discover what's missing by focusing on the gaps. You can use the interactive graph to quickly remove the stuff you don't need and to focus on the most relevant topics and conversations. 

  Customizing this workflow

  You can connect a Gmail node instead of the Telegram one if you prefer to receive notifications directly by email. I don't like using Slack and Discord because their bots are too difficult to set up and take too long.

  Check out the complete setup guide for this workflow at https://support.noduslabs.com/hc/en-us/articles/20394884531996-Build-a-Knowledge-Graph-and-Extract-Insights-from-Gmail-Emails-with-n8n-and-InfraNodus with a video tutorial coming soon and the links to other n8n workflows.

  Check our other n8n workflows at https://n8n.io/creators/infranodus/ for useful content gap analysis, expert panel, and marketing, and research workflows that utilize GraphRAG for better AI generation.

  Finally, check out https://infranodus.com to learn more about our network analysis technology used to build knowledge graphs from text.

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","n8n-nodes-base.if","n8n-nodes-base.if","n8n-nodes-base.if","n8n-nodes-base.filter","n8n-nodes-base.gmail","n8n-nodes-base.if","n8n-nodes-base.filter","@n8n/n8n-nodes-langchain.textClassifier","n8n-nodes-base.if","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.wait","n8n-nodes-base.telegram","n8n-nodes-base.telegram","n8n-nodes-base.gmail","n8n-nodes-base.formTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.switch","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.manualTrigger","n8n-nodes-base.set","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","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.gmail"]

workflow_json_compressed:
  [encoded data, 12032 characters]

metadata_json:
  {"categories":["automation","integration","data processing","AI/ML","knowledge-graph"],"complexity":"complex","use_cases":["Analyze recent or sent Gmail messages to surface main topics","Build knowledge graphs (text or social) from email snippets or full text","Identify topical gaps/blind spots and generate research/idea prompts","AI-filter urgent/important emails with Gemini classification","Send summaries and graph links via Telegram notifications"],"estimated_setup_minutes":45,"required_services":["InfraNodus GraphRAG API (API key)","Gmail / Google Cloud OAuth client (Gmail API access)","Google Gemini AI API key","Telegram Bot API key","n8n (workflow host)"],"key_features":["Gmail advanced search and label filtering","Optional AI classification filter (Gemini)","Build text or social knowledge graphs via InfraNodus graphAndEntries endpoint","Generate topical summaries and gap-based insight questions via GraphRAG","Send results and interactive graph links via Telegram (or optional Gmail send)​','Support for snippets vs full-text analysis and scheduled or manual triggers"],"target_audience":["n8n users and automation developers","Knowledge workers and researchers","Marketing/product teams analyzing correspondence trends and gaps​','Analysts wanting visual summaries of email interactions"]}


name: Automated Google Drive to Facebook Ads: One-Click Video Marketing Workflow
author_name: Yaron Been
author_username: yaron-nofluff
categories: []
created_at: 2025-06-03T11:23:55.059Z
updated_at: 2025-06-03T11:23:55.059Z
url: https://n8n.io/workflows/4620
scraped_at: 2025-09-14 19:11:00
metadata_generated_at: 2025-09-14 21:18:32
description:
  This cutting-edge n8n automation is a powerful digital marketing tool designed to streamline the process of transforming Google Drive videos into Facebook advertising assets. By intelligently connecting cloud storage, video upload, and ad creation platforms, this workflow:

  Discovers Marketing Content: 
     Automatically scans Google Drive
     Identifies video marketing materials
     Eliminates manual content searching

  Seamless Video Distribution:
     Downloads selected video files
     Uploads directly to Facebook
     Prepares videos for advertising

  Instant Ad Creative Generation:
     Creates Facebook ad creatives
     Leverages uploaded video content
     Accelerates marketing campaign setup

  Automated Platform Integration:
     Connects Google Drive and Facebook
     Reduces manual intervention
     Speeds up content deployment

  Key Benefits
  🤖 Full Automation: Zero-touch video marketing
  💡 Smart Content Management: Effortless video distribution
  📊 Rapid Campaign Setup: Quick ad creative generation
  🌐 Multi-Platform Synchronization: Seamless content flow

  Workflow Architecture

  🔹 Stage 1: Content Discovery
  Manual Trigger**: Workflow initiation
  Google Drive Integration**: Video file scanning
  Intelligent File Selection**:
    Identifies MP4 video files
    Prepares for marketing use

  🔹 Stage 2: Video Preparation
  Automatic Download**
  File Validation**
  Marketing-Ready Formatting**

  🔹 Stage 3: Facebook Upload
  Direct Video Upload**
  Ad Account Integration**
  Seamless Platform Transfer**

  🔹 Stage 4: Ad Creative Generation
  Automated Creative Setup**
  Video-Based Ad Creation**
  Instant Marketing Asset Preparation**

  Potential Use Cases
  Digital Marketing Teams**: Rapid content deployment
  Social Media Managers**: Streamlined ad creation
  Content Creators**: Efficient video marketing
  Small Business Owners**: Simplified advertising workflow
  Marketing Agencies**: Scalable content distribution

  Setup Requirements
  Google Drive
     Connected Google account
     Configured video folder
     Appropriate sharing settings

  Facebook Ads
     Ad account credentials
     Page ID configuration
     API access token

  n8n Installation
     Cloud or self-hosted instance
     Workflow configuration
     API credential management

  Future Enhancement Suggestions
  🤖 AI-powered video selection
  📊 Performance tracking integration
  🔔 Campaign launch notifications
  🌐 Multi-platform ad deployment
  🧠 Intelligent content routing

  Technical Considerations
  Implement robust error handling
  Use secure API authentication
  Maintain flexible file processing
  Ensure compliance with platform guidelines

  Ethical Guidelines
  Respect copyright and usage rights
  Maintain transparent marketing practices
  Ensure appropriate content selection
  Provide clear advertising disclosures

  Hashtag Performance Boost 🚀
  #MarketingAutomation #VideoAdvertising #FacebookAds #DigitalMarketing #ContentMarketing #AIMarketing #WorkflowAutomation #SocialMediaStrategy #AdTech #MarketingInnovation

  Workflow Visualization

  [Manual Trigger]
      ⬇️
  [List Drive Videos]
      ⬇️
  [Download Video]
      ⬇️
  [Upload to Facebook]
      ⬇️
  [Create Ad Creative]

  Connect With Me

  Ready to revolutionize your digital marketing?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your marketing workflow with intelligent, automated solutions!

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.googleDrive","n8n-nodes-base.googleDrive","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.function","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"]

workflow_json_compressed:
  H4sIAAAAAAAAE8WXYW/bOBKG/wpBHLAtIDokRUqUD3eA19ldBLi2uW26e4tuYAzJka2rLHklOm1g+L8fJNtx0sjZc3HAfZOs4et5Hw1Hww0tPB3T6tNv//r1pp62N2te/3O6phFdYgA63tCiagNUDq+6OJ26VOSYZIBOS2FTz62PUy28RA4A3OTGGKWEQSGlTkUiOMjYZWgNJNrRiAZcrkoIOG3Qt+8xrFfTerkqMaCn49CscRvRCpZIx9Q3xR3OcjsD33YrYd7S8cfbiFa1x+5ys8s+zvLMi1gzrjPFlIk9szaRzMWYWh9rbSGhD6pvoFpDSW6aYj7HptO9X3W/V6ZivTCz0OJo2Ycdo1Z1W4Siruj4I4/4bURX0MASAzYtHW+2O5lfsGn7GLGN9skpFWcyTh1TWW6ZMoliFjJkPIuVEHGSx/JRcv8o2kAuO9/kl8Jj3Z7Mb17X8xL70KfZST6Q30H/rhMVo5XPaUTrVbekT38bUdegxyoUUPYLHum/m6zDQk5WRV8PnanV1a9af//2+n6lbrJluz4a+KlftrcAztXrKhBJt18Dkg+AhBQqh9QykyaGqcQZZr1SDGON2gCm1qmj/mX9uSpr8Ds859NRg3TyouwLfENns6bc1WFEl7XvpMuiDTSid1Cuu1u6fUKuu8EGdvLU79Oj/0egGrixcZIxy7lgyqWegYkzJnIea8dVjl4e9T+sjjhJqMmP35+Eughh9TP+scaexyOoySDUdUeSdova8cXFvIHVgvX1N8rBoa3rTyNXLy/uRDbiF5sN+cu/27oagZ/tXc4KT7bbC/B3h53wBDusw6LD6w7sFwgemw4t/RpO/ADHci618CnzVsdMKc+ZcZlliVOJkNygFnCEM20QApKJJ/3VrprOhGP+WzjnYnH7lP5HZHRuPTcqYc5D3HUrYMZyy3Kde5AiMw4flc0PX0IDLuzr5uryJJd8Xbk+jSdQUskjYQY24j56utt6DYZ1U5Ei4LIdLWH1qrsif/s7ebUhHZYx2fxeEdIXyKzw4z5y1AMrfNQ9esJtTL4DF2a/vfvw82xyOZtMp+8+vL2ZXV1+18euYI67qD7ievLTD92z36st2b5+/ddn7I5NPk4TyBPDmc20YSqXhlmrEoYyNVmqLHjwR3bvQ+E+3ZO3dThdTm0fsw95BI6JhEdM8ufoPhc+LOhYJTyiCyzmi0DHQvKIuroKWAU6ppN1qJfQFUZZ3pMcg1tgS6AsyZtrtaPYkryplwTIk76T16XHJiKH9tYSBLfYrYjIerX7rQh9A9lXMYGWQEXAH8Kg8qSvWTw8OFQwWbdFNSdhgXst3C8avcA8i7M8UcqwzGlgymLCMhEbhuB8qo1JEmMHmYvzoSseieQkcqEfITdPiL8P0IS2d/a5bj7lZf2Z7CaL8v4Fb16mEtF7xk0qmIohZRYgYU7nsVSZ5/kJb/Jsb8J8q7cf9/XTvynSfUJb8urNtXq9K6HHBfSC1dxkmLg8ZXmsJVMqiRnoLGfOJhlHnQpENWg1Pttq/M1WLx/qvnuTLZbowqFGX/CGqQCTgmFGJDlT6GKW6Vwwo7xLUccgnBz0ps72ppNv9fZhv3vvHiaAwwaeeDLZ9c4XPFrtlDQyYxqNYyrJYgagPONcIzgplQM+6FGf7TFVPIoHPhp7j1Kc9Hjd4AoabMnVZd+Gjs4urmGOpKjyl95jLKQ2WZwz23V2pVLJssQh8w6sSGUC3A6/x+Rsj+ZPWk160uN031q7Cn3eW5/21QGvtxEF10844xzKFiPaYghFNe//Hr+gW3cpvms8Nt1BQnQad7v1/dnQpdxq6QRLDFdM5dYxm0nFUvTCSVBCJt030NVVhe4wrXw9z483dAlFB+Ljpj/m/cmE2gdHtKg8fqFjvr293UZfn/CGNF84Zw1KPht3hkRfmhYHVZ9nMSR76sgzKDkAa0jz9Pg2oLrd/gfvY73HJxAAAA==

metadata_json:
  {"categories":["automation","integration","marketing"],"complexity":"complex","use_cases":["Automated conversion of Drive-hosted videos into Facebook ad creatives","Rapid ad campaign setup for social media marketing","Centralized video asset management and distribution","Scaling video-based ad deployments for agencies and SMBs"],"estimated_setup_minutes":60,"required_services":["Google Drive (Google API / Google account)","Facebook Ads / Meta Graph API (Ad account, Page ID, access token)","n8n instance (cloud or self-hosted)"],"key_features":["Automated scanning of Google Drive for MP4 video files","Automatic download, validation and basic formatting of videos","Direct video upload to Facebook and ad creative creation","Ad account and Page integration via API tokens","Manual trigger to start workflows with zero-touch processing thereafter (can be automated)"],"target_audience":["Digital marketers","Social media managers","Content creators and growth teams」「Marketing agencies」「Small business owners」「Automation engineers / devops who manage integrations"]}


name: Automated Video Analysis: AI-Powered Insight Generation from Google Drive
author_name: Yaron Been
author_username: yaron-nofluff
categories: []
created_at: 2025-06-03T11:26:41.816Z
updated_at: 2025-06-03T11:26:41.816Z
url: https://n8n.io/workflows/4621
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:32
description:
  Automated Video Analysis: AI-Powered Insight Generation from Google Drive

  Subtitle: From Google Drive Upload → Gemini AI → Video Insights

  🌍 Overview

  This workflow automates the analysis of videos stored in Google Drive.
  It downloads a video, validates it, sends it to Google Gemini AI for analysis, and returns a structured summary of the content.

  Think of it as your AI-powered video analyst that works on schedule.

  🟢 Section 1: Trigger – Start the Workflow

  🔗 Node: Schedule Trigger

  Runs the workflow automatically at a defined interval (e.g., daily).
  Eliminates the need to manually start each run.

  💡 Why useful?
  Keeps analysis consistent without human intervention.

  🟦 Section 2: Download Video

  🔗 Node: Download Video from Drive

  Connects to Google Drive.
  Fetches the video file you want to analyze.

  💡 Why useful?
  Pulls the raw video directly from storage → no manual download needed.

  🟣 Section 3: Prepare for AI Analysis

  🔗 Nodes:

  Basic LLM Chain → Prepares a structured prompt for Gemini.
  Google Gemini Chat Model → Defines Gemini as the AI engine for analysis.

  💡 Why useful?
  Ensures that Gemini gets both the video file + clear instructions on what to analyze (e.g., "Please provide a summary").

  🟡 Section 4: Validate File Status

  🔗 Node: Check File Status

  Confirms that the video file is uploaded and ready to be processed by Gemini’s API.

  💡 Why useful?
  Prevents wasted runs by making sure the file exists and is accessible before analysis.

  🔵 Section 5: AI Video Analysis

  🔗 Node: Analyze Video

  Sends the video file to Gemini (via API request).
  Asks Gemini to analyze and summarize the video.

  💡 Why useful?
  Extracts insights from video content automatically — no need to watch manually.

  📩 Example Output:

  &gt; "The video shows a product demo highlighting three features: speed, security, and collaboration. The speaker explains how the software reduces manual tasks. Ending includes a call to action for early sign-up."

  🟠 Section 6: Format Results

  🔗 Node: Format Analysis Result

  Structures the Gemini response into clean output.
  Makes it easy to forward results into email, Slack, or reporting tools.

  💡 Why useful?
  Instead of messy raw JSON, you get clear summaries ready to share.

  📊 Workflow Summary

  | Section           | Node(s)                            | Purpose                            | Benefit                      |
  | ----------------- | ---------------------------------- | ---------------------------------- | ---------------------------- |
  | 🟢 Trigger        | Schedule Trigger                   | Run workflow on schedule           | Fully automated start        |
  | 🟦 Download Video | Google Drive                       | Fetch video from Drive             | Removes manual steps         |
  | 🟣 Prepare Prompt | Basic LLM Chain, Gemini Chat Model | Structure prompt for AI            | Accurate AI analysis         |
  | 🟡 Validate File  | Check File Status                  | Ensure file is accessible          | Avoids failed runs           |
  | 🔵 AI Analysis    | Analyze Video                      | Gemini analyzes + summarizes video | Saves hours of manual review |
  | 🟠 Format Output  | Format Analysis Result             | Clean up AI output                 | Ready-to-use summaries       |
  | 🔴 Assistance     | Sticky Notes                       | Training + support info            | Beginner-friendly handoff    |

  🚀 Benefits

  Hands-free analysis** → Videos summarized automatically.
  Saves time** → No need to watch entire footage.
  Reliable** → Validates file before sending to AI.
  Flexible** → Schedule runs (daily, weekly, etc.).
  Scalable** → Works for 1 video or 1,000.
  Beginner-friendly** → Includes sticky notes and author support.

nodes_used:
  ["n8n-nodes-base.googleDrive","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.scheduleTrigger","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","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"]

workflow_json_compressed:
  [encoded data, 4544 characters]

metadata_json:
  {"categories":["automation","integration","AI/ML","media processing"],"complexity":"medium","use_cases":["Automated video summarization and transcripts","Meeting and demo recap generation","Content indexing and metadata extraction for search","Marketing highlight clips and feature extraction","Compliance or QA monitoring of recorded footage"],"estimated_setup_minutes":30,"required_services":["Google Drive API (file storage)","Google Gemini AI (lmChat/Video analysis API)","n8n (scheduler and workflow runtime)","HTTP/Webhooks (for API calls)","Optional: Slack/Email or reporting tool for output delivery"],"key_features":["Scheduled automatic runs","Download videos from Google Drive","File existence/status validation before processing","Send video to Gemini for AI-powered analysis","Format and structure Gemini output for downstream use (email/Slack/reports)"],"target_audience":["Developers/Automation Engineers","Data scientists/ML engineers","Content/Media teams and producers or marketers looking to summarize videos or extract insights"]}


name: Generate Custom AI Videos with Digital Avatars using HeyGen API
author_name: Adam Crafts
author_username: adamcrafts
categories: []
created_at: 2025-06-03T13:09:09.501Z
updated_at: 2025-06-03T13:09:09.501Z
url: https://n8n.io/workflows/4622
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:33
description:
  🎥 n8n Workflow: Generate AI Videos with HeyGen

  🚀 Overview

  This automation connects directly to HeyGen's powerful AI video generation platform. It allows you to programmatically create videos with digital avatars and voiceovers, perfect for scaling your content creation for social media, marketing campaigns, or personalized messages without ever opening a video editor.

  😩 The Problem

  Creating video content is incredibly time-consuming and expensive. You have to write scripts, record audio, find actors or create complex animations, piece everything together in an editor, and then wait for it to render. Every minor change or personalization requires repeating the entire frustrating process. This manual work is a major bottleneck, making it nearly impossible to produce large volumes of high-quality video content quickly and affordably.

  ✨ The Solution

  This workflow acts as your personal, automated video production assistant! When you provide a script, the automation instantly sends instructions to HeyGen to begin creating your video. It tells the AI which avatar and voice to use and starts the generation process. Then, it cleverly waits and periodically checks the status until your new video is finished and ready. It’s a completely hands-off process that transforms simple text into professional AI videos on demand.

  🔧 What It Does

  Send a request to HeyGen's API to generate a video with:

     Custom avatar
     Scripted voice-over
     Background color and dimension
  Wait 30 seconds
  Check video status
  Loop until video is completed, failed, or still processing

  ⚙️ Simple Setup

  This workflow is a pre-built blueprint, designed to be up and running in minutes!

  Upload:** Simply upload the provided JSON file into your n8n instance.
  Connect:** Connect your app credentials (e.g., your HeyGen account). The workflow will show you exactly where.
  Activate:** Turn the workflow on, and it's ready to go! Let your new automated employee get to work.

  This free n8n workflow allows you to generate AI videos using HeyGen via their API.
  🌐 Explore more workflows

  ❤️ Buy more workflows at: adamcrafts
  🦾 Custom workflows at: adamcrafts@cloudysoftwares.com
  adamaicrafts@gmail.com

  &gt; Build once, customize endlessly, and scale your video content like never before. 🚀

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.wait","n8n-nodes-base.httpRequest","n8n-nodes-base.switch","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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

metadata_json:
  {"categories":["automation","content creation","AI/ML","media generation","integration"],"complexity":"medium","use_cases":["Automated social media video creation","Personalized video messages at scale","Marketing campaign video generation","On-demand training or explainer videos from text","Batch generation of avatar-driven videos"],"estimated_setup_minutes":10,"required_services":["HeyGen API (HeyGen account and API key)","n8n instance (cloud or self‑hosted)","Internet access for API calls"],"key_features":["Programmatically request HeyGen to generate videos with chosen avatar and voice","Configure background color and video dimensions","Automated wait and polling loop to check generation status","Handles completed, failed, and processing states","Minimal/no manual video editing required"],"target_audience":["Marketers","Content creators and social media managers","Agencies and studios scaling video production workflows」「Developers and automation engineers"]}


name: Unix Timestamp to ISO Date Converter
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-03T13:48:58.409Z
updated_at: 2025-06-03T13:48:58.409Z
url: https://n8n.io/workflows/4623
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n workflow provides a simple yet powerful utility to convert Unix timestamps (seconds since epoch) into the universally recognized ISO 8601 date and time format. This is crucial for harmonizing date data across different systems, databases, and applications.

  🔧 How it works
  Receive Timestamp Webhook: This node acts as the entry point, listening for incoming POST requests. It expects a JSON body containing a single property: timestamp, which should be a Unix timestamp in seconds (e.g., 1678886400).
  Convert to ISO 8601: This node takes the timestamp received from the webhook. Since JavaScript's Date object typically uses milliseconds, it multiplies the Unix timestamp by 1000. It then uses new Date(...).toISOString() to convert this into an ISO 8601 formatted string (e.g., 2023-03-15T00:00:00.000Z) and assigns it to a new property called convertedTime.
  Respond with Converted Time: This node sends the convertedTime property back as the response to the original webhook caller.

  👤 Who is it for?
  This workflow is extremely useful for:

  Developers & Integrators: When working with APIs or databases that return dates as Unix timestamps, and you need to display them in a human-readable or standardized format in your applications or dashboards.
  Data Analysts & Scientists: For cleaning and transforming raw timestamp data from logs, event streams, or legacy systems into a consistent format for analysis.
  System Administrators: For debugging logs where timestamps are often in Unix format.
  Anyone Managing Data Imports/Exports: Ensuring date compatibility when moving data between different platforms.
  Automators: As a building block in larger workflows where incoming data has Unix timestamps that need to be normalized before further processing (e.g., adding to a spreadsheet, sending in an email, or performing date calculations).

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "timestamp": 1678886400
  }

  The workflow will return a JSON response similar to this:

  {
    "convertedTime": "2023-03-15T00:00:00.000Z"
  }

  ⚙️ Setup Instructions
  Import Workflow: In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.
  Configure Webhook Path:
    Double-click the Receive Timestamp Webhook node.
    In the 'Path' field, set a unique and descriptive path (e.g., /convert-timestamp or /unix-to-iso).
  Activate Workflow: Save and activate the workflow.

  📝 Tips
  This simple conversion workflow can be drastically enhanced and leveraged in many ways:

  Dynamic Output Formats:
    Upgrade: Modify the Convert to ISO 8601 node (or add a Function node after it) to accept an optional format parameter in the webhook.
    Leverage: Allow users to request formats like MM/DD/YYYY HH:mm:ss, YYYY-MM-DD, DD-MM-YYYY, or just the time, making the output directly usable in various contexts without further processing.

  Example using a Function node:
  const date = new Date($json.timestamp * 1000);
  const format = $json.format || 'iso'; // Default to ISO
  let output;

  switch (format.toLowerCase()) {
      case 'iso':
          output = date.toISOString();
          break;
      case 'locale': // e.g., "3/15/2023, 12:00:00 AM UTC"
          output = date.toLocaleString('en-US', { timeZone: 'UTC' });
          break;
      case 'dateonly': // e.g., "2023-03-15"
          output = date.toISOString().split('T')[0];
          break;
      case 'timeonly': // e.g., "00:00:00 UTC"
          output = date.toLocaleTimeString('en-US', { timeZone: 'UTC', hour12: false });
          break;
      default:
          output = date.toISOString(); // Fallback
  }
  return [{ json: { convertedTime: output } }];
  Timezone Conversion:
    Upgrade: Combine this with the Time Zone Converter workflow (or integrate moment-timezone.js if using a Code node and have a self-hosted instance). Accept an optional targetTimeZone parameter in the webhook.
    Leverage: Convert the Unix timestamp directly into a human-readable date and time in a specific target timezone, which is incredibly valuable for global scheduling or reporting.

  Error Handling and Input Validation:
    Upgrade: Add an IF node after the Receive Timestamp Webhook. Check if isNaN($json.body.timestamp) or if typeof $json.body.timestamp !== 'number'.
    Leverage: If the input timestamp is invalid, branch to a Respond to Webhook node that returns a clear error message (e.g., "Invalid timestamp provided. Please provide a numeric Unix timestamp in seconds."). This makes your API more robust.

  Reverse Conversion (ISO to Unix):
    Upgrade: Create a separate workflow, or add another branch to this one, to convert an ISO 8601 string back to a Unix timestamp. This provides a complete conversion utility.
    Example Set node value: ={{ new Date($json.body.isoString).getTime() / 1000 }}

  Integration with Data Pipelines:
    Upgrade: Use this workflow as a microservice in larger ETL (Extract, Transform, Load) pipelines.
    Leverage: If you're pulling data from a source that provides Unix timestamps (e.g., a logging system, IoT device, certain databases), send that data through this workflow to normalize the dates before loading them into your analytics database, CRM, or data warehouse.

  Automated Reporting:
    Upgrade: If you have a system that generates reports with Unix timestamps, trigger this webhook for each timestamp.
    Leverage: Produce reports with human-readable dates for better readability and decision-making for non-technical stakeholders.


  This workflow is a cornerstone for any automation involving diverse date and time data. By implementing the suggested upgrades, you can transform it from a basic converter into a highly flexible and reliable date-time processing hub.

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

workflow_json_compressed:
  H4sIAAAAAAAAE5WWWW8bNxDHvwpBFLBdLAWSS3EPoA9tWrQuajuInQZo4AcesxLrFaku6QuCvnvB1WHLcYzkTVxyhsPffw6tsLO4xV5fXdzI3+TD/fvfpfvjF1zgBSSF2xV2PiblDZzmc6yqKtnITjedtR2AnJZQ0UbQppSGawa81op1TFuYlrpiNe+0laApa+q6ohKvC+zVAnCLP3r3gK7cAmJSiyVKAZ1eXqBfVQL0Lvg7GBIMuMBJzSJuP18X2AcL+edqE3JTC26YNoSDKYmQlSFNaQWZGlWVUmoppcL7285DghZ9Aj0P4Qad+uVtys4fl3nT156M3olWESYxOXPzmC1wgZchuuSCx+3nitOCSHpd4KUa1AISDDETunc2zXFbUlrgObjZPOG25LTAJvgEPuEWX81dRPkK1LuYwEfUhQE5b8LC+Rl6f3F5hQb47xZiihN0mhA8LMGkiBT68/LiHOlgH9G9S3OkUHR+1gNaDmEJQ3ps0VHaUTxCxwqNYPefkPMoggnexgLBZDYpEJNVXddSUDpGcaYGM0dsWiBOeVkgxltKW0rRz2fo49W7k0kWLZP6G4Y4kmDrYiuC4IKX1AKhpeBEWFoRrRSQGsBAw5lt9PSlCBt1syf0V5g58906MCpfF8KEPgy45cX3SZLUDUSU5nBAshvCYvx4v0maAi1u++SWvYOIXEL6ETFKKTpOAZlNwu5A52ReuL532/VJgZS32ZnfHR1dpICUH9O+lpRlMRYqJbAopiGnxfFGr6OsC6ElYdOrUZmW0gml9J+jkwnaPAPudzYuImUtWKQiOtpeBjbX2dFbQnLViCmngrCOMyJqsFlIQ5SpOmqYEFx0X6umDxCXwUf4fiEFfVPIci8kl98iZIQRfhby8OVIK3OTieS9YRtuxp/XYXAz51W/ExoZ1fcw5DI82lh043a4TcvbhEK3yYow3HR9uH8LagecUzUtSd3YhgilKVGacyIrSYXhlRGsfIL6AQy4O3jWE7eAv8r1fr//DGrNacFoZrrdHhv3lgfZJzh5ZnzAfqky8C8NcIHDMt+RT60LPE9peQZpHrL73MBwgXdoz4LN4e6W53n5EhPfY1KVrXgpFWEAgghRcqK1laRiopONqaho9BOm7XDYDYxcOV9PPEgvMo7JHZ3DVx88TcXoZn4BPo17B8vd+FHTpmHaCCJ4bYnoOJDaNILUjShtQ0GZ0j4FfZCOT+FuahYX+E71t/nDT6vVWMx5DB7/8G8MfpJb/+Spnf84dp2TSQqnlxeXo/3xCVqv8fp6/RJxORF7yLQGrXVdEhCaEsEMJ03ZUFIqWuqSddOykc9zMStnNyNnN44tOoz+BeyN2vYqfHotLZmov4H81scnN+ag6vvT7Yg8TbCIX5bahK+vC6xMcneA2071EQocISXnZ6N3eABzmy+4GCwMuMV3LHvZDqCxNGQzlUyXJam10kQISYlSqiZU04ZbMdUdFXhsOB7MLtZX07Bd4YVy+bWfV+PflW8lOVoV2HkLD7il6+vrdfFGP3jtnjfL4hX/6/X/T02FGPsJAAA=

metadata_json:
  {"categories":["data processing","integration","utility","automation"],"complexity":"simple","use_cases":["Convert API/database Unix timestamps to ISO 8601 for display or storage","Normalize timestamps in ETL/data pipelines","Transform log/IoT timestamps for analysis","Provide a microservice endpoint for on-demand timestamp conversion","Preprocess timestamps before inserting into spreadsheets or reports"],"estimated_setup_minutes":5,"required_services":["n8n instance with webhook access (self-hosted or n8n.cloud)","Public reachable URL or tunneling tool for testing (e.g., ngrok) — optional"],"key_features":["Receives Unix timestamp via HTTP webhook (POST JSON)","Converts seconds-since-epoch to ISO 8601 using JavaScript Date (multiplied by 1000)","Returns convertedTime in JSON response","Minimal, single-purpose workflow — easy to import and activate","Easy to extend for custom output formats or timezone conversion (via Function node)"],"target_audience":["Developers","Integrators","Data analysts / Data scientists focused on ETL and cleaning tasks\",\"System administrators\",\"Automation engineers / No-code automators"]}


name: Convert Time Zones with TimeZoneDB API Integration
author_name: ist00dent
author_username: ist00dent
categories: []
created_at: 2025-06-03T14:14:28.023Z
updated_at: 2025-06-03T14:14:28.023Z
url: https://n8n.io/workflows/4624
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This n8n template provides a powerful utility for converting a specific time from one time zone to another by leveraging the TimeZoneDB API. This is an essential tool for anyone coordinating global teams, scheduling international events, or simply needing to understand time differences across the world.

  🔧 How it works
  Receive Time Conversion Request: This node acts as the entry point for the workflow, listening for incoming POST requests. It's configured to expect a JSON body containing the following parameters:

    fromZone: The IANA timezone name for the source time zone (e.g., America/New_York, Asia/Manila, Europe/London).
    toZone: The IANA timezone name for the target time zone.
    time: The Unix timestamp (in seconds) representing the time in the fromZone that you wish to convert.

  Important: Your TimeZoneDB API key is handled securely by n8n's credential system and should not be included in the webhook body.

  Convert Timezone (TimeZoneDB): This node makes an HTTP GET request to the TimeZoneDB API (api.timezonedb.com). It dynamically constructs the API request URL using the fromZone, toZone, and time values extracted from your webhook request. Your API key is securely retrieved from n8n's pre-configured credentials and automatically added as a query parameter. The API performs the conversion and returns a JSON object containing the converted time and other timezone details.

  Respond with Converted Time: This node sends the full conversion result received from TimeZoneDB back to the service that initiated the webhook.

  👤 Who is it for?
  This workflow is extremely useful for:

  Global Businesses & Remote Teams: Seamlessly schedule meetings, set deadlines, and coordinate tasks across different time zones, eliminating confusion and missed appointments.
  Event Organizers & Marketers: Publish event times accurately for a global audience, improving attendance and engagement for webinars, online conferences, or product launches.
  Customer Support Centers: Provide precise response times or service availability to customers in their local time zone, enhancing customer satisfaction.
  Travelers & Digital Nomads: Easily calculate arrival/departure times in local timezones when planning trips or managing schedules across borders.
  Developers & Integrators: Integrate accurate time zone conversion capabilities into custom applications, dashboards, or internal tools without building complex logic from scratch.
  Data Analysts: Standardize timestamps from global data sources for consistent reporting and analysis, especially when dealing with international operations.

  📑 Data Structure
  When you trigger the webhook, send a POST request with a JSON body structured as follows:

  {
    "fromZone": "America/New_York",
    "toZone": "Asia/Manila",
    "time": 1678886400  // Unix timestamp for 2023-03-15 00:00:00 UTC (example)
  }

  Note: You'll need to obtain a free or paid API Key from TimeZoneDB to use their API.

  The workflow will return a JSON response similar to this (results will vary based on inputs):

  {
    "status": "OK",
    "message": "",
    "fromZoneName": "America/New_York",
    "fromAbbreviation": "-04",
    "fromTimestamp": 1678886400,
    "toZoneName": "Asia/Manila",
    "toAbbreviation": "+08",
    "toTimestamp": 1678933200,
    "offset": 46800 // difference in seconds
  }

  ⚙️ Setup Instructions
  Get a TimeZoneDB API Key:
    Go to https://timezonedb.com/register and sign up for a free API key.

  Create an n8n Credential for TimeZoneDB:
    In your n8n instance, go to Credentials.
    Click "New Credential" and search for "HTTP Query Auth".
    Set the Name (e.g., TimeZoneDB API).
    Set API Key to your TimeZoneDB API key.
    Set Parameter Name to key.
    Set Parameter Position to Query.
    Save the credential.
  Import Workflow:
    In your n8n editor, click "Import from JSON" and paste the provided workflow JSON.

  Configure TimeZoneDB API Node:

    Double-click the Convert Timezone (TimeZoneDB) node.
    Under "Authentication", select "Generic Credential Type".
    Choose "HTTP Query Auth" as the Generic Auth Type.
    Select the credential you created (e.g., "TimeZoneDB API") from the dropdown.
    Configure Webhook Path:
    Double-click the Receive Time Conversion Request node.
    In the 'Path' field, set a unique and descriptive path (e.g., /convert-timezone).
    Activate Workflow:
    Save and activate the workflow.

  📝 Tips
  This time zone converter is an essential building block that can be significantly expanded and integrated:

  Robust Error Handling & Input Validation:
    Upgrade: Add an IF node after the Receive Time Conversion Request to validate inputs (fromZone, toZone, time). Check if they are present and correctly formatted.
    Upgrade: After the Convert Timezone (TimeZoneDB) node, add another IF node to check {{ $json.status === 'OK' }}. If the status is not OK, return a descriptive error message from {{ $json.message }} to the webhook caller.
    Leverage: Provide clear feedback to users when invalid data is provided, preventing workflow failures and improving user experience.

  Flexible Time Input:
    Upgrade: Currently, the time input must be a Unix timestamp. Add a Function node before the Convert Timezone (TimeZoneDB) node to accept an ISO 8601 string (e.g., "2025-06-03T22:07:42Z") and convert it to a Unix timestamp using new Date($json.body.isoTime).getTime() / 1000.
    Leverage: Make the API easier to use for callers who prefer ISO dates over Unix timestamps.

  Human-Readable Output:
    Upgrade: Add a Function node after Convert Timezone (TimeZoneDB). Use JavaScript's Date object and toLocaleString() to format the toTimestamp into a user-friendly string (e.g., "Tuesday, June 3, 2025, 10:07:42 PM").
    Leverage: Provide a more immediately consumable output that doesn't require further client-side processing, enhancing integration ease.

  Automated Meeting/Event Scheduling:
    Upgrade: Combine this workflow with a Google Calendar or Outlook Calendar node. Accept a meeting time in one timezone and a list of attendee timezones. Loop through attendees, convert the time, and then add calendar invites for each.
    Leverage: Fully automate the creation of timezone-aware calendar events, a huge time-saver for international teams.

  Dynamic Website Content:
    Upgrade: Integrate this webhook into your website's backend. When a user lands on a page with time-sensitive information, detect their IP (and thus their timezone, perhaps using a separate IP lookup service) and then use this workflow to convert all relevant times to their local time.
    Leverage: Personalize the user experience by showing all times relevant to their location, improving clarity and usability.

  Smart Notification Delivery:
    Upgrade: If you send out automated notifications (e.g., Slack, Email, SMS) based on a specific time, use this workflow to ensure the notification arrives at a "friendly" local hour for each recipient.
    Leverage: Avoid sending notifications in the middle of the night for international users, improving engagement and reducing annoyance.

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

workflow_json_compressed:
  H4sIAAAAAAAAE5WWa2/bNhSG/wrBDetqSA51vwDFkGVD52FNs8RtsXXBQpFHFhuJ9EgqqRf4vw+U707Sbd9MU+Q5530fHvIBC45LfJGxPGs+de9fn+lJ8hPHHu7AUlw+YCGNpZLBxH0XZFmWFmldFTXnNUCaRJCRIiZFlLKwCiDMKxrUQcUhiaosyMO64ilUJCjyPCMpXnpY0g5wic+UvANt0VR0gH5XEgy6F7YZxm74w/fo9GKCJtLCTFMrlMQetnRmcPnx2sNScXA/H1YFJFWWRHGV+RnloR/XOfgF1MRPs4pCUhVhkVR4G/tcWSjRB6gapW7RRM576zZfzN2kzKU/7O5X1MDYWMFuF24F9vBcGTGkUn7Mc+Ll5NrDc6ppBxa0cXLdC24bXEYx8XADYtZYXCYp8TBT0oK0uMRffXUY+g/5h5w2wiAXFbXCWJAG1UojIZnqhJyhi7dXU6Thrx6MNWM0sQg+z4FZgyj6+ertOaoUX6z0sw2gWrWtuncL51rNQVsBpnRhRuim1qpz+t6gb43qNQNkRQd/Kwlocnp+ipxEHoLxbOyhm9MOtGD05Bzu//xN6dubl8MeVq13sFTPwH5phx97l8HJL0pyJTfLRecWv5Pi87DUWNrNkZDIAFOSm+3iIM3yPE9jQm4GPd5QzRoUJB4KSRihICwJKQlBF2/Qu+nZy6HC0WDuaISmDRzDdAsLJAxqqOQtcBeu19AuULVAMpcvDGIaOEgraIvMwljoEJUcmUb1LUejkVR2NEIVOGPangN3STvB79d+OhvGDnLH0nvQZmAlWHprTMOE1iSAzE8KyPw4igqf8qr2SVbzICryIErYMaZHNZzRtv3fsAZhTrwgfYwrU63SuAy9Dbgx2QM3zo/BfSKZQ3w7egsGUYl+mk4v0Osft9giqwapDnd4YdANW3UC36Hg/z2ABZLPlZB2QJ0vJO0Eo227QExJY3XvyHebvbv8BfXGge5Ga57dFh5ao7kaOBePcJtrdSees3BF0pnumXBhveGLPYI0WC3gbp8hd67WFM01+EzJWsx6DXwPKjMaeQik6bVLWVg0qDYcZmWAIy40MNsutjkpfVu36v6FGSrdWYeUPkwYDQ7UYFkDK2nWqgIfav4SlDSpCQmTyg/CIvBjSLlPeR75BcniEKq0gCB8rndegpkraeD/E5nFxAvjZ4mMtkRG6T6R5LlWusnkEEcDku/r4WpHGkzfWqSBgXAeDtY9ZhNVlN1usFVazISk7VZ2xyPo8dBm9Dr2pi885cCKIfdrYHLokmZFprHU9gYJWSvdDVfdjs5qsWHvSxbWCQR1kRZ+FES1H1NG/IolkV8EVZWmSZKGSbyz8HJV+OrqPdvpcrk6qc96uS79yEhCiBcPN+F6fngp7B9qV6+vt5sf+j2nzuRH32MPq7kL4T5aerixdv4GbKOG58rbqyn28Eb2N4q7bDfDczc81ircaRVlYVIExA9qp1XMcr9gSexHNY9pkgBNwgOt3KZ8dbeebR110j2r0yoRPlUfnhQsTzeCHSpxUO96jw9iUIe27WT9FphY6MxjFMa7AkMS5nEG1K9JkvpxktR+kRHmZ0nOIOFpAEGGn3yHDWB+uzsFL58t0dmxw2W/ujh+urpet7jEr9zC8uSEzsV4YzWvxkx1J3fhODh5dBd8tzoTrz4ZJb9xB/XVw8PXbjAe+t7mNbNcfmPV4dTqkeImRAdHU6KD5fIYMdrbxvVptnptlngG0j1/zrb9e+q08Db/n/a2ma7UcVX92oNeuP+cOXs93xV/OF+ujbrk79/XV3ZiGvjt0xX8vjPlsBHh5bHd8ThcXnuYMivuAJc1bQ142IC1Qs6GiPAZWO/qeKs5aFziu8DltT7qwxElCc9iqHMfqoz5cRwyv8jy1Cc8JnlOalZwxwlTUgLb6PQvvJQPuKPCgfDxYXij/9cjNKzysJAcPuOSLK+vl96/Nqqnov1Hnp+It1z+A8gv0z4ODQAA

metadata_json:
  {"categories":["integration","automation","time management","utilities"],"complexity":"simple","use_cases":["Convert timestamps between IANA time zones via webhook","Display local times on websites or apps","Standardize timestamps for reporting/analytics","Automate timezone-aware notifications or calendar workflows","Provide timezone conversion for global teams/support"],"estimated_setup_minutes":10,"required_services":["TimeZoneDB API (api.timezonedb.com)","n8n instance with webhook access"],"key_features":["Webhook endpoint accepts fromZone, toZone, and Unix time","Uses TimeZoneDB API with secure credentials (HTTP Query Auth)","Returns full JSON conversion including toTimestamp, offsets and abbreviations","Easy to extend for input validation, human-readable output, or calendar integration","Lightweight, fast conversion suitable for real-time use"],"target_audience":["Developers & integrators","Global businesses / remote teams","Event organizers & marketers」「Customer support teams\",\"Data analysts"]}


name: Extract Competitor SERP Rankings from Google Search to Sheets with Bright Data
author_name: Dvir Sharon
author_username: dvirsharon
categories: []
created_at: 2025-06-03T15:35:08.168Z
updated_at: 2025-06-03T15:35:08.168Z
url: https://n8n.io/workflows/4625
scraped_at: 2025-09-14 19:11:01
description:
  🔍 Extract Competitor SERP Rankings from Google Search to Sheets with Bright Data
  This template requires a self-hosted n8n instance to run.

  A comprehensive n8n automation that extracts competitor data from Google search results for specific keywords and target countries, automatically saving structured data to Google Sheets for competitive analysis and market research.

  📋 Overview
  This workflow provides a professional competitor analysis solution that identifies ranking websites for specific search terms across different countries. Perfect for SEO research, competitive intelligence, market analysis, and content strategy planning. The system uses Bright Data's SERP API for accurate search result extraction and advanced HTML parsing for detailed competitor information.

  Who is this for?
  SEO professionals conducting competitive analysis
  Digital marketers researching market landscapes
  Business analysts studying competitor positioning
  Content strategists analyzing competitor content approaches
  Market researchers tracking competitive intelligence across regions

  What problem is this workflow solving?
  Extracting competitor data from Google search results
  Processing multiple keywords across different countries
  Organizing results in a structured, analyzable format
  Eliminating manual copy-paste work
  Ensuring consistent data collection methodology

  What this workflow does
  Manual Trigger: Starts the workflow execution
  Get Keywords from Sheet: Fetches keywords and target countries from Google Sheets
  URL Encode Keywords: Converts keywords to URL-safe format
  Process Keywords in Batches: Handles multiple keywords sequentially
  Fetch Google Search Results: Uses Bright Data SERP API to scrape HTML
  Extract Competitor Data from HTML: Parses HTML to extract competitor details
  Save Competitor Results to Sheet: Stores structured data in Google Sheets
  Wait to Avoid Rate Limits: Implements 30-second delays between requests

  Output Data Points

  | Field            | Description                        | Example                                     |
  | :--------------- | :--------------------------------- | :------------------------------------------ |
  | Keyword          | Original search term               | digital marketing services                  |
  | Target Country   | Geographic target                  | US                                          |
  | websiteName      | Domain/company name                | hubspot                                     |
  | websiteUrl       | Complete website URL               | https://www.hubspot.com/marketing           |
  | websiteTitle     | Page title from search results     | Digital Marketing Software & Tools          |
  | websiteDescription | Meta description/snippet           | Grow your business with HubSpot's digital marketing tools... |

  ⚙️ Setup

  Prerequisites
  n8n instance (self-hosted)
  Google account with Sheets access
  Bright Data account with SERP API access

  Google Sheet Structure

  This workflow utilizes two Google Sheets: one for input keywords and one for outputting competitor data.

  Input Sheet: "Keywords"
  This sheet should contain the keywords and target countries for your search queries.

  | Column Header  | Data Type | Description                                        | Example         |
  | :------------- | :-------- | :------------------------------------------------- | :-------------- |
  | Keyword | Text      | The search term you want to analyze.               | digital marketing |
  | Country | Text      | The 2-letter ISO country code for the target region of the search (e.g., US, GB, DE). | US              |

  Output Sheet: "Competitor Results"
  This sheet will be populated automatically by the workflow with the extracted competitor data.

  | Column Header      | Data Type | Description                                                                         | Example                                          |
  | :----------------- | :-------- | :---------------------------------------------------------------------------------- | :----------------------------------------------- |
  | Keyword | Text      | The original search term used for the query.                                        | digital marketing services                       |
  | Target Country | Text      | The 2-letter ISO country code of the search results.                                | US                                               |
  | websiteName | Text      | The name of the website or domain found in the search results.                      | hubspot                                          |
  | websiteUrl | URL       | The full URL of the website or page found in the search results.                    | https://www.hubspot.com/marketing                |
  | websiteTitle | Text      | The title of the page as displayed in the Google search results.                    | Digital Marketing Software & Tools               |
  | websiteDescription | Text      | The meta description or snippet text displayed under the title in search results. | Grow your business with HubSpot's digital marketing tools... |

  Step-by-Step Setup
  Import the Workflow: Copy JSON → n8n → Workflows → + Add → Import from JSON
  Configure Bright Data Credentials:
      Credential Type: HTTP Header Auth
      Header Name: Authorization
      Header Value: Bearer YOUR_API_TOKEN
  Configure Google Sheets:
      Create two new Google Sheets as described above: one named "Keywords" (for input) and one named "Competitor Results" (for output).
      Set up Google Sheets OAuth2 credentials within n8n.
  Update Workflow Settings:
      Replace placeholders: YOUR_GOOGLE_SHEET_ID (for both input and output sheets), YOUR_BRIGHTDATA_CREDENTIAL_ID.
      Ensure correct sheet/tab names are selected in the Google Sheets nodes.
  Test & Activate: Add test data to your "Keywords" sheet → Execute workflow → Verify output in your "Competitor Results" sheet.

  🛠 How to Customize
  Add More Data Points:** Modify the JavaScript code in the "Extract Competitor Data from HTML" node to parse and extract additional information from the HTML.
  Custom Filtering:** Implement logic to exclude specific domains, filter results by title length, or other criteria.
  Expand Geographic Coverage:** Add more 2-letter ISO country codes to the Bright Data SERP API call to broaden your competitive analysis.
  Batch Processing:** Adjust the settings in the "Process Keywords in Batches" node to optimize for your Bright Data plan and desired execution speed.
  Rate Limiting:** Modify the "Wait" node (default: 30 seconds) to increase or decrease the delay between requests based on API limits or performance needs.

  📊 Use Cases & Examples
  SEO Competitive Analysis:** Identify top-ranking competitors for your target keywords and analyze their strategies.
  Market Entry Research:** Understand the competitive landscape in new geographic regions before expanding.
  Content Strategy Planning:** Analyze competitor page titles and meta descriptions for inspiration and to identify content gaps.
  International Market Research:** Compare search engine results and competitor positioning across different countries.

  📈 Performance & Limits
  Single Keyword:** 30–60 seconds per keyword.
  Batch of 10 Keywords:** Typically takes 5–10 minutes.
  Large Lists (50+ Keywords):** Expect execution times of 30–60 minutes or more, depending on batching and rate limits.
  Success Rate:** Generally 95%+ for data extraction.
  Data Accuracy:** Typically 98%+ for extracted fields.
  API Calls:** 1 Bright Data SERP API call per keyword, plus multiple Google Sheets writes per execution.
  Rate Limit:** A 30-second delay between requests is recommended to prevent exceeding API limits.

  🧰 Troubleshooting
  Bright Data API error:** Double-check your API token, ensure you have sufficient credits, and confirm SERP API access is enabled on your Bright Data account.
  No keywords found:** Verify the Google Sheet ID and ensure the column headers in your "Keywords" sheet precisely match the specifications (e.g., "Keyword", "Country").
  Google Sheets permission denied:** Re-authenticate your Google Sheets credentials within n8n and check that the correct sharing settings are applied to your sheets.
  No results extracted:** Review the JavaScript parsing logic in the "Extract Competitor Data from HTML" node. Also, verify the validity of your keywords and target countries.
  Loop not processing all:** Check the batch settings in the "Process Keywords in Batches" node and ensure all connections within the loop are correctly configured.

  🤝 Support & Community
  n8n Forum:** &lt;https://community.n8n.io&gt;
  n8n Docs:** &lt;https://docs.n8n.io&gt;
  Bright Data Support:** Access support directly via your Bright Data dashboard.
  GitHub Issues:** Report any bugs or suggest new features on the n8n GitHub repository.

  🎯 Final Notes
  This workflow provides a comprehensive foundation for competitor research and market analysis. Customize it to fit your specific industry needs and competitive intelligence requirements.

  Please note that this template uses Community Nodes. Ensure you understand the risks before using community nodes.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.splitInBatches","n8n-nodes-base.httpRequest","n8n-nodes-base.code","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:
  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


name: Discover Hidden Website API Endpoints Using Regex and AI
author_name: Yulia
author_username: yulia
categories: []
created_at: 2025-06-03T20:24:40.505Z
updated_at: 2025-06-03T20:24:40.505Z
url: https://n8n.io/workflows/4627
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:32
description:
  💡 What it is for

  This workflow helps to automatically discover undocumented API endpoints by analysing JavaScript files from the website's HTML code.

  When building automation for platforms without public APIs, we face a significant technical barrier. In a perfect world, every service would offer well-documented APIs with clear endpoints and authentication methods. But the reality is different.

  Before we resort to complex web scraping, let's analyse the architecture of the platform and check whether it makes internal API calls. We will examine JavaScript files embedded in the HTML source code to find and extract potential API endpoints.

  ⚙️Key Features

  To discover hidden API endpoints, we can apply two major approaches:

  1. Predefined regex extraction: manually insert a fixed regex with the necessary conditions to extract endpoints. Unlike LLM, which creates a custom regex for each JS file, we provide a generic expression to capture all URL strings. We do not want to accidentally miss important API endpoints. 

  2. AI-supported extraction: 
    ask LLMs to examine the structure of the JavaScript code. The 1st model will:
    capture potential API endpoints
    create a detailed description of each identified endpoint with methods and query parameters
    the 2nd LLM connected to the AI Agent will generate a regex for each JS file individually based on the output of the 1st model.
  	 
  In addition to pure endpoint extraction, we supplement our analysis with:	 

  AI regex validation:** the AI Agent calls a validation tool to iteratively improve its regex based on the reference data.  

  Results comparison:** side-by-side analysis of API endpoints extracted with a predefined regex against AI-supported results.
  ✅Requirements:

  OpenRouter API access: for AI-powered analysis (Gemini + Claude models by default)
  Minimal setup: simply configure the target URL and run
  Platforms: JS files must be accessible and have embedded standard API endpoints patterns (/api/, /v1/, etc.)  

  💪Use Cases

  📚 API documentation: create complete endpoint descriptions for internal APIs
  🚀 Automation & integration projects: find the APIs you need when official documentation is missing
  🛠 Web scraping projects: discover data access patterns
  🔍 Security research: map attack surfaces and explore unprotected endpoints

  🎉Extracted the endpoints, what now? 
  To execute API requests, we often need additional information such as query parameters or JSON body data:
  One way to find out exactly how the request is being made on the platform is to navigate to the Network tab in the Dev Tools console while interacting with the platform. Look for anything that resembles API requests and review the request/response headers, payload and query parameters. 
  Alternatively, you can also check the JS file and the page source code for the required values.

  ✨Inspiration

  As a guitarist who also builds workflows, I wanted to automate communication with the booking platform I use in my music project. While trying to connect to the platform from n8n, I ran into a challenge: no public APIs. 

  Fortunately, I found out that the platform I work with was built as a modern web app with client-side JavaScript that contained information about the API structure. This led me to the topic of hidden API endpoints and eventually to this workflow. 

  It is part of my music booking project which I presented at the n8n Community Meetup in Berlin on 22 May 2025.

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.outputParserAutofixing","n8n-nodes-base.manualTrigger","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.html","n8n-nodes-base.splitOut","n8n-nodes-base.filter","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.splitOut","n8n-nodes-base.removeDuplicates","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.noOp","n8n-nodes-base.splitInBatches","n8n-nodes-base.set","n8n-nodes-base.convertToFile","n8n-nodes-base.readWriteFile","n8n-nodes-base.set","n8n-nodes-base.merge","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.readWriteFile","n8n-nodes-base.extractFromFile","n8n-nodes-base.merge","n8n-nodes-base.set","n8n-nodes-base.merge","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.splitOut","n8n-nodes-base.removeDuplicates","n8n-nodes-base.merge","n8n-nodes-base.merge","n8n-nodes-base.sort","n8n-nodes-base.set","n8n-nodes-base.convertToFile","n8n-nodes-base.removeDuplicates","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.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp"]

workflow_json_compressed:
  [encoded data, 14056 characters]

metadata_json:
  {"categories":["integration","automation","security","data discovery"],"complexity":"complex","use_cases":["Discover undocumented/internal API endpoints","Create API documentation from client-side JS","Support automation & integration when no public API exists","Web-scraping preparation and data-access pattern discovery","Security reconnaissance and attack-surface mapping"],"estimated_setup_minutes":15,"required_services":["OpenRouter API (for LLMs such as Gemini/Claude)","Target website with accessible JavaScript files","n8n instance/workflow runtime","(Optional) external regex-validation/AI agent service"],"key_features":["Predefined regex-based extraction of URL patterns from JS","AI-supported extraction that identifies endpoints, methods and parameters","Per-JS-file AI-generated regexes to improve coverage","Iterative AI regex validation loop using a validation tool","Side-by-side comparison of regex vs AI extraction results','Fetch and parse JS files embedded in HTML','Produce structured endpoint descriptions ready for testing or documentation"],"target_audience":["Developers integrating with undocumented services","Automation/integration engineers","Security researchers and penetration testers interested in mapping APIs','Data engineers and web-scrapers looking for data access endpoints"]}


name: Custom Discord Notifications for Radarr, Sonarr, Bazarr etc.
author_name: Pawel
author_username: labm0nkey
categories: []
created_at: 2025-06-03T20:51:34.853Z
updated_at: 2025-06-03T20:51:34.853Z
url: https://n8n.io/workflows/4628
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  This is a simple temlate that will allow you to customise the notifications in Radarr, Sonarr, Bazarr and similar. By default the notifications are configured to be sent to discord and look similar to the default ones but are just minimalistic.

  All you need to configure is in your Radarr etc. instances to have Webhook notification type and here point to your Discord channel webhook.

nodes_used:
  ["n8n-nodes-base.webhook","n8n-nodes-base.switch","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.evaluation","n8n-nodes-base.evaluation","n8n-nodes-base.evaluationTrigger","n8n-nodes-base.filter","n8n-nodes-base.code","n8n-nodes-base.code","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, 7276 characters]

metadata_json:
  {"categories":["integration","notifications","automation","media management"],"complexity":"simple","use_cases":["Send Radarr/Sonarr/Bazarr notifications to Discord","Customize and simplify media-server webhook messages","Filter and format notifications per event type","Centralize notifications from multiple media apps"],"estimated_setup_minutes":10,"required_services":["Radarr","Sonarr","Bazarr (or similar media apps)","Discord (channel webhook)"],"key_features":["Receives webhooks from Radarr/Sonarr/Bazarr","Customizable, minimalistic Discord message formatting","Event filtering and conditional processing","Supports multiple services with shared workflow","Uses code nodes for advanced message templates"],"target_audience":["Home media server administrators","Self-hosters and hobbyists","n8n users wanting Discord alerts"]}


name: GitHub Automation Hub: Complete API Controls for AI Agents
author_name: David Ashby
author_username: cfomodz
categories: []
created_at: 2025-06-03T21:23:28.021Z
updated_at: 2025-06-03T21:23:28.021Z
url: https://n8n.io/workflows/4629
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

  Join the community

  Quick Setup Guide:

  1️⃣ Import this template into your n8n instance.

  2️⃣ Configure GitHub credentials for the nodes.

  3️⃣ Connect your MCP client

  THAT'S IT!
  tl;dr
  Supercharge your GitHub project management 
  and development by integrating powerful AI capabilities directly into your n8n workflows!

  This template deploys a robust SSE endpoint specifically designed for n8n's MCP client (or any MCP tool - like cursor). It unlocks a comprehensive suite of pre-configured GitHub tools, enabling your AI to act as an intelligent, automated team member.

  Empower your AI to Autonomously Handle GitHub Tasks:





  🧠 Triage Issues: Automatically categorize, label, and assign new issues.



  🧹 Combat Spam: Instantly remove unwanted issues or comments.



  📄 Summarize Content: Condense complex Pull Requests or lengthy issue discussions for quick insights, especially for non-technical team members.



  📧 Automate Reporting: Draft and send natural language email updates to management about critical, triaged issues.



  And much more!

  Core Capabilities at Your AI's Fingertips:

  This workflow equips your AI agent with extensive GitHub control:





  ✅ File Operations: Create, Edit, Delete, Get, and List files.



  ✅ Issue Management: Create, Edit, Get, Comment on, and Lock/Unlock issues.



  ✅ PR Review Oversight: Create, Get, Update, and List all reviews for a Pull Request.



  ✅ Release Orchestration: Create, Get, Update, Delete, and List repository releases.



  ✅ Repository Insights: Access details, issues, licenses, profiles, PRs, popular paths, and referrers.



  ✅ User & Org Management: Get user/organization repositories; invite users to organizations.



  ✅ GitHub Actions Control: Get, List, analyze usage, Enable/Disable, and Dispatch workflows.

  Setup Guide:

  1️⃣ Import this template into your n8n instance.
  2️⃣ Configure GitHub credentials for the nodes. Best Practice: Use a dedicated GitHub account or a Personal Access Token (PAT) with minimal necessary permissions.
  3️⃣ Connect your MCP client or AI system to the exposed SSE webhook URL (e.g., http://localhost:5678/mcp/v3805-fhrs-4afc-o5c2-389hfasfwj/sse).

  ⚠️ (Disabled by Default) Advanced API Access: Raw HTTP Request tools (GET, POST, PATCH, PUT, DELETE). Enable with extreme caution and tightly scoped credentials.

  Ideal For:





  Developers: Automating routine coding tasks, PR checks.



  Project Managers: Streamlining issue tracking, progress reporting.



  Contributors: Simplifying project interactions.



  Maintainers: Reducing manual effort in triage, spam filtering, releases.



  Innovators: Seeking deep AI integration with GitHub.

  Drastic Time & Cost Savings ⏳💰:

  Combine this template with other AI-powered n8n workflows like the Discord Message Proxy or the AI-Powered GitHub Bot to achieve significant automation of complex GitHub tasks—often for less than the cost of a single hour of manual work!

  Important Security Note on Custom API Calls: The Custom &lt;METHOD&gt; Github Request nodes are disabled by default. Their power to make any API call requires careful consideration. If you enable them, ensure the associated GitHub credentials have the absolute minimum necessary scope to prevent unintended consequences. You are responsible for their safe use.

  This template is your key to unlocking intelligent automation within your GitHub ecosystem. Streamline your development processes and save valuable time today!

nodes_used:
  ["n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.mcpTrigger","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.stickyNote","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.stickyNote","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.stickyNote","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.stickyNote","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.githubTool","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequestTool","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequestTool","n8n-nodes-base.httpRequestTool","n8n-nodes-base.httpRequestTool","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequestTool","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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

metadata_json:
  {"categories":["automation","integration","AI","developer tools","DevOps"],"complexity":"complex","use_cases":["Autonomous GitHub issue triage and labeling","Automated spam removal (issues/comments)","Summarizing PRs and issue discussions","Automated status/report emails to stakeholders","File operations (create/edit/delete/list) in repos via automation agents"],"estimated_setup_minutes":15,"required_services":["GitHub (repository access, Personal Access Token)","n8n instance (self-hosted or cloud)","MCP client (n8n MCP client or compatible tool like Cursor)","Publicly reachable webhook/SSE endpoint (or tunnel for local testing)","Email/SMTP or email API (optional, for automated reporting)"],"key_features":["Exposed SSE endpoint for MCP clients to drive AI agents","Comprehensive pre-configured GitHub tools (files, issues, PR reviews, releases)","Repository insights and analytics access (licenses, referrers, popular paths)","User and organization repository management and invitations","GitHub Actions control (list, enable/disable, dispatch, analyze) and workflow orchestration support with AI agents','Disabled-by-default raw HTTP request nodes for advanced API calls (use with caution)"],"target_audience":["Developers","Project Managers","Maintainers/Repos Owners/Contributors (open-source or internal)`,`AI developers / integrators"]}


name: Generate Videos with AI, ElevenLabs,PIAPI Shotstack/Creatomate & Post to Youtube
author_name: Immanuel
author_username: spectrabit
categories: []
created_at: 2025-06-03T21:27:45.642Z
updated_at: 2025-06-03T21:27:45.642Z
url: https://n8n.io/workflows/4630
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:32
description:
  Auto-Generate Long Videos with AI, ElevenLabs,PIAPI,Shotstack/Creatomate & Post to Youtube

  Overview
  This n8n automation workflow automates the creation, scripting, production, and posting of YouTube videos. It leverages AI (OpenAI), image generation (PIAPI), video rendering (Shotstack), and platform integrations (Airtable, Google Sheets, YouTube) to streamline the process.  
  Target Audience
  Content creators, video producers, and YouTubers** seeking to automate video content creation.
  Digital marketing teams** managing video campaigns for travel or history niches.
  Users familiar with n8n, Airtable, Google Sheets, YouTube, and API integrations**.

  Problem Solved
  Manually managing YouTube video production, from ideation to posting, is time-consuming and prone to errors. This workflow addresses:
  Content Sourcing**: Generates video ideas using AI based on "domain of choice".
  Content Formatting**: Automatically creates detailed scripts and scene structures.
  Visual Production**: Produces high-quality images and renders videos with minimal manual input.
  Multi-Platform Integration**: Publishes to YouTube with status tracking in Airtable and Google Sheets.
  Status Tracking**: Monitors progress (Generated, Scripted, Produced, Published) across platforms.
  Prerequisites
  Before setting up, ensure you have:
  An n8n instance (self-hosted or cloud)
  API credentials for:
     OpenAI (for idea generation)
     PIAPI.ai (for image and video generation)
     ElevenLabs (for audio generation)
     Shotstack (for video rendering)
     Creatomate (for video rendering)
     Airtable & Google Sheets and Drive (for storage and tracking)
     Gmail (for notifications)
     YouTube API (for posting to YouTube)

  How the Automation Works (Step by Step)
  Trigger (Schedule Trigger)  
     Initiates the workflow daily 
     Connects to "Generate Idea"

  Generate Idea  
     Uses OpenAI to create a unique 4-minute video idea with a title, description, keywords, scene structure, and intrigue note
     Checks Airtable "Ideas" table via searchAirtable to avoid duplicates
     Connects to "Parse Ideas"

  Parse Ideas  
     Extracts title, description, and notes from the OpenAI output using JavaScript
     Connects to "Add Ideas"

  Add Ideas  
     Stores the initial idea in Google Sheets "Ideas" sheet with fields like "Idea", "Description", and "Progress" (set to "Generated")
     Connects to "Store in Airtable"

  Store in Airtable  
     Saves the idea to Airtable "Ideas" table with mapped fields and typecast enabled
     Connects to "Generate Script"

  Generate Script  
     Creates a 500-600 word script with 8-10 scenes using OpenAI, based on the latest "Generated" idea
     Uses Structured Output Parser to format output
     Connects to "Parse Script Output"

  Parse Script Output  
     Formats the script into readable text and JSON, extracting scenes and closing question
     Connects to "Store Script"

  Store Script  
     Saves the script to Google Sheets "Production" sheet with "Script", "Scenes", and "Status" (set to "Scripted")
     Connects to "Store Script in Airtable"

  Store Script in Airtable  
     Saves the script to Airtable "Production" table with mapped fields and typecast enabled
     Connects to "Updated Idea to Scripted"

  Updated Idea to Scripted  
      Updates the idea status to "Scripted" in Google Sheets "Ideas" sheet
      Connects to "Update Status Ideas Table"

  Update Status Ideas Table  
      Updates the idea status to "Scripted" in Airtable "Ideas" table, matching by "Idea ID"
      Connects to "Extract Scenes"

  Extract Scenes  
      Parses scene data from Airtable "Production" table for image generation
      Connects to "Text-to-Image"

  Text-to-Image  
      Generates images for each scene using PIAPI
      Connects to "Wait for 4 Min"

  Wait for 4 Min  
      Waits 3 minutes to allow image generation to complete
      Connects to  "Get Images" 

  Trigger (Schedule Trigger1)  
      Initiates the posting process daily 
      Connects to "Search for Latest Ready Video"

  Search for Latest Ready Video  
      Searches Airtable "Production" table for the latest video with "Status" = "Ready"
      Connects to "If Ready?"

  If Ready?  
      Checks if a video is ready (condition: Status contains Ready)
      If true, connects to "Download Video" and "Update Production Table"

  Download Video  
      Downloads the video file using the VideoURL from Airtable
      Connects to "Post YouTube"

  Post YouTube  
      Uploads the video to YouTube with title and description, using YouTube OAuth2
  Update Production Table  
      Updates the "Production" sheet in Google Sheets, setting "Status" to "Published" and matching by "Production ID"
  Additional Nodes and Processes
  OpenAI Chat Model**: Powers "Generate Idea" and "Generate Script" with GPT
  Structured Output Parser**: Ensures proper JSON output for scripts
  Get Images**: Retrieves generated images 
  Extract Narration**: Prepares narration for voice generation
  Voice Generation**: Generates voiceovers 
  Generate Music Prompt**: Creates music prompts using OpenAI
  Text-to-Music**: Generates music 
  Build Shotstack Timeline**: Constructs video timeline 
  ShotStack Render Video**: Renders the final video 
  Poll Rendered Videos**: Checks video rendering status 
  Final Video**: Updates Airtable "Production" with final video details
  Final Video Update**: Updates Google Sheets "Production" with video URL
  Music Urls**: Adds music URLs to the process 

  Setup Requirements
  Before starting, ensure you have the following

  1  n8n Instance
     A self-hosted or cloud-based n8n instance to run the workflow
     
  2  API Credentials
     OpenAI: API key 
     Airtable: Personal Access Token (e.g, "Airtable Personal Access Token 
     Google Sheets: OAuth2 credentials 
     PIAPI: HTTP Header Auth key 
     YouTube: OAuth2 credentials
  3  Airtable Configuration
     Base: "Youtube Videos" 
     Tables:
       "Ideas"  
       "Production" 
     Share with the Airtable token

  4  Google Sheets Configuration
     Document: "Youtube Videos" 
     Sheets:
       "Ideas" 
       "Production" 
     Share with the Google Sheets credential email

  Shotstack Configuration (Assumed)
     API key and endpoint for video rendering (not specified in JSON)

  Setup Instructions
  Import the Workflow
     Import the provided JSON file into your n8n instance

  Configure Credentials
     Add OpenAI, Airtable, Google Sheets, PIAPI, and YouTube credentials in n8n’s credential manager

  Set Up Airtable
     Create or update the "Ideas" and "Production" tables with the specified fields
     Ensure proper permissions with the Airtable token

  Configure Google Sheets
     Create or update the "Ideas" and "Production" sheets with the specified columns
     Share the document with the Google Sheets credential email

  Schedule Triggers
     Set "Schedule Trigger" to trigger

  Test the Workflow
     Run manually to verify each node’s functionality
     Check Airtable, Google Sheets, and YouTube for updates
     Ensure PIAPI image generation completes (wait 4 minutes)

  Monitor and Adjust
     Monitor API rate limits (e.g, PIAPI, YouTube)
     Adjust wait times if image or video generation delays occur
     Verify connections for unlinked nodes 

  Benefits
  Efficiency**: Automates the entire process from idea to posting
  Scalability**: Handles daily video production
  Quality**: Ensures cinematic scripts and visuals
  Tracking**: Provides detailed progress monitoring

  Notes
  Rate Limits**: Be aware of PIAPI (150,000 units per task) and YouTube API limits
  Timing**: Adjust wait nodes (e.g, "Wait for 4 Min") based on API response times

  Conclusion and Suggestions to Improve the Automation

  Conclusion
  This workflow streamlines YouTube video production, making it ideal for busy content creators, video producers, and marketing teams. Customize it by adding more platforms, adjusting wait delays for image/video generation, or enhancing notifications for status updates. Share your feedback in the n8n community to help others benefit from this automation.

  Suggestions to Improve

  Customization**: Adjust prompts, timings, and API parameters based on your needs
  Expand "Text-to-Music**" with multiple music styles or integrate a royalty-free music API for variety.
  Improve Video Rendering**: Optimize "Build Shotstack Timeline" and "ShotStack Render Video" with predefined templates to reduce rendering time.
  Add Analytics Tracking**: Include a node to fetch YouTube Analytics post-upload for performance monitoring.
  Error Handling**: Add error-catching nodes (e.g., "If" nodes) to retry failed image or video generations.
  Notification System**: Incorporate email or Slack notifications for key milestones (e.g., script completion, video upload).

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.airtableTool","n8n-nodes-base.googleSheets","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.airtable","@n8n/n8n-nodes-langchain.outputParserStructured","n8n-nodes-base.googleSheets","n8n-nodes-base.airtable","n8n-nodes-base.code","n8n-nodes-base.airtable","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.airtable","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.googleDrive","n8n-nodes-base.wait","n8n-nodes-base.stickyNote","n8n-nodes-base.airtable","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.wait","n8n-nodes-base.googleDrive","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.googleDrive","n8n-nodes-base.limit","n8n-nodes-base.wait","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.googleDrive","n8n-nodes-base.googleDrive","n8n-nodes-base.airtable","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.merge","n8n-nodes-base.httpRequest","n8n-nodes-base.airtable","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.wait","n8n-nodes-base.httpRequest","n8n-nodes-base.switch","n8n-nodes-base.httpRequest","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.httpRequest","n8n-nodes-base.googleDrive","n8n-nodes-base.gmail","n8n-nodes-base.gmail","n8n-nodes-base.googleSheets","n8n-nodes-base.airtable","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.youTube","n8n-nodes-base.airtable","n8n-nodes-base.googleSheets","n8n-nodes-base.if","n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger"]

workflow_json_compressed:
  [encoded data, 5908 characters]

metadata_json:
  {"categories":["automation","media production","integration","content-creation","AI"],"complexity":"complex","use_cases":["Automated end-to-end YouTube video production (idea → publish)","Scale video content creation for channels (daily/regular output)","Automate script, image, voiceover and video rendering workflows","Publish and track video status across Airtable and Google Sheets","Build reproducible AI-driven media pipelines for agencies or teams"],"estimated_setup_minutes":90,"required_services":["OpenAI (GPT) API","PIAPI.ai (image generation)","ElevenLabs (text-to-speech)","Shotstack (video rendering) and/or Creatomate (alternative renderer)","Airtable (Ideas & Production tables)","Google Sheets & Google Drive (Ideas & Production sheets)","YouTube API (OAuth2) for uploads","Gmail (optional notifications)","n8n instance (self-hosted or cloud) with configured credentials"],"key_features":["AI idea and script generation (OpenAI)","Structured output parsing for scenes and metadata","Text-to-image generation per scene (PIAPI)","Voiceover generation (ElevenLabs) and narration extraction","Automated music prompt and generation steps (text-to-music flow)**placeholder** for music provider integration(supported by workflow prompts or API nodes)\"\"\" (note: replace with actual music API if used)\"\"\"  (remove if not used)  NOTE: This line contains ambiguous content—please ignore extra characters and use concise item instead; correction follows: \"Automated music prompt and generation\"  (final item)  -- Apologies for the clutter.  <-- This entire parenthetical is accidental and should be ignored, final item is \"Automated music prompt and generation\"  <-- End accidental text.  <-- Remove all commentary in final output fallback to single clear item.  <-- STOP"],"target_audience":["YouTubers and individual content creators","Video producers and editors looking to automate workflows","Digital marketing teams focused on video campaigns (e.g., travel, history niches)"]}


name: Auto-Generate LinkedIn Posts from Articles with Dumpling AI and GPT-4o
author_name: Yang
author_username: yang
categories: []
created_at: 2025-06-03T22:28:16.392Z
updated_at: 2025-06-03T22:28:16.392Z
url: https://n8n.io/workflows/4631
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  👤 Who is this for?

  This workflow is ideal for social media managers, personal brand strategists, ghostwriters, and founders who want to post regularly on LinkedIn without spending hours writing from scratch. It’s also useful for marketing agencies and assistants looking to automate consistent post creation using curated articles as source material.

  🧩 What problem does this workflow solve?

  Manually reading multiple articles, extracting key insights, and writing a clean, professional LinkedIn post is a time-consuming process. This workflow automates everything: from pulling topics, finding related articles, summarizing them using AI, and even generating a matching image to accompany the post. It ensures faster content turnaround, more consistency, and less manual effort.

  🔁 What this workflow does

  This workflow starts manually and retrieves one topic marked as “To do” from a Google Sheet. That topic is used as a search term for Dumpling AI’s search endpoint, which scrapes and returns the top three article contents related to the topic. These articles are sent to a LangChain agent powered by GPT-4o, which analyzes and summarizes the content into a LinkedIn post in a friendly, insightful tone. It also generates an image prompt for the post.

  After generating the post and image prompt, the data is extracted using a Set node. The prompt is sent to Dumpling AI’s image generation endpoint, which returns an image URL. Finally, the post text, image prompt, image URL, and status update (“created”) are saved back to the original row in Google Sheets.

  🛠️ Workflow Breakdown

  Manual Trigger – Starts the automation.
  Google Sheets (Get Topic) – Searches for the first row in your content pipeline sheet where the “status” is “To do”.
  HTTP Request (Dumpling AI Search) – Uses the topic as a search query to pull 3 article contents using Dumpling AI’s API.
  Set LangChain GPT Model – Defines GPT-4o as the LLM for the LangChain Agent.
  LangChain Agent (Summarize & Generate) – Summarizes all 3 articles and generates a LinkedIn post and a related image prompt.
  Set (Extract Data) – Extracts postText and imagePrompt from the LangChain agent output.
  HTTP Request (Dumpling Image Gen) – Sends imagePrompt to Dumpling AI’s image generation endpoint.
  Update Google Sheets – Writes the post, image prompt, and image URL back to the sheet and changes the row status to “created”.

  ⚙️ Setup Instructions

  Dumpling AI
     Sign up at Dumpling AI
     Get your API key and connect it in the HTTP Request nodes (Search and Image endpoints)
     Use the /search endpoint to retrieve article content
     Use the /generate-image endpoint to create the image

  Google Sheets
     Create a spreadsheet with columns: topic, status, postText, imagePrompt, imageURL
     Add sample topics and set their status to To do

  LangChain (GPT-4o)
     Connect your OpenAI credentials to n8n
     Make sure GPT-4o is available in your OpenAI account
     Use the LangChain node to process multi-input summarization and generate a social media caption

  Customize the Prompt (Optional)
     Adjust the Set node to tweak the input format sent to the LangChain agent
     Add constraints like tone, hashtags, or emojis to fit your brand style

  🧠 How to Customize This Workflow

  Change the content source (RSS feed, Notion DB, etc.) instead of Google Sheets
  Add a scheduler node to run this automatically every morning or weekly
  Use Airtable instead of Google Sheets for more control and filtering
  Send the final post to LinkedIn using the Buffer or LinkedIn API
  Add a Telegram or Slack notification when new content is ready for approval

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.set","n8n-nodes-base.httpRequest","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

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

metadata_json:
  {"categories":["automation","social media","content creation","AI/ML integration"],"complexity":"medium","use_cases":["Auto-generate LinkedIn posts from curated articles","Content repurposing and summarization","Scale social media posting for personal brands and agencies","Generate matching images for posts"],"estimated_setup_minutes":30,"required_services":["Dumpling AI (search & image endpoints)","Google Sheets","OpenAI GPT-4o (via LangChain)"],"key_features":["Searches and scrapes top related articles for a topic","Summarizes multiple articles into a single LinkedIn post using a LangChain GPT-4o agent","Generates an image prompt and produces an image via Dumpling AI","Writes post text, image prompt, image URL and status back to Google Sheets","Manual trigger with easy option to add scheduling or publish integrations (Buffer/LinkedIn)"],"target_audience":["Social media managers","Personal brand strategists and founders","Marketing agencies and assistants/ghostwriters\",\"Content creators and growth teams"]}


name: Scrape Google Places via Dumpling AI and Auto-Save to Google Sheets
author_name: Yang
author_username: yang
categories: []
created_at: 2025-06-03T22:42:31.611Z
updated_at: 2025-06-03T22:42:31.611Z
url: https://n8n.io/workflows/4632
scraped_at: 2025-09-14 19:11:01
metadata_generated_at: 2025-09-14 21:18:33
description:
  Who is this for?
  This workflow is perfect for lead generation experts, digital marketers, SEO professionals, and virtual assistants who need to quickly collect local business information based on specific search terms without manually navigating Google Places.

  What problem is this workflow solving?
  Manually searching Google Places for business leads is time-consuming and inconsistent. This workflow automates the entire process using Dumpling AI’s Google Places search endpoint, helping users collect accurate and structured business data and log it into a Google Sheet automatically.

  What this workflow does
  This workflow runs daily at 1 PM. It starts by reading a list of business-related search terms from a Google Sheet (for example, “dentists in Dallas”). Each term is sent to Dumpling AI’s search-places endpoint, which returns local business listings from Google Places. The data is split, structured, and logged row-by-row in a connected Google Sheet.

  Nodes Overview

  Run Every Day at 1 PM  
     A scheduled trigger that executes the workflow daily.

  Google Sheets (Input) – Fetch Search Terms from Sheet  
     Pulls a list of search terms from a Google Sheet. Each term should describe a business category and location (e.g., “coffee shops in Atlanta”).

  HTTP Request – Scrape Google Places via Dumpling AI  
     Sends each search term to Dumpling AI’s /search-places endpoint, returning data like business names, phone numbers, websites, ratings, and categories.

  Split In Batches – Split Places Result  
     Breaks the list of businesses returned for each search term into individual items for processing.

  Google Sheets (Output) – Save Each Business to Sheet  
     Saves the scraped data into a second Google Sheet. Each row contains:
     title
     address
     rating
     category
     phoneNumber
     website

  📝 Notes

  You must set up Dumpling AI and generate your API key from: Dumpling AI
  You can change the run schedule in the schedule node to fit your needs (e.g., weekly or hourly).

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote"]

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

metadata_json:
  {"categories":["automation","data extraction","integration","lead generation"],"complexity":"medium","use_cases":["Lead generation and prospecting","Local SEO research","Sales outreach list building","Business data enrichment","Automated data collection and logging"],"estimated_setup_minutes":15,"required_services":["Dumpling AI (Google Places /search-places endpoint)","Google Sheets (Google Workspace account)","Internet access / API connectivity"],"key_features":["Scheduled daily run (configurable)","Send search terms to Dumpling AI and receive Google Places results","Split batch results into individual business items","Auto-save structured business fields (title, address, rating, category, phoneNumber, website) to Google Sheets","Simple configuration of search terms via Google Sheets"],"target_audience":["Lead generation specialists","Digital marketers","SEO professionals / local search analysts」「Virtual assistants / operations teams"]}


name: Generate Captions from Autocomplete Ideas using Dumpling AI + GPT-4o
author_name: Yang
author_username: yang
categories: []
created_at: 2025-06-03T22:53:46.256Z
updated_at: 2025-06-03T22:53:46.256Z
url: https://n8n.io/workflows/4633
scraped_at: 2025-09-14 19:11:02
metadata_generated_at: 2025-09-14 21:18:33
description:
  📌 Who is this for?

  This workflow is perfect for social media managers, content creators, digital marketers, and copywriters who want to save time and stay relevant by automatically generating fresh caption ideas based on trending search behavior.

  💡 What problem is this workflow solving?

  Manually coming up with engaging social media content is time-consuming and often hit-or-miss. This workflow leverages Google autocomplete to identify what users are searching for, then uses AI to convert those suggestions into short, engaging captions for use on platforms like Instagram, LinkedIn, or Twitter.

  ⚙️ What this workflow does

  This automation runs daily at noon and transforms trending search topics into ready-to-use captions:

  Run Every Day at 12 PM  
     A schedule trigger that activates the workflow once per day.

  Get Search Keywords from Google Sheet  
     Pulls a list of base search phrases from a Google Sheet which serve as the starting point for getting trending autocomplete terms.

  Fetch Autocomplete Suggestions (Dumpling AI)  
     Calls Dumpling AI’s get-autocomplete endpoint using the base phrase to return Google autocomplete suggestions.  
     API Reference →

  Format Suggestions into Array  
     Formats the list of returned suggestions into an array format that can be looped through.

  Loop Through Each Autocomplete Suggestion  
     Splits the array into individual suggestions to process each one separately.

  Generate Caption from Suggestion (GPT-4o)  
     Sends each suggestion to GPT-4o with a detailed system prompt to create a short, human-sounding, engaging caption under 280 characters.

  Save Keyword & Generated Caption to Google Sheet  
     Saves both the original search suggestion and the generated caption to another tab in Google Sheets for content scheduling or review.

  This workflow combines real-time search trend data with the power of AI to keep your social media feed fresh, relevant, and consistent — all without lifting a finger.

nodes_used:
  ["n8n-nodes-base.scheduleTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.splitOut","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote"]

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

metadata_json:
  {"categories":["automation","content-generation","social-media","ai-integration","data-processing"],"complexity":"medium","use_cases":["Generate short social media captions from trending search queries","Automate daily content ideation based on Google autocomplete","Build a caption bank in Google Sheets for scheduling/review","Convert search intent into concise, platform-ready copy"],"estimated_setup_minutes":20,"required_services":["Google Sheets","Dumpling AI (autocomplete API)","OpenAI (GPT-4o)"],"key_features":["Daily scheduled run","Pulls base phrases from Google Sheets","Fetches Google autocomplete suggestions via Dumpling AI","Formats and loops through suggestions","Generates sub-280 character captions using GPT-4o with a system prompt」「Saves suggestions and captions back to Google Sheets for review"],"target_audience":["Social media managers","Content creators","Digital marketers','Copywriters"]}


name: Reschedule Google Calendar Appointments with Stream Deck (15/30/60 min)
author_name: David Ashby
author_username: cfomodz
categories: []
created_at: 2025-06-03T23:24:33.784Z
updated_at: 2025-06-03T23:24:33.784Z
url: https://n8n.io/workflows/4634
scraped_at: 2025-09-14 19:11:03
metadata_generated_at: 2025-09-14 21:18:33
description:
  Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

  Join the community

  ⏰ Move All Appointments 15/30/60 Minutes Later Via Stream Deck

  Running a bit behind? 😅

  Shift your day's remaining Google Calendar appointments by 15, 30, or 60 minutes with one press of a stream deck button!

  tl;dr

  This template is your lifesaver for those days when things get hectic. With dedicated buttons on your Stream Deck, you can instantly push all subsequent Google Calendar appointments for the current day forward by 15, 30, or 60 minutes, automatically notifying all attendees.

  Why You'll Love This Workflow ❤️:

      One-Click Reschedule: No more manually editing each calendar event. One press, and your day is adjusted!
      Stream Deck Powered: Integrates seamlessly with your Elgato Stream Deck using the API Ninja plugin.
      Flexible Delays: Choose between 15, 30, or 60-minute adjustments with separate buttons.
      Smart Event Fetching: Automatically grabs all remaining appointments for the current day from your specified Google Calendar.
      Attendee Notifications: Keeps everyone in the loop by sending standard Google Calendar update notifications.
      Peace of Mind: Your "graceful delay" button when you need a few extra minutes.

  Perfect For 🧑‍💻:

      Busy professionals managing a packed schedule.
      Streamers and content creators who need to adjust live sessions or meetings on the fly.
      Anyone who juggles back-to-back Google Calendar appointments and uses a Stream Deck for peak efficiency.

  Streamlined Setup Guide 🛠️:

  1️⃣ Install the "API Ninja" plugin

  2️⃣ n8n Webhook Configuration:
  (choose a username and password).

  3️⃣ Stream Deck Buttons:
  Create three "API Ninja" buttons on your Stream Deck.
  Configure each button to make a POST request to its corresponding n8n webhook

  4️⃣ Google Calendar Connection:
  In each of the "Get the Events..." and "Push All Meetings..." Google Calendar nodes, select your Google Calendar account (or create a new credential).
  Update the "Calendar" field

  5️⃣ Activate & Test! Your Stream Deck buttons should now be ready to dynamically adjust your day.

  Important Notes 📝:

      Calendar Selection: Ensure you've correctly selected your target calendar in all Google Calendar nodes.
      Error Handling: The workflow includes basic error handling to respond with a 500 error if issues occur (like not finding events), otherwise, it responds with a 200 success code.
      Attendee Impact: Remember this will move all remaining events for the day and send updates to all attendees of those events.

  Take control of your schedule with this powerful Stream Deck and n8n automation. Never stress about manually pushing meetings again! ✨

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

workflow_json_compressed:
  H4sIAAAAAAAAE82XW2/cNhCF/4rAZ03Ay5AU961wgrZA0hZO0z4YfuBlaAvelbYSt65h7H8vJBtxCnu362v7JkEj8Xwc8vDomq2oeLa4Zm03Ft9F+jGxBWucEmRT0E5G6QyPJLVquCAvHY8iRWMI0VqFkVRyplGCK6ON0ZFybDirWaHVeukLHQ2Uxs9UNuujfrVeUqHEFmXY0LZmXZ9oZIuTa9bOo+aQrLQCdIoW0GcDIZsMSaI2FnU20rGadX5FbMG+p1KVc6o+/EldGavcD/PtMY2l6vN8/d5fTUqu1lN913QwDwjBj/TurO/PlnTkl9QlP7Ca9d2HYegHtmCx70rbbWi+/3lT1pvCarbux7a0fccWJyCR15Kf1mztB7+iQsPIFtfbm7F+o2Gc68Q7ta1v2TyZ4GWQkDhObBjBBzIQVRCG6yAl6Tu2YxrXfZeqy7acV5LznRTDTeGv/e8Uzvv+4p86peE1CDxAqPwq1DpHnFKCSBEBA1nwChuglDOpLNHyfCf0h3ZqQjtWX44/VnnoV9XnMpBfJYoX1Xkp62qgPzZTS8KmlL7bCXL5kH7QnNcwT/Tt83l1UkSZlHcQLRlAESX4mDxQMjxJZ30QyP4F+Q44eQx5IpQZA6BPGkJyGowIzhjSyTh5B/zLZjyvvlsuq09Epe3Oxkrx6lPbbQqN1UdfaHilFcdraA5ZcTXzy0t/Nd585b2fdvfNdrvlzUopI6UBzgMH9EFCsBlBYsqUODVJ7OU1b8Wr+IvwKhUQRXJgJy9BKxrwxjdAIltrBUcu+T5eod+qv2heBFhw4kFShGwlB9S+gYDBgtOBvFPGCdM81kYrs9uDnu2keFCjv/Kh5YjJEziuENB7C8H7BNkmIYMSERt6ukPtI91tUsq8rkkFkUnaIMBgEwCdbKCx2YNJGqNsYnTeP4NZ6KcY803fXg9ap8ytmyjJJkBrHPiQENBpS9FEKxJ/9ELeg/rshQzqoB18d9baicM4iDIlQBQIXiJCcjJTaDw6EXeEAv2sUPC4SKA1V8omA140AjBxDcEqDl6rEHNSXtlv+vC5tPHiqvqpL7RT4TjX3JZ8O4tNM83ifXlzA6grbMHYPanb03p63lGcPjOXH2Dji2u28u006sn1nET35q65tGZtl+gvtuDb03rHW3rvW6fb+pAI8T/Sdu+4/8+0HRj4H9L3mNT25oonSzpM9O4o8vaiDT9Q9O68+IKiH/0f8pD2x/5RvoiSXd1/wnH2Mnp2NPYJOfEBPdvt31/Mf1NyEAAA

metadata_json:
  {"categories":["automation","integration","productivity","calendar"],"complexity":"medium","use_cases":["Shift all remaining Google Calendar events for the day by a chosen delay (15/30/60 minutes)","Notify attendees automatically after rescheduling","Quickly adjust schedules from a Stream Deck button","Automate last‑minute schedule changes for live sessions or meetings","Centralize one‑click calendar management"],"estimated_setup_minutes":15,"required_services":["Google Calendar account / API access","n8n instance (with webhook access)","Elgato Stream Deck with API Ninja plugin (or equivalent HTTP plugin)","Publicly reachable webhook endpoint or n8n cloud"],"key_features":["One‑click reschedule via Stream Deck","Three preset delay options: 15, 30, 60 minutes","Automatically fetches remaining events for the current day","Updates events in Google Calendar and sends attendee notifications","Uses n8n webhooks and basic error handling (200/500 responses)"],"target_audience":["Busy professionals and executives","Streamers and content creators","Operations/admin assistants managing meetings at scale\",\"Developers or power users configuring n8n automations"]}


name: Extract & Enrich LinkedIn Comments to Leads with Apify → Google Sheets/CSV
author_name: Saverflow AI
author_username: saverflowai
categories: []
created_at: 2025-06-04T02:39:54.846Z
updated_at: 2025-06-04T02:39:54.846Z
url: https://n8n.io/workflows/4635
scraped_at: 2025-09-14 19:10:59
description:
  🚀 LinkedIn Comments to Leads Extractor & Enricher (Apify) → Google Sheets / CSV

  Overview

  Automate LinkedIn lead generation by scraping comments from targeted posts and enriching profiles with detailed data

  This n8n workflow automatically extracts leads from LinkedIn post comments using Apify's powerful scrapers (no LinkedIn login required), enriches the data with additional profile information, and exports everything to Google Sheets or CSV format.

  ✨ Key Features

  🔍 No Login Required: Scrape LinkedIn data without sharing credentials
  💰 Cost-Effective: First 1,000 comments are free with Apify
  📊 Data Enrichment: Enhance basic comment data with full profile details
  📈 Export Options: Choose between Google Sheets or CSV output
  🎯 Targeted Scraping: Focus on specific posts for quality leads

  🛠️ Apify Scrapers Used

  1. LinkedIn Post Comments Scraper
  Tool**: LinkedIn Post Comments, Replies, Engagements Scraper | No Cookies
  Pricing**: $5.00 per 1,000 results
  Function**: Extracts all comments and engagement data from specified LinkedIn posts

  2. LinkedIn Profile Batch Scraper
  Tool**: LinkedIn Profile Details Batch Scraper (No Cookies Required)
  Pricing**: $5.00 per 1,000 results
  Function**: Enriches scraped profiles with detailed information

  &gt; 💡 Free Tier: Apify provides 1,000 free scraped comments to get you started!

  📋 Prerequisites

  Required API Credentials

  Apify Token
     Add your APIFY_TOKEN to the workflow credentials
     Get your token from Apify Console

  Google Sheets Credentials (if using Sheets export)
     Configure OAuth credentials for Google Sheets integration
     Follow n8n's Google Sheets setup guide

  🔄 Workflow Process

  Default Mode: Form-Based Execution

  Manual Trigger → Launches the workflow
  Form Submission → User-friendly form for inputting LinkedIn post URLs
  Comment Scraping → Apify extracts all comments from specified posts
  Profile Enrichment → Additional profile data gathered for each commenter
  Data Processing → Creates unique, enriched lead list
  Google Sheets Export → Automatically populates your spreadsheet

  Result: You'll be redirected to a Google Sheets document containing all enriched leads

  Alternative Mode: CSV Export

  For users preferring CSV output:

  Disable: Form trigger nodes
  Enable: Manual trigger node
  Disable: Google Sheets export nodes
  Enable: CSV download nodes
  Configure: Add post IDs/URLs in "Set manual fields" node
  Execute: Run workflow and download CSV from the CSV node

  📊 Output Data Structure

  Your exported data will include:

  Basic Info**: Name, headline, location
  Profile Details**: Company, position, industry
  Engagement Data**: Comment content, engagement metrics
  Contact Info**: Available profile links and connections
  Enriched Data**: Additional profile insights from Apify

  💡 Pro Tips

  Quality over Quantity**: Target posts with high-quality, relevant engagement
  Monitor Costs**: Track your Apify usage to stay within budget
  Data Hygiene**: Regularly clean and deduplicate your lead lists
  Compliance**: Ensure your scraping activities comply with LinkedIn's terms of service

  🆘 Troubleshooting

  Common Issues:
  Authentication Errors**: Verify your Apify token is correctly configured
  Empty Results**: Check that your LinkedIn post URLs are valid and public
  Export Failures**: Ensure Google Sheets credentials are properly set up

  Need Help? Contact Saverflow.ai for support and custom workflow development.

nodes_used:
  ["n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.formTrigger","n8n-nodes-base.set","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.splitOut","n8n-nodes-base.aggregate","n8n-nodes-base.set","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.splitOut","n8n-nodes-base.splitInBatches","n8n-nodes-base.splitInBatches","n8n-nodes-base.code","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.aggregate","n8n-nodes-base.convertToFile","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.googleSheets","n8n-nodes-base.code","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.noOp"]

workflow_json_compressed:
  [encoded data, 10796 characters]


name: Automate Social Media Content with AI for Instagram, Facebook, LinkedIn & X
author_name: LukaszB
author_username: lukaszb
categories: []
created_at: 2025-06-04T03:00:43.654Z
updated_at: 2025-06-04T03:00:43.654Z
url: https://n8n.io/workflows/4637
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:31
description:
  AI Social Media Content Automation – n8n Workflow

  This workflow is built for creators, solopreneurs, SaaS founders, and agencies looking to automate their social media content process from idea to publication. It combines the power of OpenAI, Google Sheets, and official APIs for Instagram, Facebook, X (Twitter), and LinkedIn to deliver fully automated, brand-consistent social media posts — including text, images, hashtags, CTAs, and scheduling.

  No more switching tools, rewriting content, or forgetting to post. Just set it up once and let your brand grow automatically.

  🔧 What the Workflow Does
  Generates platform-specific post ideas based on your brand tone.
  Selects the best idea (or lets you manually input one).
  Writes tailored posts for Instagram, Facebook, X, and LinkedIn.
  Auto-generates platform-specific visuals using OpenAI (DALL·E) and uploads to Cloudinary.
  Publishes content directly using official platform APIs.
  Logs all actions to Google Sheets and optionally sends a summary email via Gmail.

  ⚙️ How It Works
  Trigger the workflow manually, on a schedule, or from a chatbot.
  AI generates multiple post ideas and filters the best one.
  Based on the selected idea, it generates full posts for each platform.
  Custom visuals are created using OpenAI and uploaded to Cloudinary.
  Final post content is merged and sent to Instagram, Facebook, X, and LinkedIn.
  Logs and optional reports are created in Google Sheets and Gmail.

  🛠️ Setup Steps
  Set up your accounts and credentials: OpenAI, Cloudinary, Gmail, Meta, LinkedIn, X, and Google Sheets.
  Import the workflow and subworkflow (Get Brand Brief) into n8n.
  Replace all placeholders (sheet IDs, access tokens, profile/page IDs, brand brief URLs).
  Optionally personalize prompts and output templates to match your brand voice.
  Setup time: ~30–45 minutes (including credentials and testing).

  Detailed configuration notes are included in sticky nodes throughout the workflow.

  📦 Included in Your Package
  JSON workflow file (main flow + brand brief subflow)
  Google Sheets templates for history logging
  Setup documentation (Markdown & PDF)
  Placeholder reference sheet

nodes_used:
  ["@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.toolWorkflow","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.executeWorkflow","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.chainLlm","n8n-nodes-base.manualTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.executeWorkflowTrigger","n8n-nodes-base.notion","n8n-nodes-base.aggregate","n8n-nodes-base.set","n8n-nodes-base.stickyNote","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.stickyNote","n8n-nodes-base.merge","n8n-nodes-base.merge","n8n-nodes-base.twitter","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.linkedIn","n8n-nodes-base.merge","n8n-nodes-base.set","@n8n/n8n-nodes-langchain.chatTrigger","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","n8n-nodes-base.googleSheetsTool","@n8n/n8n-nodes-langchain.toolWorkflow","n8n-nodes-base.googleSheetsTool","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.openAi","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.merge","n8n-nodes-base.gmail","n8n-nodes-base.aggregate","n8n-nodes-base.stickyNote","n8n-nodes-base.googleSheets","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.merge","n8n-nodes-base.set","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.googleSheets","n8n-nodes-base.googleDocs","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 5204 characters]

metadata_json:
  {"categories":["automation","integration","social media","content generation","marketing"],"complexity":"medium","use_cases":["Automated cross‑platform social posting (Instagram, Facebook, X, LinkedIn)","AI‑generated post ideas and platform‑specific copy","Auto‑generate and upload visuals (DALL·E → Cloudinary)","Scheduling and direct publishing via official APIs","Logging history and sending summary reports to Google Sheets/Gmail"],"estimated_setup_minutes":40,"required_services":["n8n","OpenAI (ChatGPT / DALL·E)","Cloudinary","Google Sheets","Gmail","Meta Graph API (Instagram & Facebook)","LinkedIn API","X (Twitter) API"],"key_features":["Generates brand‑consistent, platform‑specific post ideas and copy","Selects or accepts manual idea input","Auto‑creates visuals with OpenAI and uploads to Cloudinary","Publishes directly using official platform APIs","Logs actions to Google Sheets and optional Gmail summaries」「Includes reusable Brand Brief subworkflow and editable prompt templates"],"target_audience":["creators","solopreneurs","SaaS founders」「agencies」「social media managers」「marketers"]}


name: 🎙️ VoiceFlow AI: Telegram + Deepgram + OpenAI + Supabase Audio Assistant
author_name: RedOne
author_username: redone
categories: []
created_at: 2025-06-04T03:05:18.646Z
updated_at: 2025-06-04T03:05:18.646Z
url: https://n8n.io/workflows/4638
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:33
description:
  🎙️ AI Audio Assistant with Voice-to-Voice Response

  Who is this for?
  Businesses, customer service teams, content creators, and organizations who want to provide intelligent voice-based interactions through Telegram. Perfect for accessibility-focused services, multilingual support, or hands-free customer assistance.

  What problem does this solve?
  Enables natural voice conversations with AI
  Breaks down language and accessibility barriers
  Provides instant voice responses to customer queries
  Reduces typing requirements for users
  Offers 24/7 voice-based customer support
  Maintains conversation context across voice interactions

  What this workflow does:
  Receives voice messages via Telegram bot
  Transcribes audio using Deepgram's advanced speech-to-text
  Processes transcribed text through AI agent with knowledge base access
  Generates intelligent responses based on conversation context
  Converts AI response to natural-sounding speech using Deepgram TTS
  Sends audio response back to user via Telegram
  Maintains conversation memory for contextual interactions

  🔧 Technical Architecture

  Core Components:
  Telegram Bot**: Receives and sends voice messages
  Deepgram STT**: Transcribes voice to text with high accuracy
  OpenAI GPT**: Processes queries and generates responses
  Supabase Knowledge Base**: Stores and retrieves business information
  Memory Management**: Maintains conversation context
  Deepgram TTS**: Converts text responses to natural speech

  Data Flow:
  Voice Message → Telegram API → File Download
  Audio File → Deepgram STT → Transcript
  Transcript → AI Agent → Response Generation
  Response → Deepgram TTS → Audio File
  Audio Response → Telegram → User

  🛠️ Setup Instructions

  Prerequisites
  Telegram Bot Token
     Create bot via @BotFather
     Get bot token and configure webhook

  Deepgram API Key
     Sign up at deepgram.com
     Get API key for STT and TTS services
     Note: Currently hardcoded in workflow

  OpenAI API Key
     OpenAI account with API access
     Configure in OpenAI Chat Model node

  Supabase Database
     Create Supabase project
     Set up knowledge_base table
     Configure API credentials

  Step-by-Step Setup

  Configure Telegram Bot
        Update telegramToken in "Prepare Voice Message Data" node
     Set correct bot token in Telegram nodes
     Test bot connectivity
     
  Set Up Deepgram Integration
        Replace API key in "Transcribe with Deepgram" node
     Update TTS endpoint in "HTTP Request" node
     Test voice transcription accuracy
     
  Configure Knowledge Base
        -- Create knowledge_base table in Supabase
     CREATE TABLE knowledge_base (
       id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
       question TEXT NOT NULL,
       answer TEXT NOT NULL,
       category VARCHAR(100),
       keywords TEXT[],
       created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
     );
     
  Customize AI Prompts
     Update system message in "Telegram AI Agent" node
     Adjust temperature and max tokens in OpenAI model
     Configure memory session keys

  Test End-to-End Flow
     Send test voice message to bot
     Verify transcription accuracy
     Check AI response quality
     Validate audio output clarity

  🎛️ Configuration Options

  Voice Recognition Settings
  Model**: nova-2 (Deepgram's latest model)
  Language**: English (en) - can be changed
  Smart Format**: Enabled for better punctuation

  AI Response Settings
  Temperature**: 0.3 (conservative responses)
  Max Tokens**: 100 (adjust based on needs)
  Memory**: Session-based conversation context

  Text-to-Speech Settings
  Model**: aura-2-thalia-en (natural female voice)
  Alternative voices**: Available in Deepgram TTS API
  Audio Format**: Optimized for Telegram

  🔒 Security Considerations

  API Key Management
  // Current implementation has hardcoded tokens
  // Recommended: Use environment variables
  const telegramToken = process.env.TELEGRAM_BOT_TOKEN;
  const deepgramKey = process.env.DEEPGRAM_API_KEY;

  Data Privacy
  Voice messages are processed by external APIs
  Consider data retention policies
  Implement user consent mechanisms
  Ensure GDPR compliance if applicable

  📊 Monitoring & Analytics

  Key Metrics to Track
  Voice message processing time
  Transcription accuracy rates
  AI response quality scores
  User engagement metrics
  Error rates and failure points

  Recommended Logging
  // Add to workflow for monitoring
  console.log({
    timestamp: new Date().toISOString(),
    user_id: userData.user_id,
    transcript_confidence: transcriptData.confidence,
    response_length: aiResponse.length,
    processing_time: processingTime
  });

  🚀 Customization Ideas

  Enhanced Features
  Multi-language Support
     Add language detection
     Support multiple TTS voices
     Translate responses

  Voice Commands
     Implement wake words
     Add voice shortcuts
     Create voice menus

  Advanced AI Features
     Sentiment analysis
     Intent classification
     Escalation triggers

  Integration Expansions
     Connect to CRM systems
     Add calendar scheduling
     Integrate with help desk tools

  Performance Optimizations
  Implement audio preprocessing
  Add response caching
  Optimize API call sequences
  Implement retry mechanisms

  🐛 Troubleshooting

  Common Issues

  Voice Not Transcribing
  Check Deepgram API key validity
  Verify audio format compatibility
  Test with shorter voice messages

  Poor Audio Quality
  Adjust TTS model settings
  Check network connectivity
  Verify Telegram audio limits

  AI Responses Too Generic
  Improve knowledge base content
  Adjust system prompts
  Increase context window

  Memory Not Working
  Check session key configuration
  Verify user ID extraction
  Test conversation continuity

  💡 Best Practices

  Voice Interface Design
  Keep responses concise and clear
  Use natural speech patterns
  Avoid technical jargon
  Provide clear next steps

  Knowledge Base Management
  Regular content updates
  Clear categorization
  Keyword optimization
  Quality assurance testing

  User Experience
  Fast response times (&lt;5 seconds)
  Consistent voice personality
  Graceful error handling
  Clear capability communication

  📈 Success Metrics

  Technical KPIs
  Response time: &lt;3 seconds average
  Transcription accuracy: &gt;95%
  User satisfaction: &gt;4.5/5
  Uptime: &gt;99.5%

  Business KPIs
  Customer query resolution rate
  Support ticket reduction
  User engagement increase
  Cost per interaction decrease

  🔄 Maintenance Schedule

  Daily
  Monitor error logs
  Check API rate limits
  Verify service uptime

  Weekly
  Review conversation quality
  Update knowledge base
  Analyze usage patterns

  Monthly
  Performance optimization
  Security audit
  Feature updates
  User feedback review

  📚 Additional Resources

  Documentation Links
  Deepgram STT API
  Deepgram TTS API
  Telegram Bot API
  OpenAI API
  Supabase Documentation

  Community Support
  n8n Community Forum
  Telegram Bot Developers Group
  Deepgram Developer Discord
  OpenAI Developer Community

  Note: This template requires active API subscriptions for Deepgram and OpenAI services. Costs may apply based on usage volume.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.httpRequest","n8n-nodes-base.set","n8n-nodes-base.set","n8n-nodes-base.supabaseTool","@n8n/n8n-nodes-langchain.memoryBufferWindow","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.agent","n8n-nodes-base.if","n8n-nodes-base.if","n8n-nodes-base.telegramTrigger","n8n-nodes-base.httpRequest","n8n-nodes-base.telegram","n8n-nodes-base.stickyNote","n8n-nodes-base.if","n8n-nodes-base.telegram"]

workflow_json_compressed:
  [encoded data, 5204 characters]

metadata_json:
  {"categories":["voice-assistant","automation","integration","AI-powered support","customer service"],"complexity":"complex","use_cases":["Voice-based customer support via Telegram","Accessibility and hands-free interactions","Multilingual voice assistants","Knowledge-base driven Q&A","24/7 automated voice responses"],"estimated_setup_minutes":60,"required_services":["Telegram Bot API","Deepgram (STT & TTS)","OpenAI (Chat/LLM)","Supabase (knowledge base)","n8n instance or compatible workflow runner"],"key_features":["Receives Telegram voice messages and downloads audio","Deepgram STT for accurate transcription","OpenAI agent for contextual response generation","Supabase-backed knowledge base lookup","Deepgram TTS to produce natural-sounding audio replies sent to Telegram"],"target_audience":["Businesses","Customer support teams","Content creators and podcasters focused on voice UX/UX accessibility teams"]}


name: Competitor Price Monitoring with Web Scraping,Google Sheets & Telegram
author_name: Tony Paul
author_username: tonydatahut
categories: []
created_at: 2025-06-04T03:40:59.974Z
updated_at: 2025-06-04T03:40:59.974Z
url: https://n8n.io/workflows/4640
scraped_at: 2025-09-14 19:10:59
metadata_generated_at: 2025-09-14 21:18:32
description:
  How it works

  ++Download the google sheet here++ and replace this with the googles sheet node: Google sheet , upload to google sheets and replace in the google sheets node.

  Scheduled trigger: Runs once a day at 8 AM (server time).

  Fetch product list: Reads your “master” sheet (product_url + last known price) from Google Sheets.

  Loop with delay: Iterates over each row (product) one at a time, inserting a short pause (20 s) between HTTP requests to avoid blocking.

  Scrape current price: Loads each product_url, extracts the current price via a simple CSS selector.

  Compare & normalize: Compares the newly scraped price against the “last_price” from your sheet, calculates percentage change, and tags items where price_changed == true.

  On price change:
  Send alert: Formats a Telegram message (“Price Drop” or “Price Hike”) and pushes it to your configured chat.

  Log history: Appends a new row to a separate “price_tracking” tab with timestamp, old price, new price, and % change.

  Update master sheet: After a 1 min pause, writes the updated current_price back to your “master” sheet so future runs use it as the new baseline.

  Set up step
  Google Sheets credentials (~5 min)
  Create a Google Sheets OAuth credential in n8n. 
  Copy your sheet’s ID and ensure you have two tabs: 
  product_data (columns: product_url, price) 
  price_tracking (columns: timestamp, product_url, last_price, current_price, price_diff_pct, price_changed) 
  Paste the sheet ID into both Google Sheets nodes (“Read” and “Append/Update”). 
  Telegram credentials (~5 min) 
  Create a Telegram Bot token via BotFather. 
  Copy your chat_id (for your target group or personal chat). 
  Add those credentials to n8n and drop them into the “Telegram” node.

  Workflow parameters (~5 min)

  Verify the schedule in the Schedule Trigger node is set to 08:00 (or adjust to your preferred run time).

  In the Loop Over Items node, confirm “Batch Size” is 1 (to process one URL at a time).
   
  Adjust the Delay to avoid Request Blocking node if your site requires a longer pause (default is 20 s).
   
  In the Parse Data From The HTML Page node, double-check the CSS selector matches how prices appear on your target site.
   
  Once credentials are in place and your sheet tabs match the expected column names, the flow should be ready to activate. Total setup time is under 15 minutes—detailed notes are embedded as sticky comments throughout the workflow to help you tweak selectors, change timeouts, or adjust sheet names without digging into code.

nodes_used:
  ["n8n-nodes-base.stickyNote","n8n-nodes-base.scheduleTrigger","n8n-nodes-base.googleSheets","n8n-nodes-base.splitInBatches","n8n-nodes-base.wait","n8n-nodes-base.httpRequest","n8n-nodes-base.html","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.code","n8n-nodes-base.if","n8n-nodes-base.code","n8n-nodes-base.googleSheets","n8n-nodes-base.wait","n8n-nodes-base.googleSheets","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.stickyNote","n8n-nodes-base.stickyNote"]

workflow_json_compressed:
  [encoded data, 6904 characters]

metadata_json:
  {"categories":["automation","data processing","web scraping","monitoring","integration"],"complexity":"medium","use_cases":["Competitor price monitoring","Automated price-change alerts","Market / pricing research","E‑commerce price tracking","Historical price logging and analysis"],"estimated_setup_minutes":15,"required_services":["Google Sheets (Google Sheets API / OAuth credential)","Telegram Bot API (Bot token and chat_id)","Target websites/pages to scrape (HTTP access)","n8n instance (workflow runtime)"],"key_features":["Daily scheduled run (Schedule Trigger)","Reads product master list from Google Sheets","Serial scraping with delay to avoid blocking (splitInBatches + Delay)","Extracts price via CSS selector (HTML parse)","Compares and normalizes prices, computes % change and flags changes
  (If/Code nodes and normalization logic)"],"target_audience":["E‑commerce managers","Pricing analysts","Small business owners selling online products/services who monitor competitors' prices"]}


