# templates

name: Auto-Publish Latest News on X with AI Content Generation using Keywords and Bright Data
author_name: Dvir Sharon
author_username: dvirsharon
categories: []
created_at: 2025-06-01T11:55:19.435Z
updated_at: 2025-06-01T11:55:19.435Z
url: https://n8n.io/workflows/4556
scraped_at: 2025-07-06 21:16:30
description:
  📰 Publish Latest News on X and Other Social Media Platforms Using Keyword

  A comprehensive n8n automation that fetches the latest news based on keywords, generates AI-powered social media content, and automatically publishes to X (Twitter) with complete tracking and notification systems.

  📋 Overview

  This workflow provides a professional news publishing solution that automatically discovers breaking news, creates engaging social media content using AI, and publishes to X (Twitter) with comprehensive tracking. Perfect for news organizations, content creators, social media managers, and businesses wanting to stay current with automated news sharing. The system uses BrightData's Google News dataset, OpenAI's GPT-4o for content generation, and multi-platform integration for complete automation.

  ⭐ Key Features

  📝 Form-Based Input**: Clean web form for keyword and country submission
  📰 Real-Time News Fetching**: BrightData Google News integration for latest articles
  🤖 AI Content Generation**: GPT-4o powered tweet creation with hashtags
  📱 Auto X Publishing**: Direct posting to X (Twitter) with URL tracking
  📊 Complete Tracking**: Google Sheets logging of all published content
  🔔 Email Notifications**: Success alerts with tweet links
  🌍 Multi-Country Support**: Localized news for US, India, UK, Australia
  ⚡ Status Monitoring**: Real-time progress tracking with retry logic
  🛡 Error Handling**: Robust error management and validation
  🔄 Loop Management**: Intelligent waiting for news processing completion

  🎯 What This Workflow Does

  Input:

  News Name**: Keyword or topic for news search (required)
  Country**: Target country for localized news (dropdown: US/IN/GB/AU)

  Processing:

  Form Submission: Captures news keyword and target country
  News Triggering: Initiates BrightData Google News scraping job
  Status Monitoring: Checks scraping progress with intelligent retry loop
  Data Retrieval: Fetches latest news articles when ready
  AI Content Creation: Generates engaging tweet content using GPT-4o
  Social Publishing: Posts content to X (Twitter) automatically
  URL Generation: Creates direct tweet links for tracking
  Data Logging: Saves content and URLs to Google Sheets
  Email Notification: Sends success confirmation with tweet link
  Completion: Workflow ends with full audit trail

  📋 Output Data Points

  | Field         | Description                         | Example                                                                                                |
  | :------------ | :---------------------------------- | :----------------------------------------------------------------------------------------------------- |
  | TweetMessage  | AI-generated social media content | "Breaking: AI revolution transforming healthcare with 40% efficiency gains. New study shows promising results in patient care automation. #AI #Healthcare #Innovation #TechNews #US" |
  | TweetURL      | Direct link to published tweet      | https://twitter.com/i/web/status/1234567890123456789                                                 |

  🛠️ Setup Instructions

  Prerequisites:

  n8n instance (self-hosted or cloud)
  X (Twitter) account with API v2 access
  OpenAI account with GPT-4o access
  Gmail account for notifications
  Google account with Sheets access
  BrightData account with Google News dataset access
  Basic understanding of social media automation

  Step 1: Import the Workflow

  Copy the JSON workflow code from the provided file.
  In n8n, click "+ Add workflow".
  Select "Import from JSON".
  Paste the workflow code and click "Import".
  The workflow will appear with all nodes properly connected.

  Step 2: Configure API Credentials

  X (Twitter) API Setup:

  Create X Developer Account at developer.twitter.com.
  Create new app and generate API keys.
  In n8n: Credentials → + Add credential → Twitter OAuth2 API.
  Add your Twitter API credentials:
      API Key
      API Secret Key
      Bearer Token
      Access Token
      Access Token Secret
  Test the connection with a sample tweet.

  OpenAI API Configuration:

  Get API key from platform.openai.com.
  Ensure GPT-4o model access is available.
  In n8n: Credentials → + Add credential → OpenAI API.
  Add your OpenAI API key.
  Verify model access in the "OpenAI Chat Model" node.

  Gmail Integration:

  Create "Gmail OAuth2" credential.
  Follow OAuth setup process.
  Grant email sending permissions.
  Test with sample email.

  BrightData News API:

  The workflow uses pre-configured token: 5662edde-6735-4c5d-a6c6-693043a5a9a5.
  Dataset ID: gd_lnsxoxzi1omrwnka5r (Google News).
  Verify access to Google News dataset.
  Test API connection.

  Google Sheets Integration:

  Create "Google Sheets OAuth2 API" credential.
  Complete OAuth authentication.
  Grant read/write permissions.
  Test connection.

  Step 3: Configure Google Sheets Integration

  Create Google Sheets Structure:
      Sheet Name: "Publish Latest News on Social Media Platforms Using Keyword"
      Tab: "Data" (default)
      Columns:
          Tweet Message: AI-generated content posted to X
          Tweet URL: Direct link to published tweet
  Sheet Configuration:
      Create new Google Sheet or use existing one.
      Add the required column headers.
      Copy Sheet ID from URL: https://docs.google.com/spreadsheets/d/SHEET_ID_HERE/edit.
      Current configured Sheet ID: 1koxNrwdeuaSBdREuKc7JQh3d9blEk0sQDJ8VgVLjPOo.
  Update Workflow Settings:
      Open "Google Sheets" node.
      Replace Document ID with your Sheet ID.
      Select your Google Sheets credential.
      Choose "Data" sheet/tab.
      Verify column mapping is correct.

  Step 4: Configure Form Interface

  Form Settings:

  Open "On form submission" node.
  Form configuration:
      Title: "News Publisher"
      Description: "publish latest news to direct social media"
      Fields:
          News Name (text, required)
          Country (dropdown: US, IN, GB, AU, required)
      Webhook URL: Copy webhook URL from form trigger node.
      Current webhook ID: 8d320705-688c-4150-a393-cf899d2bbb52.
      Test form accessibility and submission.

  Step 5: Configure Email Notifications

  Gmail Setup:

  Open "Gmail" node.
  Update recipient email: raushan@iwantonlinemarketing.com.
  Email template includes:
      Success confirmation
      Direct tweet link
      Professional formatting
  Test email delivery.

  Step 6: Test the Workflow

  Sample Test Data:

  Use these examples for testing:

  | News Name             | Country | Expected Results                                   |
  | :-------------------- | :------ | :------------------------------------------------- |
  | artificial intelligence | US      | Latest AI news with US-specific hashtags           |
  | cricket world cup     | IN      | Sports news with India-focused content            |
  | brexit update         | GB      | UK political news with British hashtags            |
  | bushfire news         | AU      | Australian environmental news                      |

  Testing Process:

  Activate the workflow (toggle switch).
  Navigate to the webhook form URL.
  Submit test data.
  Monitor execution progress:
      News fetching (30-60 seconds)
      AI content generation (10-15 seconds)
      X publishing (5-10 seconds)
      Sheet update and email (5 seconds)
  Verify results in all platforms.

  📖 Usage Guide

  Using the Form Interface

  Navigate to the webhook URL provided by the form trigger.
  Enter news keyword or topic (e.g., "climate change", "stock market", "technology").
  Select target country from dropdown.
  Click submit and wait for processing.
  Check email for success notification with tweet link.

  Example Inputs to Test

  | News Name                         | Country | Expected                                               |
  | :-------------------------------- | :------ | :----------------------------------------------------- |
  | "artificial intelligence breakthrough" | "US"    | Latest AI developments with tech hashtags              |
  | "football premier league"         | "GB"    | UK football news with sports hashtags                  |
  | "stock market updates"            | "IN"    | Indian market news with finance hashtags                |
  | "hollywood movies"                | "AU"    | Entertainment news with Australian perspective         |

  Country-Specific Considerations

  United States (US)**:
      Focus on national news and global impact.
      Hashtags: #USA, #American, #Breaking, #News.
      Time zone considerations for optimal posting.
  India (IN)**:
      Emphasis on regional relevance.
      Hashtags: #India, #Indian, #News, #Breaking.
      Cultural context in content generation.
  United Kingdom (GB)**:
      British perspective and terminology.
      Hashtags: #UK, #British, #News, #Breaking.
      Focus on European context.
  Australia (AU)**:
      Australian angle and regional focus.
      Hashtags: #Australia, #Australian, #News, #Breaking.
      Pacific region context.

  📊 Reading the Results

  Google Sheets Data

  The output sheet contains:

  Complete tweet content with hashtags and formatting.
  Direct tweet URLs for easy access and sharing.
  Chronological record of all published content.
  Audit trail for content management.

  Email Notifications

  Success emails include:

  Confirmation that content was published.
  Direct link to view the tweet.
  Professional formatting for easy reference.

  X (Twitter) Posts

  Published content features:

  AI-optimized messaging within 260 character limit.
  Relevant hashtags based on topic and country.
  Engaging format designed for social media.
  Professional tone suitable for news sharing.

  🔧 Customization Options

  Expanding Social Media Platforms

  Add more platforms to the publishing workflow:

  // Add LinkedIn publishing
  {
    "node": "LinkedIn",
    "type": "n8n-nodes-base.linkedin",
    "parameters": {
      "text": "={{ $json.output }}",
      "additionalFields": {}
    }
  }
  // Add Facebook posting
  {
    "node": "Facebook",
    "type": "n8n-nodes-base.facebook",
    "parameters": {
      "pageId": "YOUR_PAGE_ID",
      "message": "={{ $json.output }}"
    }
  }

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.twitter","n8n-nodes-base.gmail","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json:
  {"id":"UcRJot2fG84lnzNa","meta":{"instanceId":"bc8ca75c203589705ae2e446cad7181d6f2a7cc1766f958ef9f34810e53b8cb2","templateCredsSetupCompleted":true},"name":"Publish Latest  News on X and Other Social Media Platforms Using Keyword","tags":[],"nodes":[{"id":"9208debf-56cf-4181-adce-b6fd25713142","name":"Check Final Status1","type":"n8n-nodes-base.if","position":[-500,40],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"35ed620d-b5d5-4e97-bcc5-52b283d85616","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"ready"}]}},"typeVersion":2.2},{"id":"906db788-b7c8-4f80-90ed-1d9a556e33d9","name":"On form submission","type":"n8n-nodes-base.formTrigger","position":[-1500,40],"webhookId":"8d320705-688c-4150-a393-cf899d2bbb52","parameters":{"options":{},"formTitle":"News Publisher","formFields":{"values":[{"fieldLabel":"News Name","placeholder":"news","requiredField":true},{"fieldType":"dropdown","fieldLabel":"Country","fieldOptions":{"values":[{"option":"US"},{"option":"IN"},{"option":"GB"},{"option":"AU"}]},"requiredField":true}]},"formDescription":"publish latest news to direct social medial"},"typeVersion":2.2},{"id":"e1462542-ddd9-417a-a467-6671e4d68fda","name":"Wait 1 Minutes","type":"n8n-nodes-base.wait","position":[-720,40],"webhookId":"10b45556-5e91-4387-abd0-f9078b220286","parameters":{"amount":30},"typeVersion":1.1},{"id":"53f4a578-b098-459e-bdad-ccf1e9508994","name":"AI Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[0,20],"parameters":{"text":"=You are a professional social media strategist. You'll receive three inputs: a news headline, a URL to the full article, and a country code. \nFirst, understand the headline like a news summary. Then analyze the URL content to extract or simulate key facts, context, quotes, or figures. Use the country code to adjust the tone and hashtags to suit the local audience. \nYour task is to write a post for X (formerly Twitter), within 260 characters, that is clear, engaging, and informative. \n- Do not include any intro, outro, publisher names, or brand mentions. \n- Only output the final tweet text with relevant, topic-based and country-specific hashtags.\n- always output in english langauge.\nhere is the title: \"{{ $json.title }}\" \nhere is the URL: \"{{ $json.url }}\"\ncountry code: \"{{ $json.country }}\"","options":{},"promptType":"define"},"typeVersion":2},{"id":"cfebdd34-a1f8-47b7-9e2f-8edea038a6b3","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[0,260],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o","cachedResultName":"gpt-4o"},"options":{}},"credentials":{"openAiApi":{"id":"bCyfZPZUcaKY4vYa","name":"OpenAi account 7"}},"typeVersion":1.2},{"id":"c9514ac6-f29c-490f-8d33-2409eea93973","name":"Get News URL from Google News","type":"n8n-nodes-base.httpRequest","position":[-220,20],"parameters":{"url":"=https://api.brightdata.com/datasets/v3/snapshot/{{ $json.snapshot_id }}","options":{},"sendQuery":true,"sendHeaders":true,"queryParameters":{"parameters":[{"name":"format","value":"json"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2},{"id":"30b391cb-f56f-4d27-b39c-a3db422c249f","name":"Fetch Latest News","type":"n8n-nodes-base.httpRequest","position":[-1240,40],"parameters":{"url":"https://api.brightdata.com/datasets/v3/trigger","method":"POST","options":{},"jsonBody":"=[\n  {\n    \"url\": \"https://news.google.com/\",\n    \"keyword\": \"{{ $json['News Name'] }}\",\n    \"country\": \"{{ $json.Country }}\",\n    \"language\": \"\"\n  }\n] ","sendBody":true,"sendQuery":true,"sendHeaders":true,"specifyBody":"json","queryParameters":{"parameters":[{"name":"dataset_id","value":"gd_lnsxoxzi1omrwnka5r"},{"name":"include_errors","value":"true"},{"name":"limit_multiple_results","value":"1"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2},{"id":"5982536a-2887-408d-ad8b-ec74fc3b7d52","name":"X","type":"n8n-nodes-base.twitter","position":[440,20],"parameters":{"text":"={{ $json.output }}","additionalFields":{}},"credentials":{"twitterOAuth2Api":{"id":"8SOPM1k0z5QUTdga","name":"X account - Aksh"}},"typeVersion":2},{"id":"eddbcbbe-2ef7-4e44-8799-572a9f368213","name":"tweet to URL","type":"n8n-nodes-base.code","position":[680,20],"parameters":{"jsCode":"function generateTweetUrl(tweetId) {\n  if (!tweetId || isNaN(tweetId)) {\n    return null;\n  }\n  return `https://twitter.com/i/web/status/${tweetId}`;\n}\n\n// Loop through all input items and process them\nreturn $input.all().map(item => {\n  const tweetId = item.json.tweetId || item.json.id || item.json.tweet_id;\n  const tweetUrl = generateTweetUrl(tweetId);\n  return {\n    json: {\n      ...item.json,\n      tweetUrl,\n    }\n  };\n});"},"typeVersion":2},{"id":"e94dd4c9-2c9f-49a8-bf3b-13491e2f9617","name":"Google Sheets","type":"n8n-nodes-base.googleSheets","position":[940,20],"parameters":{"columns":{"value":{"Tweet URL":"={{ $json.tweetUrl }}","Tweet Message":"={{ $json.text }}"},"schema":[{"id":"Tweet URL","type":"string","display":true,"required":false,"displayName":"Tweet URL","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Tweet Message","type":"string","display":true,"required":false,"displayName":"Tweet Message","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1koxNrwdeuaSBdREuKc7JQh3d9blEk0sQDJ8VgVLjPOo/edit#gid=0","cachedResultName":"Data"},"documentId":{"__rl":true,"mode":"list","value":"1koxNrwdeuaSBdREuKc7JQh3d9blEk0sQDJ8VgVLjPOo","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1koxNrwdeuaSBdREuKc7JQh3d9blEk0sQDJ8VgVLjPOo/edit?usp=drivesdk","cachedResultName":"Publish Latest  News on Social Media Platforms Using Keyword"}},"credentials":{"googleSheetsOAuth2Api":{"id":"AiLIcKCiQq8tW7Lu","name":"Raushan Google Sheet"}},"typeVersion":4.6},{"id":"57fc5e5f-6ecd-4933-be5d-02223eae1d9a","name":"Check Snapshot ID Status","type":"n8n-nodes-base.httpRequest","position":[-960,40],"parameters":{"url":"=https://api.brightdata.com/datasets/v3/progress/{{ $json.snapshot_id }}","options":{},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"1dda70c1-9eca-484e-b109-ca297fcdfe72","name":"Gmail","type":"n8n-nodes-base.gmail","position":[1160,20],"webhookId":"0210609d-191a-4eb7-ae2b-13f9e2248c11","parameters":{"sendTo":"=raushan@iwantonlinemarketing.com ","message":"=<p>Hello,</p>  <p>Your news tweet has been published successfully on X (formerly Twitter).</p>  <p>You can view it here: <a href=\"{{ $json['Tweet URL'] }}\" target=\"_blank\">Click to view your tweet</a></p>  <p>Best regards,<br> Team</p>","options":{},"subject":"Your News Has Been Published on X (Twitter)"},"credentials":{"gmailOAuth2":{"id":"gVmVsyjENjEeeaq9","name":"Gmail - crm@incrementors.com"}},"typeVersion":2.1},{"id":"8412946a-0b83-4c94-a5e7-bcf11dc77780","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-1040,-100],"parameters":{"width":700,"height":420,"content":"## Checking Snapshot ID status in While Loops\n"},"typeVersion":1},{"id":"54d35176-cc63-43e2-aabc-bca61fb249af","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-240,-120],"parameters":{"width":560,"height":520,"content":"## Scrap Latest News and Generate Content\ncrapping lastest news from google news and generaint content"},"typeVersion":1},{"id":"2992d27f-fb9b-45b2-a4d2-8baffa5faa53","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[920,-80],"parameters":{"width":560,"height":320,"content":"## Update URL in Sheet and Sent Success Mail"},"typeVersion":1},{"id":"f1868b0b-c58d-4252-82a7-5399cf22bb0f","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[380,-80],"parameters":{"width":460,"height":320,"content":"## Publishing on X"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"056a411e-ed25-4f5f-ad70-f032b6e21eca","connections":{"X":{"main":[[{"node":"tweet to URL","type":"main","index":0}]]},"AI Agent":{"main":[[{"node":"X","type":"main","index":0}]]},"tweet to URL":{"main":[[{"node":"Google Sheets","type":"main","index":0}]]},"Google Sheets":{"main":[[{"node":"Gmail","type":"main","index":0}]]},"Wait 1 Minutes":{"main":[[{"node":"Check Final Status1","type":"main","index":0}]]},"Fetch Latest News":{"main":[[{"node":"Check Snapshot ID Status","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"AI Agent","type":"ai_languageModel","index":0}]]},"On form submission":{"main":[[{"node":"Fetch Latest News","type":"main","index":0}]]},"Check Final Status1":{"main":[[{"node":"Get News URL from Google News","type":"main","index":0}],[{"node":"Check Snapshot ID Status","type":"main","index":0}]]},"Check Snapshot ID Status":{"main":[[{"node":"Wait 1 Minutes","type":"main","index":0}]]},"Get News URL from Google News":{"main":[[{"node":"AI Agent","type":"main","index":0}]]}}}


name: Intelligent Email Organization with AI-Powered Content Classification for Gmail
author_name: Niranjan G
author_username: niranjan
categories: []
created_at: 2025-06-01T12:02:07.509Z
updated_at: 2025-06-01T12:02:07.509Z
url: https://n8n.io/workflows/4557
scraped_at: 2025-07-06 21:16:30
description:
  This workflow leverages AI to intelligently analyze incoming Gmail messages and automatically apply relevant labels based on the email content.

  The default configuration includes the following labels:

  Newsletter**: Subscription updates or promotional content.
  Inquiry**: Emails requesting information or responses.
  Invoice**: Billing and payment-related emails.
  Proposal**: Business offers or collaboration opportunities.
  Action Required**: Emails demanding immediate tasks or actions.
  Follow-up Reminder**: Emails prompting follow-up actions.
  Task**: Emails containing actionable tasks.
  Personal**: Non-work-related emails.
  Urgent**: Time-sensitive or critical communications.
  Bank**: Banking alerts and financial statements.
  Job Update**: Recruitment or job-related communications.
  Spam/Junk**: Unwanted or irrelevant bulk emails.
  Social/Networking**: Notifications from social platforms.
  Receipt**: Purchase confirmations and receipts.
  Event Invite**: Invitations or calendar-related messages.
  Subscription Renewal**: Reminders for subscription expirations.
  System Notification**: Technical alerts from services or systems.

  You can customize labels and definitions based on your specific use case.

  How it works:

  The workflow periodically retrieves new Gmail messages.
  Only emails without existing labels, regardless of read status, are sent to the AI for analysis.
  Email content (subject and body) is analyzed by an AI model to determine the appropriate label.
  Labels identified by the AI are applied to each email accordingly.

  Note: This workflow performs 100% better than the default Gmail trigger method, which is why the workflow was switched from Gmail trigger to a scheduled workflow. By selectively processing only unlabeled emails, it ensures comprehensive labeling while significantly reducing AI processing costs.

  Setup Steps:

  Configure credentials for Gmail and your chosen AI service (e.g., OpenAI).
  Ensure labels exist in your Gmail account matching the workflow definitions.
  Adjust the AI prompt to match your labeling needs.
  Optionally customize the polling interval (default: every 2 minutes).

  This workflow streamlines your email management, keeping your inbox organized effortlessly while optimizing resource usage.

nodes_used:
  ["n8n-nodes-base.gmail","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json:
  {"id":"MKPGGcZ4kNS2VaAd","meta":{"instanceId":"c62c01f3e843893075a10f252ec7d6d69e5ab593af019f50055d506cb3081b99","templateCredsSetupCompleted":true},"name":"Auto Gmail Labeling (Powered by OpenAI)","tags":[{"id":"XCHEQnjQX9v45lVi","name":"labeling","createdAt":"2025-05-10T13:05:07.928Z","updatedAt":"2025-05-10T13:05:07.928Z"},{"id":"rEeMluSnJ541dfuv","name":"label","createdAt":"2025-05-10T13:05:07.947Z","updatedAt":"2025-05-10T13:05:07.947Z"},{"id":"wTkM9jCbEJKOQGvU","name":"email","createdAt":"2025-05-10T13:05:07.923Z","updatedAt":"2025-05-10T13:05:07.923Z"},{"id":"bteUZZnDWPlLufzn","name":"prod","createdAt":"2025-04-18T15:09:08.645Z","updatedAt":"2025-04-18T15:09:08.645Z"}],"nodes":[{"id":"61d0e78d-34ea-4266-9d0d-16b917e2e934","name":"Loop Over Items","type":"n8n-nodes-base.splitInBatches","position":[-1580,-560],"parameters":{"options":{}},"typeVersion":3},{"id":"ceeb33f9-5edd-4760-ae69-de3f8f7c7fe4","name":"Replace Me","type":"n8n-nodes-base.noOp","position":[1000,-600],"parameters":{},"typeVersion":1},{"id":"d9ddec50-7a7c-476b-af88-94d06fc3d2ce","name":"If","type":"n8n-nodes-base.if","position":[-1140,-600],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"2f466934-e257-4315-8a7f-5e3dde987430","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.labelIds[2] }}","rightValue":"={{ $json.labelIds[2] }}"}]}},"typeVersion":2.2},{"id":"6fdbf75a-182d-4793-b4c7-2a3c29127a4c","name":"Merge","type":"n8n-nodes-base.merge","position":[-920,-700],"parameters":{},"typeVersion":3.1},{"id":"65925cff-ae6d-4d01-b04f-09081dda5f6f","name":"Gmail - Get All Messages","type":"n8n-nodes-base.gmail","position":[-2120,-580],"webhookId":"a501a86b-b2df-45ec-b0d9-178765859a0f","parameters":{"limit":20,"simple":false,"filters":{"readStatus":"both"},"options":{},"operation":"getAll"},"credentials":{"gmailOAuth2":{"id":"T6a7nzYASeRq8gwp","name":"Gmail account [abc@mail.com]"}},"typeVersion":2.1},{"id":"7c9da3f9-ab0c-4244-a086-04e36a22e5f2","name":"Gmail - Single Message","type":"n8n-nodes-base.gmail","position":[-1340,-640],"webhookId":"ebc7d7c4-aece-4cd4-a46f-dff18891931e","parameters":{"simple":false,"options":{},"messageId":"={{ $json.id }}","operation":"get"},"credentials":{"gmailOAuth2":{"id":"T6a7nzYASeRq8gwp","name":"Gmail account [abc@mail.com]"}},"typeVersion":2.1},{"id":"47aabef5-1f4e-4fa3-9fd9-f4ab724fc6d9","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2440,-960],"parameters":{"width":3820,"height":740,"content":"## Auto Gmail Labeling (Powered by OpenAI)"},"typeVersion":1},{"id":"4635a3bf-7da7-45b7-9767-539831407a1e","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-2340,-580],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":2}]}},"typeVersion":1.2},{"id":"92f4c2be-42e7-49fe-a43a-66060495af30","name":"Extract Email Data","type":"n8n-nodes-base.set","position":[-700,-700],"parameters":{"options":{},"assignments":{"assignments":[{"id":"2e246278-eccb-4cd5-8c93-7daa824066e3","name":"id","type":"string","value":"={{ $json.id }}"},{"id":"06e5dde5-dfce-4d4d-859d-b364301cb5aa","name":"from","type":"string","value":"={{ $json.headers.from }}"},{"id":"e10231b9-fbb1-447a-a3fc-3ba8e5a9d314","name":"headers.subject","type":"string","value":"={{ $json.headers.subject }}"},{"id":"6a472d41-0f6e-4803-8d94-4b4f8272e66c","name":"text","type":"string","value":"={{ $json.text }}"}]}},"typeVersion":3.4},{"id":"82ea2062-8dc8-4087-82e7-c45047e14d41","name":"Categorize Email with AI","type":"@n8n/n8n-nodes-langchain.agent","position":[-480,-800],"parameters":{"text":"=Here is the email details:\nFrom: { $('Merge').item.json.headers.from }}\nSubject line: {{ $json.headers.subject }}\nEmail Body: \n{{ $json.text }}","options":{"systemMessage":"You are my Personal Email Labeler.  \nWhen I feed you the subject and body of a new email, you must assign exactly one label—no extra text.\n\nAvailable labels:\n- Newsletter  \n- Inquiry  \n- Invoice  \n- Proposal  \n- Action Required  \n- Follow-up Reminder  \n- Task  \n- Personal  \n- Urgent  \n- Bank  \n- Job Update  \n- Spam / Junk  \n- Social / Networking  \n- Receipt  \n- Event Invite  \n- Subscription Renewal  \n- System Notification  \n\nLabel definitions:\n1. Newsletter  \n   • Subscription updates, promotions, digests.  \n   • No reply needed—just file away.  \n2. Inquiry  \n   • Sender asks a question or requests information.  \n   • Prioritize and suggest replying.  \n3. Invoice  \n   • Billing, receipts, payment requests.  \n   • Flag if payment is due.  \n4. Proposal  \n   • Business offers, contracts, collaboration pitches.  \n   • Flag for review; consider acknowledging receipt.  \n5. Action Required  \n   • Requests that demand you do something (book, confirm, complete).  \n   • Mark and suggest a reminder.  \n6. Follow-up Reminder  \n   • Emails reminding you of something pending or that you already acted on.  \n   • Suggest checking status or pinging again.  \n7. Task  \n   • Contains to-do items or project steps.  \n   • Extract tasks, prioritize by deadline.  \n8. Personal  \n   • From friends or family; non-work.  \n   • Keep accessible but low urgency unless marked urgent.  \n9. Urgent  \n   • Critical deadlines, emergencies, time-sensitive.  \n   • Bump to top of your inbox; reply ASAP.  \n10. Bank  \n    • Statements, alerts, transaction notices, fraud warnings from your bank.  \n    • Flag if action is needed (e.g., verify, transfer, dispute).  \n11. Job Update  \n    • Direct messages from recruiters/HR or alerts from job portals (LinkedIn, Naukri, etc.).  \n    • Flag as relevant opportunity; suggest acknowledging or bookmarking.  \n12. Spam / Junk  \n    • Unwanted bulk mail, phishing attempts, obvious ads.  \n    • Auto-archive or delete.  \n13. Social / Networking  \n    • Notifications from social sites (GitHub, Twitter, forums) not job-related.  \n    • File separately from Job Update.  \n14. Receipt  \n    • E-commerce order confirmations, tickets, one-off purchase receipts.  \n    • Archive after processing.  \n15. Event Invite  \n    • Calendar invitations or RSVPs (Google Meet, Zoom, Outlook).  \n    • Accept/decline or add to calendar.  \n16. Subscription Renewal  \n    • Reminders for software licenses, memberships, domain renewals.  \n    • Flag for manual renewal.  \n17. System Notification  \n    • Alerts from monitoring tools, CI/CD, cloud services, security scanners.  \n    • Triage or forward to team channel.\n\nRules:\n- Read subject + body.  \n- Choose the single best label.  \n- Output **only** that label."},"promptType":"define","hasOutputParser":true},"typeVersion":1.7},{"id":"bd3e558c-1e2a-4962-bf65-c92edfaad559","name":"Store AI Category","type":"n8n-nodes-base.set","position":[-100,-700],"parameters":{"options":{},"assignments":{"assignments":[{"id":"2494d69d-3e5e-42ba-88d2-b76ca1962881","name":"output","type":"string","value":"={{ $json.output }}"}]}},"typeVersion":3.4},{"id":"b7e2e5a9-772b-4f8b-a018-d59924e80fd5","name":"List All Gmail Labels","type":"n8n-nodes-base.gmail","position":[120,-600],"webhookId":"5c3cbc0b-9239-4a17-a8ec-bc8819341e47","parameters":{"resource":"label","returnAll":true},"credentials":{"gmailOAuth2":{"id":"T6a7nzYASeRq8gwp","name":"Gmail account [abc@mail.com]"}},"typeVersion":2.1},{"id":"0361804b-a792-4f12-862e-09b6de749128","name":"Check if Label Exists","type":"n8n-nodes-base.compareDatasets","position":[340,-720],"parameters":{"options":{"multipleMatches":"first"},"fuzzyCompare":true,"mergeByFields":{"values":[{"field1":"output","field2":"name"}]}},"typeVersion":2.3},{"id":"65203535-4a68-4b7e-836b-93aba10b5314","name":"Apply Label to Email","type":"n8n-nodes-base.gmail","position":[780,-600],"webhookId":"4a35699e-da45-48e9-8e12-d22b2dcca62e","parameters":{"labelIds":"={{ $json.different.id.inputB }}","messageId":"={{ $('Extract Email Data').item.json.id }}","operation":"addLabels"},"credentials":{"gmailOAuth2":{"id":"T6a7nzYASeRq8gwp","name":"Gmail account [abc@mail.com]"}},"typeVersion":2.1},{"id":"c693da56-6238-4c21-bdb6-6e3aceffd4a5","name":"Apply New Label","type":"n8n-nodes-base.gmail","position":[560,-800],"webhookId":"a6722fdc-15cb-4796-b82d-53cc23060640","parameters":{"name":"={{ $('Store AI Category').item.json.output }}","options":{},"resource":"label","operation":"create"},"credentials":{"gmailOAuth2":{"id":"T6a7nzYASeRq8gwp","name":"Gmail account [abc@mail.com]"}},"typeVersion":2.1},{"id":"86a440fa-b761-4b3f-ae7b-b5fb30a11f9d","name":"Create New Label","type":"n8n-nodes-base.gmail","position":[780,-800],"webhookId":"9e401ad8-b89c-4015-a3cf-b1000ac51ae1","parameters":{"labelIds":"={{ $json.id }}","messageId":"={{ $('Extract Email Data').item.json.id }}","operation":"addLabels"},"credentials":{"gmailOAuth2":{"id":"T6a7nzYASeRq8gwp","name":"Gmail account [abc@mail.com]"}},"typeVersion":2.1},{"id":"59b0ed3f-7a2c-44f3-8e7c-ebb91ead16d2","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-400,-580],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-nano","cachedResultName":"gpt-4.1-nano"},"options":{}},"credentials":{"openAiApi":{"id":"PLkPXwnjTc0ag3xa","name":"OpenAi account"}},"typeVersion":1.2},{"id":"ced7a41e-7df9-4c73-ab00-e24677326652","name":"Filter Emails Without Excluded Labels","type":"n8n-nodes-base.code","position":[-1900,-580],"parameters":{"jsCode":"const excludedLabelIds = [\n  \"Label_5\",   // Newsletter\n  \"Label_21\",  // Inquiry\n  \"Label_11\",  // Invoice\n  \"Label_9\",   // Proposal\n  \"Label_52\",  // Action Required\n  \"Label_55\",  // Follow-up Reminder\n  \"Label_53\",  // Task\n  \"Label_44\",  // Personal\n  \"Label_54\",  // Urgent\n  \"Label_12\",  // Bank\n  \"Label_3\",   // Job Update\n  \"Label_42\",  // Spam / Junk\n  \"Label_7\",   // Social / Networking\n  \"Label_8\",   // Receipt\n  \"Label_2\",   // Event Invite\n  \"Label_10\",  // Subscription Renewal\n  \"Label_4\"    // System Notification\n];\n\n\nreturn items.filter(item => {\n  const labels = item.json.labelIds || [];\n  // Exclude if ANY excluded label is present\n  return !labels.some(label => excludedLabelIds.includes(label));\n});\n"},"typeVersion":2}],"active":true,"pinData":{},"settings":{"callerPolicy":"workflowsFromSameOwner","errorWorkflow":"9GaFMSfyUS2pdk24","executionOrder":"v1"},"versionId":"f7da3241-2d4c-4d48-9090-09ba07607d42","connections":{"If":{"main":[[],[{"node":"Merge","type":"main","index":1}]]},"Merge":{"main":[[{"node":"Extract Email Data","type":"main","index":0}]]},"Replace Me":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]},"Apply New Label":{"main":[[{"node":"Create New Label","type":"main","index":0}]]},"Loop Over Items":{"main":[[],[{"node":"Gmail - Single Message","type":"main","index":0}]]},"Create New Label":{"main":[[{"node":"Replace Me","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"Gmail - Get All Messages","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Categorize Email with AI","type":"ai_languageModel","index":0}]]},"Store AI Category":{"main":[[{"node":"Check if Label Exists","type":"main","index":0},{"node":"List All Gmail Labels","type":"main","index":0}]]},"Extract Email Data":{"main":[[{"node":"Categorize Email with AI","type":"main","index":0}]]},"Apply Label to Email":{"main":[[{"node":"Replace Me","type":"main","index":0}]]},"Check if Label Exists":{"main":[[{"node":"Apply New Label","type":"main","index":0}],[],[{"node":"Apply Label to Email","type":"main","index":0}]]},"List All Gmail Labels":{"main":[[{"node":"Check if Label Exists","type":"main","index":1}]]},"Gmail - Single Message":{"main":[[{"node":"If","type":"main","index":0},{"node":"Merge","type":"main","index":0}]]},"Categorize Email with AI":{"main":[[{"node":"Store AI Category","type":"main","index":0}]]},"Gmail - Get All Messages":{"main":[[{"node":"Filter Emails Without Excluded Labels","type":"main","index":0}]]},"Filter Emails Without Excluded Labels":{"main":[[{"node":"Loop Over Items","type":"main","index":0}]]}}}


name: 🚀Transform Podcasts into Viral TikTok Clips with Gemini+ Multi-Platform Posting✅
author_name: Matt F.
author_username: lemolex
categories: []
created_at: 2025-06-01T20:22:16.132Z
updated_at: 2025-06-01T20:22:16.132Z
url: https://n8n.io/workflows/4568
scraped_at: 2025-07-06 21:16:30
description:
  🎯 Automatically Create and Post Engaging Clips (with Audience Retention Videos) from Podcasts Using AI! 🚀

  Effortlessly transform long-form podcast content into highly engaging, viral-read clips with this end-to-end automation template.

  Designed for content creators already monetizing on TikTok/YouTube/Instagram/Twitter and those looking to start earning from the platform, this workflow streamlines the process of extracting highlights, editing clips, and posting to all your social media, allowing you to maximize reach while minimizing manual effort.

  Key Features

  🔹 AI-Powered Podcast Highlight Extraction

  Automatically identifies the best moments from any podcast video, ensuring each clip is engaging and shareable.

  🔹 Smart Video Editing & Captioning

  Combines podcast highlights with a copyright-free attention retainer video (e.g., Minecraft parkour, GTA 5 gameplay) for increased audience retention. Auto-generated captions make clips more dynamic and accessible.

  🔹 Automated Title Generation

  A Large Language Model (LLM) analyzes the clips to generate compelling titles, optimized for TikTok/YouTube/Instagram/Twitter’s algorithm.

  🔹 Hands-Free Multi Platform Posting

  Seamlessly schedules and automatically posts clips to your Soicual Media accounts at defined intervals, keeping your audience engaged without manual uploads.

  🔹 Fully Automated Workflow

  From video download to content publishing 100% FREE, this template eliminates the need for time-consuming video editing, helping you scale your content strategy effortlessly, without having to pay for multiple subscriptions tediously.
  Simply find a podcast you like and a cool Minecraft parkour (or any engaging) video, send their YouTube URLs, and let the automation handle everything—from video downloading and audio processing to highlight extraction, editing, captions, and publishing.

  How It Works (Step-by-Step Guide)

  1️⃣ Provide the YouTube URLs

  One for the main podcast video (where highlights will be extracted).
  One for the background attention retainer video (e.g., Minecraft parkour, GTA 5 gameplay).

  2️⃣ Automation Downloads and Processes the Videos

  Downloads both videos.
  Extracts audio from the podcast for analysis.

  3️⃣ AI Analyzes and Extracts Key Highlights

  Detects the most engaging moments from the podcast.

  4️⃣ Creates Fully Edited Clips

  Merges podcast highlights with the attention retainer video.
  Generates captions automatically.

  5️⃣ Optimizes for Social Media

  Uses AI to generate a compelling title for each clip.

  6️⃣ Posts to your Social Media Channels Automatically

  Uploads clips at your preferred intervals with zero manual effort.

  Who Is This For?

  ✅ Content creators already making money on TikTok/YouTube/Instagram/Twitter
  ✅ People looking to start earning with TikTok/YouTube/Instagram/Twitter
  ✅ Podcasters wanting to repurpose content into bite-sized, viral clips

  Get Started Today! 🚀

  This AI-driven automation is perfect for scaling your TikTok/YouTube/Instagram/Twitter content effortlessly.

  To use this workflow, you’ll just need free accounts on Assembly, Andynocode, and Upload-Posts.

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.chainLlm","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.lmChatGoogleGemini"]

workflow_json:
  {"id":"tAqp67CRi6nbgHBL","meta":{"instanceId":"143d2ab55c8bffb06f8b9c7ad30335764fdc48bbbacecbe2218dadb998a32213","templateCredsSetupCompleted":true},"name":"TikTok Posts Automation Agent V3.1","tags":[],"nodes":[{"id":"ab8c54f0-9046-4160-8d05-059df9078e68","name":"Audio Transcription","type":"n8n-nodes-base.httpRequest","position":[1560,1780],"parameters":{"url":"https://api.openai.com/v1/audio/transcriptions","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"predefinedCredentialType","bodyParameters":{"parameters":[{"name":"timestamp_granularities[]","value":"word"},{"name":"model","value":"whisper-1"},{"name":"response_format","value":"verbose_json"},{"name":"file","parameterType":"formBinaryData","inputDataFieldName":"data-audio"}]},"nodeCredentialType":"openAiApi"},"credentials":{"openAiApi":{"id":"93YLMhb9yAza1oWn","name":"OpenAi account 2"}},"typeVersion":4.2},{"id":"c613277c-84b2-4e0a-ad77-29178e4dbeef","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[380,1840],"parameters":{"options":{},"modelName":"models/gemini-2.0-flash"},"credentials":{"googlePalmApi":{"id":"f334eoOsgoLWbi59","name":"Google Gemini(PaLM) Api account 2"}},"typeVersion":1},{"id":"f07fbfa9-25b2-44ce-aa89-3e313ad9bca3","name":"Split Out1","type":"n8n-nodes-base.splitOut","position":[740,1660],"parameters":{"options":{},"fieldToSplitOut":"output"},"typeVersion":1},{"id":"e2a8243a-2db2-4578-9e90-67d1cc5bde33","name":"Submit Job","type":"n8n-nodes-base.httpRequest","position":[40,1160],"parameters":{"url":"https://api.assemblyai.com/v2/transcript","method":"POST","options":{},"jsonBody":"={\n  \"audio_url\": \"{{ $json.upload_url }}\"\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"o1HZCtBTQIiMxt5v","name":"Assembly"}},"typeVersion":4.2},{"id":"2a4ecb88-6b3c-4565-9f92-e6c5febde2fa","name":"Check Status","type":"n8n-nodes-base.httpRequest","position":[460,1160],"parameters":{"url":"=https://api.assemblyai.com/v2/transcript/{{ $node[\"Submit Job\"].json[\"id\"] }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"o1HZCtBTQIiMxt5v","name":"Assembly"}},"typeVersion":4.2},{"id":"ceebfea6-6068-46e4-a845-cf0fe209dd0a","name":"If","type":"n8n-nodes-base.if","position":[700,1160],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"0e8296de-3d44-47ee-ab04-f5d9e4e00daa","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"completed"}]}},"typeVersion":2.2},{"id":"9797aeb0-470d-45d6-949b-7dc988c3e158","name":"Extract Results","type":"n8n-nodes-base.set","position":[-200,1660],"parameters":{"options":{},"assignments":{"assignments":[{"id":"e5b4b58c-20d7-4c45-898d-4e6518f2fba6","name":"transcription_text","type":"string","value":"={{ $json.text }}"},{"id":"3e064366-ad18-42d5-bdd9-9420e95675f6","name":"word_details","type":"array","value":"={{ $json.words }}"}]}},"typeVersion":3.4,"alwaysOutputData":false},{"id":"6185ddd8-3f34-4ba1-b6a0-e1cdc530ae48","name":"Wait1","type":"n8n-nodes-base.wait","position":[2340,1780],"webhookId":"3648a845-4cc5-4d4a-a820-38a4f1906086","parameters":{"unit":"minutes"},"typeVersion":1.1},{"id":"0502af5a-7950-42f2-9541-8eab1419e4d4","name":"If1","type":"n8n-nodes-base.if","position":[2800,1780],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"da50dbe5-0d78-4315-a9c4-29a36a34bff5","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.data.status }}","rightValue":"done"}]}},"typeVersion":2.2},{"id":"a86a8f9f-45a9-424f-945f-49c6926114c2","name":"Google Gemini Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[3260,1920],"parameters":{"options":{},"modelName":"models/gemini-2.0-flash-001"},"credentials":{"googlePalmApi":{"id":"f334eoOsgoLWbi59","name":"Google Gemini(PaLM) Api account 2"}},"typeVersion":1},{"id":"e146d265-54e9-4335-8477-f7e2915e8071","name":"Structured Output Parser1","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[3560,1920],"parameters":{"jsonSchemaExample":"{\n  \"title\": \"Who is the Most POWERFUL Man GLOBALLY? | PBD Podcast #pbdpodcast #power #exposed\"\n}"},"typeVersion":1.2},{"id":"80238aea-6c94-4dc2-b5ca-3f58aad008e3","name":"Send the YouTube Video Links","type":"n8n-nodes-base.formTrigger","position":[-220,660],"webhookId":"4304503e-1200-4d7f-b062-7629b5ca0207","parameters":{"options":{},"formTitle":"Required Links","formFields":{"values":[{"fieldLabel":"YouTube Video URL","requiredField":true},{"fieldLabel":"Copyright Free Background Video","requiredField":true}]}},"typeVersion":2.2},{"id":"358a7d95-f716-4ab1-96c5-eaa0d8d31253","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-300,500],"parameters":{"color":4,"width":3200,"height":500,"content":"# Video Downloading and Extraction\n"},"typeVersion":1},{"id":"b592b99b-7fda-400a-871c-d88a719aab04","name":"Transcribe Podcast Audio","type":"n8n-nodes-base.httpRequest","position":[-200,1160],"parameters":{"url":"https://api.assemblyai.com/v2/upload","method":"POST","options":{},"sendBody":true,"contentType":"binaryData","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","inputDataFieldName":"audio"},"credentials":{"httpHeaderAuth":{"id":"o1HZCtBTQIiMxt5v","name":"Assembly"}},"typeVersion":4.2},{"id":"afbd7dd9-290a-4923-8af6-bc4b838a3003","name":"Wait 1","type":"n8n-nodes-base.wait","position":[260,1160],"webhookId":"ae60902e-1252-4bf5-a86c-3e77165ab8cd","parameters":{"unit":"minutes","amount":1},"typeVersion":1.1},{"id":"357795ce-83c4-4ad1-a211-bfcea7cbbc28","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-300,1020],"parameters":{"color":5,"width":1220,"height":440,"content":"# Process Podcast Audio\n"},"typeVersion":1},{"id":"6d2bd147-2027-41cf-b41d-e8a3b14fb11b","name":"Structure Transcription","type":"n8n-nodes-base.code","position":[60,1660],"parameters":{"jsCode":"// Access the transcription data from the previous node\nconst transcriptData = $input.first().json.word_details; // Adjust this based on your node's output structure\n\n// Check if the data exists and is an array\nif (!transcriptData || !Array.isArray(transcriptData)) {\n  throw new Error(\"Transcription data is not an array or is undefined. Check the previous node's output.\");\n}\n\n// Map the transcript data to match your previous format\nconst formattedTranscript = transcriptData.map((word, index) => {\n  return {\n    text: word.text,   // Adjust 'text' to match your data's property name (e.g., 'word' or 'text')\n    index: index,      // Position in the array\n    start: word.start, // Start time (adjust units if needed, e.g., / 1000 for seconds)\n    end: word.end      // End time (adjust units if needed)\n  };\n});\n\n// Convert the formatted transcript to a JSON string\nconst transcriptJson = JSON.stringify(formattedTranscript);\n\n// Return the result in n8n’s expected format\nreturn [{ json: { transcriptJson: transcriptJson } }];"},"typeVersion":2},{"id":"2777334e-d860-43d3-8385-6f91a437cb8b","name":"Podcast Best Moments Extraction","type":"@n8n/n8n-nodes-langchain.chainLlm","onError":"continueRegularOutput","position":[380,1660],"parameters":{"text":"You are given a transcript array where each entry is an object with the following keys:\n- **text**: a string containing the transcript text.\n- **index**: a number.\n- **start**: the starting second.\n- **end**: the ending second.\n\n**Objective:**  \nExtract and merge highlights from the transcript. Identify segments that have high informational value, emotional impact, or key takeaways. Merge adjacent entries if they form a coherent highlight, and remove filler words while preserving meaning.\n\n**Instructions:**\n1. Analyze the transcript and extract coherent highlight segments.\n2. Merge adjacent entries if they form a coherent highlight.\n3. Remove any unnecessary filler words while retaining the essential meaning.\n4. Ensure that the total duration of all highlight segments is no more than 600 seconds.\n5. Ensure that the duration of each highlight is at least 30 seconds and no more than 120 seconds.\n6. Ensure that the segments do not overlap in time.\n\nFor each highlight, output a JSON object with exactly these keys:\n- **transcript**: the text of the highlight segment.\n- **start_index**: the starting word index (using the original value).\n- **end_index**: the ending word index (using the original value).\n\n**CRUCIAL OUTPUT FORMAT REQUIREMENTS:**\n- **Output ONLY a plain JSON array.** The final output must start with `[` and end with `]` and include nothing else.\n- **Do not include any markdown formatting, triple backticks, wrapper objects (such as an \"output\" key), or any additional text.**\n- **Do not output any extra explanation or commentary.** Your entire response must consist solely of the JSON array.\n\nFor example, the expected output format is:\n[\n  {\n    \"transcript\": \"I like this\",\n    \"start_index\": 10,\n    \"end_index\": 13\n  },\n  {\n    \"transcript\": \"It would be\",\n    \"start_index\": 16,\n    \"end_index\": 19\n  }\n]\n\nRemember: Your final response must be exactly the JSON array as specified—nothing else. No markdown fences, no extra keys, no additional text, only the JSON array.","messages":{"messageValues":[{"type":"HumanMessagePromptTemplate","message":"={{ $node[\"Structure Transcription\"].json[\"transcriptJson\"] }}"}]},"promptType":"define","hasOutputParser":true},"retryOnFail":true,"typeVersion":1.5},{"id":"a17c20de-7007-4579-b9ae-e838ed40af02","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-300,1500],"parameters":{"color":6,"width":1220,"height":500,"content":"# Video Highlights Generation\n"},"typeVersion":1},{"id":"a8a57cb7-07c8-44a0-afd2-836bea05170f","name":"Loop Over Clips","type":"n8n-nodes-base.splitInBatches","position":[1240,1280],"parameters":{"options":{}},"typeVersion":3},{"id":"2ecb63e3-8974-42ba-8e63-7cbdf4fed094","name":"Structure Transcription 2","type":"n8n-nodes-base.code","position":[1820,1780],"parameters":{"jsCode":"return $(\"Audio Transcription\").all().map(item => {\n  const words = item.json.words\n  const result = [];\n\n  for (let i = 0; i < words.length; i += 3) {\n    const chunk = words.slice(i, i + 3);\n    result.push({\n      words: chunk.map(word => word.word.charAt(0).toUpperCase() + word.word.slice(1)).join(' '),\n      start: chunk[0].start,\n      end: chunk[chunk.length - 1].end,\n    });\n  }\n\n  return {\n    json: {\n      chunks: result,\n    },\n  };\n});"},"typeVersion":2},{"id":"4119112e-5111-454b-8d71-a07f1f18cf75","name":"Editing Clips","type":"n8n-nodes-base.httpRequest","position":[2120,1780],"parameters":{"url":"https://api.andynocode.com/api/function/video-generation/clip-video","method":"POST","options":{},"jsonBody":"={\n    \"type\": \"clip-video\",\n    \"data\": {\n        \"clip_url\": \"{{ $('If5').item.json['download-url'] }}\",\n\"gameplay_url\": \"{{ $('If6').item.json['download-url'] }}\",\n    \"background_url\": \"{{ $('If5').item.json['download-url'] }}\",\n        \"transcripts\": {{ JSON.stringify($('Structure Transcription 2').item.json.chunks) }}\n    }\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpQueryAuth"},"credentials":{"httpQueryAuth":{"id":"UFktnf9LviG1pVSY","name":"Andynocode 2"}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"8b352799-4d60-4cca-ba22-7d950e6c5f99","name":"Clip Ready?","type":"n8n-nodes-base.httpRequest","position":[2600,1780],"parameters":{"url":"=https://api.andynocode.com/api/function/video-generation/progress/{{ $json.data.id }}","options":{},"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth"},"credentials":{"httpQueryAuth":{"id":"UFktnf9LviG1pVSY","name":"Andynocode 2"}},"typeVersion":4.2},{"id":"ce3775e8-02ac-4a02-93c5-fb58e608d730","name":"Structure Links","type":"n8n-nodes-base.set","position":[3080,1700],"parameters":{"options":{},"assignments":{"assignments":[{"id":"bf605d69-8ae6-4632-bbd0-d7b1cbb4eed5","name":"final-video-url","type":"string","value":"=https://api.andynocode.com{{ $json.data.url }}"}]}},"typeVersion":3.4},{"id":"c5e1708a-3f02-451c-913a-7f18ae954269","name":"Generate Title","type":"@n8n/n8n-nodes-langchain.chainLlm","position":[3260,1700],"parameters":{"text":"Analyze the following video transcript and generate a compelling TikTok title (under 60 characters, attention-grabbing) and captions (concise, engaging, highlights key moments/hooks).\nFocus on clarity, emotional appeal, and curiosity. Avoid generic phrases. Title must align with the transcript's core message or most viral moment. Output JSON format only.\n\nExample Output:\n\n```json```\n{\n  \"title\": \"Who is the Most POWERFUL Man GLOBALLY? | PBD Podcast #pbdpodcast #power #exposed\"\n}\n```json```\n   ","messages":{"messageValues":[{"type":"HumanMessagePromptTemplate","message":"={{ $('Audio Transcription').last().json.text }}"}]},"promptType":"define","hasOutputParser":true},"typeVersion":1.5},{"id":"14ed2dd9-2e33-4907-8c65-0fe53cd1be24","name":"Download Final Clip","type":"n8n-nodes-base.httpRequest","position":[3700,1700],"parameters":{"url":"={{ $('Structure Links').item.json['final-video-url'] }}","options":{"response":{"response":{"responseFormat":"file","outputPropertyName":"final-video"}}}},"typeVersion":4.2},{"id":"2bbd3569-dbb7-4573-aaf9-00c3568f062c","name":"Post To TikTok","type":"n8n-nodes-base.httpRequest","position":[4320,1900],"parameters":{"url":"https://api.upload-post.com/api/upload","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"title","value":"={{ $json.output.title }}"},{"name":"user","value":"your_username"},{"name":"platform[]","value":"tiktok"},{"name":"video","parameterType":"formBinaryData","inputDataFieldName":"final-video"}]},"genericAuthType":"httpHeaderAuth"},"credentials":{"httpHeaderAuth":{"id":"fHczpmGhBLSKy1HV","name":"TikTok Upload"}},"typeVersion":4.2},{"id":"bebc8548-7bc0-477d-a397-16ff2dfa64a2","name":"Posting Interval","type":"n8n-nodes-base.wait","position":[4660,1900],"webhookId":"9eae2dfb-186e-44f9-918f-a5238b53641c","parameters":{"unit":"minutes"},"typeVersion":1.1},{"id":"4afe7455-d1f3-4db4-984a-ee0487dee2bf","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1480,1160],"parameters":{"color":4,"width":2760,"height":440,"content":"# Pre-Processing Clips \n"},"typeVersion":1},{"id":"03cc6b38-f881-42db-b129-f4bb6515e542","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1480,1620],"parameters":{"color":5,"width":560,"height":400,"content":"# Pre-Processing Audio"},"typeVersion":1},{"id":"c3db3b36-0a70-46ab-a010-e23568f0c47b","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[2060,1620],"parameters":{"color":6,"width":960,"height":400,"content":"# Clip Editing"},"typeVersion":1},{"id":"a05ba940-1aa3-4f24-85d4-cd920c98b63b","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[3040,1620],"parameters":{"color":3,"width":880,"height":460,"content":"# Clip Preparation for Posting"},"typeVersion":1},{"id":"d03bd6a3-b7a0-47c5-93f4-f0c874a3775f","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[4180,1760],"parameters":{"width":760,"height":300,"content":"# Posting"},"typeVersion":1},{"id":"368065b2-5fe4-4af5-9638-fbbf6a457946","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[1120,1020],"parameters":{"color":7,"width":3440,"height":1120,"content":"# **Clip Generation**"},"typeVersion":1},{"id":"e3473bd8-d915-4ebb-92b6-c5ea0cbf716e","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[560,1860],"parameters":{"jsonSchemaExample":"[{\n  \"transcript\": \"I like this\",\n  \"start_index\": 10,\n  \"end_index\": 13\n},{\n  \"transcript\": \"It would be\",\n  \"start_index\": 16,\n  \"end_index\": 19\n}]"},"typeVersion":1.2},{"id":"f051d49f-57ba-4939-b0b5-16f8f3d5984f","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-980,500],"parameters":{"width":620,"height":1540,"content":"# **Workflow Setup Step-by-Step Guide**\n\n\n### **Workflow Setup Step-by-Step Guide**\n\n**Initial Setup:**  \n1. Create an [AssemblyAI](https://www.assemblyai.com) account for Free.\n2. Create an account in [Google AI Studio](https://aistudio.google.com) for Free.\n3. Create an [Andynocode](https://www.andynocode.com) account for Free.\n4. Create an [Upload-Post](https://www.upload-post.com) account for Free\n \n\n### **Getting Started:**\n4. Go to your [Assembly AI Account](https://www.assemblyai.com/app/account) and copy your API Key.\n5. Go to the \"Transcribe Podcast Audio\", \"Submit Job\" and \"Check Status\" nodes and set up your Assembly credentials. (Process Podcast Audio section)\n\n***Name: Authorization***\n***Value: your_api_key***\n\n6. Go to the Google Gemini Chat model inside the section \"Video Highlights Generation\" and \"Clip Preparation for Posting\" and connect your credentials.\n\n***Host: https://generativelanguage.googleapis.com***\n***API Key: your_api_key***\n\n7. Go to \"Pre-Processing Audio\" section inside the \"Clip Generation and Posting\" section, and connect your Openai credentials inside the \"Audio Transcription\" node.\n\n***API Key: your_api_key***\n***Organization ID (optional): organization_id***\n***Base URL: https://api.openai.com/v1***\n\n8. Go to \"Clip Editing\" section inside the \"Clip Generation and Posting\" section, and connect your Andynocode credentials inside the \"Editing Clips\" and \"Clip Ready?\" nodes.\n\n***Name: api_key***\n***API Key: your_api_key***\n\n9. Go to \"Posting\" section inside the \"Clip Generation and Posting\" section, and connect your Upload-Post  credentials inside the \"Post To TikTok\" node.\n\n***Name: Authorization***\n***Value: Apikey your_api_key***\n\nFinally, inside the same node, in the body request you have to parse your username. It should look like:\n\n***Parameter Type: Form Data***\n***Name: user***\n***Value: your_username***\n\n7.  **The technology that powers this AI Agent incurs real operating costs to stay online.**\nThat’s why the workflow requires an active membership, priced at only **\\$29 per month**.\n\n **Activate your membership here:** [https://lemolex.gumroad.com/l/ypjdr](https://lemolex.gumroad.com/l/ypjdr)\n\nAfter activating the membership you need to set the nodes with the membership generated key: \n- Go to the membership link to get your key.\n- Copy the key (e.g 6F0E4C97-B72A4E69-A11BF6C4-AF123456) and paste it in the body parameters of \"Download Audio Stage 1\" node:\n*Name: auth-token*\n*Value:  6F0E4C97-B72A4E69-A11BF6C4-AF123456* **(example)**\n\n\n### **How To Use**\n- Find a podcast on YouTube and copy it's URL.\n- Find a cool \"attention grabbing\" video to put in the background (e.g. [Minecraft Parkour No Copyright Gameplay](https://youtu.be/XBIaqOm0RKQ?si=gre39-555aRTVsJ1) / [GTA 5 No Copyright Gameplay](https://youtu.be/z121mUPexGc?si=JGsTOI88tOxXdWYx)) and copy it's URL.\n- Start the workflow, send both URLs and effortlessly transform long-form podcast content into highly engaging, viral-ready TikTok clips\n\n\n**For further guidance, check my video or send me a message on [LinkedIn](https://www.linkedin.com/in/mateofioritorocha/)**"},"typeVersion":1},{"id":"67e3707c-b810-48db-b772-b81eaf3133df","name":"Download Audio Stage 1","type":"n8n-nodes-base.httpRequest","position":[220,660],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/74c67c3f-3883-40c2-b0ee-d67ecd1ff9fd","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"podcast_url","value":"={{ $('Send the YouTube Video Links').item.json['YouTube Video URL'] }}"},{"name":"auth-token","value":"your-token (read setup guide)"}]},"headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"typeVersion":4.2},{"id":"016005e5-b534-4dc3-96f7-6cc7089aae87","name":"Download Audio Stage 2","type":"n8n-nodes-base.httpRequest","position":[680,660],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/40a6b1-58ba-4ce6-9e52-55cb0cfebafa","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"job-id","value":"={{ $('Download Audio Stage 1').item.json.id }}"}]}},"typeVersion":4.2},{"id":"6041f73b-e21b-40f2-ab61-e3907cb8c388","name":"If4","type":"n8n-nodes-base.if","position":[1120,660],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"17476aa1-49ae-4697-aa41-95f00dee6875","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"finished"}]}},"typeVersion":2.2},{"id":"f678f68f-3960-4406-b774-166142282889","name":"Wait3","type":"n8n-nodes-base.wait","position":[2180,740],"webhookId":"51ec1118-740b-4b39-8056-a466ef4b0479","parameters":{"amount":30},"typeVersion":1.1},{"id":"6443e108-b4c2-4923-8f99-8e410babca3c","name":"Download Audio Stage 3","type":"n8n-nodes-base.httpRequest","position":[2480,660],"parameters":{"url":"={{ $('If4').item.json['download-url'] }}","options":{"response":{"response":{"responseFormat":"file","outputPropertyName":"audio"}}}},"typeVersion":4.2},{"id":"35d24ce0-f86c-4bb2-8dfe-4d97bf34b632","name":"Generating Main Clip","type":"n8n-nodes-base.httpRequest","position":[1560,1300],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/e18f-e237-4f6e-b5a8-fffda04c4d8f","method":"POST","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"podcast_url","value":"={{ $('Send the YouTube Video Links').item.json['YouTube Video URL'] }}"},{"name":"startSeconds","value":"={{ $json.start_index }}"},{"name":"endSeconds","value":"={{ $json.end_index }}"}]}},"typeVersion":4.2},{"id":"bb192c11-6acd-4106-9fad-6cff3b1141b7","name":"If5","type":"n8n-nodes-base.if","position":[2000,1300],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"17476aa1-49ae-4697-aa41-95f00dee6875","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"finished"}]}},"typeVersion":2.2},{"id":"784b3137-a159-4d05-9560-ab997537ac95","name":"Wait4","type":"n8n-nodes-base.wait","position":[2420,1400],"webhookId":"d9e3f283-7132-480e-a544-0df0a9a8d937","parameters":{"amount":30},"typeVersion":1.1},{"id":"d78f2ea4-876a-460a-96f6-2bad8d1e8911","name":"Generating Background Clip","type":"n8n-nodes-base.httpRequest","position":[2420,1220],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/1d9186-e6c6-49f4-9469-21a77ab3fb37","method":"POST","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"background_url","value":"={{ $('Send the YouTube Video Links').item.json['Copyright Free Background Video'] }}"},{"name":"startSeconds","value":"=3"},{"name":"endSeconds","value":"={{ $json.interval }}"}]}},"typeVersion":4.2},{"id":"2fce05f9-7dae-410f-85aa-e91cd6909c6a","name":"Extracting Main Clip","type":"n8n-nodes-base.httpRequest","position":[1780,1300],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/40a7b1-58ba-4ce6-9e52-55cb0cfebafa","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"job-id","value":"={{ $('Generating Main Clip').item.json.id }}"}]}},"typeVersion":4.2},{"id":"4e281e9f-a8b9-4506-b0a0-8ddf1c8d225d","name":"Extracting Background Clip","type":"n8n-nodes-base.httpRequest","position":[2680,1240],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/40a697b1-58ba-4ce6-9e52-55cb0cfebafa","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"job-id","value":"={{ $('Generating Background Clip').item.json.id }}"}]}},"typeVersion":4.2},{"id":"00e73d51-4814-489b-9f79-488519710627","name":"If6","type":"n8n-nodes-base.if","position":[2880,1280],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"17476aa1-49ae-4697-aa41-95f00dee6875","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"finished"}]}},"typeVersion":2.2},{"id":"8bb80330-daf1-4414-8c28-b33ad3a98f48","name":"Wait5","type":"n8n-nodes-base.wait","position":[3040,1380],"webhookId":"20e97cfa-ebde-4090-a739-a2a7b087bdf5","parameters":{"unit":"minutes","amount":1},"typeVersion":1.1},{"id":"c5d33459-7bfb-48d7-b867-c51eecf083ad","name":"Extracting Audio from Clips","type":"n8n-nodes-base.httpRequest","position":[3200,1260],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/8caa81c9-4322-4b79-8d69-045473776e51","method":"POST","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"podcast_url","value":"={{ $('Send the YouTube Video Links').item.json['YouTube Video URL'] }}"},{"name":"startSeconds","value":"={{ $('Loop Over Clips').first().json.start_index }}"},{"name":"endSeconds","value":"={{ $('Loop Over Clips').first().json.end_index }}"}]}},"typeVersion":4.2},{"id":"bcf6548b-6121-42a7-aac7-11108737ec21","name":"Extracting Audio from Main Clip 2","type":"n8n-nodes-base.httpRequest","position":[3460,1280],"parameters":{"url":"https://lemolex.app.n8n.cloud/webhook/40a697b1-58ba-4ce6-9e52-55cb0cfebafa","options":{},"sendBody":true,"bodyParameters":{"parameters":[{"name":"job-id","value":"={{ $('Extracting Audio from Clips').item.json.id }}"}]}},"typeVersion":4.2},{"id":"93c9a937-6cc2-4bbc-a615-6ebda8a9a129","name":"If7","type":"n8n-nodes-base.if","position":[3660,1280],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"17476aa1-49ae-4697-aa41-95f00dee6875","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"finished"}]}},"typeVersion":2.2},{"id":"adc0561d-b16f-4318-836c-946e1ee6807c","name":"Wait6","type":"n8n-nodes-base.wait","position":[3800,1400],"webhookId":"8f686c54-b275-45be-9590-0f2bfed4c8c3","parameters":{"unit":"minutes","amount":1},"typeVersion":1.1},{"id":"f9703d8d-585c-42a9-a9ec-8d2ee637452c","name":"Download Clip Audio","type":"n8n-nodes-base.httpRequest","position":[4060,1300],"parameters":{"url":"={{ $('If7').item.json['download-url'] }}","options":{"response":{"response":{"responseFormat":"file","outputPropertyName":"data-audio"}}}},"typeVersion":4.2},{"id":"40a6e303-047d-404f-8d44-0da0dcb8981a","name":"Clip Length Calculation","type":"n8n-nodes-base.code","position":[2220,1180],"parameters":{"jsCode":"// Get the two numbers from the incoming JSON (from the previous node)\nconst a = $('Loop Over Clips').first().json.end_index;\nconst b = $('Loop Over Clips').first().json.start_index;\n\n// Calculate the interval; if you always want a positive result, use Math.abs:\nconst interval = Math.abs(a - b) + 3;\n\n// Return a new item with your result under whatever key you like\nreturn [\n  { json: { interval } }\n];\n"},"typeVersion":2}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"8f0c8648-71a6-4a05-b09b-3745209ca946","connections":{"If":{"main":[[{"node":"Extract Results","type":"main","index":0}],[{"node":"Wait 1","type":"main","index":0}]]},"If1":{"main":[[{"node":"Structure Links","type":"main","index":0}],[{"node":"Wait1","type":"main","index":0}]]},"If4":{"main":[[{"node":"Download Audio Stage 3","type":"main","index":0}],[{"node":"Wait3","type":"main","index":0}]]},"If5":{"main":[[{"node":"Clip Length Calculation","type":"main","index":0}],[{"node":"Wait4","type":"main","index":0}]]},"If6":{"main":[[{"node":"Extracting Audio from Clips","type":"main","index":0}],[{"node":"Wait5","type":"main","index":0}]]},"If7":{"main":[[{"node":"Download Clip Audio","type":"main","index":0}],[{"node":"Wait6","type":"main","index":0}]]},"Wait1":{"main":[[{"node":"Clip Ready?","type":"main","index":0}]]},"Wait3":{"main":[[{"node":"Download Audio Stage 2","type":"main","index":0}]]},"Wait4":{"main":[[{"node":"Extracting Main Clip","type":"main","index":0}]]},"Wait5":{"main":[[{"node":"Extracting Background Clip","type":"main","index":0}]]},"Wait6":{"main":[[{"node":"Extracting Audio from Main Clip 2","type":"main","index":0}]]},"Wait 1":{"main":[[{"node":"Check Status","type":"main","index":0}]]},"Split Out1":{"main":[[{"node":"Loop Over Clips","type":"main","index":0}]]},"Submit Job":{"main":[[{"node":"Wait 1","type":"main","index":0}]]},"Clip Ready?":{"main":[[{"node":"If1","type":"main","index":0}]]},"Check Status":{"main":[[{"node":"If","type":"main","index":0}]]},"Editing Clips":{"main":[[{"node":"Wait1","type":"main","index":0}]]},"Generate Title":{"main":[[{"node":"Download Final Clip","type":"main","index":0}]]},"Post To TikTok":{"main":[[{"node":"Posting Interval","type":"main","index":0}]]},"Extract Results":{"main":[[{"node":"Structure Transcription","type":"main","index":0}]]},"Loop Over Clips":{"main":[[],[{"node":"Generating Main Clip","type":"main","index":0}]]},"Structure Links":{"main":[[{"node":"Generate Title","type":"main","index":0}]]},"Posting Interval":{"main":[[{"node":"Loop Over Clips","type":"main","index":0}]]},"Audio Transcription":{"main":[[{"node":"Structure Transcription 2","type":"main","index":0}]]},"Download Clip Audio":{"main":[[{"node":"Audio Transcription","type":"main","index":0}]]},"Download Final Clip":{"main":[[{"node":"Post To TikTok","type":"main","index":0}]]},"Extracting Main Clip":{"main":[[{"node":"If5","type":"main","index":0}]]},"Generating Main Clip":{"main":[[{"node":"Extracting Main Clip","type":"main","index":0}]]},"Download Audio Stage 1":{"main":[[{"node":"Download Audio Stage 2","type":"main","index":0}]]},"Download Audio Stage 2":{"main":[[{"node":"If4","type":"main","index":0}]]},"Download Audio Stage 3":{"main":[[{"node":"Transcribe Podcast Audio","type":"main","index":0}]]},"Clip Length Calculation":{"main":[[{"node":"Generating Background Clip","type":"main","index":0}]]},"Structure Transcription":{"main":[[{"node":"Podcast Best Moments Extraction","type":"main","index":0}]]},"Google Gemini Chat Model":{"ai_languageModel":[[{"node":"Podcast Best Moments Extraction","type":"ai_languageModel","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Podcast Best Moments Extraction","type":"ai_outputParser","index":0}]]},"Transcribe Podcast Audio":{"main":[[{"node":"Submit Job","type":"main","index":0}]]},"Google Gemini Chat Model1":{"ai_languageModel":[[{"node":"Generate Title","type":"ai_languageModel","index":0}]]},"Structure Transcription 2":{"main":[[{"node":"Editing Clips","type":"main","index":0}]]},"Structured Output Parser1":{"ai_outputParser":[[{"node":"Generate Title","type":"ai_outputParser","index":0}]]},"Extracting Background Clip":{"main":[[{"node":"If6","type":"main","index":0}]]},"Generating Background Clip":{"main":[[{"node":"Extracting Background Clip","type":"main","index":0}]]},"Extracting Audio from Clips":{"main":[[{"node":"Extracting Audio from Main Clip 2","type":"main","index":0}]]},"Send the YouTube Video Links":{"main":[[{"node":"Download Audio Stage 1","type":"main","index":0}]]},"Podcast Best Moments Extraction":{"main":[[{"node":"Split Out1","type":"main","index":0}]]},"Extracting Audio from Main Clip 2":{"main":[[{"node":"If7","type":"main","index":0}]]}}}


name: Google Maps business scraper with contact extraction via Apify and Firecrawl
author_name: Naveen Choudhary
author_username: n8nstein
nodes_used: ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","n8n-nodes-base.code"]
categories: []
created_at: 2025-06-02T00:09:54.996Z
updated_at: 2025-06-02T00:09:54.996Z
url: https://n8n.io/workflows/4573
scraped_at: 2025-07-06 21:16:30
description:
  Who is this for?
  Marketing agencies, sales teams, lead generation specialists, and business development professionals who need to build comprehensive business databases with contact information for outreach campaigns across any industry.

  What problem is this workflow solving?
  Finding businesses and their contact details manually is time-consuming and inefficient. This workflow automates the entire process of discovering businesses through Google Maps and extracting their digital contact information from websites, saving hours of manual research.

  What this workflow does
  This automated workflow runs every 30 minutes to:
  Scrape business data from Google Maps using Apify's Google Places crawler
  Save basic business information (name, address, phone, website) to Google Sheets
  Filter businesses that have websites
  Scrape each business's website content using Firecrawl
  Extract contact information including emails, LinkedIn, Facebook, Instagram, and Twitter profiles
  Store all extracted data in organized Google Sheets for easy access and follow-up

  Setup
  Required Services:
  Google Sheets account with OAuth2 setup
  Apify account with API access for Google Places scraping
  Firecrawl account with API access for website scraping

  Pre-setup:
  Copy this Google Sheet
  Configure your Apify and Firecrawl API credentials in n8n
  Set up Google Sheets OAuth2 connection
  Update the Google Sheet ID in all Google Sheets nodes

  Quick Start:
  The workflow includes detailed sticky notes explaining each phase. Simply configure your API credentials and Google Sheet, then activate the workflow.

  How to customize this workflow to your needs
  Change search criteria**: Modify the Apify scraping parameters to target different business types (restaurants, gyms, salons, etc.) or locations
  Adjust schedule**: Change the trigger interval from 30 minutes to your preferred frequency  
  Add more contact fields**: Extend the extraction code to find additional contact information like WhatsApp or Telegram
  Filter criteria**: Modify the filter conditions to target businesses with specific characteristics
  Batch size**: Adjust the batch processing to handle more or fewer websites simultaneously

  Perfect for lead generation, competitor research, and building targeted marketing lists across any industry or business type.

workflow_json:
  {"id":"95RHN758KyIlB84T","meta":{"instanceId":"8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112","templateCredsSetupCompleted":true},"name":"Google Maps business scraper with contact extraction via Apify and Firecrawl","tags":[],"nodes":[{"id":"17ab0386-4f7f-4f72-ab28-399febe4bf84","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[0,-125],"parameters":{"rule":{"interval":[{"field":"minutes","minutesInterval":30}]}},"typeVersion":1.1},{"id":"2e7080b6-a5a4-4571-933f-3a33979037e8","name":"Loop Until Complete","type":"n8n-nodes-base.if","position":[1100,-125],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"loose"},"combinator":"and","conditions":[{"id":"de704919-205a-470f-a417-b297fbbdbaf8","operator":{"type":"string","operation":"notEquals"},"leftValue":"={{ $json.data.status }}","rightValue":"SUCCEEDED"}]},"looseTypeValidation":true},"typeVersion":2.2},{"id":"3e062954-93b9-48d7-b5dc-29ff579793af","name":"Read Pending Queries","type":"n8n-nodes-base.googleSheets","position":[220,-125],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"false","lookupColumn":"Status"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=0","cachedResultName":"Query"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.2,"alwaysOutputData":true},{"id":"63d7b375-c4a6-42ae-b9ef-51f963edaa72","name":"Start Apify Scraping Job","type":"n8n-nodes-base.httpRequest","position":[440,-125],"parameters":{"url":"https://api.apify.com/v2/acts/compass~crawler-google-places/runs","method":"POST","options":{},"jsonBody":"={\n  \"searchStringsArray\": [\n    \"restaurant\"\n  ],\n  \"locationQuery\": \"New York, USA\",\n  \"maxCrawledPlacesPerSearch\": 15,\n  \"language\": \"en\",\n  \"maximumLeadsEnrichmentRecords\": 0,\n  \"maxImages\": 0\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"credentials":{"httpQueryAuth":{"id":"Zg8dzYM9LryztYYp","name":"[Apify/Sean]Query Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"958eb9fc-14f5-41f1-9055-10e0f889c039","name":"Wait for Job Succeed","type":"n8n-nodes-base.wait","position":[660,-125],"webhookId":"97a65079-8ee5-45a2-9de0-afd263bbbe34","parameters":{},"typeVersion":1.1},{"id":"32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079","name":"Check Scraping Status","type":"n8n-nodes-base.httpRequest","position":[880,-200],"parameters":{"url":"=https://api.apify.com/v2/actor-runs/{{ $json.data.id }}","options":{"timeout":10000},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"credentials":{"httpQueryAuth":{"id":"Zg8dzYM9LryztYYp","name":"[Apify/Sean]Query Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"97c84abb-c21e-497c-a2eb-1bf4b01db0ca","name":"Fetch Scraped Results","type":"n8n-nodes-base.httpRequest","position":[1320,-125],"parameters":{"url":"=https://api.apify.com/v2/datasets/{{ $json.data.defaultDatasetId }}/items","options":{"timeout":10000},"sendHeaders":true,"authentication":"genericCredentialType","genericAuthType":"httpQueryAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"},{"name":"Accept","value":"application/json"}]}},"credentials":{"httpQueryAuth":{"id":"Zg8dzYM9LryztYYp","name":"[Apify/Sean]Query Auth"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"383d8508-54ba-4fbf-9d4b-f13487d1ff25","name":"Save Business Data","type":"n8n-nodes-base.googleSheets","position":[1540,-125],"parameters":{"columns":{"value":{"phone":"={{ $json.phone }}","title":"={{ $json.title }}","status":"false","address":"={{ $json.address }}","website":"={{ $json.website }}","categoryName":"={{ $json.categoryName }}","searchString":"={{ $json.searchString }}"},"schema":[{"id":"searchString","type":"string","display":true,"removed":false,"required":false,"displayName":"searchString","defaultMatch":false,"canBeUsedToMatch":true},{"id":"title","type":"string","display":true,"required":false,"displayName":"title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"categoryName","type":"string","display":true,"required":false,"displayName":"categoryName","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"website","type":"string","display":true,"required":false,"displayName":"website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["searchString"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1948906848,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848","cachedResultName":"Data"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.6},{"id":"cd083a40-2270-44e2-8683-ae3b4d5b85a8","name":"Filter Businesses with Websites","type":"n8n-nodes-base.filter","position":[1760,-125],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"2218f0be-2c48-4a1a-bd21-8bdb67c495a1","operator":{"type":"string","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.website }}","rightValue":""},{"id":"d0ef3194-ee94-45c5-b9c3-5db32f08d1b5","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"false"}]}},"typeVersion":2.2},{"id":"234a63b0-3741-43d2-8a8b-ac29d6137ddb","name":"Batch Processing Logic","type":"n8n-nodes-base.splitInBatches","position":[1980,-125],"parameters":{"options":{}},"typeVersion":3},{"id":"63e8e91a-6012-4073-b03d-2158672288ee","name":"Scrape Website Content","type":"n8n-nodes-base.httpRequest","position":[2260,-220],"parameters":{"url":"https://api.firecrawl.dev/v1/scrape","method":"POST","options":{},"jsonBody":"={\n  \"url\": \"{{ $json.website }}\",\n  \"formats\": [\n    \"html\"\n  ]\n}","sendBody":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"dIJc7Mqjejgs6m3x","name":"[Firecrawl/Naveen]Bearer YOUR_TOKEN_HERE"},"httpHeaderAuth":{"id":"wQYxWVdhRcoCOOit","name":"[Apify/Sean]Header Auth account"}},"typeVersion":4.2},{"id":"d9c1b4dc-c741-4dff-a9cd-0dd6527d514a","name":"Extract Contact Information","type":"n8n-nodes-base.code","position":[2480,-220],"parameters":{"jsCode":"// N8N Code Node - Extract emails, LinkedIn, Facebook, Instagram for single item\nconst item = $input.first();\n\n// Get the text content to search (adjust field names as needed)\nconst textContent = item.json.data.html;\n\n// Initialize result object\nconst result = {\n  website: $('Batch Processing Logic').first().json.website,\n  emails: \"None\",\n  linkedin: \"None\", \n  facebook: \"None\",\n  instagram: \"None\",\n  twitter: \"None\"\n};\n\n// Email extraction regex - matches common email patterns\nconst emailRegex = /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b/gi;\nconst emails = textContent.match(emailRegex);\n\nif (emails && emails.length > 0) {\n  // Remove duplicates and filter out common non-email matches\n  const uniqueEmails = [...new Set(emails)].filter(email => {\n    const lowerEmail = email.toLowerCase();\n    return !lowerEmail.includes('example.com') && \n           !lowerEmail.includes('test@') &&\n           !lowerEmail.includes('noreply@') &&\n           !lowerEmail.includes('no-reply@') &&\n           lowerEmail.length > 5;\n  });\n  \n  if (uniqueEmails.length > 0) {\n    result.emails = uniqueEmails.length === 1 ? uniqueEmails[0] : uniqueEmails.join(', ');\n  }\n}\n\n// LinkedIn extraction - improved pattern\nconst linkedinRegex = /(?:https?:\\/\\/)?(?:www\\.)?linkedin\\.com\\/(?:in\\/|company\\/|pub\\/)[a-zA-Z0-9\\-._]+\\/?/gi;\nconst linkedinMatches = textContent.match(linkedinRegex);\nif (linkedinMatches && linkedinMatches.length > 0) {\n  const cleanLinkedin = linkedinMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.linkedin = cleanLinkedin;\n}\n\n// Facebook extraction - improved to match numeric IDs and usernames\nconst facebookRegex = /(?:https?:\\/\\/)?(?:www\\.|m\\.|mobile\\.)?facebook\\.com\\/(?:[^\\/\\s]+\\/)*[^\\/\\s?#]+/gi;\nconst facebookMatches = textContent.match(facebookRegex);\nif (facebookMatches && facebookMatches.length > 0) {\n  const cleanFacebook = facebookMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.facebook = cleanFacebook;\n}\n\n// Instagram extraction - improved to match various URL formats\nconst instagramRegex = /(?:https?:\\/\\/)?(?:www\\.)?instagram\\.com\\/[a-zA-Z0-9\\-._]+\\/?/gi;\nconst instagramMatches = textContent.match(instagramRegex);\nif (instagramMatches && instagramMatches.length > 0) {\n  const cleanInstagram = instagramMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.instagram = cleanInstagram;\n}\n\n// Twitter/X extraction - improved to match usernames properly\nconst twitterRegex = /(?:https?:\\/\\/)?(?:www\\.)?(?:twitter\\.com|x\\.com)\\/[a-zA-Z0-9_]+\\/?/gi;\nconst twitterMatches = textContent.match(twitterRegex);\nif (twitterMatches && twitterMatches.length > 0) {\n  const cleanTwitter = twitterMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.twitter = cleanTwitter;\n}\n\n// Alternative extraction for social handles without full URLs\n// Look for @username patterns for Instagram and Twitter\nif (result.instagram === \"None\") {\n  const igHandleRegex = /@([a-zA-Z0-9._]{1,30})/gi;\n  const igHandles = textContent.match(igHandleRegex);\n  if (igHandles && igHandles.length > 0) {\n    const username = igHandles[0].replace('@', '');\n    if (username.length > 0 && !username.includes(' ')) {\n      result.instagram = `https://www.instagram.com/${username}`;\n    }\n  }\n}\n\n// Look for Twitter handles without full URLs\nif (result.twitter === \"None\") {\n  const twitterHandleRegex = /@([a-zA-Z0-9_]{1,15})/gi;\n  const twitterHandles = textContent.match(twitterHandleRegex);\n  if (twitterHandles && twitterHandles.length > 0) {\n    const username = twitterHandles[0].replace('@', '');\n    if (username.length > 0 && !username.includes(' ')) {\n      result.twitter = `https://www.x.com/${username}`;\n    }\n  }\n}\n\n// Clean up URLs - remove trailing slashes and parameters\n['linkedin', 'facebook', 'instagram', 'twitter'].forEach(platform => {\n  if (result[platform] !== \"None\") {\n    result[platform] = result[platform].split('?')[0].split('#')[0].replace(/\\/$/, '');\n  }\n});\n\nreturn result;"},"typeVersion":2},{"id":"32ef5f5d-6457-4edc-9299-afea61af4784","name":"Save Contact Details","type":"n8n-nodes-base.googleSheets","position":[2700,-220],"parameters":{"columns":{"value":{"emails":"={{ $json.emails }}","twitter":"={{ $json.twitter }}","website":"={{ $json.website }}","facebook":"={{ $json.facebook }}","linkedin":"={{ $json.linkedin }}","instagram":"={{ $json.instagram }}"},"schema":[{"id":"website","type":"string","display":true,"required":false,"displayName":"website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"emails","type":"string","display":true,"required":false,"displayName":"emails","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin","type":"string","display":true,"required":false,"displayName":"linkedin","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook","type":"string","display":true,"required":false,"displayName":"facebook","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram","type":"string","display":true,"required":false,"displayName":"instagram","defaultMatch":false,"canBeUsedToMatch":true},{"id":"twitter","type":"string","display":true,"required":false,"displayName":"twitter","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":2056137853,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=2056137853","cachedResultName":"Details"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.6},{"id":"374d7e2f-6e14-4dd1-a51a-f0cce37945d8","name":"Mark as Processed","type":"n8n-nodes-base.googleSheets","position":[2920,-160],"parameters":{"columns":{"value":{"status":"true","website":"={{ $json.website }}"},"schema":[{"id":"searchString","type":"string","display":true,"required":false,"displayName":"searchString","defaultMatch":false,"canBeUsedToMatch":true},{"id":"title","type":"string","display":true,"required":false,"displayName":"title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"categoryName","type":"string","display":true,"required":false,"displayName":"categoryName","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"website","type":"string","display":true,"removed":false,"required":false,"displayName":"website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"hasWebsite","type":"string","display":true,"required":false,"displayName":"hasWebsite","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["website"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1948906848,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848","cachedResultName":"Data"},"documentId":{"__rl":true,"mode":"list","value":"1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk","cachedResultName":"Google Maps Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"V4NHfo08zBK4IW4e","name":"[Naveen]Google Sheets account"}},"typeVersion":4.6},{"id":"52c246a4-c483-4539-b22d-f4b046c16724","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[20,-360],"parameters":{"color":4,"width":640,"height":180,"content":"## 🚀 INITIALIZATION PHASE\n- Triggers every 30 minutes\n- Reads unprocessed records from [Google Sheet](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)\n- Starts Google Places scraper for restaurants\n- Waits for completion"},"typeVersion":1},{"id":"2983ac2d-5627-4ab1-9fbf-c09ed8886bf6","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[940,-420],"parameters":{"width":660,"height":180,"content":"## 📊 DATA COLLECTION PHASE\n- Monitors scraper job status\n- Loops until job completes\n- Fetches scraped restaurant data\n- Saves to \"Data\" sheet in [Google Sheets](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)"},"typeVersion":1},{"id":"dc13180b-cf28-44a1-b6e7-c4f0c00f57c2","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1940,-460],"parameters":{"color":6,"width":740,"height":200,"content":"## 🌐 WEBSITE PROCESSING PHASE\n- Filters restaurants with valid websites\n- Loops through each website\n- Scrapes website content with Firecrawl\n- Extracts contact information (emails, social media)\n- Saves to \"Details\" sheet and marks as processed"},"typeVersion":1},{"id":"7a23b11a-22ce-4816-a336-6cd28a90aa49","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2260,80],"parameters":{"width":580,"height":120,"content":"## 🔄 LOOPS\n**Status Check Loop**: Continues until scraper job is complete\n**Website Processing Loop**: Processes each restaurant website individually"},"typeVersion":1}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"b94bf772-530d-4a3c-b024-795c2a7cfe4a","connections":{"Schedule Trigger":{"main":[[{"node":"Read Pending Queries","type":"main","index":0}]]},"Mark as Processed":{"main":[[{"node":"Batch Processing Logic","type":"main","index":0}]]},"Save Business Data":{"main":[[{"node":"Filter Businesses with Websites","type":"main","index":0}]]},"Loop Until Complete":{"main":[[{"node":"Wait for Job Succeed","type":"main","index":0}],[{"node":"Fetch Scraped Results","type":"main","index":0}]]},"Read Pending Queries":{"main":[[{"node":"Start Apify Scraping Job","type":"main","index":0}]]},"Save Contact Details":{"main":[[{"node":"Mark as Processed","type":"main","index":0}]]},"Wait for Job Succeed":{"main":[[{"node":"Check Scraping Status","type":"main","index":0}]]},"Check Scraping Status":{"main":[[{"node":"Loop Until Complete","type":"main","index":0}]]},"Fetch Scraped Results":{"main":[[{"node":"Save Business Data","type":"main","index":0}]]},"Batch Processing Logic":{"main":[[],[{"node":"Scrape Website Content","type":"main","index":0}]]},"Scrape Website Content":{"main":[[{"node":"Extract Contact Information","type":"main","index":0}]]},"Start Apify Scraping Job":{"main":[[{"node":"Wait for Job Succeed","type":"main","index":0}]]},"Extract Contact Information":{"main":[[{"node":"Save Contact Details","type":"main","index":0}]]},"Filter Businesses with Websites":{"main":[[{"node":"Batch Processing Logic","type":"main","index":0}]]}}}


name: Extract Instagram Profile Data with Apify and Store in Google Sheets
author_name: Yaron Been
author_username: yaron-nofluff
nodes_used: ["n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest"]
categories: []
created_at: 2025-06-02T08:50:13.898Z
updated_at: 2025-06-02T08:50:13.898Z
url: https://n8n.io/workflows/4587
scraped_at: 2025-07-06 21:16:30
description:
  Workflow Overview
  This cutting-edge n8n automation is a powerful social media intelligence gathering tool designed to transform Instagram profile research into a seamless, automated process. By intelligently combining web scraping, data formatting, and cloud storage technologies, this workflow:

  Discovers Profile Insights: 
     Automatically scrapes Instagram profile data
     Captures comprehensive profile metrics
     Extracts critical social media intelligence

  Intelligent Data Capture:
     Retrieves follower counts
     Collects biographical information
     Captures profile picture and external links

  Seamless Data Logging:
     Automatically stores data in Google Sheets
     Creates a living, updateable database
     Enables easy analysis and tracking

  Key Benefits
  🤖 Full Automation: Instant profile intelligence
  💡 Comprehensive Insights: Detailed social media metrics
  📊 Effortless Tracking: Automated data collection
  🌐 Multi-Purpose Research: Flexible data gathering

  Workflow Architecture

  🔹 Stage 1: Trigger & Input
  Form-Based Trigger**: Manual username submission
  Webhook Support**: Flexible data entry methods
  User-Driven Initiation**

  🔹 Stage 2: Web Scraping
  Apify Integration**: Robust Instagram data extraction
  Comprehensive Profile Scanning**:
    Followers count
    Following count
    Profile biography
    Profile picture URL

  🔹 Stage 3: Data Formatting
  Intelligent Data Mapping**
  Standardized Data Structure**
  Preparation for Storage**

  🔹 Stage 4: Cloud Logging
  Google Sheets Integration**
  Persistent Data Storage**
  Easy Access and Analysis**

  Potential Use Cases
  Influencer Marketing**: Talent identification
  Competitive Intelligence**: Audience research
  Social Media Analysis**: Performance tracking
  Recruitment**: Talent scouting
  Brand Partnerships**: Collaboration opportunities

  Setup Requirements
  Apify Account
     Instagram scraping actor
     API token
     Configured scraping parameters

  Google Sheets
     Connected Google account
     Prepared tracking spreadsheet
     Appropriate sharing settings

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

  Future Enhancement Suggestions
  🤖 Advanced profile scoring
  📊 Engagement rate calculation
  🔔 Real-time change alerts
  🌐 Multi-platform profile tracking
  🧠 AI-powered insights generation

  Technical Considerations
  Implement robust error handling
  Use exponential backoff for API calls
  Maintain flexible data extraction strategies
  Ensure compliance with platform terms of service

  Ethical Guidelines
  Respect user privacy
  Use data for legitimate research
  Maintain transparent data collection practices
  Provide opt-out mechanisms

  Connect With Me

  Ready to unlock social media insights?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your social media research with intelligent, automated workflows!

  #InstagramDataScraping #SocialMediaIntelligence #InfluencerMarketing #DataAutomation #AIResearch #MarketingTechnology #SocialMediaAnalytics #ProfileIntelligence #WebScraping #MarketingTech

workflow_json:
  {"id":"rDGkfQpVtkD1D6RH","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"Instagram Profile Scraper","tags":[],"nodes":[{"id":"923b9b8e-f344-4984-a9cc-2ad111db39a4","name":"Provide Usernames","type":"n8n-nodes-base.formTrigger","position":[0,0],"webhookId":"896b15ed-970c-4164-a57a-b6e567b72db7","parameters":{"options":{},"formTitle":"Instagram profile scraper","formFields":{"values":[{"fieldLabel":"Username","requiredField":true}]},"formDescription":"Scrapes profile via apify"},"typeVersion":2.2},{"id":"cd6ea4f9-45dc-4193-954a-798a04716c5c","name":"Scrape Instagram Profile via Apify","type":"n8n-nodes-base.httpRequest","position":[280,0],"parameters":{"url":"https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>","method":"POST","options":{},"jsonBody":"={\n  \"input\": {\n    \"usernames\": [\n      {{ $json.Username }}\n    ],\n    \"resultsLimit\": 1\n  }\n}","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"e140ffbf-0ca4-4415-8cff-a78dfc6c040b","name":"Format Instagram Profile Data","type":"n8n-nodes-base.set","position":[660,0],"parameters":{"options":{},"assignments":{"assignments":[{"id":"5dc90212-ac40-4351-a15a-ef9f35ffd389","name":"username","type":"string","value":"={{ $json.username }}"},{"id":"02339555-2d6b-4d20-a59c-2e8dfa63361c","name":"fullName","type":"string","value":"={{ $json.fullName }}"},{"id":"f5a95d72-443d-468a-a1a6-8cc394b93fa4","name":"followersCount","type":"number","value":"={{ $json.followersCount }}"},{"id":"826fe0c8-4fbe-44e7-abf3-8a73022151f2","name":"followsCount","type":"number","value":"={{ $json.followsCount }}"},{"id":"dac8d9cc-5fa8-47d8-859d-d9f164ec20bd","name":"biography","type":"string","value":"={{ $json.biography }}"},{"id":"4c775459-f8f5-43d1-8b1a-aa122413cd12","name":"profilePicUrl","type":"string","value":"={{ $json.profilePicUrl }}"}]}},"typeVersion":3.4},{"id":"9c4f528b-c5c9-4f0b-92c4-1f9d75532fc4","name":"Append Profile to Google Sheet","type":"n8n-nodes-base.googleSheets","position":[880,0],"parameters":{"columns":{"value":{"Username":"={{ $json.username }}","Biography":"={{ $json.biography }}","Full Name":"={{ $json.fullName }}","Followers Count":"={{ $json.followersCount }}","Following Count":"={{ $json.followsCount }}","Profile Pic URL":"={{ $json.profilePicUrl }}"},"schema":[{"id":"Username","type":"string","display":true,"required":false,"displayName":"Username","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Full Name","type":"string","display":true,"required":false,"displayName":"Full Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Followers Count","type":"string","display":true,"required":false,"displayName":"Followers Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Following Count","type":"string","display":true,"required":false,"displayName":"Following Count","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Biography","type":"string","display":true,"required":false,"displayName":"Biography","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Profile Pic URL","type":"string","display":true,"required":false,"displayName":"Profile Pic URL","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"list","value":"1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1VQUy0tfWujh0lyulh0w6UhLGq87f8j8F7uFOaLFUyuQ/edit?usp=drivesdk","cachedResultName":"Instagram Profile Scraper"}},"credentials":{"googleSheetsOAuth2Api":{"id":"K5yYfUnKFTqaRn6A","name":"Google Sheets account"}},"typeVersion":4.5},{"id":"1980e973-f240-4b55-a4b8-4faa36f78c42","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-40,-1460],"parameters":{"color":3,"width":500,"height":1660,"content":"### 🔹 **1. `Trigger: On Form Submission`**\n\n* **Node Type:** Manual Trigger (or Webhook if embedded in a real form)\n* **Purpose:** Starts the workflow when a user submits a form with an Instagram username\n* **Expected Input:**\n\n  ```json\n  {\n    \"username\": \"influencer_1\"\n  }\n  ```\n\n---\n\n### 🔹 **2. `Scrape Instagram Profile via Apify`**\n\n* **Node Type:** HTTP Request\n\n* **Method:** `POST`\n\n* **URL:**\n\n  ```plaintext\n  https://api.apify.com/v2/actor-tasks/<TASK_ID>/run-sync-get-dataset-items?token=<API_TOKEN>\n  ```\n\n* **Headers:**\n\n  ```json\n  {\n    \"Content-Type\": \"application/json\"\n  }\n  ```\n\n* **Body Parameters:**\n\n  ```json\n  {\n    \"input\": {\n      \"usernames\": [\"={{ $json.username }}\"]\n    }\n  }\n  ```\n\n* **Sample Output from Apify:**\n\n  ```json\n  [\n    {\n      \"username\": \"influencer_1\",\n      \"fullName\": \"Jane Doe\",\n      \"followersCount\": 12500,\n      \"followsCount\": 320,\n      \"biography\": \"Travel | Lifestyle 🌍\",\n      \"profilePicUrl\": \"https://instagram.com/path/to/pic.jpg\",\n      \"isPrivate\": false,\n      \"isVerified\": true,\n      \"externalUrl\": \"https://janedoe.com\"\n    }\n  ]\n  ```\n\n✅ **Result:** The username submitted from the form is scraped in real time using Apify’s Instagram actor, and the result is passed to the next step."},"typeVersion":1},{"id":"9c341b28-0385-4691-904b-8fa8d8e0b213","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[600,-1240],"parameters":{"color":6,"width":500,"height":1440,"content":"## ✨ SECTION 2: 🛠 Format Data + 📊 Append to Google Sheets\n\n### 🔹 **3. `Format Instagram Profile Data`**\n\n* **Node Type:** Set\n* **Purpose:** Clean and organize the Apify response to match your Google Sheets schema\n* **Fields to Set:**\n\n  | Field Name        | Value                      |\n  | ----------------- | -------------------------- |\n  | `Username`        | `{{$json.username}}`       |\n  | `Full Name`       | `{{$json.fullName}}`       |\n  | `Followers`       | `{{$json.followersCount}}` |\n  | `Following`       | `{{$json.followsCount}}`   |\n  | `Bio`             | `{{$json.biography}}`      |\n  | `Profile Pic URL` | `{{$json.profilePicUrl}}`  |\n  | `Website`         | `{{$json.externalUrl}}`    |\n\n✅ **Result:** The data is transformed into a clean format suitable for logging or outreach tracking.\n\n---\n\n### 🔹 **4. `Append Profile to Google Sheet`**\n\n* **Node Type:** Google Sheets (Append Row)\n* **Setup:**\n\n  * **Sheet Name:** `Scraped_Influencer_Data`\n  * **Columns:** Username, Full Name, Followers, Following, Bio, Profile Pic URL, Website\n* **Purpose:** Stores the formatted data into a centralized Google Sheet for future reference or outreach\n\n✅ **Result:** Your influencer data is persistently stored and ready to be used for marketing, analytics, or CRM integration.\n\n---\n\n## ✅ Final Workflow Summary\n\n```plaintext\n[Form Trigger] \n   ⬇️\n[Apify HTTP Request] \n   ⬇️\n[Format Fields]\n   ⬇️\n[Google Sheet Append]\n```"},"typeVersion":1},{"id":"1552dfc6-f98c-45e1-bb18-071fbb69a159","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-1800,-1460],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"91ca76cf-d9dd-489c-a9de-357c876d00e2","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-1800,-1120],"parameters":{"color":4,"width":1289,"height":2418,"content":"# 🧠 **Workflow Overview: Instagram Profile Scraper using Apify & Google Sheets in n8n**\n\n## 🔍 **Purpose**\n\nThis n8n automation workflow allows you to **scrape Instagram profile data** using the **Apify Instagram Scraper** and **store the results in Google Sheets** for marketing, outreach, or analytics. It's designed to be simple, efficient, and extendable — ideal for influencer marketers, social analysts, or growth teams who want actionable Instagram data without writing code.\n\n---\n\n## 🧩 **Core Workflow Logic**\n\n### 💡 What It Does\n\n1. **Receives an Instagram username** (via form or manual trigger)\n2. **Sends the username to Apify** to scrape public profile data\n3. **Extracts key details** (followers, bio, profile pic, etc.)\n4. **Appends the cleaned data** to a structured Google Sheet\n\n---\n\n## 🏗️ **Workflow Structure & Components**\n\n## 📊 **Data Flow Example**\n\n### 🔸 **Input (Submitted via Form or Manual Trigger):**\n\n```json\n{\n  \"username\": \"influencer_1\"\n}\n```\n\n### 🔹 **Output (Saved to Google Sheets):**\n\n| Username      | Full Name | Followers | Following | Bio    | Profile Pic URL | Website                                                        |                                            |\n| ------------- | --------- | --------- | --------- | ------ | --------------- | -------------------------------------------------------------- | ------------------------------------------ |\n| influencer\\_1 | Jane Doe  | 12,500    | 320       | Travel | Lifestyle 🌍    | [https://instagram.com/pic.jpg](https://instagram.com/pic.jpg) | [https://janedoe.com](https://janedoe.com) |\n\n---\n\n## 🛠️ **Built With**\n\n* [n8n](https://n8n.io/) – Open-source workflow automation\n* [Apify](https://apify.com/) – Instagram Profile Scraper actor\n* Google Sheets (native integration via n8n)\n\n---\n\n## 🔐 **Authentication & API Notes**\n\n* **Apify Token**: Required in the HTTP Request URL\n* **Google Sheets Access**: OAuth2 credentials configured in n8n\n* **Security Tip**: Store secrets as [n8n environment variables](https://docs.n8n.io/hosting/environment-variables/)\n\n---\n\n## 💼 **Real-World Use Cases**\n\n| Use Case                  | Description                                                   |\n| ------------------------- | ------------------------------------------------------------- |\n| 👩‍💼 Influencer Outreach | Automatically collect Instagram metrics for campaign planning |\n| 📊 Competitor Analysis    | Track follower growth and bio updates for competitors         |\n| 📋 CRM Enrichment         | Enrich influencer records with live Instagram data            |\n\n---\n\n## 🚀 **Enhancements & Ideas**\n\n* 🔁 **Loop from Google Sheets:** Read a batch of usernames and scrape in loop\n* 🚫 **Avoid Duplicates:** Add an `IF` node to skip usernames already scraped\n* 📩 **Send Slack/Email Alerts** when new data is added\n* 🧠 **Filter Low Engagement Accounts** (e.g., if followers < 1,000)\n\n---\n\n## 📸 **Visual Workflow Map**\n\n```plaintext\n[Trigger: On Form Submission]\n          ⬇️\n[Scrape Instagram Profile via Apify]\n          ⬇️\n[Format Instagram Profile Data]\n          ⬇️\n[Append Profile to Google Sheet]\n```\n\n---\n\n## 🧾 **Conclusion**\n\nThis workflow is a **powerful no-code solution** to streamline the process of gathering Instagram profile data. It integrates the flexibility of n8n, the scraping power of Apify, and the accessibility of Google Sheets to form a seamless automation — perfect for creators, marketers, and analysts.\n\n"},"typeVersion":1}],"active":false,"pinData":{"Scrape Instagram Profile via Apify":[{"json":{"fullName":"Jane Doe","username":"influencer_1","biography":"Travel | Fashion | Lifestyle 🌍","isPrivate":false,"isVerified":true,"postsCount":340,"externalUrl":"https://janedoe.com","latestPosts":[{"caption":"Exploring the Amalfi coast 🌊","imageUrl":"https://instagram.com/post/abc.jpg","timestamp":1717000000,"likesCount":2300,"commentsCount":180}],"followsCount":320,"profilePicUrl":"https://instagram.com/path/to/profile-pic.jpg","followersCount":12500}}]},"settings":{"executionOrder":"v1"},"versionId":"0073a2a2-78d1-4806-b6f9-216a99a06107","connections":{"Provide Usernames":{"main":[[{"node":"Scrape Instagram Profile via Apify","type":"main","index":0}]]},"Format Instagram Profile Data":{"main":[[{"node":"Append Profile to Google Sheet","type":"main","index":0}]]},"Scrape Instagram Profile via Apify":{"main":[[{"node":"Format Instagram Profile Data","type":"main","index":0}]]}}}


name: Firecrawl AI-Powered Market Intelligence Bot: Automated News Insights Delivery
author_name: Yaron Been
author_username: yaron-nofluff
categories: []
created_at: 2025-06-02T08:54:26.735Z
updated_at: 2025-06-02T08:54:26.735Z
url: https://n8n.io/workflows/4588
scraped_at: 2025-07-06 21:16:30
description:
  Workflow Overview
  This cutting-edge n8n automation is a sophisticated market research and intelligence gathering tool designed to transform web content discovery into actionable insights. By intelligently combining web crawling, AI-powered filtering, and smart summarization, this workflow:

  Discovers Relevant Content: 
     Automatically crawls target websites
     Identifies trending topics
     Extracts comprehensive article details

  Intelligent Content Filtering:
     Applies custom keyword matching
     Filters for most relevant articles
     Ensures high-quality information capture

  AI-Powered Summarization:
     Generates concise, meaningful summaries
     Extracts key insights
     Provides quick, digestible information

  Seamless Delivery:
     Sends summaries directly to Slack
     Enables instant team communication
     Facilitates rapid information sharing

  Key Benefits
  🤖 Full Automation: Continuous market intelligence
  💡 Smart Filtering: Precision content discovery
  📊 AI-Powered Insights: Intelligent summarization
  🚀 Instant Delivery: Real-time team updates

  Workflow Architecture

  🔹 Stage 1: Content Discovery
  Scheduled Trigger**: Daily market research
  FireCrawl Integration**: Web content crawling
  Comprehensive Site Scanning**:
    Extracts article metadata
    Captures full article content
    Identifies key information sources

  🔹 Stage 2: Intelligent Filtering
  Keyword-Based Matching**
  Relevance Assessment**
  Custom Domain Optimization**:
    AI and technology focus
    Startup and innovation tracking

  🔹 Stage 3: AI Summarization
  OpenAI GPT Integration**
  Contextual Understanding**
  Concise Insight Generation**:
    3-point summary format
    Captures essential information

  🔹 Stage 4: Team Notification
  Slack Integration**
  Instant Information Sharing**
  Formatted Insight Delivery**

  Potential Use Cases
  Market Research Teams**: Trend tracking
  Innovation Departments**: Technology monitoring
  Startup Ecosystems**: Competitive intelligence
  Product Management**: Industry insights
  Strategic Planning**: Rapid information gathering

  Setup Requirements
  FireCrawl API
     Web crawling credentials
     Configured crawling parameters

  OpenAI API
     GPT model access
     Summarization configuration
     API key management

  Slack Workspace
     Channel for insights delivery
     Appropriate app permissions
     Webhook configuration

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

  Future Enhancement Suggestions
  🤖 Multi-source crawling
  📊 Advanced sentiment analysis
  🔔 Customizable alert mechanisms
  🌐 Expanded topic tracking
  🧠 Machine learning refinement

  Technical Considerations
  Implement robust error handling
  Use exponential backoff for API calls
  Maintain flexible crawling strategies
  Ensure compliance with website terms of service

  Ethical Guidelines
  Respect content creator rights
  Use data for legitimate research
  Maintain transparent information gathering
  Provide proper attribution

  Workflow Visualization

  [Daily Trigger]
      ⬇️
  [Web Crawling]
      ⬇️
  [Content Filtering]
      ⬇️
  [AI Summarization]
      ⬇️
  [Slack Delivery]

  Connect With Me

  Ready to revolutionize your market research?

  📧 Email: Yaron@nofluff.online

  🎥 YouTube: @YaronBeen

  💼 LinkedIn: Yaron Been

  Transform your information gathering with intelligent, automated workflows!


  #AIResearch #MarketIntelligence #AutomatedInsights #TechTrends #WebCrawling #AIMarketing #InnovationTracking #BusinessIntelligence #DataAutomation #TechNews

nodes_used:
  ["n8n-nodes-base.httpRequest","n8n-nodes-base.slack","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi"]

workflow_json:
  {"id":"iTYjhgQEFE4ap1c8","meta":{"instanceId":"84ad02d6104594179f43f1ce9cfe3a81637b2faedb57dafcb9e649b7542988db","templateCredsSetupCompleted":true},"name":"FireCrawl Summary Bot","tags":[],"nodes":[{"id":"471044c1-cafd-4810-973d-b40c74ef6999","name":"Daily Market Research Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[-160,0],"parameters":{"rule":{"interval":[{"triggerAtHour":8}]}},"typeVersion":1.2},{"id":"8f6e97b6-6910-4c6b-8c9a-29a0cf95ac09","name":"Crawl TechCrunch (FireCrawl)","type":"n8n-nodes-base.httpRequest","position":[140,0],"parameters":{"url":"https://api.firecrawl.dev/v1/crawl","method":"POST","options":{},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"url","value":"https://techcrunch.com"},{"name":"crawl_type","value":"scrape"},{"name":"extract_article","value":"true"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2},{"id":"7d446441-d882-4816-805e-2d52cd8aea87","name":"Filter Relevant Articles","type":"n8n-nodes-base.code","position":[360,0],"parameters":{"jsCode":"const keywords = ['AI', 'machine learning', 'startup', 'generative'];\nconst results = [];\n\nfor (const item of items) {\n  const title = item.json.article?.title?.toLowerCase() || '';\n  const content = item.json.article?.content?.toLowerCase() || '';\n\n  const isRelevant = keywords.some(keyword =>\n    title.includes(keyword.toLowerCase()) ||\n    content.includes(keyword.toLowerCase())\n  );\n\n  if (isRelevant) {\n    results.push(item); // keep only relevant articles\n  }\n}\n\nreturn results;\n"},"typeVersion":2},{"id":"a326e8fd-bfc8-4380-9c66-20481aaa8a6c","name":"Summarizer Agent","type":"@n8n/n8n-nodes-langchain.agent","position":[700,0],"parameters":{"text":"=Summarize the following article in 3 bullet points:\nTitle: {{ $json.article.title }}\ndescription: {{ $json.meta.description }}\nContent: {{ $json.article.content }}","options":{},"promptType":"define"},"typeVersion":1.9},{"id":"d8576228-6261-4654-84de-0864e398c22d","name":"OpenAI Summarizer","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[640,240],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"wYwTjEv45IzlAOAu","name":"OpenAi account 2"}},"typeVersion":1.2},{"id":"f5965b4a-4ab1-4e5f-868c-2dc11c59fc28","name":"Send Summary to Slack","type":"n8n-nodes-base.slack","position":[1060,0],"webhookId":"c2e00b18-42bd-49b7-bc4c-05d60633a7c8","parameters":{"text":"=🔍 AI Research Summary: \nTitle: {{ $('Filter Relevant Articles').item.json.article.title }}\nLink: {{ $('Filter Relevant Articles').item.json.url }}\nSummary: {{ $json.output }}","select":"channel","channelId":{"__rl":true,"mode":"list","value":"C08TTV0CC3E","cachedResultName":"all-nathing"},"otherOptions":{}},"credentials":{"slackApi":{"id":"L2vpqY0w5ba50NlR","name":"Slack account 2"}},"typeVersion":2.3},{"id":"295fae17-e75e-47db-a321-0379899f44cc","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[80,-580],"parameters":{"color":3,"width":440,"height":800,"content":"🌐💻 2. Crawling & Filtering\nNodes:\n🌐 Crawl TechCrunch (FireCrawl) (HTTP Request)\n\n🧠 Filter Relevant Articles (Code)\n\n🔍 What these nodes do:\n🌐 Crawl TechCrunch (FireCrawl)\nUses a POST request to FireCrawl’s API\n\nInputs:\n\nurl: Target site (e.g., https://techcrunch.com)\n\ncrawl_type: \"scrape\"\n\nextract_article: true\n\nRetrieves:\n\ntitle, content, author, published_at\n\n🧠 Filter Relevant Articles\nUses a Code node to check if the article is relevant\n\nKeywords like \"AI\", \"machine learning\", \"startup\" are matched\n\nFilters only the articles that matter to your domain"},"typeVersion":1},{"id":"5fe2fbcc-8489-42cf-a578-48a46f18977d","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[580,-540],"parameters":{"color":5,"width":640,"height":920,"content":"🤖💬 3. Summarization & Delivery\nNodes:\n🧠 Summarize Article with AI (AI Agent)\n\n🔗 OpenAI Chat (Summarizer) (OpenAI Chat Model)\n\n💬 Send Summary to Slack (Slack)\n\n📌 What happens here:\n🤖 Summarize Article with AI\nPasses the article to a GPT-4 or GPT-3.5 agent\n\nUses a prompt like:\n\n“Summarize the following article in 3 bullet points…”\n\n💡 OpenAI Chat (Summarizer)\nExecutes the actual summarization\n\nOutputs a short, clean summary ideal for fast reading\n\n💬 Send Summary to Slack\nPosts the summary to a specific Slack channel (e.g., #market-research)"},"typeVersion":1},{"id":"97ecbbb2-e763-47f0-82b8-2fede05b486f","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-2100,-560],"parameters":{"color":4,"width":1300,"height":320,"content":"=======================================\n            WORKFLOW ASSISTANCE\n=======================================\nFor any questions or support, please contact:\n    Yaron@nofluff.online\n\nExplore more tips and tutorials here:\n   - YouTube: https://www.youtube.com/@YaronBeen/videos\n   - LinkedIn: https://www.linkedin.com/in/yaronbeen/\n=======================================\n"},"typeVersion":1},{"id":"d28d5f04-db81-4833-869f-158b4586a337","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-2100,-220],"parameters":{"color":4,"width":1289,"height":2758,"content":"Absolutely! Here's your **Market Research Automation Workflow** beautifully divided into logical sections, with clear explanations and fitting icons to help you grasp each part at a glance.\n\n---\n\n# 🚀 **n8n Market Research Automation Workflow**\n\nAutomate the process of **crawling news sites**, **filtering for relevant content**, **summarizing it with AI**, and **posting it to Slack** — all in a seamless flow.\n\n---\n\n## ⏰ 1. **Trigger & Scheduling**\n\n**Node:** `🕒 Daily Market Research Trigger`\n\n> Starts the workflow on a recurring schedule.\n\n🔧 **What it does:**\n\n* Runs every morning (or your defined time)\n* Ensures your team receives fresh updates daily\n\n📅 **Example Cron Setting:**\n\n* Every day at 8:00 AM\n\n---\n\n## 🌐💻 2. **Crawling & Filtering**\n\n### **Nodes:**\n\n* `🌐 Crawl TechCrunch (FireCrawl)` *(HTTP Request)*\n* `🧠 Filter Relevant Articles` *(Code)*\n\n### 🔍 What these nodes do:\n\n#### 🌐 **Crawl TechCrunch (FireCrawl)**\n\n* Uses a **POST** request to FireCrawl’s API\n* Inputs:\n\n  * `url`: Target site (e.g., `https://techcrunch.com`)\n  * `crawl_type`: `\"scrape\"`\n  * `extract_article`: `true`\n* Retrieves:\n\n  * `title`, `content`, `author`, `published_at`\n\n#### 🧠 **Filter Relevant Articles**\n\n* Uses a `Code` node to check if the article is relevant\n* Keywords like `\"AI\"`, `\"machine learning\"`, `\"startup\"` are matched\n* Filters only the articles that **matter to your domain**\n\n📄 **Sample Code:**\n\n```javascript\nconst keywords = ['AI', 'machine learning', 'startup', 'generative'];\nconst results = [];\n\nfor (const item of items) {\n  const title = item.json.article?.title?.toLowerCase() || '';\n  const content = item.json.article?.content?.toLowerCase() || '';\n\n  const isRelevant = keywords.some(keyword =>\n    title.includes(keyword.toLowerCase()) ||\n    content.includes(keyword.toLowerCase())\n  );\n\n  if (isRelevant) {\n    results.push(item); // keep only relevant articles\n  }\n}\n\nreturn results;\n```\n\n---\n\n## 🤖💬 3. **Summarization & Delivery**\n\n### **Nodes:**\n\n* `🧠 Summarize Article with AI` *(AI Agent)*\n* `🔗 OpenAI Chat (Summarizer)` *(OpenAI Chat Model)*\n* `💬 Send Summary to Slack` *(Slack)*\n\n### 📌 What happens here:\n\n#### 🤖 **Summarize Article with AI**\n\n* Passes the article to a GPT-4 or GPT-3.5 agent\n* Uses a prompt like:\n\n  > “Summarize the following article in 3 bullet points…”\n\n#### 💡 **OpenAI Chat (Summarizer)**\n\n* Executes the actual summarization\n* Outputs a short, clean summary ideal for fast reading\n\n#### 💬 **Send Summary to Slack**\n\n* Posts the summary to a specific Slack channel (e.g., `#market-research`)\n* Message format example:\n\n  ```\n  🔍 *Market Research Summary*\n  *Title:* OpenAI launches GPT-5\n  *Link:* https://techcrunch.com/article\n  *Summary:*\n  - GPT-5 improves reasoning\n  - Enhanced safety mechanisms\n  - Better multilingual performance\n  ```\n\n"},"typeVersion":1}],"active":false,"pinData":{"Crawl TechCrunch (FireCrawl)":[{"json":{"url":"https://techcrunch.com","meta":{"description":"The latest technology news and information on startups."},"title":"TechCrunch - Startup and Technology News","status":"success","article":{"title":"OpenAI launches GPT-5","author":"Jane Doe","content":"OpenAI has officially released GPT-5, a major upgrade with enhanced reasoning and safety improvements...","published_at":"2025-05-28T13:00:00Z"},"content":"<html>...</html>"}}]},"settings":{"executionOrder":"v1"},"versionId":"8d64bd18-6a8f-4a2b-a952-5d8417122a2e","connections":{"Summarizer Agent":{"main":[[{"node":"Send Summary to Slack","type":"main","index":0}]]},"OpenAI Summarizer":{"ai_languageModel":[[{"node":"Summarizer Agent","type":"ai_languageModel","index":0}]]},"Filter Relevant Articles":{"main":[[{"node":"Summarizer Agent","type":"main","index":0}]]},"Crawl TechCrunch (FireCrawl)":{"main":[[{"node":"Filter Relevant Articles","type":"main","index":0}]]},"Daily Market Research Trigger":{"main":[[{"node":"Crawl TechCrunch (FireCrawl)","type":"main","index":0}]]}}}


name: AI-Powered Lead Enrichment with Bright Data MCP and Google Sheets
author_name: Cyril Nicko Gaspar
author_username: cngaspar
categories: []
created_at: 2025-06-02T09:57:14.427Z
updated_at: 2025-06-02T09:57:14.427Z
url: https://n8n.io/workflows/4589
scraped_at: 2025-07-06 21:16:30
description:
  📌 HubSpot Lead Enrichment with Bright Data MCP



  This template enables natural-language-driven automation using Bright Data's MCP tools, triggered directly by new leads in HubSpot. It dynamically extracts and executes the right tool based on lead context—powered by AI and configurable in N8N.

  ❓ What Problem Does This Solve?

  Manual lead enrichment is slow, inconsistent, and drains valuable time. This solution automates the process using a no-code workflow that connects HubSpot, Bright Data MCP, and an AI agent—without requiring scripts or technical skills. Perfect for marketing, sales, and RevOps teams.

  🧰 Prerequisites

  To use this template, you’ll need:

  A self-hosted or cloud instance of N8N
  A Bright Data MCP API token
  A valid OpenAI API key (or compatible AI model)
  A HubSpot account
  Either a Private App token or OAuth credentials for HubSpot
  Basic familiarity with N8N workflows

  ⚙️ Setup Instructions

  1. Set Up Authentication in HubSpot

  🔐 Option 1: Use a Private App Token (Simple Setup)
  Log in to your HubSpot account.
  Navigate to Settings → Integrations → Private Apps.
  Create a new Private App with the following scopes:
     crm.objects.contacts.read
     crm.objects.contacts.write
     crm.schemas.contacts.read
     crm.objects.companies.read (optional)
  Copy the Access Token.
  In N8N, create a credential for HubSpot App Token and paste the app token in the field.
  Go back to Hubspot Private App settings to setup a webhook.
     Copy the url in your workflow's Webhook node and paste it here.

  🔁 Option 2: Use OAuth (Advanced + Secure)
  In HubSpot, go to Settings → Integrations → Apps → Create App.
  Set your Redirect URL to match your N8N OAuth2 redirect path.
  Choose scopes like:
     crm.objects.companies.read
     crm.objects.contacts.read
     crm.objects.deals.read
     crm.schemas.companies.read
     crm.schemas.contacts.read
     crm.schemas.deals.read
     crm.objects.contacts.write (conditionally required)
  Note the Client ID and Client Secret.
  Copy the App ID and the developer API key
  In N8N, create a credential for HubSpot Developer API and paste those info from previous step.
  Attach these credentials to the HubSpot node in N8N.

  2. Setup and obtain API token and other necessary information from Bright Data

     In your Bright Data account, obtain the following information:
     API token
     Web Unlocker zone name (optional)
     Browser API username and password string separated by colon (optional)
  3. Host SSE server from STDIO command
     The methods below will allow you to receive SSE (Server-Sent Events) from Bright Data MCP via a local Supergateway or Smithery

     **

     Method 1: Run Supergateway in a separate web service (Recommended)

     This method will work for both cloud version and self-hosted N8N.

     Signup to any cloud services of your choice (DigitalOcean, Heroku, Hetzner, Render, etc.).

  For NPM based installation:

     Create a new web service.
     Choose Node.js as runtime environment and setup a custom server without repository.
     In your server’s settings to define environment variables or .env file, add:
  `API_TOKEN=your_brightdata_api_token
  WEB_UNLOCKER_ZONE=optional_zone_name
  BROWSER_AUTH=optional_browser_auth`
     Paste the following text as a start command: npx -y supergateway --stdio "npx -y @brightdata/mcp" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message
     Deploy it and copy the web server URL, then append /sse into it.
     Your SSE server should now be accessible at: https://your_server_url/sse

  For Docker based installation:
     Create a new web service.
     Choose Docker as the runtime environment.
     Set up your Docker environment by pulling the necessary images or creating a custom Dockerfile.
     In your server’s settings to define environment variables or .env file, add:
  `API_TOKEN=your_brightdata_api_token
  WEB_UNLOCKER_ZONE=optional_zone_name
  BROWSER_ZONE=optional_browser_zone_name`
      Use the following Docker command to run Supergateway: `docker run -it --rm -p 8000:8000 supercorp/supergateway \
      --stdio "npx -y @brightdata/mcp /" \
      --port 8000`
     Deploy it and copy the web server URL, then append /sse into it.
     Your SSE server should now be accessible at: https://your_server_url/sse

     For more installation guides, please refer to https://github.com/supercorp-ai/supergateway.git.
     **

     Method 2: Run Supergateway in the same web service as the N8N instance

     This method will only work for self-hosted N8N.

  a. Set Required Environment Variables

     In your server's settings to define environment variables or .env file, add:

        API_TOKEN=your_brightdata_api_token
     WEB_UNLOCKER_ZONE=optional_zone_name
     BROWSER_ZONE=optional_browser_zone_name
  b. Run Supergateway in Background

        npx -y supergateway --stdio "npx -y @brightdata/mcp" --port 8000 --baseUrl http://localhost:8000 --ssePath /sse --messagePath /message
        Use the command above to execute it through the cloud shell or set it as a pre-deploy command.


     Your SSE server should now be accessible at:  
     http://localhost:8000/sse

   
     For more installation guides, please refer to https://github.com/supercorp-ai/supergateway.git.

     *

     *Method 3: Configure via Smithery.ai* (Easiest)
  If you don't want additional setup and want to test it right away, follow these instructions:

     Visit https://smithery.ai/server/@luminati-io/brightdata-mcp/tools to:
     Signup (if you are new to Smithery)
     Create an API key
     Define environment variables via a profile
     Retrieve your SSE server HTTP URL

  4. Connect Google Sheets to N8N

  Ensure your Google Sheet:
    Contains columns like row_id, first_name, last_name, email, and status.
    Is shared with your N8N service account (or connected via OAuth)

  In N8N:
    Add a Google Sheets Trigger node
    Set it to watch for new rows in your lead sheet

  5. Import and Configure the N8N Workflow

  Import the provided JSON workflow into N8N
  Update nodes with your credentials:
    Hubspot: Add your API key or connect it via OAuth.
    Google Sheets Trigger: Link to your actual sheet
    OpenAI Node: Add your API key
    Bright Data Tool Execution: Add Bright Data token and SSE URL

  🔄 How It Works
  New contact in Hubspot or a new row is added to the Google Sheet
  N8N triggers the workflow
  AI agent classifies the task (e.g., “Find LinkedIn”, “Get company info”)
  The relevant MCP tool is called
  Results are appended back to the sheet or routed to another destination
  Rerun the specific record by specifying status "needs more enrichment", or leaving it blank. 

  🧩 Use Cases

  B2B Lead Enrichment** – Add missing fields (title, domain, social profiles)
  Email Intelligence** – Validate and enrich based on email
  Market Research** – Pull company or contact data on demand
  CRM Auto-fill** – Push enriched leads to tools like HubSpot or Salesforce

  🛠️ Customization

  Prompt Tuning** – Adjust how the AI interprets input data
  Column Mapping** – Customize which fields to pull from the sheet
  Tool Logic** – Add retries, fallback tools, or confidence-based routing
  Destination Output** – Integrate with CRMs, Slack, or webhook endpoints

  ✅ Summary

  This template turns a Google Sheet into an AI-powered lead enrichment engine. By combining Bright Data’s tools with a natural language AI agent, your team can automate repetitive tasks and scale lead ops—without writing code.

  Just add a row, and let the workflow do the rest.

nodes_used:
  ["n8n-nodes-base.googleSheets","n8n-nodes-base.hubspot","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.outputParserAutofixing","@n8n/n8n-nodes-langchain.outputParserStructured","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.mcpClientTool"]

workflow_json:
  {"meta":{"instanceId":"4e6be3a68285934388a854ac0ffdc5e5500688d5cdb88d0ec2d734e85f097355","templateCredsSetupCompleted":true},"nodes":[{"id":"80ffc9b5-2a35-46e3-a641-45ae6f9556bd","name":"Google Sheets Trigger","type":"n8n-nodes-base.googleSheetsTrigger","position":[-5820,2140],"parameters":{"options":{"columnsToWatch":["status"]},"pollTimes":{"item":[{"mode":"everyMinute"}]},"sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsTriggerOAuth2Api":{"id":"VNqOvRgnzQaAingt","name":"Google Sheets Trigger account"}},"typeVersion":1},{"id":"06d817c6-f625-495e-bfd3-d019a98f0ebb","name":"Structured Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserStructured","position":[-3260,2280],"parameters":{"schemaType":"manual","inputSchema":"{\n\"$schema\": \"http://json-schema.org/draft-07/schema#\",\n\"title\": \"UserData\",\n\"type\": \"object\",\n\"properties\": {\n  \"first_name\": {\n      \"type\": \"string\"\n  },\n  \"last_name\": {\n      \"type\": \"string\"\n  },\n  \"middle_name\": {\n      \"type\": \"string\"\n  },\n  \"gender\": {\n      \"type\": \"string\"\n  },\n  \"address\": {\n      \"type\": \"string\"\n  },\n  \"city\": {\n      \"type\": \"string\"\n  },\n  \"state\": {\n      \"type\": \"string\"\n  },\n  \"zip\": {\n      \"type\": \"integer\"\n  },\n  \"country\": {\n      \"type\": \"string\"\n  },\n  \"email\": {\n      \"type\": \"string\",\n      \"format\": \"email\"\n  },\n  \"phone\": {\n      \"type\": \"string\"\n  },\n  \"date_of_birth\": {\n      \"type\": \"string\"\n  },\n  \"field_of_study\": {\n      \"type\": \"string\"\n  },\n  \"graduation_date\": {\n      \"type\": \"string\"\n  },\n  \"company\": {\n      \"type\": \"string\"\n  },\n  \"job_title\": {\n      \"type\": \"string\"\n  },\n  \"department\": {\n      \"type\": \"string\"\n  },\n  \"facebook_handle\": {\n      \"type\": \"string\"\n  },\n  \"linkedin_url\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n  },\n  \"x_handle\": {\n      \"type\": \"string\"\n  },\n  \"instagram_handle\": {\n      \"type\": \"string\"\n  },\n  \"company_address\": {\n      \"type\": \"string\"\n  },\n  \"company_city\": {\n      \"type\": \"string\"\n  },\n  \"company_state\": {\n      \"type\": \"string\"\n  },\n  \"company_zip\": {\n      \"type\": \"integer\"\n  },\n  \"company_country\": {\n      \"type\": \"string\"\n  },\n  \"company_phone\": {\n      \"type\": \"string\"\n  },\n  \"company_email\": {\n      \"type\": \"string\",\n      \"format\": \"email\"\n  },\n  \"company_industry\": {\n      \"type\": \"string\"\n  },\n  \"company_size\": {\n      \"type\": \"integer\"\n  },\n  \"company_founded_year\": {\n      \"type\": \"integer\"\n  },\n  \"degree\": {\n      \"type\": \"string\"\n  },\n \n  \"job_function\": {\n      \"type\": \"string\"\n  },\n  \"marital_status\": {\n      \"type\": \"string\"\n  },\n  \"salutation\": {\n      \"type\": \"string\"\n  },\n  \"school\": {\n      \"type\": \"string\"\n  },\n  \"scrape_error\": {\n      \"type\": \"string\"\n  }\n},\n\"required\": [\n  \"first_name\",\n  \"last_name\",\n  \"email\"\n],\n\"additionalProperties\": false\n}"},"typeVersion":1.2},{"id":"18ef61dc-5134-4c8b-817b-da162c093b06","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-5880,1920],"parameters":{"color":4,"width":460,"height":540,"content":"## Watch for the updated record in Google Sheets based on the column 'status'\nWrite 'needs more enrichment' in the status column if you want to retry the enrichment\n"},"typeVersion":1},{"id":"e3b79eff-1504-4da3-85ef-4423f5ee71cd","name":"Auto-fixing Output Parser","type":"@n8n/n8n-nodes-langchain.outputParserAutofixing","position":[-3480,2080],"parameters":{"options":{"prompt":"Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease only return the first_name, last_name, email, and scrape_error (put the error details in this field)"}},"typeVersion":1},{"id":"1023e561-8f92-4fe1-8d21-1b6fcd2bbb6e","name":"OpenAI Chat Model1","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-3500,2200],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4o-mini"},"options":{}},"credentials":{"openAiApi":{"id":"K4cmCYcro5viwUfR","name":"Thijs 2"}},"typeVersion":1.2},{"id":"ac4f57e8-f7f0-47b8-b039-9a93f198083a","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-6620,1440],"parameters":{"color":4,"width":520,"height":540,"content":"## Manually run the records that is needed enrichment\n"},"typeVersion":1},{"id":"c46b338f-ccb6-4ce4-a1a3-623a615d19b2","name":"Process each leads one by one","type":"n8n-nodes-base.splitInBatches","position":[-4620,1260],"parameters":{"options":{}},"typeVersion":3},{"id":"e6f86e5f-f49f-4781-90d2-78747efd5053","name":"Filter the leads that needs enrichment","type":"n8n-nodes-base.filter","position":[-5600,2140],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"or","conditions":[{"id":"1ec242aa-557e-434a-8bb5-d043b5645e88","operator":{"type":"string","operation":"empty","singleValue":true},"leftValue":"={{ $json.status?.toString() }}","rightValue":""},{"id":"400fe682-5882-441f-a506-ea8f9bdb9df8","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.status }}","rightValue":"needs more enrichment"}]}},"typeVersion":2.2},{"id":"46203489-bdd1-48ea-a020-8f5e1734cbdb","name":"Remove unneccessary fields for the prompt","type":"n8n-nodes-base.set","position":[-4100,1260],"parameters":{"include":"except","options":{},"excludeFields":"row_number, status, row_id","includeOtherFields":true},"typeVersion":3.4},{"id":"838ba8a6-3f41-4973-b5aa-805b9abc6baa","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[-800,720],"parameters":{"color":4,"width":980,"height":1620,"content":"# Update the record in Google Sheet"},"typeVersion":1},{"id":"1315c393-9cb2-4345-ba01-34faa5673e72","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[-4260,1040],"parameters":{"color":6,"width":840,"height":740,"content":"# AI Agent with Bright Data MCP attached\nPlease play around which model suited best"},"typeVersion":1},{"id":"f77f311d-20c4-4e5d-a679-f905a5e1680a","name":"Bright Data MCP Client","type":"@n8n/n8n-nodes-langchain.mcpClientTool","position":[-3760,1540],"parameters":{"include":"selected","sseEndpoint":"http://localhost:8000/sse","includeTools":["search_engine","web_data_linkedin_person_profile","web_data_linkedin_company_profile","web_data_linkedin_people_search","web_data_crunchbase_company","web_data_tiktok_profiles","web_data_instagram_profiles"]},"typeVersion":1},{"id":"f5d6bf43-d9c0-4272-9d5f-cf1371f0e27a","name":"OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[-4000,1540],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1-mini","cachedResultName":"gpt-4.1-mini"},"options":{}},"credentials":{"openAiApi":{"id":"3wONK02jjm23nMHf","name":"OpenAi account"}},"typeVersion":1.2},{"id":"370ea5eb-0abc-418a-836f-f9e28d3f11be","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-3360,1040],"parameters":{"width":1160,"height":760,"content":"# Formating the results and comparing it to the original"},"typeVersion":1},{"id":"cc8043c0-6306-4808-9caf-0776b9a29553","name":"If","type":"n8n-nodes-base.if","position":[-2980,1440],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"54ed6517-f4b9-48ff-baf1-37c7551c85ed","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.first_name }}","rightValue":"={{ $('Process each leads one by one').item.json.first_name }}"},{"id":"465b70a3-9830-4521-8248-a1236795b296","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.last_name }}","rightValue":"={{ $('Process each leads one by one').item.json.last_name }}"},{"id":"5a2f38ab-64e6-4e5d-92e2-7a88135e7884","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.email }}","rightValue":"={{ $('Process each leads one by one').item.json.email }}"}]}},"typeVersion":2.2},{"id":"7cfe0f1d-d2ef-4630-b4d4-5ef155852f4c","name":"Switch","type":"n8n-nodes-base.switch","position":[-3240,1280],"parameters":{"rules":{"values":[{"outputKey":"Email only","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"26b1eb37-80d1-4966-a223-fe7a6d032083","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Process each leads one by one').item.json.email !== \"\" && ($('Process each leads one by one').item.json.first_name + \" \" + $('Process each leads one by one').item.json.last_name).trim() === \"\"  }}","rightValue":""}]},"renameOutput":true},{"outputKey":"Name only","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"7a4f68df-3d5b-4476-b186-8a5fb847d78e","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Process each leads one by one').item.json.email === \"\" && ($('Process each leads one by one').item.json.first_name + \" \" + $('Process each leads one by one').item.json.last_name).trim() !== \"\"  }}","rightValue":""}]},"renameOutput":true},{"outputKey":"Both email and name exists","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"13d089ae-1fd1-4a15-a35c-edae907141f5","operator":{"type":"boolean","operation":"true","singleValue":true},"leftValue":"={{ $('Process each leads one by one').item.json.email !== \"\" && ($('Process each leads one by one').item.json.first_name + \" \" + $('Process each leads one by one').item.json.last_name).trim() !== \"\"  }}","rightValue":""}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"f4357d32-0d4f-4131-8367-63ac527bb9e2","name":"If2","type":"n8n-nodes-base.if","position":[-2980,1120],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"5a2f38ab-64e6-4e5d-92e2-7a88135e7884","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.email }}","rightValue":"={{ $('Process each leads one by one').item.json.email }}"}]}},"typeVersion":2.2},{"id":"0efb7c41-869f-4803-b725-7133fe74dfd6","name":"Merge","type":"n8n-nodes-base.merge","position":[-2620,1620],"parameters":{"mode":"chooseBranch","useDataOfInput":2},"typeVersion":3.1},{"id":"5478a933-3704-4282-a043-b61e7c84c86e","name":"If1","type":"n8n-nodes-base.if","position":[-2980,1280],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"54ed6517-f4b9-48ff-baf1-37c7551c85ed","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.first_name }}","rightValue":"={{ $('Process each leads one by one').item.json.first_name }}"},{"id":"465b70a3-9830-4521-8248-a1236795b296","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.last_name }}","rightValue":"={{ $('Process each leads one by one').item.json.last_name }}"},{"id":"5a2f38ab-64e6-4e5d-92e2-7a88135e7884","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.output.email }}","rightValue":"={{ $('Process each leads one by one').item.json.email }}"}]}},"typeVersion":2.2},{"id":"b96100ab-1edf-46ce-8c1d-c16c7617b327","name":"Not matched route","type":"n8n-nodes-base.noOp","position":[-2400,1200],"parameters":{},"typeVersion":1},{"id":"896fdbd8-e6b2-4e5e-8cbb-8c347714f541","name":"Space requests by 5 seconds","type":"n8n-nodes-base.wait","position":[940,1440],"webhookId":"ca47f66b-d536-4751-ab54-7d1e049ca14a","parameters":{},"typeVersion":1.1},{"id":"5e4b65b7-30b6-4980-a851-43b8112d6347","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[-3740,1960],"parameters":{"color":6,"width":840,"height":560,"content":"## Format the output"},"typeVersion":1},{"id":"146b61b9-cd18-4e72-b07f-4f848d909a66","name":"Scraper AI Agent","type":"@n8n/n8n-nodes-langchain.agent","notes":"\nSteps:\n1. Scrape the url and find for the input fields common in the form such as text, radio buttons, checkboxes.  etc. Identify selectors for these input fields. Find the submit button too or the button to proceed to the next section or step.","position":[-3880,1280],"parameters":{"text":"=Here's the lead's data:\n\n{{ $json.toJsonString() }}","options":{"maxIterations":30,"systemMessage":"=Prompt: Person and Company Enrichment Task\n\nObjective:\nEnrich the lead’s information as completely and accurately as possible. Avoid fabricating data and maintain strict adherence to the correct tool schema for each tool used in the MCP client.\n\n⸻\n\n1. Person Enrichment Instructions:\n- Start with a Google Search:\nPrioritize locating the individual’s LinkedIn profile URL using the available information.\n- Query Guidelines:\n- If the email address is available, use it in your search query.\n- If not, use the person’s first name and last name.\n- Always append keywords like “linkedin”, “facebook”, “instagram”, or other relevant social media platforms to refine the search.\n- LinkedIn-Based Enrichment:\nOnce the LinkedIn URL is found, use it to gather available details from their profile.\n\n⸻\n\n2. Company Enrichment Instructions:\n- Email Domain Extraction:\nIf the person’s email is not from a generic provider (e.g., gmail.com, outlook.com, hotmail.com, icloud.com), extract the domain and use it in your search.\n- Query Composition:\n- Combine the extracted domain with any existing value in the “company” field of the lead’s details.\n- Do not rely on or reuse company data obtained from other tool outputs.\n- Focus on sourcing reliable company information from LinkedIn and Crunchbase.\n\n⸻\n\nOutput Format:\n\nReturn the enriched data in valid JSON format using the original key structure. Exclude any fields that remain empty. Example output:\n\n{\n  \"first_name\": \"John\",\n  \"last_name\": \"Doe\",\n  \"address\": \"123 Maple Street, Apt 4\",\n  \"instagram_handle\": \"johndoe38\"\n}\n\n","returnIntermediateSteps":true},"promptType":"define","hasOutputParser":true},"retryOnFail":true,"typeVersion":1.9},{"id":"bfbf1be5-96a7-470e-a3d2-006dbf948c4d","name":"Merge1","type":"n8n-nodes-base.merge","position":[-1560,1460],"parameters":{"mode":"combine","options":{},"combineBy":"combineByPosition"},"typeVersion":3.1},{"id":"fa2096a7-56d7-45aa-b10f-4ae7456339b4","name":"Judge the accuracy of scraped data","type":"@n8n/n8n-nodes-langchain.openAi","position":[-2020,1280],"parameters":{"modelId":{"__rl":true,"mode":"id","value":"=gpt-4o-mini"},"options":{},"messages":{"values":[{"role":"system","content":"Task:\nEvaluate the accuracy of the scraped data compared to the original source data.\n\nInstructions:\n- Assess how closely the scraped output matches the original data in terms of content, structure, and completeness.\n- Provide a confidence score based on the overall accuracy.\n- Explain your reasoning in concise, clear remarks.\n\nOutput Format (JSON):\n\n{\n  \"confidence\": [decimal between 0 and 1, e.g., 0.98 for 98% accuracy],\n  \"remarks\": \"A brief explanation justifying the confidence score, highlighting any discrepancies or issues found.\"\n}\n"},{"content":"=Original source data:\n{{ $('Remove unneccessary fields for the prompt').item.json.toJsonString() }}\n\nScraped output:\n{{ $json.output.toJsonString() }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"K4cmCYcro5viwUfR","name":"Thijs 2"}},"typeVersion":1.8},{"id":"32f37490-752b-4ee1-b68f-c56f17615bf4","name":"Just to make the connection neat","type":"n8n-nodes-base.noOp","position":[1480,2480],"parameters":{},"typeVersion":1},{"id":"01f944b6-e821-4ca3-ba09-bbc33f562ef4","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-2080,1020],"parameters":{"color":2,"width":1160,"height":740,"content":"# Identify the accuracy of the scraped data\nThis may serve as another layer of accuracy filtering"},"typeVersion":1},{"id":"08a34aec-7419-4cb9-b495-dff406c6f61d","name":"Extract the AI results only","type":"n8n-nodes-base.set","position":[-1820,1280],"parameters":{"options":{},"assignments":{"assignments":[{"id":"298abc40-159e-4aa3-ab4d-039829c2d1a0","name":"confidence","type":"number","value":"={{ $json.message.content.confidence }}"},{"id":"c2662984-8fa9-46eb-bc6d-fb7be5fc4451","name":"remarks","type":"string","value":"={{ $json.message.content.remarks }}"}]}},"typeVersion":3.4},{"id":"716a21d4-230d-4747-a031-ca8aac1bc3af","name":"Check the confidence score","type":"n8n-nodes-base.if","position":[-720,1580],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"f153193c-b517-49fc-8ae4-1bea6bd0ff91","operator":{"type":"number","operation":"gte"},"leftValue":"={{ $json.confidence }}","rightValue":0.85}]}},"typeVersion":2.2},{"id":"a4eb12f7-26b9-4f8f-a51a-ff54c769c06b","name":"Prepare the scraped output for Google Sheets","type":"n8n-nodes-base.set","position":[-1340,1560],"parameters":{"mode":"raw","options":{},"jsonOutput":"={{ $json.output }}"},"typeVersion":3.4},{"id":"06bf86dc-c92f-4540-8963-219015d745fb","name":"Add confidence score to Google Sheet","type":"n8n-nodes-base.set","position":[-1140,1580],"parameters":{"options":{},"assignments":{"assignments":[{"id":"3d437c0b-ff3e-4c21-95e0-5557866806c5","name":"remarks","type":"string","value":"={{ $('Merge1').item.json.remarks }}"},{"id":"5ef03fde-ee61-49a3-8c73-1ab4b66654a6","name":"confidence","type":"number","value":"={{ $('Merge1').item.json.confidence }}"},{"id":"745b0dd7-7ac9-4e97-9192-db95ff2d2706","name":"row_id","type":"string","value":"={{ $('Process each leads one by one').item.json.row_id }}"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"f6ba009f-47f1-428e-95e6-b3d8ca23208d","name":"Add record if the confidence score is below 85%","type":"n8n-nodes-base.googleSheets","position":[-100,2020],"parameters":{"columns":{"value":{"first_name":"={{ $json.output.first_name }}"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":false,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":false,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":false,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"autoMapInputData","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"9a5a4808-a8d1-4b49-82b5-b33bc48b56f5","name":"Override the record if the confidence score is equal or greater than 85%","type":"n8n-nodes-base.googleSheets","position":[-220,1400],"parameters":{"columns":{"value":{"first_name":"={{ $json.output.first_name }}","row_number":"={{ $('Google Sheets').item.json.row_number }}"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":false,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":false,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":false,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":false,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":false,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"autoMapInputData","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"1eb07d73-aa8f-4cba-a760-5d142eea9734","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[-400,1260],"parameters":{"color":7,"width":480,"height":360,"content":"## Override the record if the confidence score is equal or greater than 85%"},"typeVersion":1},{"id":"274d8c92-9094-4b26-8d6e-689e38fe9540","name":"Update the status of the record","type":"n8n-nodes-base.googleSheets","position":[-220,1020],"parameters":{"columns":{"value":{"row_id":"={{ $('Process each leads one by one').item.json.row_id }}","status":"no information found"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"removed":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"removed":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"removed":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"removed":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"removed":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"removed":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"removed":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"removed":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"removed":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"removed":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"removed":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":true,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"removed":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"removed":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"removed":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"removed":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"removed":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"removed":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"removed":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"removed":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"removed":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"removed":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"9958acae-7675-48c2-a400-0ee00267745f","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[-400,1700],"parameters":{"color":7,"width":480,"height":560,"content":"## Append row if the confidence score is below 85%"},"typeVersion":1},{"id":"ae5d281a-31a3-46a0-b5af-8dcf376d2947","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-400,840],"parameters":{"color":7,"width":480,"height":360,"content":"## Scraped data doesn't match the source. This will only update the status of the record."},"typeVersion":1},{"id":"a5aa4f8f-d7ec-4d28-87a2-c774ba627a95","name":"Update row_id and status","type":"n8n-nodes-base.set","position":[-300,2020],"parameters":{"options":{},"assignments":{"assignments":[{"id":"9edb1a8c-d71c-4b13-aa89-6a329a58fd67","name":"row_id","type":"string","value":"={{ $('Process each leads one by one').item.json.row_id }}-{{ $now.toMillis() }}"},{"id":"e95fdab0-79a5-4546-9b6d-0750fd44932c","name":"status","type":"string","value":"human review needed"}]},"includeOtherFields":true},"typeVersion":3.4},{"id":"2eb2c10a-1ab8-408f-9411-13fa356b4664","name":"Update the status of the original record","type":"n8n-nodes-base.googleSheets","position":[-240,1780],"parameters":{"columns":{"value":{"row_id":"={{ $json.row_id }}","status":"human review needed"},"schema":[{"id":"row_id","type":"string","display":true,"removed":false,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"removed":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"removed":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"removed":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"removed":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"removed":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"removed":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"removed":true,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"removed":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"removed":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"removed":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"removed":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":true,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"removed":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"removed":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"removed":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"removed":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"removed":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"removed":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"removed":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"removed":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"removed":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"removed":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":false,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":true,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":true,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"e2cb5ff7-3d0d-4766-bda2-2ea5d1b8cf54","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[-5960,780],"parameters":{"options":{},"fieldToSplitOut":"body"},"typeVersion":1},{"id":"da05a953-9e66-49b5-8c62-5cd48f439772","name":"Google Sheets","type":"n8n-nodes-base.googleSheets","position":[-5420,900],"parameters":{"columns":{"value":{"email":"={{ $json.properties.email.value }}","phone":"={{ $json.properties.phone.value }}","row_id":"={{ $json.vid }}","last_name":"={{ $json.properties.lastname.value }}","first_name":"={{ $json.properties.firstname.value }}"},"schema":[{"id":"row_id","type":"string","display":true,"required":false,"displayName":"row_id","defaultMatch":false,"canBeUsedToMatch":true},{"id":"first_name","type":"string","display":true,"required":false,"displayName":"first_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"last_name","type":"string","display":true,"required":false,"displayName":"last_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"middle_name","type":"string","display":true,"removed":true,"required":false,"displayName":"middle_name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"address","type":"string","display":true,"removed":true,"required":false,"displayName":"address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"city","type":"string","display":true,"removed":true,"required":false,"displayName":"city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"state","type":"string","display":true,"removed":true,"required":false,"displayName":"state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"zip","type":"string","display":true,"removed":true,"required":false,"displayName":"zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"country","type":"string","display":true,"removed":true,"required":false,"displayName":"country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"email","type":"string","display":true,"required":false,"displayName":"email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"phone","type":"string","display":true,"removed":false,"required":false,"displayName":"phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company","type":"string","display":true,"removed":true,"required":false,"displayName":"company","defaultMatch":false,"canBeUsedToMatch":true},{"id":"job_title","type":"string","display":true,"removed":true,"required":false,"displayName":"job_title","defaultMatch":false,"canBeUsedToMatch":true},{"id":"department","type":"string","display":true,"removed":true,"required":false,"displayName":"department","defaultMatch":false,"canBeUsedToMatch":true},{"id":"date_of_birth","type":"string","display":true,"removed":true,"required":false,"displayName":"date_of_birth","defaultMatch":false,"canBeUsedToMatch":true},{"id":"facebook_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"facebook_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"linkedin_url","type":"string","display":true,"removed":true,"required":false,"displayName":"linkedin_url","defaultMatch":false,"canBeUsedToMatch":true},{"id":"x_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"x_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"instagram_handle","type":"string","display":true,"removed":true,"required":false,"displayName":"instagram_handle","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_address","type":"string","display":true,"removed":true,"required":false,"displayName":"company_address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_city","type":"string","display":true,"removed":true,"required":false,"displayName":"company_city","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_state","type":"string","display":true,"removed":true,"required":false,"displayName":"company_state","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_zip","type":"string","display":true,"removed":true,"required":false,"displayName":"company_zip","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_country","type":"string","display":true,"removed":true,"required":false,"displayName":"company_country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_phone","type":"string","display":true,"removed":true,"required":false,"displayName":"company_phone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_email","type":"string","display":true,"removed":true,"required":false,"displayName":"company_email","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_industry","type":"string","display":true,"removed":true,"required":false,"displayName":"company_industry","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_size","type":"string","display":true,"removed":true,"required":false,"displayName":"company_size","defaultMatch":false,"canBeUsedToMatch":true},{"id":"company_founded_year","type":"string","display":true,"removed":true,"required":false,"displayName":"company_founded_year","defaultMatch":false,"canBeUsedToMatch":true},{"id":"status","type":"string","display":true,"removed":true,"required":false,"displayName":"status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"remarks","type":"string","display":true,"removed":true,"required":false,"displayName":"remarks","defaultMatch":false,"canBeUsedToMatch":true},{"id":"confidence","type":"string","display":true,"removed":true,"required":false,"displayName":"confidence","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"}},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"48243a45-396f-4610-b97f-808ca39e90a6","name":"HubSpot","type":"n8n-nodes-base.hubspot","position":[-5680,900],"parameters":{"contactId":{"__rl":true,"mode":"id","value":"={{ $json.contactId || $json.objectId }}"},"operation":"get","authentication":"appToken","additionalFields":{}},"credentials":{"hubspotAppToken":{"id":"udy2ya160kahX72n","name":"HubSpot App Token account 2"}},"typeVersion":2.1},{"id":"1088136d-5530-47f2-b08f-3c91c28bd383","name":"Google Sheets1","type":"n8n-nodes-base.googleSheets","position":[-6280,1620],"parameters":{"options":{},"filtersUI":{"values":[{"lookupColumn":"status"},{"lookupValue":"needs more enrichment","lookupColumn":"status"}]},"sheetName":{"__rl":true,"mode":"list","value":870504645,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit#gid=870504645","cachedResultName":"sampleATcsv"},"documentId":{"__rl":true,"mode":"list","value":"18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/18bkVOsgjONipJNbPe91UiiLgKnSCvsr0b7BDLZUIJh0/edit?usp=drivesdk","cachedResultName":"Test Database"},"combineFilters":"OR"},"credentials":{"googleSheetsOAuth2Api":{"id":"TB3Rn9lCQhQ5vKyg","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"16a4e5d7-3d4f-4aa4-b802-5bc61c6767b6","name":"When clicking ‘Execute workflow’","type":"n8n-nodes-base.manualTrigger","position":[-6520,1620],"parameters":{},"typeVersion":1},{"id":"2cf15cf0-be32-41d8-82f6-78a142e32b4a","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[-6500,540],"parameters":{"color":3,"width":1380,"height":720,"content":"# New Contact trigger in Hubspot and Save it to Google Drive"},"typeVersion":1},{"id":"6a2d33a9-c2f9-412e-a70c-8a64b7da252b","name":"New Contact in Hubpost (OAuth2)","type":"n8n-nodes-base.hubspotTrigger","position":[-6340,1020],"webhookId":"dab75ae0-affc-4616-bad6-2e88d1afabc7","parameters":{"eventsUi":{"eventValues":[{}]},"additionalFields":{}},"credentials":{"hubspotDeveloperApi":{"id":"HjFlmcRCWYRjI6nD","name":"New HS Dev"}},"typeVersion":1},{"id":"fd273f08-9d98-4539-bad1-96a1ea6c0fc5","name":"New Contact in Hubpost (Private App)","type":"n8n-nodes-base.webhook","position":[-6320,680],"webhookId":"40d4eddf-4f9f-471f-a029-4a95f5f045b9","parameters":{"path":"hsleads","options":{},"httpMethod":"POST"},"typeVersion":2},{"id":"d348c77a-7782-45c5-9d6d-d7464ff876c6","name":"No Operation, do nothing","type":"n8n-nodes-base.noOp","position":[300,1560],"parameters":{},"typeVersion":1},{"id":"6a1149d6-186f-49ce-a8b3-3a97b83b10a7","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[440,1840],"parameters":{"color":3,"width":680,"height":500,"content":"# Update the Hubspot contact for the high confidence score"},"typeVersion":1},{"id":"2c3f4e27-a1ee-4a0a-8fb8-180b5de97ae6","name":"Update the Hubspot Contact","type":"n8n-nodes-base.hubspot","position":[880,2080],"parameters":{"email":"={{ $json.email }}","options":{},"authentication":"appToken","additionalFields":{"city":"={{ $json.city }}","degree":"={{ $json.degree }}","gender":"={{ $json.gender }}","school":"={{ $json.school }}","country":"={{ $json.country }}","industry":"={{ $json.company_industry }}","jobTitle":"={{ $json.job_title }}","lastName":"={{ $json.last_name }}","firstName":"={{ $json.first_name }}","postalCode":"={{ $json.zip }}","salutation":"={{ $json.salutation }}","companyName":"={{ $json.company }}","dateOfBirth":"={{ $json.date_of_birth?.toDateTime() }}","jobFunction":"={{ $json.job_function }}","phoneNumber":"={{ $json.phone }}","fieldOfStudy":"={{ $json.field_of_study }}","maritalStatus":"={{ $json.marital_status }}","streetAddress":"={{ $json.address }}","graduationDate":"={{ $json.graduation_date?.toDateTime() }}","twitterUsername":"={{ $json.x_handle }}","customPropertiesUi":{"customPropertiesValues":[{"value":"={{ $json.instagram_handle }}","property":"=instagram_handle"},{"value":"={{ $json.facebook_handle }}","property":"=facebook_handle"},{"value":"={{ $json.linkedin_url }}","property":"=linkedin_url"}]}}},"credentials":{"hubspotAppToken":{"id":"udy2ya160kahX72n","name":"HubSpot App Token account 2"}},"typeVersion":2.1},{"id":"fdadcb0e-f66e-4755-8939-ab28d51301eb","name":"Set Desired Confidence Score","type":"n8n-nodes-base.if","position":[580,2100],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8f546fac-c14d-40f8-9fd0-7c431e1ae7f8","operator":{"type":"number","operation":"gt"},"leftValue":"={{ $json.confidence }}","rightValue":0.89}]}},"typeVersion":2.2}],"pinData":{"New Contact in Hubpost (OAuth2)":[{"appId":7851008,"eventId":1468606353,"portalId":46194715,"sourceId":"userId:60775145","contactId":126603412869,"changeFlag":"CREATED","occurredAt":1748880900273,"changeSource":"CRM_UI","attemptNumber":0,"subscriptionId":3713763,"subscriptionType":"contact.creation"}],"New Contact in Hubpost (Private App)":[{"body":[{"appId":10626375,"eventId":3048592825,"objectId":126603412869,"portalId":23861635,"sourceId":"25200","changeFlag":"CREATED","occurredAt":1746526735728,"changeSource":"INTEGRATION","attemptNumber":0,"subscriptionId":3429387,"subscriptionType":"contact.creation"}],"query":{},"params":{},"headers":{"host":"hostmetric.app.n8n.cloud","accept":"*/*","cf-ray":"93b7bc86b08cd695-IAD","cdn-loop":"cloudflare; loops=1; subreqs=1","cf-ew-via":"15","cf-worker":"n8n.cloud","x-real-ip":"54.174.62.144","cf-visitor":"{\"scheme\":\"https\"}","user-agent":"HubSpot Connect 2.0 (http://dev.hubspot.com/) (namespace: webhooks-nio-http-client) - WebhooksExecutorDaemon-executor","cf-ipcountry":"US","content-type":"application/json","x-is-trusted":"yes","content-length":"264","accept-encoding":"gzip, br","x-forwarded-for":"54.174.62.144, 162.158.79.214","cf-connecting-ip":"54.174.62.144","x-forwarded-host":"hostmetric.app.n8n.cloud","x-forwarded-port":"443","x-forwarded-proto":"https","x-forwarded-server":"traefik-prod-users-gwc-36-bc488dfd9-8q4qs","x-hubspot-signature":"c9e6138e683ed3092c5e223f3046cab7940dca29417666154796d1cffbfe4e58","x-hubspot-signature-v3":"9f5gSQ/tiqplcUzRVIHzK0igKjJYRxqzKraiB7URkIY=","x-hubspot-timeout-millis":"10000","x-hubspot-request-timestamp":"1746526736409","x-hubspot-signature-version":"v1"},"webhookUrl":"https://hostmetric.app.n8n.cloud/webhook/overnightleads","executionMode":"production"}]},"connections":{"If":{"main":[[{"node":"Merge","type":"main","index":0}],[{"node":"Not matched route","type":"main","index":0}]]},"If1":{"main":[[{"node":"Merge","type":"main","index":0}],[{"node":"Not matched route","type":"main","index":0}]]},"If2":{"main":[[{"node":"Merge","type":"main","index":0}],[{"node":"Not matched route","type":"main","index":0}]]},"Merge":{"main":[[{"node":"Merge1","type":"main","index":1},{"node":"Judge the accuracy of scraped data","type":"main","index":0}]]},"Merge1":{"main":[[{"node":"Prepare the scraped output for Google Sheets","type":"main","index":0}]]},"Switch":{"main":[[{"node":"If2","type":"main","index":0}],[{"node":"If1","type":"main","index":0}],[{"node":"If","type":"main","index":0}]]},"HubSpot":{"main":[[{"node":"Google Sheets","type":"main","index":0}]]},"Split Out":{"main":[[{"node":"HubSpot","type":"main","index":0}]]},"Google Sheets":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Google Sheets1":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Scraper AI Agent":{"main":[[{"node":"Switch","type":"main","index":0},{"node":"Merge","type":"main","index":1}]]},"Not matched route":{"main":[[{"node":"Update the status of the record","type":"main","index":0}]]},"OpenAI Chat Model":{"ai_languageModel":[[{"node":"Scraper AI Agent","type":"ai_languageModel","index":0}]]},"OpenAI Chat Model1":{"ai_languageModel":[[{"node":"Auto-fixing Output Parser","type":"ai_languageModel","index":0}]]},"Google Sheets Trigger":{"main":[[{"node":"Filter the leads that needs enrichment","type":"main","index":0}]]},"Bright Data MCP Client":{"ai_tool":[[{"node":"Scraper AI Agent","type":"ai_tool","index":0}]]},"No Operation, do nothing":{"main":[[{"node":"Set Desired Confidence Score","type":"main","index":0}]]},"Structured Output Parser":{"ai_outputParser":[[{"node":"Auto-fixing Output Parser","type":"ai_outputParser","index":0}]]},"Update row_id and status":{"main":[[{"node":"Add record if the confidence score is below 85%","type":"main","index":0}]]},"Auto-fixing Output Parser":{"ai_outputParser":[[{"node":"Scraper AI Agent","type":"ai_outputParser","index":0}]]},"Check the confidence score":{"main":[[{"node":"Override the record if the confidence score is equal or greater than 85%","type":"main","index":0},{"node":"No Operation, do nothing","type":"main","index":0}],[{"node":"Update row_id and status","type":"main","index":0},{"node":"Update the status of the original record","type":"main","index":0}]]},"Extract the AI results only":{"main":[[{"node":"Merge1","type":"main","index":0}]]},"Space requests by 5 seconds":{"main":[[{"node":"Just to make the connection neat","type":"main","index":0}]]},"Set Desired Confidence Score":{"main":[[{"node":"Update the Hubspot Contact","type":"main","index":0}]]},"Process each leads one by one":{"main":[[],[{"node":"Remove unneccessary fields for the prompt","type":"main","index":0}]]},"New Contact in Hubpost (OAuth2)":{"main":[[{"node":"HubSpot","type":"main","index":0}]]},"Update the status of the record":{"main":[[{"node":"Space requests by 5 seconds","type":"main","index":0}]]},"Just to make the connection neat":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Judge the accuracy of scraped data":{"main":[[{"node":"Extract the AI results only","type":"main","index":0}]]},"Add confidence score to Google Sheet":{"main":[[{"node":"Check the confidence score","type":"main","index":0}]]},"New Contact in Hubpost (Private App)":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"When clicking ‘Execute workflow’":{"main":[[{"node":"Google Sheets1","type":"main","index":0}]]},"Filter the leads that needs enrichment":{"main":[[{"node":"Process each leads one by one","type":"main","index":0}]]},"Remove unneccessary fields for the prompt":{"main":[[{"node":"Scraper AI Agent","type":"main","index":0}]]},"Prepare the scraped output for Google Sheets":{"main":[[{"node":"Add confidence score to Google Sheet","type":"main","index":0}]]},"Add record if the confidence score is below 85%":{"main":[[{"node":"Space requests by 5 seconds","type":"main","index":0}]]},"Override the record if the confidence score is equal or greater than 85%":{"main":[[{"node":"Space requests by 5 seconds","type":"main","index":0}]]}}}


name: QR Code Generator via Webhook
author_name: ist00dent
author_username: ist00dent
nodes_used: ["n8n-nodes-base.httpRequest"]
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-07-06 21:16:30
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).

workflow_json:
  {"id":"2Ttwb1pfwNkhBDuB","meta":{"instanceId":"1777696fb9fddfee653e70940936c2b1e28ba1f1bde53b7182fbd6eb01988706"},"name":"QR Code Generator via Webhook","tags":[],"nodes":[{"id":"1a6f0b70-47f1-4a13-9d06-569574438a07","name":"Note for Webhook Trigger","type":"n8n-nodes-base.stickyNote","position":[200,-40],"parameters":{"height":320,"content":"This node listens for incoming POST requests. It expects a JSON body with a 'data' property (or 'sampleData' as currently configured) which will be encoded into the QR code. You can easily adjust the webhook path."},"typeVersion":1},{"id":"b66d7f5a-cf82-43bd-902c-3e9a74fc4e3e","name":"Note for QR Code Generation","type":"n8n-nodes-base.stickyNote","position":[500,-40],"parameters":{"color":2,"width":280,"height":320,"content":"This node makes an HTTP GET request to the QR Server API to generate the QR code image. The 'data' parameter in the URL is populated from the incoming webhook. The 'size' parameter can be adjusted here."},"typeVersion":1},{"id":"e55153df-3269-46d5-8c01-289eb72415ae","name":"Note for Webhook Response","type":"n8n-nodes-base.stickyNote","position":[840,-60],"parameters":{"color":3,"width":300,"height":340,"content":"This node sends the response from the QR Server API (which is typically the QR code image data itself, or a URL to it if you change the API call) back to the original caller of the webhook. You can insert other nodes before this to save the image, send it via email, etc."},"typeVersion":1},{"id":"c9a692b7-62bd-40e2-8c92-0dbbc37f3e12","name":"Generate QR Code","type":"n8n-nodes-base.httpRequest","position":[580,140],"parameters":{"url":"=https://api.qrserver.com/v1/create-qr-code/?size=150x150&data={{ $json.body.data }}","method":"=GET","options":{}},"typeVersion":4.2},{"id":"cb065a0f-562a-432f-9ed4-c942fdd6a808","name":"Receive Data Webhook","type":"n8n-nodes-base.webhook","position":[260,140],"webhookId":"6960391c-83cf-49b3-aa8d-761cd8263d76-unique-id","parameters":{"path":"generate-qr","options":{},"httpMethod":"POST","responseMode":"responseNode"},"typeVersion":2},{"id":"acd3ea0f-7694-4875-994c-3b365c10fc28","name":"Respond with QR Code","type":"n8n-nodes-base.respondToWebhook","position":[920,140],"parameters":{"options":{},"respondWith":"allIncomingItems"},"typeVersion":1.2}],"active":false,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"23aac7b6-e36d-4074-b81d-dbdcb8204451","connections":{"Generate QR Code":{"main":[[{"node":"Respond with QR Code","type":"main","index":0}]]},"Receive Data Webhook":{"main":[[{"node":"Generate QR Code","type":"main","index":0}]]}}}


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-07-06 21:16:30
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.httpRequest","n8n-nodes-base.telegram","n8n-nodes-base.facebookGraphApi","n8n-nodes-base.twitter","n8n-nodes-base.linkedIn","n8n-nodes-base.apiTemplateIo","@n8n/n8n-nodes-langchain.agent","@n8n/n8n-nodes-langchain.lmChatAnthropic","@n8n/n8n-nodes-langchain.lmChatOllama","@n8n/n8n-nodes-langchain.lmChatOpenAi","@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference","@n8n/n8n-nodes-langchain.lmChatMistralCloud","@n8n/n8n-nodes-langchain.openAi","@n8n/n8n-nodes-langchain.lmChatAzureOpenAi","@n8n/n8n-nodes-langchain.lmChatGoogleGemini","@n8n/n8n-nodes-langchain.lmChatDeepSeek","@n8n/n8n-nodes-langchain.lmChatOpenRouter","@n8n/n8n-nodes-langchain.lmChatXAiGrok"]

workflow_json:
  {"id":"JdFtT41G2iqwGt1e","meta":{"instanceId":"c778ccc6e6bdd79c80ccc835bc5d5a950bf07bb2941c80ee5afaeb18d9e2e8ef","templateCredsSetupCompleted":true},"name":"🤖 AI content generation for Auto Service 🚘 Automate your social media📲!","tags":[],"nodes":[{"id":"e4a3ceac-acaa-434c-aefc-19e4fed34ea6","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[340,-1340],"parameters":{"color":5,"width":5760,"height":2920,"content":"![Source example](https://i.ibb.co/PZF4szJr/photo-2025-05-30-13-24-04.jpg#full-width)"},"typeVersion":1},{"id":"d806bec6-ee52-4e7e-9b10-41b2dd16b1ba","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[340,-500],"parameters":{"color":5,"width":1260,"height":1260,"content":"# [made with ❤️ by N8ner 👈 click! Feel free to message me!](https://community.n8n.io/u/n8ner/badges) ![](https://i.ibb.co/2YyTWq2v/circuit.jpg#full-width#full-width)"},"typeVersion":1},{"id":"6e8ee9ec-fe55-48d8-afab-b5d2a677cedb","name":"Telegram","type":"n8n-nodes-base.telegram","position":[4180,-320],"webhookId":"f33ade31-7243-4d8f-a7e9-fc450ebf7eb5","parameters":{"chatId":"7564233298","operation":"sendPhoto","binaryData":true,"additionalFields":{"caption":"={{ $('GENERATE TEXT').item.json.output }}"},"binaryPropertyName":"={{'data'}}"},"credentials":{"telegramApi":{"id":"5EqQR7c8hHg7JUam","name":"Telegram account"}},"typeVersion":1.2,"alwaysOutputData":false},{"id":"72b10789-5887-49b3-bbc3-06c220bc8150","name":"Schedule Trigger","type":"n8n-nodes-base.scheduleTrigger","position":[1800,-220],"parameters":{"rule":{"interval":[{"triggerAtHour":9}]}},"typeVersion":1.2},{"id":"64bd78e2-2a1b-4ea8-bf92-e6c113acd229","name":"When clicking Execute workflow","type":"n8n-nodes-base.manualTrigger","position":[1800,60],"parameters":{},"typeVersion":1},{"id":"cb7597f8-fdb9-48de-994a-da6b684421c7","name":"Google Sheets Trigger","type":"n8n-nodes-base.googleSheetsTrigger","position":[1800,380],"parameters":{"event":"=rowAdded","options":{"valueRender":"UNFORMATTED_VALUE","columnsToWatch":["Links for articles to refer"],"dataLocationOnSheet":{"values":{"range":"A2:A10","rangeDefinition":"specifyRangeA1"}}},"pollTimes":{"item":[{"mode":"everyX","unit":"minutes","value":1}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1Y26GgkSEimhjFhNyArFEvHTonv6JaqMWVU9jxnV-y-c/edit#gid=0","cachedResultName":"Sheet1"},"documentId":{"__rl":true,"mode":"id","value":"1Y26GgkSEimhjFhNyArFEvHTonv6JaqMWVU9jxnV-y-c"}},"credentials":{"googleSheetsTriggerOAuth2Api":{"id":"SaouUrFEnn4hWJcQ","name":"Google Sheets Trigger account"}},"notesInFlow":false,"typeVersion":1},{"id":"157ac7c9-54df-4dc0-aa89-1b63b17f3148","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[3640,-140],"parameters":{"options":{},"fieldToSplitOut":"choices[0].message.content"},"typeVersion":1},{"id":"bcd7bc00-fb79-4709-8a97-0a43bc274f4c","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[3960,-520],"parameters":{"color":7,"width":520,"height":1300,"content":"# Finish - Upload to Platforms![Guide](https://i.ibb.co/d41JsL8q/Screenshot-2025-05-30-122423-1.jpg#full-width#full-width)"},"typeVersion":1},{"id":"2f7884d1-7da0-492b-8503-9a4de0911773","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[4120,420],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"f7181d0c-1bf4-4031-86dd-95761940de68","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[4120,160],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"d1e3f2e4-8f4e-40aa-b512-b7e7d2667f1e","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[4120,-100],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"64b6a403-4913-4d1b-8b61-581dec0223a7","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[4120,-360],"parameters":{"color":7,"width":210,"height":200,"content":""},"typeVersion":1},{"id":"a48fa4e0-3781-426f-9f48-1fec77acba68","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[1600,-500],"parameters":{"color":7,"width":500,"height":1260,"content":"# START - Choose a Trigger![Guide](https://i.ibb.co/d41JsL8q/Screenshot-2025-05-30-122423-1.jpg#full-width#full-width)"},"typeVersion":1},{"id":"33dc129d-2784-4fb9-a027-589aa443d37b","name":"Sticky Note10","type":"n8n-nodes-base.stickyNote","position":[1740,320],"parameters":{"color":4,"height":220,"content":""},"typeVersion":1},{"id":"e1666561-2404-460e-b37e-0ebfd15b6261","name":"Sticky Note11","type":"n8n-nodes-base.stickyNote","position":[1740,20],"parameters":{"color":4,"height":220,"content":""},"typeVersion":1},{"id":"d34574fe-5791-4508-b847-e20eda64cd66","name":"Sticky Note12","type":"n8n-nodes-base.stickyNote","position":[1740,-280],"parameters":{"color":4,"height":220,"content":""},"typeVersion":1},{"id":"ac1bb708-89fb-496e-8291-e86d509ff2f8","name":"Sticky Note13","type":"n8n-nodes-base.stickyNote","position":[2160,-360],"parameters":{"color":7,"width":760,"height":460,"content":"### Edit prompt and system message up for you, customize llm and search links, add your own prompts database ![](https://i.ibb.co/TxQrh405/erasebg-transformed-removebg-preview.png#full-width)"},"typeVersion":1},{"id":"1c2803d0-8ea1-48c1-b3df-6e9a5156be07","name":"Sticky Note14","type":"n8n-nodes-base.stickyNote","position":[2520,300],"parameters":{"color":7,"width":760,"height":420,"content":"### Edit prompt and system message up for you, customize llm and add own prompts database ![](https://i.ibb.co/TxQrh405/erasebg-transformed-removebg-preview.png#full-width)"},"typeVersion":1},{"id":"b40ab1d2-e7d4-4dce-8200-41ecb761eb9b","name":"Sticky Note15","type":"n8n-nodes-base.stickyNote","position":[3120,-300],"parameters":{"color":7,"width":760,"height":380,"content":"### Set up Ai model for generating images, customize prompt up for you ![](https://i.ibb.co/TxQrh405/erasebg-transformed-removebg-preview.png#full-width)"},"typeVersion":1},{"id":"4aeadd2d-a393-414d-a584-344934f89586","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[4480,-520],"parameters":{"color":5,"width":1620,"height":1300,"content":"# The 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.  Enjoy and [message me](https://community.n8n.io/u/n8ner/badges) with your reviews for future improvements! ![](https://i.ibb.co/qLxMHbd5/customize-ride1.jpg#full-width#full-width )"},"typeVersion":1},{"id":"07a0cb9c-fdd6-4120-b9cc-f92d636eed27","name":"Mistral Cloud Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatMistralCloud","position":[4620,-220],"parameters":{"model":"pixtral-large-latest","options":{}},"credentials":{"mistralCloudApi":{"id":"FnOd31BOjfSRcl8F","name":"Mistral Cloud account 2"}},"typeVersion":1},{"id":"765cbb25-897b-408d-ac1d-613c07629a78","name":"OpenRouter Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOpenRouter","position":[4880,-80],"parameters":{"options":{}},"credentials":{"openRouterApi":{"id":"JH3j9elCwOwmv4CQ","name":"OpenRouter account"}},"typeVersion":1},{"id":"486efc72-84ea-4f1e-bc8d-f3e53f250ddd","name":"Anthropic Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatAnthropic","position":[4620,40],"parameters":{"model":{"__rl":true,"mode":"list","value":"claude-3-7-sonnet-20250219","cachedResultName":"Claude 3.7 Sonnet"},"options":{}},"typeVersion":1.3},{"id":"21d18ef8-7520-476b-a471-5e3a64902a65","name":"Google Gemini Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatGoogleGemini","position":[4980,-220],"parameters":{"options":{}},"typeVersion":1},{"id":"c14142c6-7294-47a9-805a-038bbe367097","name":"xAI Grok Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatXAiGrok","position":[4780,40],"parameters":{"options":{}},"typeVersion":1},{"id":"9460fa92-6e31-448f-b87b-7a440a791426","name":"DeepSeek Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatDeepSeek","position":[4980,40],"parameters":{"options":{}},"typeVersion":1},{"id":"5db59ffd-c09a-4146-b140-47e8399d6c41","name":"Hugging Face Inference Model","type":"@n8n/n8n-nodes-langchain.lmOpenHuggingFaceInference","position":[5160,-220],"parameters":{"model":"https://huggingface.co/black-forest-labs/FLUX.1-dev","options":{}},"credentials":{"huggingFaceApi":{"id":"pTOJMnoQUX7aj7qX","name":"HuggingFaceApi account"}},"typeVersion":1},{"id":"8eea8670-a4a2-4e58-ae04-3a1e7f8cf1de","name":"Freepik API","type":"n8n-nodes-base.httpRequest","position":[4540,400],"parameters":{"url":"https://api.freepik.com/v1/ai/text-to-image/imagen3","method":"POST","options":{},"jsonBody":"{\n  \"prompt\": \"Crazy dog in the space\",\n  \"num_images\": 1,\n  \"aspect_ratio\": \"square_1_1\",\n  \"styling\": {\n    \"style\": \"anime\",\n    \"effects\": {\n      \"color\": \"pastel\",\n      \"lightning\": \"warm\",\n      \"framing\": \"portrait\"\n    }\n  },\n  \"person_generation\": \"allow_all\",\n  \"safety_settings\": \"block_none\"\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"x-freepik-api-key","value":"FPSX38a53a81a693e71a0e9437a657de6342"}]}},"typeVersion":4.2},{"id":"dc0fb490-d710-4a3d-9c49-2ba3652b2770","name":"Runware API","type":"n8n-nodes-base.httpRequest","position":[4540,580],"parameters":{"url":"https://api.runware.ai/v1","method":"POST","options":{"redirect":{"redirect":{}}},"jsonBody":"[\n  {\n    \"taskType\": \"authentication\",\n    \"apiKey\": \"<API_KEY>\"\n  },\n  {\n    \"taskType\": \"imageInference\",\n    \"taskUUID\": \"39d7207a-87ef-4c93-8082-1431f9c1dc97\",\n    \"positivePrompt\": \"a cat\",\n    \"width\": 512,\n    \"height\": 512,\n    \"model\": \"civitai:102438@133677\",\n    \"numberResults\": 1\n  }\n]","sendBody":true,"specifyBody":"json"},"typeVersion":4.2},{"id":"b2ea776e-4b6f-4f1a-9c3a-1719719209ec","name":"Clipdrop API","type":"n8n-nodes-base.httpRequest","position":[4760,580],"parameters":{"url":"https://clipdrop-api.co/text-to-image/v1","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","authentication":"genericCredentialType","bodyParameters":{"parameters":[{"name":"prompt"}]},"genericAuthType":"httpBearerAuth"},"credentials":{"httpBearerAuth":{"id":"EIcFRRZtIyuSbthu","name":"Bearer YOUR_TOKEN_HERE account"}},"typeVersion":4.2},{"id":"4133831e-0c79-44ae-ba7a-0bf8bead48fd","name":"Ollama Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatOllama","position":[4780,-220],"parameters":{"options":{}},"typeVersion":1},{"id":"c045b699-12cf-48a2-94ce-bcec997434de","name":"Azure OpenAI Chat Model","type":"@n8n/n8n-nodes-langchain.lmChatAzureOpenAi","position":[5160,40],"parameters":{"options":{}},"typeVersion":1},{"id":"d6134f16-65c1-49ee-823a-2b10954707a2","name":"APITemplate.io","type":"n8n-nodes-base.apiTemplateIo","position":[5200,580],"parameters":{},"credentials":{"apiTemplateIoApi":{"id":"8BoC4xP9YSekp9OA","name":"APITemplate.io account"}},"typeVersion":1},{"id":"2f627d07-42e6-4334-8255-24aa86ba7146","name":"Ideogram API","type":"n8n-nodes-base.httpRequest","position":[4980,580],"parameters":{"url":"https://api.ideogram.ai/v1/ideogram-v3/generate","method":"POST","options":{},"sendBody":true,"contentType":"multipart-form-data","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"prompt","value":"A photo of a cat sleeping on a couch."},{"name":"rendering_speed","value":"TURBO"}]},"headerParameters":{"parameters":[{"name":"Api-Key","value":"<apiKey>"}]}},"typeVersion":4.2},{"id":"72377c43-3e1e-4c52-84de-aa8ef825f150","name":"Replicate API","type":"n8n-nodes-base.httpRequest","position":[4760,400],"parameters":{"url":"https://api.replicate.com/v1/models/ideogram-ai/ideogram-v2/predictions","method":"POST","options":{},"jsonBody":"{\n  \"input\": {\n    \"prompt\": \"An illustration of a black running shoe with the text \\\"Run AI with an API\\\" written on the shoe. The shoe is placed on a blue background. The text is white and bold. The overall image has a modern and techy vibe.\",\n    \"aspect_ratio\": \"16:9\"\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer $REPLICATE_API_TOKEN"},{"name":"Prefer","value":"wait"}]}},"typeVersion":4.2},{"id":"ae03e3a1-ff22-46ce-b31b-e355611252c0","name":"Imagen Google API","type":"n8n-nodes-base.httpRequest","position":[4980,400],"parameters":{"url":"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/imagegeneration@002:predict","body":"0","method":"POST","options":{},"sendBody":true,"contentType":"raw","sendHeaders":true,"rawContentType":"application/json; charset=utf-8","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer $(gcloud auth print-access-token)"}]}},"typeVersion":4.2},{"id":"16eeca87-25b3-42c9-a2d1-7dde51e08db4","name":"HuggingFace API","type":"n8n-nodes-base.httpRequest","position":[5200,400],"parameters":{"url":"https://uu149rez6gw9ehej.eu-west-1.aws.endpoints.huggingface.cloud/distilbert-sentiment","method":"POST","options":{},"sendBody":true,"contentType":"form-urlencoded","sendHeaders":true,"bodyParameters":{"parameters":[{"name":"{\"inputs\": \"Deploying my first endpoint was an amazing experience.\"}"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer <Token>"}]}},"typeVersion":4.2},{"id":"ed97601a-7ced-478a-ace3-63ab79f951e8","name":"Runway Images","type":"n8n-nodes-base.httpRequest","position":[4980,220],"parameters":{"url":"https://api.dev.runwayml.com/v1/text_to_image","method":"POST","options":{},"jsonBody":"{\n  \"promptText\": \"string\",\n  \"ratio\": \"1920:1080\",\n  \"seed\": 4294967295,\n  \"model\": \"gen4_image\",\n  \"referenceImages\": [\n    {\n      \"uri\": \"http://example.com\",\n      \"tag\": \"string\"\n    }\n  ],\n  \"contentModeration\": {\n    \"publicFigureThreshold\": \"auto\"\n  }\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer {{ YOUR API KEY }}"},{"name":"X-Runway-Version","value":"2024-11-06"}]}},"typeVersion":4.2},{"id":"7db2a283-7061-4440-8def-534e96ff7dfe","name":"GENERATE TEXT","type":"@n8n/n8n-nodes-langchain.agent","position":[2340,-180],"parameters":{"text":"=Use link as a main reference article source {{ $json.name }}! IMPORTANT! Actualize up to date information and facts check up, use Internet research with Tavily tool!","options":{"systemMessage":"(!IMPORTANT!) Write short engaging posts under 1024  characters for Telegram. \n\nOverview\nYou are a brand agent for Autoservis, specializing in creating professional and educational posts about car repair. You write random and interesting daily tips, lifehacks, notes, actual news for 2025 year.\n\nGoals:\nAlways start by conducting real-time research using the Tavily tool to gather the most accurate and up-to-date information on the topic. The post should be written to engage the specified target audience.\n\nBased on your research, create a well-structured Telegram post that:\n\nBegins with a captivating hook\n\nMaintains a professional tone\n\nIs clear and easy to read\n\nIs educational and informative\n\nUses minimal emojis (only when very relevant)\n\nIncludes proper source attribution (e.g., \"according to [Source]\")\n\nContains relevant hashtags to improve visibility\n\nEnds with a clear call to action (e.g., ask for thoughts, feedback, or shares)\n\nOutput instructions:\nYour ONLY output should be the final Telegram post text.\n\nDo not include explanations, notes, or anything outside the post itself.\n\nExample workflow:\nReceive the topic (e.g., вЂњReturn on investment in warehouse automationвЂќ)\n\nUse Tavily to research and gather the latest information or case studies\n\nDraft the post using this research\n\nFormat it with references, clear structure, relevant hashtags, and a call to action\n\nAt the end of the post write\nService center address: 123 Main St, New York, NY, for appointments call (212) 555-1234"},"promptType":"define"},"typeVersion":1.8},{"id":"946716eb-39a5-42f6-88a2-bc89b3351c91","name":"GENERATE PROMPT","type":"@n8n/n8n-nodes-langchain.agent","position":[2680,460],"parameters":{"text":"Make it perfect.\nPhoto-realistic to Hyper-realistic style.\nWidescreen aspect ratio with the highest pixel resolution. Generate an extremely detailed and realistic image based on the provided reference description {{ $json.output }}. Include comprehensive visual details covering:\n\n- SubjectвЂ™s appearance: facial features, expressions, skin tone, hair style and texture, clothing fabric, color, and fit, posture, accessories.\n- Environment: specific real-world setting and background elements, natural lighting (direction, intensity, color temperature), and ambient mood.\n- Colors and textures: precise color palettes, authentic fabric and skin textures, natural reflections, and subtle visual cues enhancing lifelike clarity.\n\nExclude any abstract art styles, text, numbers, letters, logos, or non-photographic elements to ensure natural realism.\n\nThe prompt should specify image rendering in 16K photographic resolution with maximum clarity and realism.\n\nAdditionally, provide explicit, practical instructions on enhancing an existing photo to 16K resolution using advanced AI super-resolution upscaling techniques that:\n\n- Preserve fine details without blurriness or unnatural sharpening.\n- Maintain natural textures and lighting.\n- Minimize artifacts like noise, halos, or abnormal edges.\n- Deliver photo-realistic output with enhanced clarity.\n\nEnsure the background is clear, finely detailed, and naturally integrated with the subject to reinforce photographic accuracy.\n\nFocus solely on producing a precise, clear prompt and enhancement guidance centered on natural realism and photographic fidelity for ultra-high resolution images.\n\n","options":{"systemMessage":"=Overview\nYou are an AI agent that converts Telegram posts into visual prompt descriptions for generating graphic marketing materials. These visuals are meant to accompany the Telegram post, effectively conveying the message in a visually appealing, brand-consistent style.\n\nObjective:\nAnalyze the provided Telegram post.\n\nExtract the core message, insight, or key takeaway.\n\nCraft a clear, compelling graphic prompt suitable for a text-to-image generator.\n\nThe final graphic should:\n\nVisually represent or enhance the main idea of the post\n\nBe appropriate for a professional Telegram feed\n\nAppear polished, modern, and engaging\n\nOutput Instructions:\nProvide only the final image prompt without quotation marks.\n\nDo not repeat or paraphrase the Telegram post.\n\nAvoid adding explanations or any additional textвЂ”output only the image prompt.\n\nDo not leave placeholders like вЂњHeader area reserved for customizable callout text.вЂќ\n\nInclude numeric data from the original post when relevant.\n\nStyle Guidelines:\nApproach this like a brand designer or marketing creative.\n\nVisual elements may include text, charts, icons, abstract shapes, overlays, modern illustrations, motion-inspired effects, bold typographic elements (described but not rendered), or metaphorical concepts.\n\nYou may suggest layout styles (e.g., вЂњsplit screen layout,вЂќ вЂњheader with bold title and subtle background illustrationвЂќ).\n\nKeep in mind the prompt will be used by AI image generation toolsвЂ”make it clear and effective.\n\nExample Prompt Format:\nA sleek flat-design graphic featuring a human brain intertwined with mechanical gears, symbolizing the integration of AI and automation.\nMinimalist background with soft gradients, clean sans-serif text areas.\n- - - Important! dont put text on image! - - -"},"promptType":"define"},"typeVersion":1.8},{"id":"bd34e79d-6f3e-4b75-b6cc-ac5e3062ad3e","name":"LinkedIn","type":"n8n-nodes-base.linkedIn","position":[4180,200],"parameters":{"text":"={{ $json['choices[0].message.content'] }}","person":"[CONFIGURE_YOUR_LINKEDIN_PERSON_ID]","authentication":"communityManagement","additionalFields":{}},"typeVersion":1},{"id":"b49aaca1-f326-4fc2-8cc6-265891905f52","name":"X","type":"n8n-nodes-base.twitter","position":[4180,460],"parameters":{"additionalFields":{}},"typeVersion":2},{"id":"d5cc6185-5c6d-4ed4-8b93-c546fe57b804","name":"Facebook","type":"n8n-nodes-base.facebookGraphApi","position":[4180,-60],"parameters":{"options":{},"httpRequestMethod":"POST"},"typeVersion":1},{"id":"7525e88c-eacd-4bb5-8f08-b85dd6aa8777","name":"Minimax Images","type":"n8n-nodes-base.httpRequest","position":[4540,220],"parameters":{"url":"https://api.minimaxi.chat/v1/image_generation","method":"POST","options":{"redirect":{"redirect":{}}},"sendBody":true,"sendHeaders":true,"bodyParameters":{"parameters":[{"name":"model","value":"image-01"},{"name":"prompt","value":"men Dressing in white t shirt, full-body stand front view image :25, outdoor, Venice beach sign, full-body image, Los Angeles, Fashion photography of 90s, documentary, Film grain, photorealistic"},{"name":"aspect_ratio","value":"16:9"},{"name":"response_format","value":"url"},{"name":"n","value":"3"},{"name":"prompt_optimizer","value":"true"}]},"headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer {api_key}"}]}},"typeVersion":4.2},{"id":"02acacfc-fa40-440d-a35c-f615c3369c82","name":"Kling Images","type":"n8n-nodes-base.httpRequest","position":[4760,220],"parameters":{"url":"https://api-singapore.klingai.com/v1/images/text2image","method":"POST","options":{"redirect":{"redirect":{}}},"jsonBody":"{\n\t\"code\": 0, //Error codesпј›Specific definitions can be found in Error codes\n  \"message\": \"string\", //Error information\n  \"request_id\": \"string\", //Request ID, generated by the system, is used to track requests and troubleshoot problems\n  \"data\":[\n    {\n      \"task_id\": \"string\", //Task ID, generated by the system\n      \"task_status\": \"string\", //Task status, Enum valuesпјљsubmittedгЂЃprocessingгЂЃsucceedгЂЃfailed\n      \"task_status_msg\": \"string\", //Task status information, displaying the failure reason when the task fails (such as triggering the content risk control of the platform, etc.)\n      \"created_at\": 1722769557708, //Task creation time, Unix timestamp, unit ms\n      \"updated_at\": 1722769557708, //Task update time, Unix timestamp, unit ms\n      \"task_result\":{\n        \"images\":[\n          {\n            \"index\": int, //Image NumberпјЊ0-9\n            \"url\": \"string\" //URL for generating imagesпјЊsuch asпјљhttps://h1.inkwai.com/bs2/upload-ylab-stunt/1fa0ac67d8ce6cd55b50d68b967b3a59.png(To ensure information security, generated images/videos will be cleared after 30 days. Please make sure to save them promptly.)\n          }\n      \t]\n      }\n    }\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","headerParameters":{"parameters":[{"name":"Authorization","value":"Bearer YOUR_TOKEN_HERE"}]}},"typeVersion":4.2},{"id":"0a394dbb-ae24-456c-b13f-f568edd40b44","name":"Leonardo Images","type":"n8n-nodes-base.httpRequest","position":[5200,220],"parameters":{"url":"https://cloud.leonardo.ai/api/rest/v1/generations/id","options":{"redirect":{"redirect":{}}},"sendHeaders":true,"headerParameters":{"parameters":[{"name":"accept","value":"application/json"}]}},"typeVersion":4.2},{"id":"692e118f-9272-45f9-80c4-6463add4977c","name":"Tavily Internet Search","type":"@tavily/n8n-nodes-tavily.tavilyTool","position":[2260,-280],"parameters":{"query":"={\n  \"query\": \"{searchTerm}\",\n  \"topic\": \"general\",\n  \"search_depth\": \"advanced\",\n  \"chunks_per_source\": 3,\n  \"max_results\": 1,\n  \"time_range\": null,\n  \"days\": 7,\n  \"include_answer\": true,\n  \"include_raw_content\": false,\n  \"include_images\": false,\n  \"include_image_descriptions\": false,\n  \"include_domains\": [],\n  \"exclude_domains\": []\n}","options":{},"descriptionType":"manual","toolDescription":"Search in Tavily"},"credentials":{"tavilyApi":{"id":"v2o6xkt7VGeBiPOs","name":"Tavily account"}},"typeVersion":1},{"id":"de72e33d-5f58-4fbd-80cf-0eb9f4344175","name":"OPENAI GENERATES IMAGE","type":"@n8n/n8n-nodes-langchain.openAi","position":[3280,-140],"parameters":{"model":"gpt-image-1","prompt":"= IMPORTANT! DONT WRITE TEXT ON A PICTURE! Create perfect visual for\n{{ $json.output }}","options":{},"resource":"image"},"credentials":{"openAiApi":{"id":"6oMHBtrEsufBjv61","name":"n8n free OpenAI API credits"}},"typeVersion":1.8},{"id":"0dbe4250-2cd8-4295-bd4b-42ec26ab6cb6","name":"OPENAI WRITES PROMPTS","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2620,600],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"credentials":{"openAiApi":{"id":"6oMHBtrEsufBjv61","name":"n8n free OpenAI API credits"}},"typeVersion":1.2},{"id":"07dc3e20-3d51-4bb7-a327-5d961afb2b96","name":"OPENAI WRITES POSTS","type":"@n8n/n8n-nodes-langchain.lmChatOpenAi","position":[2260,-40],"parameters":{"model":{"__rl":true,"mode":"list","value":"gpt-4.1","cachedResultName":"gpt-4.1"},"options":{}},"credentials":{"openAiApi":{"id":"6oMHBtrEsufBjv61","name":"n8n free OpenAI API credits"}},"typeVersion":1.2}],"active":false,"pinData":{"X":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}],"Facebook":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}],"LinkedIn":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}],"APITemplate.io":[{"json":{"code":1,"name":"First item"}},{"json":{"code":2,"name":"Second item"}}]},"settings":{"executionOrder":"v1"},"versionId":"37a7baec-9442-450f-9373-fad685598558","connections":{"LinkedIn":{"main":[[]]},"Split Out":{"main":[[{"node":"X","type":"main","index":0},{"node":"Facebook","type":"main","index":0},{"node":"LinkedIn","type":"main","index":0},{"node":"Telegram","type":"main","index":0}]]},"GENERATE TEXT":{"main":[[{"node":"GENERATE PROMPT","type":"main","index":0}]]},"APITemplate.io":{"main":[[]]},"Minimax Images":{"main":[[]]},"GENERATE PROMPT":{"main":[[{"node":"OPENAI GENERATES IMAGE","type":"main","index":0}]]},"Schedule Trigger":{"main":[[{"node":"GENERATE TEXT","type":"main","index":0}]]},"OPENAI WRITES POSTS":{"ai_languageModel":[[{"node":"GENERATE TEXT","type":"ai_languageModel","index":0}]]},"Google Sheets Trigger":{"main":[[{"node":"GENERATE TEXT","type":"main","index":0}]]},"OPENAI WRITES PROMPTS":{"ai_languageModel":[[{"node":"GENERATE PROMPT","type":"ai_languageModel","index":0}]]},"OPENAI GENERATES IMAGE":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Tavily Internet Search":{"ai_tool":[[{"node":"GENERATE TEXT","type":"ai_tool","index":0}]]},"When clicking вЂExecute workflowвЂ™":{"main":[[{"node":"GENERATE TEXT","type":"main","index":0}]]}}}


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-07-06 21:16:30
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.emailSend","n8n-nodes-base.googleSheets","n8n-nodes-base.httpRequest","@n8n/n8n-nodes-langchain.openAi"]

workflow_json:
  {"id":"OIDO7J5NqLAuLrKI","meta":{"instanceId":"92e36925b2d06addd7a010605535ce53ac105737436355f7e52e2980c726ed3d","templateCredsSetupCompleted":true},"name":"01 Scraping Site & Storing Records","tags":[{"id":"oKGIn6U0wpeHShTN","name":"working flow","createdAt":"2025-06-02T06:27:44.762Z","updatedAt":"2025-06-02T06:27:44.762Z"}],"nodes":[{"id":"e6b6b5d8-ae51-42e6-8f14-fa94b3b9cc5a","name":"When clicking ‘Test workflow’","type":"n8n-nodes-base.manualTrigger","position":[-360,360],"parameters":{},"typeVersion":1},{"id":"29628132-3a79-4512-b1dd-ed5574e69363","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-340,-280],"parameters":{"width":580,"height":140,"content":"## This is workflow of scrapping list of travel agents website...\n  \n**use this for scrapping different sites that has information in standard format information information** "},"typeVersion":1},{"id":"a7575f0a-db6a-48e1-9fb8-01f8e543589b","name":"Split Out","type":"n8n-nodes-base.splitOut","position":[240,-100],"parameters":{"options":{},"fieldToSplitOut":"message.content[\"Travel Agents\"]"},"typeVersion":1},{"id":"3cb85d6b-b0e9-4ca9-a4a1-7b241909eccc","name":"Send Email","type":"n8n-nodes-base.emailSend","position":[680,360],"webhookId":"2ce28736-1500-4766-acba-bbae4618197f","parameters":{"text":"=Dear  {{ $json['Agent Name'] }} team,\n{{ $json.Icebreaker }}\n\n{{ $json['AI Agent in Travel'] }}\n\n{{ $json['Call to Action'] }}\n\nBest Regards\nMohan Gopal\n\n{{ $json.PS }}\n\n","options":{"ccEmail":"mohan.gopal001@gmail.com"},"subject":"={{ $json.Subject }}","toEmail":"={{ $json['Email Address'] }}","fromEmail":"contact@mohangopal.com","emailFormat":"text"},"credentials":{"smtp":{"id":"OxDjXwRpd4Ll2OPw","name":"SMTP account"}},"typeVersion":2.1},{"id":"19d9b52b-5ca8-4027-98fe-d3e36fb9e229","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[-360,200],"parameters":{"width":580,"height":120,"content":"## Read Scrapped and Stored Records in SpreadSheet and Send Survey Email \n** Simple Read and Compose Personalised email and send..."},"typeVersion":1},{"id":"57827b6b-5f62-4b17-99ce-d14b4d0c27bb","name":"Google Sheet - Data Store","type":"n8n-nodes-base.googleSheets","position":[440,-100],"parameters":{"columns":{"value":{"City":"={{ $json.City }}","Status":"InProgress","Country":"={{ $json.Country }}","Summary":"={{ $json.Summary }}","Website":"={{ $json.Website }}","Mail Sent":"ToDo","Telephone":"={{ $json.Telephone }}","Agent Name":"={{ $json[\"Travel Agent Name\"] }}","Email Address":"={{ $json[\"Email Address\"] }}","Survey Received":"Pending","Response Received":"Pending"},"schema":[{"id":"Agent Name","type":"string","display":true,"required":false,"displayName":"Agent Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"required":false,"displayName":"Summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Telephone","type":"string","display":true,"required":false,"displayName":"Telephone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Website","type":"string","display":true,"required":false,"displayName":"Website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Country","type":"string","display":true,"required":false,"displayName":"Country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"City","type":"string","display":true,"required":false,"displayName":"City","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Mail Sent","type":"string","display":true,"removed":false,"required":false,"displayName":"Mail Sent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Response Received","type":"string","display":true,"removed":false,"required":false,"displayName":"Response Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Survey Received","type":"string","display":true,"removed":false,"required":false,"displayName":"Survey Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"removed":false,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1598367286,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1598367286","cachedResultName":"ScrapedList"},"documentId":{"__rl":true,"mode":"list","value":"1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit?usp=drivesdk","cachedResultName":"Travel Agents List"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Q8w7Aj2noMqus8kt","name":"Google Sheets account 5"}},"typeVersion":4.6},{"id":"eef292a7-b539-4b38-935e-27b7f6e1e871","name":"Google Sheet Data Store","type":"n8n-nodes-base.googleSheets","position":[-120,360],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":1316921362,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1316921362","cachedResultName":"TestTravelAgents"},"documentId":{"__rl":true,"mode":"list","value":"1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k","cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit?usp=drivesdk","cachedResultName":"Travel Agents List"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Q8w7Aj2noMqus8kt","name":"Google Sheets account 5"}},"typeVersion":4.6},{"id":"5428022b-1492-4ed0-8fa7-a13f1b6dd9be","name":"OpenAI1 Mail Composer","type":"@n8n/n8n-nodes-langchain.openAi","position":[100,360],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4o","cachedResultName":"GPT-4O"},"options":{},"messages":{"values":[{"role":"system","content":"=You are a helpful and  intelligent writing assistant who understands Travel Domain and have experience in mailing Travel Agents about Surveys "},{"content":"Your task is to personalize an email that will encourage the travel agent to complete the survey and submit. \n\nYou will do this by taking the Travel Agents details as input, and editing 5 sections of email: Subject line, ice-breaker, AI Agent in Travel Business, Call to action and a PS field. \n\nYour template as below: \n\nSubject line: \"Is your {companyname} prepared for AI Agent Revolution.\" \n\nIcebreaker: \n\"I understand you are in the travel business doing {uniquethingsaboutthemortheirUSP} and I've been following the impact on travel business for a while. The travel industry is evolving rapidly with AI-driven tools changing how business is conducted. This survey aims to gather insights from travel agents in Malaysia to assess their awareness, operational challenges, and interest in implementing AI Agents in daily workflows.\n\nYour responses will help us:\n\nUnderstand key pain points in your current operations.\nEvaluate awareness and readiness for AI integration.\nDesign a tailored AI Agent solution to improve productivity, efficiency, and profitability for travel businesses like yours.\n\nAll responses will be kept confidential and used only for aggregate analysis.\"\n\nAI Agent in Treavel Business: \n\"AI Agents are intelligent systems that can independently perform tasks traditionally done by humans. In the travel industry, these agents can:\n\nCompile and price custom tour packages.\nAutomatically follow up with suppliers.\nManage bookings, cancellations, and customer queries.\nHandle payment tracking and reconciliation.\n\nWith automation, AI Agents can reduce manual work, increase accuracy, and free up your team to focus on customer experience and business growth.\"\n\nCall to action: \n\"Your experience matters. We're conducting a brief survey to understand how AI Agents can help travel agencies like yours save time, reduce manual work, and boost efficiency.\n\n📋 Takes less than 5 minutes\n🔐 Your responses are confidential\n📈 Get a free insights report based on aggregated results\n🎁 Early access to our AI Agent pilot program\n\n👉 Click Here to Take the Survey\n\nLet’s build smarter travel solutions together.\nThank you for being part of this industry transformation.\"\n\nPS: \"Even if you ar not interested in survey, kindly respond 'NOT INTERESTED\" in the reply. \n\nGuidelines:\n1. Your tone of voice should be \"Semi-formal conversation\". No fancy language. \n2. Do not repeat sentences or data from the input, make it more natural and human like.\n3. Make sure the Subject line is non-capitalized, even if it is gramatically incorrect. Makes it look more human.   \n4. Respond in JSON using the below format:\n{\"Subject line\":\"\",\"Icebreaker\":\"\",\"AI Agent in Treavel Business:\":\"\",\"Call to action\":\"\",\"PS\":\"\" }"},{"content":"=Agent Name:  {{ $json['Agent Name'] }}\nEmail Address: {{ $json['Email Address'] }}\nSummary: {{ $json.Summary }}\nWebsite: {{ $json.Website }}"}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"SCKN5KUziIpM8NB7","name":"OpenAi account 5"}},"typeVersion":1.8},{"id":"13922526-19c5-495a-ba65-3cb0c77a1816","name":"OpenAI Standardise Data","type":"@n8n/n8n-nodes-langchain.openAi","position":[-120,-100],"parameters":{"modelId":{"__rl":true,"mode":"list","value":"gpt-4.1-mini-2025-04-14","cachedResultName":"GPT-4.1-MINI-2025-04-14"},"options":{},"messages":{"values":[{"role":"system","content":"=Yor role is to extract the complete list of travel Agents information from the incoming data and standardise them in the below structured format for storing in spreadsheet. \n\nYour output has to be in a structured format that includes the \n - Agent name\n - Summary: summary from introduction section, \n - Email address, \n - Telephone number,\n - Website,\n- Country,\n- City\n\nYou will receive an input of <scrapped-website>\n\nRespond in JSON format:\n{\n    \"Travel Agent Name\": \"\",\n    \"Summary\": \"\",\n    \"Email Address\": \"\",\n    \"Telephone\": \"\",\n    \"Website\": \"\"\n    \"Country\":\"\"\n    \"City\"\": \"\"\n}\ninput N/A where data is not available "},{"role":"system","content":"=<scrapped-website>\n{{ $json.data.markdown }}\n</scrapped-website> "}]},"jsonOutput":true},"credentials":{"openAiApi":{"id":"SCKN5KUziIpM8NB7","name":"OpenAi account 5"}},"typeVersion":1.8},{"id":"f6fda879-81e2-4aa6-ada4-5fff6e645ba4","name":"Google Sheet Update Records","type":"n8n-nodes-base.googleSheets","position":[460,360],"parameters":{"columns":{"value":{"PS":"={{ $json.message.content.PS }}","City":"={{ $('Google Sheet Data Store').item.json.City }}","Status":"In-Progress","Country":"={{ $('Google Sheet Data Store').item.json.Country }}","Subject":"={{ $json.message.content['Subject line'] }}","Summary":"={{ $('Google Sheet Data Store').item.json.Summary }}","Website":"={{ $('Google Sheet Data Store').item.json.Website }}","Mail Sent":"Sent","Telephone":"={{ $('Google Sheet Data Store').item.json.Telephone }}","Agent Name":"={{ $('Google Sheet Data Store').item.json['Agent Name'] }}","Icebreaker":"={{ $json.message.content.Icebreaker }}","Email Address":"={{ $('Google Sheet Data Store').item.json['Email Address'] }}","Call to Action":"={{ $json.message.content['Call to action'] }}","Survey Received":"Pending","Response Received":"Pending","AI Agent in Travel":"={{ $json.message.content['AI Agent in Treavel Business'] }}"},"schema":[{"id":"Agent Name","type":"string","display":true,"required":false,"displayName":"Agent Name","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Summary","type":"string","display":true,"required":false,"displayName":"Summary","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Email Address","type":"string","display":true,"removed":false,"required":false,"displayName":"Email Address","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Telephone","type":"string","display":true,"required":false,"displayName":"Telephone","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Website","type":"string","display":true,"required":false,"displayName":"Website","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Country","type":"string","display":true,"required":false,"displayName":"Country","defaultMatch":false,"canBeUsedToMatch":true},{"id":"City","type":"string","display":true,"required":false,"displayName":"City","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Mail Sent","type":"string","display":true,"required":false,"displayName":"Mail Sent","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Response Received","type":"string","display":true,"required":false,"displayName":"Response Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Survey Received","type":"string","display":true,"required":false,"displayName":"Survey Received","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Status","type":"string","display":true,"required":false,"displayName":"Status","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Subject","type":"string","display":true,"removed":false,"required":false,"displayName":"Subject","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Icebreaker","type":"string","display":true,"removed":false,"required":false,"displayName":"Icebreaker","defaultMatch":false,"canBeUsedToMatch":true},{"id":"AI Agent in Travel","type":"string","display":true,"removed":false,"required":false,"displayName":"AI Agent in Travel","defaultMatch":false,"canBeUsedToMatch":true},{"id":"Call to Action","type":"string","display":true,"removed":false,"required":false,"displayName":"Call to Action","defaultMatch":false,"canBeUsedToMatch":true},{"id":"PS","type":"string","display":true,"removed":false,"required":false,"displayName":"PS","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["Email Address"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1316921362,"cachedResultUrl":"https://docs.google.com/spreadsheets/d/1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k/edit#gid=1316921362","cachedResultName":"TestTravelAgents"},"documentId":{"__rl":true,"mode":"id","value":"=1r33A-808h3zSgJu7AiENde9eTJkGEOtZgeVe6O-1f_k"}},"credentials":{"googleSheetsOAuth2Api":{"id":"Q8w7Aj2noMqus8kt","name":"Google Sheets account 5"}},"typeVersion":4.6},{"id":"c6ab2fe5-8876-4673-a5f3-6eacd4625a4c","name":"HTTP Scrape Website","type":"n8n-nodes-base.httpRequest","position":[-340,-100],"parameters":{"url":"https://api.firecrawl.dev/v1/scrape","method":"POST","options":{},"jsonBody":"{\n  \"url\": \"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/\",\n  \"formats\": [\n    \"markdown\"\n  ]\n}","sendBody":true,"sendHeaders":true,"specifyBody":"json","authentication":"genericCredentialType","genericAuthType":"httpHeaderAuth","headerParameters":{"parameters":[{"name":"Content-Type","value":"application/json"}]}},"credentials":{"httpHeaderAuth":{"id":"pbJsYdisPYx3PSPs","name":"Header Auth account 3"}},"typeVersion":4.2}],"active":false,"pinData":{"HTTP Scrape Website":[{"json":{"data":{"markdown":"- [Meetings & Events](https://www.japanmeetings.org/)\n- [Muslim Guide](https://www.japan.travel/en/my/muslim-guide/)\n- [Travel Trade](https://www.japan.travel/en/my/travel-trade/)\n\n- Select Language简体中文繁體中文（香港）繁體中文（臺灣）India (English)Bahasa Indonesia한국어ภาษาไทยTiếng ViệtSingapore (English)Philippines (English)Malaysia (English)Australia/New Zealand (English)FrançaisDeutschItalianoEspañolUnited Kingdom (English)Nordic countries（English）Canada (English)Canada (Français)United States (English)Mexico (español)PortuguêsالعربيةJapan(日本語)Global (English)\n\n\n[![JNTO](https://asset.japan.travel/image/upload/v1581485582/static/svg/common/img_logo_japan-endless-discovery.svg)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/)\n\n- HOME\n- Destinations\n- Things to Do\n- Plan Your Trip\n- Stories & Features\n- News\n\n- [![](https://www.japan.travel/static/f/img/iconmonstr-facebook-5.4c6310fccfc8.svg)](https://www.facebook.com/Visit.My.Japan)\n- [![](https://www.japan.travel/static/f/img/iconmonstr-instagram-15.87f48f84bf94.svg)](https://www.instagram.com/visitmyjapan/)\n- [![](https://www.japan.travel/static/f/img/iconmonstr-youtube-10.6f5ac725789b.svg)](https://www.youtube.com/c/JNTOMALAYSIACHANNEL)\n\n- ![](https://www.japan.travel/static/f/img/iconmonstr-globe-thin.b44ced265bc3.svg)\n\n\n- 简体中文\n- 繁體中文（香港）\n- 繁體中文（臺灣）\n- India (English)\n- Bahasa Indonesia\n- 한국어\n- ภาษาไทย\n- Tiếng Việt\n- Singapore (English)\n- Philippines (English)\n- Malaysia (English)\n- Australia/New Zealand (English)\n- Français\n- Deutsch\n- Italiano\n- Español\n- United Kingdom (English)\n- Nordic countries（English）\n- Canada (English)\n- Canada (Français)\n- United States (English)\n- Mexico (español)\n- Português\n- العربية\n- Japan(日本語)\n- Global (English)\n\n[![JNTO](https://asset.japan.travel/image/upload/v1581485582/static/svg/common/img_logo_japan-endless-discovery.svg)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/)\n\n[HOME](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/) Back\n\n- [Destinations](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/)\n\n\n\n\n- All\n\n\n\n\n\n\n\n\n![](https://www.japan.travel/static/f/img/map_hokkaido.b7b80abd4549.svg)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n![](https://www.japan.travel/static/f/img/map_tohoku.23e16b69e32c.svg)\n\n\n\n\n\n  - - [Aomori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/aomori/)\n- [Akita](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/akita/)\n- [Iwate](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/iwate/)\n- [Yamagata](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/yamagata/)\n- [Miyagi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/)\n- [Fukushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/fukushima/)\n\n![](https://www.japan.travel/static/f/img/map_hokuriku.971b7d8aaf59.svg)\n\n- - [Niigata](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/niigata/)\n- [Toyama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/toyama/)\n- [Ishikawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/)\n- [Fukui](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/fukui/)\n- [Nagano](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/)\n\n![](https://www.japan.travel/static/f/img/map_kanto.5c4544e53975.svg)\n\n- - [Tokyo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/)\n- [Kanagawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/)\n- [Chiba](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/chiba/)\n- [Saitama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/saitama/)\n- [Ibaraki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/ibaraki/)\n- [Tochigi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tochigi/)\n- [Gunma](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/gunma/)\n\n![](https://www.japan.travel/static/f/img/map_chubu.5b6f65f92ac3.svg)\n\n- - [Yamanashi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/yamanashi/)\n- [Shizuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/shizuoka/)\n- [Gifu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/)\n- [Aichi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/aichi/)\n- [Mie](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/mie/)\n\n![](https://www.japan.travel/static/f/img/map_kansai.93e83e6aaa46.svg)\n\n- - [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/)\n- [Shiga](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/)\n- [Hyogo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/hyogo/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/)\n- [Wakayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/wakayama/)\n\n![](https://www.japan.travel/static/f/img/map_chugoku.702fcee42844.svg)\n\n- - [Tottori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/tottori/)\n- [Shimane](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/)\n- [Okayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/okayama/)\n- [Hiroshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/hiroshima/)\n- [Yamaguchi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/yamaguchi/)\n\n![](https://www.japan.travel/static/f/img/map_shikoku.8f9ef0eea1eb.svg)\n\n- - [Tokushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/tokushima/)\n- [Kagawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kagawa/)\n- [Ehime](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/ehime/)\n- [Kochi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kochi/)\n\n![](https://www.japan.travel/static/f/img/map_kyushu.e2ab055eccbf.svg)\n\n- - [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/)\n- [Saga](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/saga/)\n- [Nagasaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/)\n- [Oita](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/oita/)\n- [Kumamoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kumamoto/)\n- [Miyazaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/miyazaki/)\n- [Kagoshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/)\n\n![](https://www.japan.travel/static/f/img/map_okinawa.83b83fa44d8c.svg)\n\n- Major cities\n\n\n\n\n\n\n\n\n![](https://www.japan.travel/static/f/img/map_hokkaido.b7b80abd4549.svg)\n\n\n\n\n\n  - - [Sapporo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/sapporo-and-around/)\n- [Asahikawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/asahikawa-and-hokkaido-north/)\n- [Hakodate](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/hakodate-and-hokkaido-south/)\n- [Kushiro](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/kushiro-and-hokkaido-east/)\n\n![](https://www.japan.travel/static/f/img/map_tohoku.23e16b69e32c.svg)\n\n- - [Sendai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/sendai-area/)\n- [Aomori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/aomori/aomori-city-and-around/)\n- [Akita](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/akita/akita-and-around/)\n- [Morioka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/iwate/morioka-and-around/)\n- [Tsuruoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/yamagata/tsuruoka-and-sakata/)\n- [Fukushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/fukushima/fukushima-city/)\n\n![](https://www.japan.travel/static/f/img/map_hokuriku.971b7d8aaf59.svg)\n\n- - [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n- [Niigata](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/niigata/niigata-city-and-around/)\n- [Toyama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/toyama/toyama-and-around/)\n- [Nagano](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/nagano-and-around/)\n- [Matsumoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/matsumoto-and-around/)\n- [Fukui](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/fukui/fukui-and-around/)\n\n![](https://www.japan.travel/static/f/img/map_kanto.5c4544e53975.svg)\n\n- - [Tokyo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/)\n- [Yokohama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/yokohama-and-around/)\n- [Saitama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/saitama/new-urban-center-area/)\n- [Chiba](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/chiba/)\n- [Utsunomiya](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tochigi/utsunomiya-area/)\n- [Maebashi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/gunma/maebashi-and-akagi/)\n\n![](https://www.japan.travel/static/f/img/map_chubu.5b6f65f92ac3.svg)\n\n- - [Nagoya](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/aichi/nagoya-station-and-around/)\n- [Fujiyoshida](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/yamanashi/mt-fuji-and-around/)\n- [Hamamatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/shizuoka/hamamatsu-and-around/)\n- [Gifu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/gifu-and-around/)\n- [Takayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/takayama-and-around/)\n- [Iseshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/mie/ise-bay-area/)\n\n![](https://www.japan.travel/static/f/img/map_kansai.93e83e6aaa46.svg)\n\n- - [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/osaka-bay-area/)\n- [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/around-kyoto-station/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/nara-city-and-around/)\n- [Kobe](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/hyogo/kobe-and-around/)\n- [Himeji](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/hyogo/himeji-and-around/)\n- [Otsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/otsu-area/)\n\n![](https://www.japan.travel/static/f/img/map_chugoku.702fcee42844.svg)\n\n- - [Hiroshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/hiroshima/hiroshima-city/)\n- [Okayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/okayama/okayama-and-around/)\n- [Kurashiki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/okayama/kurashiki/)\n- [Matsue](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/matsue-and-around/)\n- [Tottori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/tottori/tottori-and-around/)\n- [Shimonoseki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/yamaguchi/shimonoseki/)\n\n![](https://www.japan.travel/static/f/img/map_shikoku.8f9ef0eea1eb.svg)\n\n- - [Matsuyama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/ehime/matsuyama-and-around/)\n- [Takamatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kagawa/takamatsu-area/)\n- [Tokushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/tokushima/tokushima-city/)\n- [Kochi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kochi/kochi-and-around/)\n\n![](https://www.japan.travel/static/f/img/map_kyushu.e2ab055eccbf.svg)\n\n- - [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/fukuoka-city/)\n- [Kumamoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kumamoto/kumamoto/)\n- [Kagoshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/kagoshima-and-around/)\n- [Beppu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/oita/beppu-and-yufuin-around/)\n- [Nagasaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/nagasaki-city-and-around/)\n- [Miyazaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/miyazaki/miyazaki/)\n\n![](https://www.japan.travel/static/f/img/map_okinawa.83b83fa44d8c.svg)\n\n- - [Naha](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/naha-and-the-main-island/)\n- [Ishigaki Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/ishigaki-island-and-around/)\n- [Miyako Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/miyako-island/)\n- [Kerama Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/the-kerama-islands/)\n\n- Passion\n\n\n\n\n\n\n\n\n\n\n  - - [Mt. Fuji](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/fuji-guide/)\n- [Tokyo Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/tokyo-islands/)\n- [Zao](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/zao-area/)\n- [Yakushima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/yakushima/)\n- [Japan Alps](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/the-nagano-alps/)\n- [Towada](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/aomori/lake-towada-and-around/)\n\n- - [Niseko](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/niseko-and-nearby-ski-resorts/)\n- [Minakami](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/gunma/minakami-area/)\n- [Nagano](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/nagano-and-around/)\n- [Miyazaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/miyazaki/miyazaki-surf-sports/)\n- [Miyako](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/miyako-island/)\n- [Ishigaki Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/ishigaki-island-and-around/)\n\n- - [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/central-kyoto/)\n- [Hongu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/wakayama/hongu/)\n- [Kiso](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/kiso/)\n- [Koka & Shigaraki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/koga-and-shigaraki/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/nara-park-and-around/)\n- [Hida Takayama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/gifu/takayama-and-around/)\n\n- - [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/fukuoka-city/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/dotonbori-and-shinsaibashi/)\n- [Sapporo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/sapporo-and-around/)\n- [Ginza, Nihonbashi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/ginza-and-nihombashi/)\n- [Ise](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/mie/ise-bay-area/)\n- [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n\n- - [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n- [Setouchi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/shikoku/kagawa/setouchi-islands/)\n- [Kiyosato](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tokai/yamanashi/kiyosato-and-around/)\n- [Hakone](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/hakone-and-around/)\n- [Roppongi](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/roppongi-and-akasaka-area/)\n\n- - [Beppu & Yufuin (Onsen)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/oita/beppu-and-yufuin-around/)\n- [Miyako Island](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/miyako-island/)\n- [Suwa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/nagano/suwa/)\n- [Ginzan Onsen](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1798/)\n- [Nagasaki Islands](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/nagasaki-islands/)\n\n- - [Yokohama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/kanagawa/yokohama-and-around/)\n- [Sendai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/miyagi/sendai-area/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/osaka-castle-and-around/)\n- [Hiroshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/hiroshima/hiroshima-city/)\n\n- Vacation Style\n\n\n\n\n\n\n\n\n\n\n  - - [Kumano Kodo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/979/)\n- [Fukui](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/fukui/fukui-and-around/)\n- [Shimane](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/)\n- [Shonai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/yamagata/tsuruoka-and-sakata/)\n- [Shikoku Karst](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/816/)\n\n- - [Oki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/chugoku/shimane/oki/)\n- [Amami Oshima](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/kagoshima/amami-oshima-and-nearby-islands/)\n- [Nagasaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/nagasaki/nagasaki-islands/)\n- [Sado](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/niigata/sado-island/)\n\n- - [Beppu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/716/)\n- [Hakone](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1572/)\n- [Kusatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1518/)\n- [Kinosaki](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/2005/)\n- [Hachimantai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/1824/)\n\n- - [Kyoto](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/kyoto/)\n- [Nikko](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tochigi/nikko-area/)\n- [Nara](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/nara/)\n- [Kanazawa](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokuriku-shinetsu/ishikawa/kanazawa-and-around/)\n- [Omihachiman](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/shiga/omihachiman-area/)\n- [Aizuwakamatsu](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/fukushima/aizuwakamatsu-and-oze/)\n\n- - [Shiretoko](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/spot/2143/)\n- [Hachimantai](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/iwate/hachimantai-area/)\n- [Kerama](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/okinawa/okinawa/the-kerama-islands/)\n- [Shirakami](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/tohoku/akita/shirakami-area/)\n\n- - [Tokyo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kanto/tokyo/)\n- [Osaka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kansai/osaka/)\n- [Fukuoka](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/kyushu/fukuoka/fukuoka-city/)\n- [Sapporo](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/destinations/hokkaido/hokkaido/sapporo-and-around/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/b9/12/b9121642-d05b-4426-8ac9-42397a24a4b0/guide_luxury_b2glwo)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/) [![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/c6/d2/c6d2dd0b-53f0-48cb-afbb-8499c4d34051/nagano2474_15-thumbnail_fgejbt)SNOW LIKE NO OTHER](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/snow/) [![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ae/2a/ae2a9ec6-f70a-4e5f-9713-6f40ec2fc8bc/05_at_ka7sji)Action & Adventure](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/action-and-adventure/) [![](https://res.cloudinary.com/jnto/image/upload/w_253,h_105,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/35/cc/35ccc726-bb6e-4978-86e7-a8c0ea9aa27e/kv_cycling_r00t6j)Cycling](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/cycling/)\n\n- [Things to Do](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/)\n\n\n\n\n- Nature & Outdoor\n\n\n\n\n\n\n\n\n\n\n- [Diving in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/diving/)\n- [Skiing in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/skiing/)\n- [Seasonal Flowers in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/flowers/)\n- [Sustainable Outdoors](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/adventure-great-outdoors/)\n- [Adventure](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/adventure/)\n\n- [Off the Beaten Track in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/off-the-beaten-track/)\n- [Scenic Spots](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/scenic-spot/)\n- [World Heritage](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/world-heritage/)\n- [Home Stays & Farm Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/homestay-farmstay/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/01/a0/01a0bf64-6b31-49a8-8fe2-137b0e0343cc/sports_da6kbj)Sports & Outdoors](https://www.japan.travel/en/sports/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/b0/15b0ec10-8a32-4cac-98d0-e815b5454e52/hokkaido1460_1-thumbnail_m1jtwa)Japan's National Parks](https://www.japan.travel/national-parks/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/69/97/6997d16d-3a64-4714-8117-b3fbd1d523d6/it1823_010_wgbq8b)Nature (Experiences in Japan)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/nature/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/01/2d/012dca0a-2a91-439a-943d-cb1a9a8142bc/it649_003_fby2dd)Outdoor (Experiences in Japan)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/outdoor/)\n\n- Tradition\n\n\n\n\n\n\n\n\n\n\n- [Japanese Gardens](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/japanese-garden/)\n- [Japanese Crafts](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/traditional-craft-experiences-and-workshops/)\n- [Temple Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/temple-stays/)\n- [Heritage Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/heritage-stays/)\n\n- [Festivals and Events](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/festivals-and-events/)\n- [Theater in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/theater/)\n- [Japanese Tea Ceremony](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/tea-ceremony/)\n- [Cultural Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/cultural-experiences/)\n- [Culture in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/culture/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/b5/56/b5568a6e-46f6-4d15-912e-8d0387ab9205/it551_001_bsavbv)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/tradition/)\n\n- Food & Drink\n\n\n\n\n\n\n\n\n\n\n- [Gastronomy](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/)\n- [Local Cuisine Eastern Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/local-cuisine-eastern-japan/)\n- [Local Cuisine Western Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/local-cuisine-western-japan/)\n- [Local Street Food](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/local-street-food-favorites-budget-restaurant-japan/)\n- [Japan's Local Ekiben](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/experience-japans-local-ekiben-culture/)\n- [Yakitori](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/yakitori-a-guide-to-chicken-skewers/)\n\n- [Japanese Whisky](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-whisky/)\n- [Vegetarian and Vegan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/vegetarian-guide/)\n- [Sushi in Japan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/sushi-in-japan/)\n- [Japanese Sake Breweries](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/sake/)\n- [Sake 101](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/sake-shochu/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/30/06/3006bba5-2d48-4b49-9840-fd58db695de8/02_cuisine_it245_001_fvjz7r)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/cuisine/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/47/be/47bec00d-f539-4b93-bbba-68dbee111697/kv_gastronomy_mzcgm1)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/gastronomy/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/c2/99/c299c1bc-8607-4b75-a06d-b7378a2d7796/seafoodkaiseki_0166_m_1_dokhfz_vadwpe)Gastronomy](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/gastronomy/)\n\n- Art & Culture\n\n\n\n\n\n\n\n\n\n\n- [Art Museums](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/art-and-design/art-museum/)\n- [Architecture](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story/explore-the-world-of-japanese-architecture/)\n- [Performing Arts](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/art-and-design/performing-arts/)\n- [Theatre](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/travel-directory/Theatre/)\n\n- [Art Festivals](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story/art-festivals/)\n- [Japanese Anime and Comics](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-anime-and-comics/)\n- [Japanese Ceramics](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/ceramics/)\n- [Local Crafts](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/art-and-design/local-craft/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/01/36/0136d4e8-2bbd-4fcf-80c9-0f3b3c411171/it1027_003_zyogb4)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/art/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/51/b3/51b3db5a-1d2c-4057-88d4-451817c9db02/kv_arts-and-culture_fg6dmu)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/arts-and-culture/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/65/75/65758e76-606a-426b-bff9-535767c1ae6f/saitama_s_id45_2-thumbnail_gdy9ld)Art Festivals](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story/art-festivals/)\n\n- Cities\n\n\n\n\n\n\n\n\n\n\n- [Scenic Spots](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/scenic-spot/)\n- [Scenic Night Views](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/scenic-night-view/)\n- [Natural Wonders](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/natural-wonder/)\n- [Theme Parks](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/theme-park/)\n\n- [Nightlife](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/travel-directory/Nightlife/)\n- [Samurai & Ninja](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/samurai-and-ninja/)\n- [Iconic Architecture](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/attraction/iconic-architecture/)\n- [Shopping](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/shopping/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/83/1583fbdc-dd72-4fec-929e-cedd0e1579f5/03_city_jimu0285_011_cpoieb-thumbnail_ciz5al)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/cities/)\n\n- Relaxation\n\n\n\n\n\n\n\n\n\n\n- [Onsen](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/onsen/)\n- [Wellness Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/wellness-travel-in-japan/)\n- [Japanese Ryokan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-ryokan/)\n- [Home Stays & Farm Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/homestay-farmstay/)\n- [A Guide to Stargazing in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/a-guide-to-stargazing-in-japan/)\n\n- [Japanese Gardens](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/japanese-garden/)\n- [Flowers](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/flowers/)\n- [Relaxation in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/things-to-do/relaxation/)\n- [Forest Bathing (Shinrin-yoku)](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/forest-bathing/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/fd/49/fd498f7f-2bf2-4e5d-b783-4013fd77b15e/it3798_002_zl26z3)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/relaxation/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ec/61/ec612a72-0e9f-4b14-bf2c-de0e9a9424e1/kv_accommodations_q9g18f)Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/accommodations/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ff/79/ff797d2f-9674-4310-b67d-19c22325e57e/amana_s_id54_3_wivpwh)Wellness Travel](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/wellness-travel-in-japan/)\n\n- Featured\n\n\n\n\n\n\n\n\n\n\n- [Luxury](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/)\n- [Sports](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/)\n- [Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/)\n- [National Parks](https://www.japan.travel/national-parks/)\n- [Japan's Local Treasures](https://www.japan.travel/en/japans-local-treasures/)\n\n- [Japan Heritage](https://www.japan.travel/japan-heritage/)\n- [Heritage Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/heritage-stays/)\n- [Snow Like No Other](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sports/snow/)\n- [EXPO 2025](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/expo2025/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/1d/ac/1daced8c-aea5-4788-907c-f0bbb2a68b0c/20190107_dogo_onsen_honkan_it485_01_gfwdiq)Experiences in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/experiences-in-japan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/b0/15b0ec10-8a32-4cac-98d0-e815b5454e52/hokkaido1460_1-thumbnail_m1jtwa)National Parks](https://www.japan.travel/national-parks/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/15/b3/15b3cf3d-7b36-485c-9d73-2463eb9b814a/index_mainimage_yzrzta-thumbnail_fvq3nl)Japan Heritage](https://www.japan.travel/japan-heritage/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/21/3f/213fe6a7-d80a-467f-a410-0b524da7c181/001_takachiho_tuth2y_1_wzydg1)Sustainable Travel in JAPAN](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- [Plan Your Trip](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/)\n\n\n\n\n- Traveling to Japan\n\n\n\n\n\n\n\n\n\n\n  - - [Visa Information](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/visa-info/)\n- [Getting to Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/getting-to-japan/)\n- [Airport Access](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/airport-access/)\n- [COVID-19: Practical Information for Traveling to Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/practical-coronavirus-information/)\n\n- - [Shopping](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/shopping-in-japan)\n- [Anime Tourism](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-anime-and-comics/)\n- [Temple Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/temple-stays/)\n- [Countryside Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/homestay-farmstay/)\n- [Accessible Tourism](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/accessibility-in-japan/)\n\n- - [Hokkaido Great Outdoors](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/exploring-mother-natures-bounty-in-hokkaido)\n- [Scenic World Heritage in Tohoku](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/scenic-world-heritage-in-tohoku)\n- [Shikoku’s Nature and Traditions](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/shikokus-fascinating-nature-and-longstanding-traditions)\n- [Southern Kyushu by Rail](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/kyushus-hot-springs-by-rail)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/dc/5a/dc5ab715-f26d-4c1d-a6ac-a912dded8281/hokkaido1462_2-thumbnail_b2qbca)First-Time Visitor Info](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/de/a9/dea98934-353a-43a1-a62c-f2c572ff2309/nagano117_3_wfecpu)Online Reservation Sites](https://www.japan.travel/en/plan/online-reservation-sites/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/f0/e0/f0e0eabe-b8ea-4791-8bf6-eaed459f1ef8/image_travel_clkhrk)Stories & Guides](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/story-and-guide/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/97/f8/97f8f3e9-33ba-4d34-9ff8-7aa36ab652f7/display_sfotql-thumbnail_soxoyb)Itineraries](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/itineraries/)\n\n- Getting Around\n\n\n\n\n\n\n\n\n\n\n  - - [Traveling by Rail](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/traveling-by-rail/)\n- [How to Travel by Train and Bus](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/how-to-travel-by-train-and-bus-in-japan/)\n- [JR Rail Passes](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/jr-rail-passes/)\n- [Scenic Railways](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/scenic-railways/)\n- [Renting a Car](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/getting-around/cars/)\n- [Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- - [Travel Brochures](https://www.japan.travel/brochures/eng/index.php)\n- [Useful Apps](https://www.japan.travel/en/plan/useful-apps/)\n- [Online Reservation Sites](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/online-reservation-sites/)\n- [Eco-friendly Accommodation](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/eco-friendly-accommodation/)\n- [Luxury Accommodations](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/luxury/accommodations/)\n- [Heritage Stays](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/heritage-stays/)\n\n- - [Traveling With a Disability](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/traveling-with-disability/)\n- [Hands-free Travel](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/getting-around/luggage-storage/)\n- [How to Book a Certified Tour Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/how-to-book-a-certified-tour-guide/)\n- [Volunteer Guides](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/list-of-volunteer-guides/)\n- [Tourist Information Center](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/tic/)\n- [FAQ](https://faq.japan-travel.jnto.go.jp/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/93/e0/93e0d53c-bb73-4b2f-9829-06a40866bcdc/1571309427013-69c5e78f2aec88a3c49ccde4ba038afb-0-pixta_35407445_m-auto-oriented_r6bhx4)Travel Brochures](https://www.japan.travel/brochures/eng/index.php) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/e6/ea/e6ea4fbb-f64a-41b2-a786-e94b519b4174/tempura_mjl18v-thumbnail_u1yyrl)Restaurant Search](https://dining.japan.travel/en/restaurant/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/2a/44/2a44220a-cf25-45d3-a716-2cd1f117c3c7/001_takachiho_tuth2y)Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/de/a9/dea98934-353a-43a1-a62c-f2c572ff2309/nagano117_3_wfecpu)Online Reservation Sites](https://www.japan.travel/en/plan/online-reservation-sites/)\n\n- About Japan\n\n\n\n\n\n\n\n\n\n\n  - - [World Heritage](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/world-heritage/)\n- [Fuji Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/fuji-guide/)\n- [Japanese Ryokan Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/japanese-ryokan/)\n- [Japanese Manners](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/understanding-and-mastering-japanese-manners-and-etiquette/)\n- [Useful Apps](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/useful-apps/)\n- [Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- - [Spring in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/spring-guide/)\n- [Summer in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/summer-guide/)\n- [Autumn in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/autumn-guide/)\n- [Winter in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/winter-guide/)\n\n- - [Cherry Blossom Forecast](https://www.japan.travel/en/see-and-do/cherry-blossom-forecast-2024/)\n- [Autumn Leaves Forecast](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/autumn-leaves-forecast-2023/)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/ef/db/efdb4307-9aa9-4780-8768-3d92d52d69de/pixta_24426523-thumbnail_xkw2ln)Weather & Geography](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/weather/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/b6/cf/b6cfd4f8-73fc-4cc8-9002-9cc5c724357a/toyama1225_1_okcgdj)Autumn Leaves Forecast](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/see-and-do/autumn-leaves-forecast-2023/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/0e/0b/0e0b9cd7-ed76-4298-b986-e356f66af70b/wh017_3063_3_bqmvjf)World Heritage](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/world-heritage/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/2a/44/2a44220a-cf25-45d3-a716-2cd1f117c3c7/001_takachiho_tuth2y)Sustainable Travel in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/sustainable/)\n\n- Essential Information\n\n\n\n\n\n\n\n\n\n\n- [Japan Visitor Hotline](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/hotline/)\n- [Travel Insurance in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/travel-insurance-in-japan/)\n- [Japan Safe Travel Information](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/japan-safe-travel-information/)\n- [Local Laws](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/local-laws/)\n- [Visa Information](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/visa-info/)\n\n- [Accessibility in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/accessibility-in-japan/)\n- [Vegetarian Guide](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/vegetarian-guide/)\n- [Muslim Travelers](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/muslim-travelers/)\n- [Safety Tips](https://www.jnto.go.jp/safety-tips/eng/index.html)\n\n[![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/83/79/83791e7b-eec6-40c3-930a-f95996e52633/pixta_s_id59_1-thumbnail_ahkhgl)Accessibility in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/guide/accessibility-in-japan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/35/95/3595403e-882f-42bb-b5a3-917d55f18b61/img_hotline_2_mrmbil)Japan Visitor Hotline](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/hotline/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/81/12/8112222a-506b-4752-9704-2ec7e7a73e98/pixta_s_id35_1-thumbnail_ysowpg)Travel Insurance in Japan](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/plan/travel-insurance-in-japan/) [![](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/9d/fd/9dfd0d56-ad5f-4d75-87fe-a616046ced25/safety_tips_192_navy_rh4dkt)Safety Tips](https://www.jnto.go.jp/safety-tips/eng/index.html)\n\n- [Stories & Features](https://www.japan.travel/en/my/story/)\n\n\n\n\n- [Cuisine](https://www.japan.travel/en/my/story/cuisine/)\n- [Nature](https://www.japan.travel/en/my/story/nature/)\n- [Tradition](https://www.japan.travel/en/my/story/tradition/)\n- [Luxury](https://www.japan.travel/en/my/story/luxury/)\n- [Guide](https://www.japan.travel/en/my/story/guide/)\n- [Winter](https://www.japan.travel/en/my/story/winter/)\n- [All New Stories](https://www.japan.travel/en/my/story/)\n\n- [Create Your Joyful Japan](https://www.japan.travel/en/my/create-your-joyful-japan/application/)\n- [The Latest Itinerary](https://www.japan.travel/en/my/the-latest-itinerary/)\n- [Area Travel Pass](https://www.japan.travel/en/my/area-travel-pass/)\n- [Travelers Blog](https://www.japan.travel/en/my/travelers-blog/)\n- [Western Japan Sample Itinerary](https://www.japan.travel/en/my/westernjapan-promotion/)\n- [Tohoku Colors](https://www.japan.travel/tohoku-colors/)\n\n- [![The Latest Itinerary](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/d6/ca/d6ca88de-c9ab-46b5-8192-e0945967de40/kv_ilcuap)The Latest Itinerary](https://www.japan.travel/en/my/the-latest-itinerary/)\n- [![Enjoy Smart Trip with Travel Passes](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/9b/46/9b46471d-f265-4a57-93ea-5b74b76653d5/enjoy_smart_trip_with_travel_passes_yeefzx)Enjoy Smart Trip with Travel Passes](https://www.japan.travel/en/my/enjoy-smart-trip-travel-passes/)\n- [![Fascinating Suburb Japan](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/32/e6/32e66ae0-28b1-4181-a925-3ca5af808877/fascinating_suburb_japanhetsuda_oy8ndw)Fascinating Suburb Japan](https://www.japan.travel/en/my/fascinating-suburb-japan/)\n- [![First Winter in Japan](https://res.cloudinary.com/jnto/image/upload/w_192,h_129,c_fill,f_auto,fl_lossy/v1/media/filer_public/49/8a/498a87be-4393-470d-90e8-eb8ccafc64c0/first_winter_in_japan_mcb8oc)First Winter in Japan](https://www.japan.travel/en/my/your-first-winter-japan/)\n\n- [News](https://www.japan.travel/en/my/news/)\n\n\n\n\n- [News from JNTO MY](https://www.japan.travel/en/my/news/)\n- [News from JNTO & Partners](https://www.japan.travel/en/travel-directory/latest-news/)\n- [Travel Trade News](https://www.japan.travel/en/my/travel-trade/news/)\n\n- [Newsletters for Travelers](https://www.japan.travel/en/my/news-letter/)\n- [Newsletters for Professionals](https://www.japan.travel/en/my/travel-trade/newsletter-partner-exclusive/)\n\n- - [Meetings & Events](https://www.japanmeetings.org/)\n- [Muslim Guide](https://www.japan.travel/en/my/muslim-guide/)\n- [Travel Trade](https://www.japan.travel/en/my/travel-trade/)\n\nMy Favorites\n\n- **${v.title}**\n${v.desc \\| trunc(25)}\n\n\n- **${v.title}**\n${v.desc \\| trunc(25)}\n\n\n[View All](https://www.japan.travel/favorite)\n\nUse the\n\n## Planning a Trip to Japan?\n\nShare your travel photos with us by hashtagging your images with #visitjapanjp\n\n![](https://res-3.cloudinary.com/jnto/image/upload/w_750,h_1100,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/7b/6c/7b6ccb9a-0b3f-4ddb-bf62-0e9266cbbc9e/shutterstock_753148948_ooubv1)\n\n# List of Travel Agencies in Malaysia\n\n**Select the state to find out your preferred travel agencies :**\n\n[Kuala Lumpur](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#kualalumpur)[Selangor](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#selangor)[Johor](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#johor)[Penang](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#penang)[Sabah](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/#sabah)\n\n## Kuala Lumpur\n\n### Apple Vacations Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | We are a travel agency which mainly organize group package to all over the world. For previous year before Covid pandemic, we sent more than 15,000 customer annually to Japan from Hokkaido to Okinawa. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | HQ: Wisma Apple, 2nd Floor, 42-2 Jalan Sultan Ismail, 50250 Kuala Lumpur<br>Branch: Lot S323A, Second Floor (New Wing and Highstreet)<br>1 Utama Shopping Centre<br>No. 1, Lebuh Bandar Utama, Bandar Utama, 47800 Petaling Jaya, Selangor |\n| Tel | 03-2705 8299 |\n| Email | [asia@applevacations.my](mailto:asia@applevacations.my) |\n| Website | [Apple Vacations Homepage](https://www.applevacations.my/en/) |\n| SNS | [Apple Vacations Facebook](https://www.facebook.com/applevacationsmy) |\n\n### Best Holiday Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_194,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/f7/93/f7932791-d876-405f-9125-7bcbdba9cc69/best_holiday_logo_-_vince_koh_aufrz2)\n\n|     |     |\n| --- | --- |\n| Introduction | Established in 5th August 2002, Best Holiday is a travel agent that works to provide the most valuable and quality tour packages. With the foundation build on China tour packages, Best Holiday is among the very few travel agents that could provide quality tour packages at a very competitive price. |\n| Types | FIT, Package |\n| Address | 3.11-3.15 3rd Floor, Wisma Cosway, Jalan Raja Chulan 50200 Kuala Lumpur. |\n| Tel | +603-2141-6333 |\n| Email | [sales@bestholiday.com.my](mailto:sales@bestholiday.com.my) |\n| SNS | [Best Holiday Facebook](https://www.facebook.com/bestholiday.my) |\n\n### BMC Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Types | Incentive and business travel |\n| Address | Megan Avenue 1, 189 Jalan Tun Razak, Block A, 2nd Floor, Unit 7 and 8, 50400 Kuala Lumpur, Selangor |\n| Tel | 03-2161 1448 |\n| Email | [incentive@bmctravel.com](mailto:incentive@bmctravel.com) |\n| Website | [BMC Travel Homepage](https://www.bmctravel.com/) |\n\n### Corporate Information Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/8b/8b/8b8bc0b2-7fbd-42fa-b41a-f39629e88137/corporateinformationtravel_logo_ldlyc6)\n\n|     |     |\n| --- | --- |\n| Introduction | Airline Reservation & Ticketing, MICE, Holiday Packages, Golf Adventure, Pick A Trip Travel App, Transportation & Guide Services, Muslim Travel, Student Travel, Travel Insurance, Visa Application |\n| Types | FIT, Muslim, MICE, Students |\n| Address | Mid Valley Branch: B-1-3 & B-1-4, (1/F, Block B), Northpoint Offices, Mid Valley City, No. 1, Medan Syed Putra Utara, 59200 Kuala Lumpur, Malaysia.<br>Bukit Jalil Branch: J-13-2 & J-13-3, Pusat Perdagangan Bandar Bukit Jalil, Persiaran Jalil 1, Bukit Jalil, 57000 Kuala Lumpur, Malaysia. |\n| Tel | 03 9212 0011 |\n| Email | [askme@cit.travel](mailto:askme@cit.travel) |\n| Website | [Corporate Information Travel Homepage](https://cit.travel/) |\n| SNS | [Corporate Information Travel Facebook](https://www.facebook.com/cit.travel/)<br>[Corporate Information Travel Instagram](https://www.instagram.com/cit.travel/)<br>[Corporate Information Travel Twitter](https://twitter.com/corpinfotravel) |\n\n### Eden Tours & Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/eb/41/eb41b9e2-68a7-466c-a170-d766797285ce/eden_old_logo_-_joe_yu_ta5esf)\n\n|     |     |\n| --- | --- |\n| Introduction | Eden Tours & Travel Sdn Bhd (Eden) provide individual and group travel services to both leisure and corporate clients. We offer services from travel consultation, ticketing, hotel/accommodation reservations, all-inclusive packages, visa applications, free & easy holidays (FIT) to corporate meeting, convention & incentive travel programs and customise travel services. |\n| Types | Ticketing, FIT, Private Group, Group Package, Customised Group, MICE |\n| Address | No 290, 1st Floor, Jalan Pudu, 55100 Kuala Lumpur, Malaysia |\n| Tel | 603-21483880/ 30008882 |\n| Email | [mice@edenvacation.com](mailto:mice@edenvacation.com) |\n| Website | [Eden Tours & Travel Homepage](http://edenvacation.com/) |\n| SNS | [Eden Tours & Travel Facebook](https://www.facebook.com/EdenToursKL) |\n\n### Esplanad Holiday Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Types | Group Tour Travel |\n| Address | 79-2, Jalan Dwitasik 1, Dataran Dwitasik, 56000 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-91736300 |\n| Email | [info@esplanad.com.my](mailto:info@esplanad.com.my) |\n| SNS | [Esplanad Holiday Facebook](https://www.facebook.com/EsplanadHoliday/?locale=ms_MY) |\n\n### Feel Japan with K (M) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_133,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/11/a9/11a9b78d-92d1-4cc3-860c-69666a470660/5e07366e-f358-4ff2-833b-d3edd4c87c25_-_feel_japan_k_jp1rxo)\n\n|     |     |\n| --- | --- |\n| Introduction | Providing Muslim Tour packages for Muslim tourist, travelers to Japan.<br>Developing Japan as the destination of choice for Malaysian Muslim tourist.<br>Sales, marketing and development of Muslim Travel Packages to Japan in Malaysia since 2011.<br>Wholesaler for Muslim Tour Packages to Japan for Travel Agencies in Malaysia, Indonesia and Singapore, |\n| Types | FIT, Package, Muslim, Education |\n| Address | L 12-03A, Wangsa Maju 118 No.8, Jalan Wangsa Delima Wangsa Maju 53300 Kuala Lumpur |\n| Tel | +6013-702-3981 |\n| Email | [feeljapankmalaysia@gmail.com](mailto:feeljapankmalaysia@gmail.com) |\n| Website | [Feel Japan with K (M) Homepage](http://www.feeljapank.com/index.html) |\n\n### Golden Tourworld Travel (Malaysia) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_145,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b4/5e/b45e54cf-120e-441d-87a9-b416b0d2f336/gtt_logo_-_ricky_wai_xgrwkf)\n\n|     |     |\n| --- | --- |\n| Introduction | Malaysia Outbound Travel & Tour Agency |\n| Types | FIT, Package, MICE, Muslim |\n| Address | No. 72, Wisma GTT, Cangkat Bukit Bintang, 50200 Kuala Lumpur. Malaysia |\n| Tel | +60321187228 |\n| Email | [enquiry@gtt.com.my](mailto:enquiry@gtt.com.my) |\n| Website | [Golden Tourworld Travel Homepage](https://online.flipbuilder.com/yrkz/igln/) |\n| SNS | [Golden Tourworld Travel Facebook](https://www.facebook.com/GoldenTourworldTravelMY) |\n\n### Golden Tropics Travel And Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/eb/e3/ebe30d11-24b5-40f0-9f13-39f63c3ad085/copy_of_logo_-_kenny_gtt_ivvsun)\n\n|     |     |\n| --- | --- |\n| Introduction | Our company is more specialist on FIT and Incentive Travel to Japan and Korea. Every year we are sending about 500-800 customer to Japan. |\n| Types | FIT, MICE, Muslim |\n| Address | G-5, Wisma Zelan, Jalan Tasik Permaisuri 2, Bandar Tun Razak, Cheras 56000 Kuala Lumpur, Malaysia |\n| Tel | +603-91746888 / +6010-8186688 |\n| Email | [info@goldentropics.com.my](mailto:info@goldentropics.com.my) |\n| Website | [Golden Tropics Travel And Tours Homepage](http://www.goldentropics.com.my/) |\n| SNS | [Golden Tropics Travel And Tours Facebook](https://www.facebook.com/GoldenTropicsTravel/) |\n\n### Hello Holidays Sdn Bhd\n\n![](https://res.cloudinary.com/jnto/image/upload/w_409,h_85,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/91/90/91908c9c-b441-4620-9785-0911e3f1b6c4/htt-main-800x180px_cxeylj)\n\n|     |     |\n| --- | --- |\n| Introduction | Hello Holidays is a premier travel service provider specializing in individual, family, and corporate trips, including pre- and post-conference tours, incentive trips, cruise packages, special interest excursions, and technical visits. With offerings ranging from Domestic Tours across Malaysia to Outbound Tours to destinations like Japan, Korea, Europe, and beyond, we tailor itineraries to match diverse lifestyles and preferences. Our competitive edge lies in our modern fleet of coaches, vans, and MPVs, backed by a nationwide network ensuring seamless services such as coach rentals, transfers, hotel reservations, air ticketing, tour guides, travel insurance, and visa applications. Committed to integrity, reliability, professionalism, and value for money, we aim to deliver worry-free, memorable travel experiences, serving every customer with passion and dedication. |\n| Types | Package, FIT, MICE, Luxury |\n| Address | E-09, 07 Plaza, 2, Jalan Kiara, Mont Kiara, 50480 Kuala Lumpur, Federal Territory of Kuala Lumpur |\n| Tel | 03-6201 6888 |\n| WhatsApp | +601128083859 |\n| Email | [enquiry@helloholidays.com.my](mailto:enquiry@helloholidays.com.my) |\n| Website | [Hello Holidays Homepage](https://www.helloholidays.com.my/) |\n| SNS | [Hello Holidays Facebook](https://www.facebook.com/helloholidays) |\n\n### H.I.S. Travel (Malaysia) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_165,h_60,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/3d/3e/3d3e645c-4456-410d-b8cd-9cfd47cf1a59/1200px-his_logo_bluesvg_-_mohd_safwan_o21tsd)\n\n|     |     |\n| --- | --- |\n| Introduction | H.I.S. Travel Malaysia is a leading travel agency and a subsidiary of H.I.S. Co., Ltd., headquartered in Tokyo, Japan. With a strong specialization in ground arrangements in Japan, H.I.S. Travel Malaysia offers diverse services, including private tours, educational tours, MICE, corporate arrangements, special tours, and more. Backed by a global network and deep expertise in the Japanese market, H.I.S. Travel Malaysia is dedicated to delivering exceptional travel experiences with a focus on quality, innovation, and customer satisfaction. |\n| Types | Muslim, Educational/School/University, MICE, Customized Trip, Private Guided Trip, Disable Friendly Trip |\n| Address | Unit 22-16, Q Sentral,  <br> 2A, Jalan Stesen Sentral 2,  <br> Kuala Lumpur Sentral, 50470 Kuala Lumpur,  <br> Federal Territory of Kuala Lumpur |\n| Tel | 03-2276 3300 |\n| Email | [enquiry@his-world.com](mailto:enquiry@his-world.com) |\n| Website | [H.I.S. Travel Homepage](https://www.his.com.my/) |\n| SNS | [H.I.S. Travel Facebook](https://www.facebook.com/HISWorld.Malaysia/)<br>[H.I.S. Travel Instagram](https://www.instagram.com/his.malaysia/) |\n\n### ICE HOLIDAYS SDN BHD\n\n|     |     |\n| --- | --- |\n| Introduction | 🏆Golden Destinations (GD) - Brand of the Year 2024 (Travel & Tourism) Malaysia most leading Business-to-Business (B2B) Travel Wholesaler Tour Company in Malaysia. |\n| Types | Package, FIT (Flexible Independent Travel), Muslim-friendly/Halal, MICE, Luxury, Cruise |\n| Address | Wisma New Asia, Jalan Raja Chulan, Bukit Bintang, 50200 Kuala Lumpur |\n| Email | [marketing@ice-holidays.com](mailto:marketing@ice-holidays.com) |\n| Website | [Ice Holidays Homepage](https://www.goldendestinations.com/) |\n| SNS | [Ice Holidays Facebook](https://www.facebook.com/gdgoldendestinations) |\n\n### J&C Travel Sdn. Bhd. ( KL Branch )\n\n![](https://res.cloudinary.com/jnto/image/upload/w_144,h_80,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/0e/21/0e21ec88-fb3b-44e3-a935-74ab5af56034/j_c_logo_chinese_2_-_kim_pheng_hor_rgidgc)\n\n|     |     |\n| --- | --- |\n| Introduction | Japanese Inbound , Outbound , Transport ( Education , Golf , Incentive , Leisure ) |\n| Types | FIT, Package, Education |\n| Address | 222 Jalan Ampang KL |\n| Tel | +6012-372-8122 |\n| Email | [benhor@jctravel.com.my](mailto:benhor@jctravel.com.my) |\n| Website | [J&C Travel Homepage](http://www.jctravel.com.my/usr/page.aspx?pgid=2) |\n| SNS | [J&C Travel Facebook](https://www.facebook.com/jctraveltransportbooking) |\n\n### J-Horizons Travel (M) Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Types | Ticketing, Outbound Tours, Inbound Tours |\n| Address | Lot 25-05, Wisma Goldhill, Jalan Raja Chulan, Bukit Ceylon, 50200 Kuala Lumpur, Federal Territory of Kuala Lumpur |\n| Tel | 03-2161 0922 |\n| Email | [enquiry\\_japanrail@j-horizons.com.my](mailto:enquiry_japanrail@j-horizons.com.my) |\n\n### Japan Travel Bureau (Malaysia) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_140,h_97,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b2/39/b2393821-8b53-4095-8579-607dd8b33b90/jtbmark_slogan_v_en_rgb_red_ylkimg)\n\n|     |     |\n| --- | --- |\n| Introduction | Japan Travel Bureau (M) Sdn Bhd or well-known as JTB Malaysia is established in 1990 with our head office located in the heart of Kuala Lumpur, and a supporting branch office in Kota Kinabalu. Licensed to perform inbound, outbound and ticketing business by the Ministry of Culture, Arts & Tourism Ministry of Tourism, Arts & Culture, our strength is being a specialist in travel to Japan as well as further develop our products and services for other travel destinations.<br>JTB offices are no mere land operators, but vital hubs that both send off and welcome international travelers. Wherever in the world our customers are coming from or heading to, JTB is proud to handle all aspects of the travel business. With a proprietary network that spans the globe, the JTB global network is that rare group of companies can provide all the travel services customers desire, all around the world. |\n| Types | Muslim, FIT, Private group, Customized group, MICE, Education |\n| Address | Unit 16.05-16.07, Level 16, Amoda, 22, Jalan Imbi, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur, Malaysia |\n| Tel | 03-2330 3388 |\n| Email | [info\\_kul.my@jtbap.com](mailto:info_kul.my@jtbap.com) |\n| Website | [Japan Travel Bureau Homepage](https://my.jtbtrip.com/) |\n| SNS | [Japan Travel Bureau Facebook](https://www.facebook.com/JTB.Malaysia/)<br>[Japan Travel Bureau Instagram](https://www.instagram.com/jtbmalaysia/?hl=en)<br>[Japan Travel Bureau X](https://twitter.com/jtb_mly?lang=en) |\n\n### Joy Paradise Holidays Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | Joy Paradise is a one stop travel agency for all your travel needs to Japan.We dedicatedly provide personalized and customized travel services to clients who are looking to explore the best of what Japan has to offer. With10 years of experience and 0% accident under our belt,we have the skills and resources to meet your needs. With our top-notch vehicles and seasoned drivers,you can rest assured that you will enjoy your journey safely and comfortably. |\n| Types | Private Group, Group Package, Customized group |\n| Address | A-1-26 PLAZA BUKIT JALIL (AURORA PLACE), NO. 1 PERSIARAN JALIL 1, BANDAR BUKIT JALIL, 57000 KUALA LUMPUR |\n| Tel | 03-5033 3170 |\n| Email | [joyparadiseholidays@gmail.com](mailto:joyparadiseholidays@gmail.com) |\n| Website | [Joy Paradise Holidays Homepage](https://joyparadiseholidays.com/) |\n| SNS | [Joy Paradise Holidays Instagram](https://www.instagram.com/joyparadiseholidays/) |\n\n### Kopetro Travel & Tours Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | KOPETRO Travel & Tours Sdn Bhd was incorporated in 1986 and is wholly owned subsidiary of KOPETRO Berhad. We are an accredited travel agency with the International Air Transport Association (IATA) and a member of the Malaysian Association of Tour and Travel Agents (MATTA). |\n| Types | Outbound, Group Tour |\n| Address | B-1-5, Megan Avenue II, No. 12, Jalan Yap Kwan Seng, 50450 Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2164 1577 |\n| Email | [kopetrotravel@kopetro.com.my](mailto:kopetrotravel@kopetro.com.my) |\n| Website | [Kopetro Travel & Tours Sdn Bhd Homepage](https://www.kopetrotravel.com.my/) |\n\n### LTS Explorer Tours\n\n|     |     |\n| --- | --- |\n| Introduction | Selling Japan tour packages to corporate incentive companies. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | 7A, Jalan Perisa 2, Happy Garden, 58200 Kuala Lumpur, Malaysia |\n| Tel | +603-79836236 |\n| Email | [sales@lts-explorer.com](mailto:sales@lts-explorer.com) |\n| Website | [LTS Explorer Tours Homepage](http://www.lts-explorer.com/) |\n\n### Malaysian Harmony Tour & Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Malaysian Harmony Tour & Travel Sdn Bhd with the experience of more 30 years, is an associate company to Asia Cathay Travel . Our aim is to offer high quality, personalized services and packages out of the beaten track. Our expertise gurantees the success of every project we undertake. We are the top produces for the Major airlines under IATA - International Air Transport Association. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | 21JALAN TONG SHIN ,50200 KUALA LUMPUR |\n| Tel | +603-21454226 |\n| Email | [leister\\_op@mysharmony.com](mailto:leister_op@mysharmony.com) |\n| Website | [Malaysian Harmony Tour & Travel Homepage](https://www.malaysianharmony.com.my/) |\n| SNS | [Malaysian Harmony Tour & Travel Facebook](https://www.facebook.com/malaysianharmony) |\n\n### Mayflower Holidays Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Mayflower Holidays (MH) is a recognized brand in the local market for over 60 years, MH has innovated its own 'One-Stop' online travelling solution to directly serve the affluent generation of this technology age, while still customizing incentive group travel for the corporate and private customers. It is also a well sought after Air Tickets Consolidator both locally and internationally. |\n| Types | Package |\n| Address | 1, Jalan Metro Pudu 1, Fraser Business Park, 55100 Kuala Lumpur, Malaysia |\n| Tel | 03-92321888 |\n| Email | [cs@mayflower-group.com](mailto:cs@mayflower-group.com) |\n| SNS | [Mayflower Holidays Facebook](https://www.facebook.com/mayflowerholidaysMH) |\n\n### MITRA KEMBARA SDN.BHD.\n\n|     |     |\n| --- | --- |\n| Introduction | MITRA Kembara is a local Bumiputra company established in 1976, which registered with Ministry of Finance to manage official trip for government agencies and private. Being 42 years in the travel industry we are fully experienced in all facets of travel and tour arrangements and our core businesses are Government Travel Management and Umrah Travel.<br>Mitra Kembara is also registered agent for Saudi Arabia Embassy for the service of Visa and Endorsement for Umrah travel. Apart from that Mitra Kembara also offers a wide variety of Halal holiday packages to various destinations worldwide. Currently we service over 70 Government Agencies, GLC (Government Related Company) and Private Company. |\n| Types | Tour Packages |\n| Address | Wisma Central, Jln Ampang, Kuala Lumpur, 50450 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2779 1349 |\n| Email | [informk@mitrakembara.travel](mailto:informk@mitrakembara.travel) |\n| Website | [MITRA KEMBARA Homepage](https://www.mitrakembara.travel/?gad_source=1&gclid=Cj0KCQiAkoe9BhDYARIsAH85cDO-1qZKRqxj-BbFW6CjKhw68GulEv1ngPzp-1v-67L50tovcdxNTdUaAokUEALw_wcB) |\n\n### Orex Travel & Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_150,h_150,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/90/29/90299476-3433-4519-bf12-b936b96c02c4/orex_logo_new-01_-_edmond_james_rzydws)\n\n|     |     |\n| --- | --- |\n| Introduction | Our success is owed to the dedication and commitment of our employees. We now stand as one of the reputable travel management company (TMC) in Malaysia, providing a full range of travel services for big corporations and companies. |\n| Types | FIT, Package, MICE, Muslim, Education |\n| Address | Suite 08-01, 08-02 & 08-10, Level 8, Heritage House, No. 33 Jalan Yap Ah Shak, 50300, Kuala Lumpur, Malaysia. |\n| Tel | 03 - 8966 3922 |\n| Email | [orex.leisure@orextravel.com](mailto:orex.leisure@orextravel.com) |\n| Website | [Orex Travel & Tours Homepage](https://www.orextravel.com/) |\n| SNS | [Orex Travel & Tours Facebook](https://www.facebook.com/OrexTravelMalaysia) |\n\n### Parlo Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_150,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/c0/1a/c01aa8cb-0f07-4904-ba08-c14dd4040d42/parlo_logo_jpeg-01_-_parlo_tours_wgflph)\n\n|     |     |\n| --- | --- |\n| Introduction | Parlo Tours has been in the outbound and inbound travel industry for more than 4 decades. Now well-established, the Parlo Group is a travel management and services company principally engaged in the provision of leisure and corporate travel products and services. The company also provides ancillary travel products and services for leisure and corporate travel. |\n| Types | FIT, Package, MICE |\n| Address | 72, Jalan Kampung Attap, Kampung Attap, 50460 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2726 6088 |\n| Email | [outbound@parlotours.com.my](mailto:outbound@parlotours.com.my) |\n| Website | [Parlo Tours Homepage](https://www.parlotours.com.my/) |\n| SNS | [Parlo Tours Facebook](https://www.facebook.com/parlotours) |\n\n### Roystar Travel & Tours Sdn. Bhd.\n\n![](https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/)\n\n|     |     |\n| --- | --- |\n| Introduction | A brand named for greatest deals and a One-stop for your affordable leisure travel. |\n| Types | FIT, Package, MICE, Muslim, Flight Ticket |\n| Address | No 16A & 16B, Lorong Brunei 3, Off Jalan Pudu, 55100 Kuala Lumpur |\n| Tel | 03-21430288 |\n| Email | [tour@roystartravel.com.my](mailto:tour@roystartravel.com.my) |\n| SNS | [Roystar Travel & Tours Facebook](https://www.facebook.com/smartholidays.com.my) |\n\n### Sedunia Travel Services Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_133,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/11/0c/110c8aea-c449-4fed-8bc3-52cf5965d993/sedunialogo-vertical2014_-_annie_woo_hzxe9r)\n\n|     |     |\n| --- | --- |\n| Introduction | Founded in 1976, Sedunia Travel has grown to be one of the largest travel agencies in Malaysia, offering a range of corporate, MICE and leisure travel. As the leading Free Independent Traveller (FIT) specialist in Malaysia, Sedunia Travel takes great pride in offering the best and largest selection of tours and holidays around the world. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | Level 01-1B, 12 & 13 <br> Menara Genesis <br> 33 Jalan Sultan Ismail <br> 50250 Kuala Lumpur, Malaysia |\n| Tel | 03-27795480 |\n| Email | [contact@sedunia.com.my](mailto:contact@sedunia.com.my) |\n| Website | [Sedunia Travel Services Homepage](https://seduniatravel.com/destination/japan/) |\n| SNS | [Sedunia Travel Services Facebook](https://www.facebook.com/seduniatravel/) |\n\n### Sri America Travel Corporation Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | SA Travel is a premier online travel and tour agency based in Malaysia, with offices located in Kuala Lumpur and Penang. We specialize in providing comprehensive travel packages both within Malaysia and internationally. Whether you're planning a serene getaway or an adventurous expedition, we offer detailed itineraries and competitive tour fares tailored to your needs.<br>For more information about our travel packages, itinerary details, and pricing, please don't hesitate to contact us. Let SA Travel be your trusted partner in exploring the world! |\n| Types | Group Tour |\n| Address | Wisma Sa, 12, Jln Bukit Bintang, Bukit Bintang, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 03-2142 9155 |\n| Email | [pychong@satravel.com.my](mailto:pychong@satravel.com.my) |\n| Website | [Sri America Travel Corporation Homepage](https://www.satravel.my/) |\n\n### Sunrise Tours & Travel Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Introduction | Sunrise Tours & Travel is the officially authorized dealer and agent of JR Pass appointed by Japan Railways Group (JR Group). As the leading travel agency located in Kuala Lumpur Malaysia, offer JR Pass at the best price with secure delivery. Discover beautiful places in Japan with JR Pass today. |\n| Types | Group Tour |\n| Address | Unit 4.05 Level 4, Amoda Building  No. 22, Jalan Imbi, 55100 Kuala Lumpur, Malaysia. |\n| Tel | 03-2141 8022 |\n| Email | [sunrise@sunrise.com.my](mailto:sunrise@sunrise.com.my) |\n| Website | [Sunrise Tours & Travel Homepage](https://www.sunrise.com.my/tours/) |\n\n### TM Tours & Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/96/e1/96e1a4a0-845a-4754-970b-974d6be7240b/tmtt-logo_-_mohd_ridzwan_abdullah_htmzuj)\n\n|     |     |\n| --- | --- |\n| Introduction | WE ARE A FULL LICENSED MUSLIM BASED COMPANY HIGHLIGHTING MUSLIM NEEDS, PRAYERS REQUIRMENTS, TOURS, HALAL MEALS, PLACES OF INTEREST TO JAPAN TRAVEL DESTINATIONS WHICH CATER FOR MUSLIM AS WELL AS NON MUSLIM TRAVELLERS. OUR MAIN CONCENTRATION COVERS FIT, GIT, SPECIAL TOURS, GOVERNMENT DELEGATION, STUDENT DELEGATION, INTER CULTURE PROGRAMS, MICE, INCENTIVES GROUPS SINCE 2000 TO JAPAN AS TOP SELLER |\n| Types | FIT, Package, MICE, Muslim, Education |\n| Address | Lot : 3-3A, Level 4, Wisma Q Titiwangsa, |\n| Tel | +60340314171 |\n| Email | [info@tmtours.com.my​](mailto:info@tmtours.com.my) ​​​​​​ |\n| Website | [TM Tours & Travel Homepage](https://tmtours.com.my/) |\n| SNS | [TM Tours & Travel Facebook](https://www.facebook.com/tmtoursntrvl/) |\n\n### Wendy Tour Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b1/76/b176e889-6962-4631-af60-187048831509/wendylogo_en_1340x960_-_outbound_kl_william_n1ij38)\n\n|     |     |\n| --- | --- |\n| Introduction | Japan Inbound and Outbound |\n| Types | FIT, Package, MICE, Muslim, Education, JR Train Pass |\n| Address | CP61, Suite 2504, 25th Flr., Wisma Chuang, No.34, Jalan Sultan Ismail, 50250 Kuala Lumpur, Malaysia |\n| Tel | +603-2145-2312 |\n| Email | [outbound@wendytour.com.my](mailto:outbound@wendytour.com.my) |\n| Website | [Wendy Tour Homepage](https://wendytour.com.my/) |\n| SNS | [Wendy Tour Facebook](https://www.facebook.com/wendytour.to.japan/) |\n\n### WORLDTRAVELLERS DMC SDN BHD\n\n|     |     |\n| --- | --- |\n| Types | Corporate Travel, Ticketing |\n| Address | They are expanding and will open a new branch in the Cheras area on 15 March. The new address will be provided once they have officially moved in |\n| Tel | 03-2282 7201 |\n| Email | [bangsar1@worldtravellers-dmc.com.](mailto:bangsar1@worldtravellers-dmc.com.) |\n| Website | [WORLDTRAVELLERS DMC Homepage](https://www.worldtravellers-dmc.com/) |\n\n### WP Travel Sdn. Bhd. ( Wanderprime )\n\n![](https://res.cloudinary.com/jnto/image/upload/w_300,h_40,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/69/2d/692df124-05a5-448f-a10a-93799a12a4d0/wanderprime_logo_horizontal_pantone_-_noelle_chong_qhqwwm)\n\n|     |     |\n| --- | --- |\n| Introduction | Wanderprime is a Malaysia based Luxury Travel Operator .We plan & organise first-class experiences for hyper luxury travellers , adventure seekers and out-of-ordinary traveler. To offer the authentic and unique experience of our handpicked destination with ultimate comfort;In every chosen destination , we work closely with subject experts and professional to offer the most to our valued guests . |\n| Types | FIT, Muslim |\n| Address | B-29-3A, Tower B, Pavilion Embassy, Kompleks Pavilion Ampang, 50450 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 012-972 2297 |\n| Email | [noelle@wanderprime.com](mailto:noelle@wanderprime.com) |\n\n## Selangor\n\n### Golden Adventure Tours & Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | We are an experienced and licensed travel agent in Malaysia. which in charge of inbound, outbound, ticketing services as well as famous for our Japan and Hokkaido Private Tours. we offer variety of tourism products including tour packages, hotel booking, flight booking and other travel services to our clients, also known for its customized tour solutions. |\n| Types | FIT, Package, Education |\n| Address | KL office - E10-3A, 10th floor, Menara Melawangi, Amcorp Trade Centre, 18, Jalan Persiaran Barat, 46050 Petaling Jaya, Selangor, Malaysia |\n| Tel | +603-7954 0196 |\n| Email | [golden-kul@golden-adv.com](mailto:golden-kul@golden-adv.com) |\n| Website | [Golden Adventure Tours & Travel Homepage](http://www.tabigo.asia/) |\n\n### Onederful Vacation Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_214,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/0d/6f/0d6f71f8-5cb7-40b5-90c0-293f6c8cc842/onederful_colour_logo_-_vacation_onederful_raervd)\n\n|     |     |\n| --- | --- |\n| Introduction | Onederful Vacation has been in the tourism and hospitality business since December, 2003. Our wide range of products and services which include travel consultancy, international / domestic airline ticketing, worldwide hotel reservations, well designed tour packages, corporate incentive travel, exclusive transfer services, travel and personal accident insurance and travel visa application service. |\n| Types | FIT, Package, MICE, Ticket Reservation |\n| Address | No.8-1, 1st Floor, Jalan USJ10/1E, Taipan Business Centre, 47620 UEP Subang Jaya, Selangor, Malaysia |\n| Tel | 03-56352595 / 012-5882595 |\n| Email | [enquiry@onederfulvacation.com](mailto:enquiry@onederfulvacation.com) |\n| Website | [Onederful Vacation Homepage](https://www.onederfulvacation.com/) |\n| SNS | [Onederful Vacation Facebook](https://www.facebook.com/onederfulvac/) |\n\n### Pearl Holiday (M) Travel & Tour Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_180,h_80,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/11/93/1193f604-4e84-401f-b15d-24c4b7120bd0/pearl_holiday_with_website_-_outbound_pearlholiday_paxlis)\n\n|     |     |\n| --- | --- |\n| Introduction | Established in 1993, Pearl Holiday(M)Travel & Tour Sdn Bhd is a Travel Operator licensed by Ministry of Culture, Arts and Tourism Malaysia with Inbound, Outbound and Ticketing qualifications. Over 50 full-time staffing. The company's core business covers a variety of Inbound, Outbound, Educational Tours, Coach & Car Rental. |\n| Types | FIT, Package, MICE, Education |\n| Address | No.1, Jalan KP 1/3, Taman Kajang Prima, Off Jalan Semenyih, 43000 Kajang, Selangor. |\n| Tel | +603-8924 9999 |\n| Email | [enquiry.hq@pearlholiday.com](mailto:enquiry.hq@pearlholiday.com) |\n| Website | [Pearl Holiday Homepage](https://www.pearlholiday.com/) |\n| SNS | [Pearl Holiday Facebook](https://www.facebook.com/pearlholiday) |\n\n### Sunway Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_180,h_60,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/9e/30/9e3001f7-4312-4e93-995e-64c810cf1db7/swt_logonew_-_rachel_koong_z8v5jf)\n\n|     |     |\n| --- | --- |\n| Introduction | With over 30 years of industry experience, Sunway Travel is your trusted partner for a comprehensive range of travel services. Our offerings include corporate airline ticketing, global hotel reservations, MICE travel, cruises, and tailored individual or group tours to Japan. |\n| Types | FIT, Package, MICE |\n| Address | Unit 1.7, Level 1, West Lobby, Menara Sunway Annexe, Jalan Lagoon Timur 47500 Bandar Sunway, Selangor |\n| Tel | 03-56399029 |\n| Email | [travelinfo@sunway.com.my](mailto:travelinfo@sunway.com.my) |\n| Website | [Sunway Travel Homepage](https://www.sunway.travel/) |\n| SNS | [Sunway Travel Facebook](https://www.facebook.com/sunway.travel) |\n\n## Johor\n\n### Chia Sin Travel Service Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_200,h_140,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/42/a5/42a533a1-492f-49ec-b5ac-501d6df2a012/chiasin_logo_tn2_fucfvd)\n\n|     |     |\n| --- | --- |\n| Introduction | With over thirty years of experience in the travel and tourism industry, Chia Sin Travel Service Sdn. Bhd was established in 28th April 1981 as a full pledge license Travel Agent for both Inbound and Outbound.<br>Chia Sin Travel Service Sdn. Bhd has the experience om organizing wide variety of holidays and has separate divisions for Outbound which include MICE, Corporate travel, tailor-made holidays, escorted tours, Cruise Holiday and ticketing.<br>Our professionalism and operations have enabled Chia Sin Travel to be one of very few companies in Malaysia that enjoys the support and confidence of the major outbound or inbound tour operators in the marketplace. |\n| Types | FIT, GIT, INCENTIVE, MICE, WORLDWIDE HOTEL RESERVATION |\n| Address | No 12, Jalan Yayasan, Bandar Kluang, 86000, Kluang Johor. |\n| Tel | +6077725115 / 60127286115 |\n| Email | [chiasintravel@gmail.com](mailto:chiasintravel@gmail.com) / [cwkong4@hotmail.com](mailto:cwkong4@hotmail.com) |\n| Website | [Chia Sin Travel Service Homepage](http://www.chiasin.com.my/) |\n| SNS | [Chia Sin Travel Service Facebook](https://www.facebook.com/chiasintravelservice) |\n\n### Chiu Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/82/a2/82a27f95-6a10-4435-95da-cd19ec6aff97/chiu_travel_logo_2_-_ee_ling_rm0a5x)\n\n|     |     |\n| --- | --- |\n| Introduction | Established since 1975, Chiu Travel Sdn Bhd offering tour and travel products which includes corporate ticketing, corporate meetings and incentive packages, inbound and outbound tours, cruises as well as resort and hotel reservations. |\n| Types | FIT, Package, MICE, Muslim, Education, Hotel Reservation, Cruises, Flight Ticketing |\n| Address | 29-6, Jalan Rahmat, 83000 Batu Pahat, Johor, Malaysia |\n| Tel | +6074335588 / 4335599 |\n| Email | [chiutravel@chiutravel.com](mailto:chiutravel@chiutravel.com) |\n| SNS | [Chiu Travel Facebook](https://www.facebook.com/chiutravel) |\n\n### CK Vacation Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_200,h_80,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/39/06/39062e24-c59e-431c-9bfb-0ccadb92e292/ck_vacation-image_-_alice_chin_dhyzxf)\n\n|     |     |\n| --- | --- |\n| Introduction | CK VACATION Incorporated in Malaysia in May 1996 and is licensed by the Ministry of Cultural, Art and Tourism to operate as a Tour Operator for Inbound and Outbound tour as well as a ticketing agent. We are known for our professionalism in the handling of individual and group travel within and out of Malaysia , CK is well recognized as a leading tour operator and destination in Southern Johor. |\n| Types | FIT, Package, MICE, Muslim, Education |\n| Address | 44-A 1 PUSAT PERDANGAN JALAN BANDAR PASIR GUDANG |\n| Tel | 07-2526300, +6016-7108080 |\n| Email | [enquiry@ckvsb.com.my](mailto:enquiry@ckvsb.com.my) |\n| Website | [CK Vacation Homepage](http://www.ckgolftour.com.my/) |\n\n### Enjoy Holiday Tour Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Outbound travel agency in Malaysia, Southern region. Specializes in incentive group, MICE, group packages and FIT packages. |\n| Types | FIT, Package, MICE, Muslim |\n| Address | 108, JLN SERAMPANG, TMN. PELANGI, 80400, JOHOR BAHRU |\n| Tel | 607-3332873 |\n| Email | [bett@enjoyholiday.com.my](mailto:bett@enjoyholiday.com.my) |\n| SNS | [Enjoy Holiday Tour Facebook](https://www.facebook.com/enjoyholidayjb) |\n\n### Ez n Fun Holidays Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/e9/d7/e9d75447-724d-4c14-b8a1-c1919c275136/untitled-2-03_-_janette_loh_oiaj7q)\n\n|     |     |\n| --- | --- |\n| Introduction | We plan itinerary, prepare necessary passes and cards for taking public transportation, book accommodation, and make a guidebook for our customer who would like to travel to Japan free and easy. We called our service as \"Semi-Free & Easy Travel\" |\n| Types | FIT |\n| Address | 14, Jalan Selatan 6/5, Kempas Industrial Park, 81200 Johor Bahru, Johor, Malaysia |\n| Tel | 019-751 8397 |\n| Email | [info@eznfun.com.my](mailto:info@eznfun.com.my) |\n| Website | [Semi Free Homepage](https://www.shiokjohor.com/) |\n| SNS | [Ez n Fun Holidays Facebook](https://www.facebook.com/eznfunholidays)<br>[Semi Free Facebook](https://www.facebook.com/Semifree)<br>[Semi Free Instagram](https://instagram.com/semifree.easytravel) |\n\n### Ipoh Overland Tours & Travel Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Ipoh Overland Tours & Travel Sdn. Bhd.Est in 1988 is one of Malaysia Leading Inbound, Outbound, Worldwide Cruise, Hotel & Air Ticket Reservation Company.covers the field of FIT travel, group, series tours, MICE & special interest packages for VIPs.We are innovative, market-driven business with a fierce a commitment to our Local/International clients and their customers. |\n| Types | FIT, Package, MICE, Education |\n| Address | 19, Jalan Sultan Abdul Jalil, Kampung Jawa, 30300 Ipoh, Perak |\n| Tel | 05-253 2766 |\n| Email | [manager@ipohoverland.com.my](mailto:manager@ipohoverland.com.my) |\n| Website | [Ipoh Overland Tours & Travel Homepage](http://ipohoverland.com.my/) |\n| SNS | [Ipoh Overland Tours & Travel Facebook](https://www.facebook.com/ioTravel/) |\n\n### Sin Chung Tours Sdn.Bhd.\n\n|     |     |\n| --- | --- |\n| Types | FIT, package, MICE, Muslim, Education<br>\\*Specializing in organizing Inbound and Outbound tours to Overseas service. Cater for Incentive group, familiarization tour and ticketing, Hotel & Cruise booking and visa application. |\n| Address | 27 Jalan Kuning Dua, Taman Pelangi, Johor Bahru, Malaysia |\n| Tel | 6073319888 |\n| Email | [info.hq@sinchung.com.my](mailto:info.hq@sinchung.com.my) |\n| Website | [Sin Chung Tours Homepage Coming Soon](https://www.sinchung.com.my/?fbclid=IwY2xjawIOwDFleHRuA2FlbQIxMAABHW82cQ-_HhwTnIQoRDstVi0E4t8nDrYI_6ZFJNK4Hg8WTX1hYjIUAsw2VA_aem_DaqWbORK58BRlg6r3Hn-bw) |\n| SNS | [Sin Chung Tours Facebook](https://www.facebook.com/SinChungTours/) |\n\n### Sinair Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_150,h_140,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/b3/83/b383104b-3675-428f-9f89-966d9d0e6088/sinair_travel__-_devidd_bong_elfbng)\n\n|     |     |\n| --- | --- |\n| Introduction | SINAIR TRAVEL is a full-service travel agency dedicated to providing Corporate, Ticketing, Visa, Leisure and (MICE) services. We offer the widest choice of destinations from the mainstream to the exotic ones. While we explore new destinations and venture into opening the roads less travelled, we consistently review and revisit existing ones with new itineraries and experiences. |\n| Types | FIT, Package, MICE, Group Series |\n| Address | 70, Jalan Molek 2/1, Taman Molek, 81100 Johor Bahru, Johor. |\n| Tel | +6073543399 |\n| Email | [tour@sinairtravel.com](mailto:tour@sinairtravel.com) |\n| SNS | [Sinair Travel Facebook](https://www.facebook.com/SINAIRTRVL/) |\n\n### Top One Travel Services Corporation (M) Sdn. Bhd.\n\n|     |     |\n| --- | --- |\n| Introduction | Top-One Travel Services Corporation (M) Sdn Bhd (Reg no. 153982-T), KPL 1000 was established since year 1986 at Johor Bahru, Johor, Malaysia, we offer the widest choice of destination, airline ticket and others travel related services.<br>or over 35 years' experiences, we’ve taken inspiration from our own life-changing adventures to tailor make journeys that are as individual as you and as unique as the places we love. |\n| Types | Package; FIT, Muslim-friendly/Halal, MICE, Luxury, Cruise |\n| Address | No.16-16A-16B Jalan Sutera 2 Taman Sentosa 80150 Johor Bahru. Johor, Malaysia |\n| Tel | 07-3343388 |\n| Email | [info@top-one.com.my](mailto:info@top-one.com.my) |\n| Website | [Top One Travel Services Corporation Homepage](https://www.top-one.com.my/) |\n| SNS | [Top One Travel Services Corporation Facebook](https://www.facebook.com/@toponetravelservices) |\n\n### TLC Travel & Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_160,h_90,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/e5/e9/e5e9dde7-46c7-4931-9109-53bf5d201e13/tlc-logo-modern-2020_-_kh_lai_zg4bao)\n\n|     |     |\n| --- | --- |\n| Introduction | Strength in Malaysia Tours |\n| Types | FIT |\n| Address | No.6-01,Jalan Bestari 6/2, Taman Nusa Bestari, Skudai |\n| Tel | +6072362667 |\n| Email | [sales@tlc.my](mailto:sales@tlc.my) |\n| Website | [TLC Travel & Tours Homepage](https://www.tlc.my/) |\n| SNS | [TLC Travel & Tours Facebook](https://www.facebook.com/travel.tlc.my) |\n\n## Penang\n\n### Ace Tours & Travel (PG) Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/2e/36/2e364780-e8a2-41fb-81af-093df4c791f6/ace_logo_4png_-_jeffrey_goh_lzeisx)\n\n|     |     |\n| --- | --- |\n| Introduction | Our company has been established for more than 30 years in travel industry with a work force of 6 staffs in the beginning expanding to more than 40 staffs over the years. Our current core business primarily selling tour packages in series for group departure covering the five continents. Japan is one of our key promotion and most saleable destination. |\n| Types | FIT, Package, MICE |\n| Address | 4 JALAN RANGOON, 10400 PENANG |\n| Tel | +604-2288000 |\n| Email | [tours@acetours.com.my](mailto:tours@acetours.com.my) |\n| Website | [Ace Tours & Travel Homepage](https://www.acetours.com.my/) |\n| SNS | [Ace Tours & Travel Facebook](https://www.facebook.com/acetourstravel) |\n\n### Angel Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/d3/74/d374f830-a413-48b1-a80a-673c4d73f42b/angel_tours_logo_-_angel_tours_sdn_bhd_fbjfu7)\n\n|     |     |\n| --- | --- |\n| Introduction | Angel Tours Sdn Bhd was established in 1978, with over 44 years of experiences, we are one of the leading travel companies in Northern Malaysia, well acclaimed for our inbound & outbound tours, escorted leisure tours, independent holiday packages and luxury cruise holidays. Our services also include business travel, as well as meetings, incentive travel, conferences and event management. |\n| Types | FIT, Package, MICE |\n| Address | 174-176, CAMPBELL STREET, 10100 GEORGETOWN PENANG, MALAYSIA |\n| Tel | +604-2613488 |\n| Email | [admin@angeltours.com.my](mailto:admin@angeltours.com.my) |\n| Website | [Angel Tours Homepage](https://angeltours.com.my/) |\n| SNS | [Angel Tours Facebook](https://www.facebook.com/ANGEL.TOURS.SDN.BHD) |\n\n### Big Planet Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_188,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/5d/21/5d2169cf-c143-4a0c-b8d3-7bdb9c7dbae2/bp_logo_-_cs_leong_d1bfny)\n\n|     |     |\n| --- | --- |\n| Introduction | With a total of 40 years of experience from our founders in the tourism industry, BIG PLANET is now becoming one of the fastest growing travel agencies in northern Malaysia.<br>We build differently out of the traditional travel business method to bring a new perception of traveling agency to the market. Based on new trends of traveling ways, we also emphasize on new core tour services i.e. Incentive tour, private tour and new trendy package and Free & Easy for the customers other than traditional group package. With our outsanding and enlivened tour packages, we bring out a new image of travel agency to the market.<br>With the stable expanding of the company, we expanded the business in Bukit Mertajam with a new branch on August 2012. BIG PLANET also got involved in other tourism ventures such as hotel and restaurant in Penang Heritage area.<br>We have great achievements throughout the years with the excellent response and support from our beloved customers. We promise to give best value of the tour service to our beloved customers.<br>We would like to bring the concept of 'think of travel, think of Big Planet Travel!' |\n| Types | FIT, Package |\n| Address | 110-E, Lorong Selamat, Georgetown |\n| Tel | 04-2299771 |\n| Email | [info@bigplanettravel.com.my](mailto:info@bigplanettravel.com.my) |\n| Website | [Big Planet Travel Homepage](https://www.bigplanettravel.com.my/) |\n| SNS | [Big Planet Travel Facebook](https://facebook.com/bigplanettravel)<br>[Big Planet Travel Instagram](https://instagram.com/bigplanettravel) |\n\n### Forever Travel Service Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/8b/6d/8b6d194f-9b8b-49eb-b767-0cede6367c59/forever_travel_logo_color_thicker_-_yami_lim_dq7myk)\n\n|     |     |\n| --- | --- |\n| Introduction | With over 40 years of experience, Forever Travel has built a strong and extensive network of global travel industry partners and a team of highly dedicated personnel, who work with passion and professionalism to deliver excellent travel services to our clients consistently.<br>Our travel services include personal and corporate air ticketing, free & easy and group package tours, worldwide hotel reservations, MICE, sightseeing and coach tours, visa applications and other travel services. |\n| Types | FIT, Package, MICE |\n| Address | 14-B Aboo Sittee Lane |\n| Tel | +6042266633 |\n| Email | [yleen@forevertravel.com.my](mailto:yleen@forevertravel.com.my) |\n| Website | [Forever Travel Service Homepage](https://forevertravel.com.my/) |\n| SNS | [Forever Travel Service Facebook](https://www.facebook.com/forevertravelservice/) |\n\n### Golden First Travel & Tours (M) Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Types | Package Tours |\n| Address | 139, Jalan Stesen, 14000 Bukit Mertajam, Pinang |\n| Tel | 04-538 8888 |\n| Email | [enquiries@goldenfirsttravel.com](mailto:enquiries@goldenfirsttravel.com) |\n| Website | [Golden First Travel & Tours Facebook](https://www.facebook.com/GoldenFirstTravel/?_rdr) |\n| SNS | [Golden First Travel & Tours Instagram](https://www.instagram.com/goldenfirsttravel/?hl=en) |\n\n### Lye Peng Travel & Tours Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_250,h_100,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/53/d4/53d41902-745f-4aa8-88cd-da4648624078/03jan2022_mcta_lye_peng_logo_a4_003_-_vincent_oo_ut6no7)\n\n|     |     |\n| --- | --- |\n| Introduction | LYE PENG TRAVEL ENTERPRISE started on the year 1978. From 1986, the company expanded and established to LYE PENG TRAVEL & TOURS SDN BND (LPT). Year 2007, LPT located at 68B & 68C Macalister Road 10400 Penang. Year 2008, LPT has won a prestigious award \"Golden Award under the 1st Top 50 Enterprise Awards Malaysia 2007\" and year 2010 won The Dr Sun Yat Sen Growth & Development Enterprise Award. |\n| Types | FIT, package, MICE, Muslim, Education<br>\\*Specializing in organizing Inbound and Outbound tours to Overseas service. Cater for Incentive group, familiarization tour and ticketing, Hotel & Cruise booking and visa application. |\n| Address | 68B & 68C, Jalan Macalister, 10400 Georgetown, Penang |\n| Tel | +60-42381118 |\n| Email | [lyepeng@lyepengtravel.com.my](mailto:lyepeng@lyepengtravel.com.my) |\n| Website | [Lye Peng Travel & Tours Homepage](http://www.lyepengtravel.com.my/) |\n| SNS | [Lye Peng Travel & Tours Facebook](https://www.facebook.com/lyepengtravel/) |\n\n## Sabah\n\n### Popular Express Travel Sdn. Bhd.\n\n![](https://res.cloudinary.com/jnto/image/upload/w_120,h_120,c_fill,f_auto,fl_lossy,q_60/v1/media/filer_public/98/cb/98cb06a1-fe13-44d9-b6a7-deb2233224f9/popular_logo_-_life_is_beautiful_cwo2id)\n\n|     |     |\n| --- | --- |\n| Introduction | Popular Express Travel (PET) is one of the most established travel companies in Sabah, Malaysia Borneo and the region for over 40 years. PET offers the widest choice of destinations acclaimed package tours, Free & Easy+ holidays, Worldwide Cruise Centre, customised holidays, private tours, incentive tours, student travel as well as airlines ticketing and travel consultancy in the new norm. |\n| Types | FIT, Package, MICE, Muslim, Education, Airlines Ticketing Agency |\n| Address | 33 Jalan Tugu, Kg. Air, 88000 Kota Kinabalu, Sabah, Malaysia. |\n| Tel | +6088221313 |\n| Email | [candy@popularexpress.com](mailto:candy@popularexpress.com) |\n| Website | [Popular Express Travel Homepage](https://www.popularexpress.com/) |\n| SNS | [Popular Express Travel Facebook](https://www.facebook.com/PopularExpressTravelSdnBhd) |\n\n### Tashin Travel Sdn Bhd\n\n|     |     |\n| --- | --- |\n| Types | Worldwide Holiday Packages, Tailor-made Tour, MICE, Incentive & Exhibition, Flight Ticket |\n| Address | V01-13-08, Level 13, V Office, Sunway Velocity, Lingkaran SV, Sunway Velocity, 55100 Kuala Lumpur, Wilayah Persekutuan Kuala Lumpur |\n| Tel | 012-230 9320 |\n| Email | [info@tashintravel.com](mailto:info@tashintravel.com) |\n| SNS | [Tashin Travel Facebook](https://www.facebook.com/tashintravelsdnbhd?locale=ms_MY) |\n\n- [Home](https://www.japan.travel/en/)\n- [Home](https://www.japan.travel/en/my/)\n- [Travel Trade](https://www.japan.travel/en/my/travel-trade/)\n- List of Travel Agencies in Malaysia\n\nHelpful Links\n\n[First-Time Visitors](https://www.japan.travel/en/plan/) [Weather in Japan](https://www.japan.travel/en/weather/) [FAQ](https://faq.japan-travel.jnto.go.jp/) [Japan Tours & Activities](https://www.japan.travel/en/japan-tours-and-activities/) [Japan Photo & Video Library Links](https://www.japan.travel/en/japan-photo-and-video-library/)\n\nRelated JNTO Sites\n\n[Japan Convention Bureau](https://www.japanmeetings.org/)\n\nAbout JNTO\n\n[Who We Are](https://www.japan.travel/en/about-jnto/) [Contact us](https://www.japan.travel/en/my/contact-us/)\n\ninline-list\n\n[Privacy Policy](https://www.japan.travel/en/my/privacy-policy/) [Cookie Policy](https://www.japan.travel/en/my/cookie-policy/) [Terms of Use](https://www.japan.travel/en/terms-of-use/) [Links](https://www.japan.travel/en/links/)\n\nlogo\n\n[![JNTO](https://res-3.cloudinary.com/jnto/image/upload/v1515550491/static/svg/common/logo_white.svg)](https://www.japan.travel/en/my/)\n\ninline-list\n\n[Privacy Policy](https://www.japan.travel/en/my/privacy-policy/) [Cookie Policy](https://www.japan.travel/en/my/cookie-policy/) [Terms of Use](https://www.japan.travel/en/terms-of-use/) [Links](https://www.japan.travel/en/links/)\n\nsocial-media\n\n[facebook](https://www.facebook.com/Visit.My.Japan) [instagram](https://www.instagram.com/visitmyjapan/) [youtube](https://www.youtube.com/c/JNTOMALAYSIACHANNEL)\n\nSelect Language简体中文繁體中文（香港）繁體中文（臺灣）India (English)Bahasa Indonesia한국어ภาษาไทยTiếng ViệtSingapore (English)Philippines (English)Malaysia (English)Australia/New Zealand (English)FrançaisDeutschItalianoEspañolUnited Kingdom (English)Nordic countries（English）Canada (English)Canada (Français)United States (English)Mexico (español)PortuguêsالعربيةJapan(日本語)Global (English)\n\nCopyright © Japan National Tourism Organization. All Rights Reserved.\n\nThank you!\n\nPlease Choose Your Language\n\nBrowse the JNTO site in one of multiple languages\n\nSelect Language简体中文繁體中文（香港）繁體中文（臺灣）India (English)Bahasa Indonesia한국어ภาษาไทยTiếng ViệtSingapore (English)Philippines (English)Malaysia (English)Australia/New Zealand (English)FrançaisDeutschItalianoEspañolUnited Kingdom (English)Nordic countries（English）Canada (English)Canada (Français)United States (English)Mexico (español)PortuguêsالعربيةJapan(日本語)Global (English)continue\n\nWe and third party companies with your consent use cookies on this website to measure the audience of our website, to provide enhanced functionality and personalization, to serve targeted advertisement, and to utilize social media features. We may share information about your use of this website with third party companies.\nSee our “Cookie Policy” and “Cookie Settings” for more information.\n\nPlease click “Accept All Cookies” if you agree to the use of all of our cookies. Please click “Reject All Cookies” to reject the use of all our cookies. Please move the selector switch to active if you agree to the use of a part of our cookies.\n\nIn addition, you can change or withdraw your consent at any time by clicking “Cookie Settings” under the Article 3.2 of “Cookie Policy”.\n[Cookie Policy](https://www.japan.travel/en/cookie-policy/)\n\n- #### Strictly Necessary Cookies\n\n\nAlways Active\n\n- #### Performance Cookies\n\n\nPerformance Cookies\n\n- #### Functional Cookies\n\n\nFunctional Cookies\n\n- #### Targeting Cookies\n\n\nTargeting Cookies\n\n\nCookie Settings\n\nSave Choices\n\nReject All CookiesAccept All Cookies\n\n[![Powered by Onetrust](https://cdn-apac.onetrust.com/logos/static/powered_by_logo.svg)](https://www.onetrust.com/products/cookie-consent/)\n\n![Company Logo](https://cdn-apac.onetrust.com/logos/1e9940c4-c3a4-4782-b750-715350ca1c1d/8570a741-bb3e-4f32-98e1-3c856e95b06c/80fc97a7-a334-42e3-aecf-35ea91794178/jnto_logo.png)\n\n## Privacy Preference Center\n\n## Privacy Preference Center\n\n- ### Your Privacy\n\n- ### Strictly Necessary Cookies\n\n- ### Performance Cookies\n\n- ### Functional Cookies\n\n- ### Targeting Cookies\n\n\n#### Your Privacy\n\nExcept for strictly necessary cookies, you can accept or refuse our use of cookies. Click on the different category headings to find out more and change our default settings.\n\n\n[More information](https://www.japan.travel/en/cookie-policy/)\n\n#### Strictly Necessary Cookies\n\nAlways Active\n\nThese cookies are necessary for the website to function and cannot be switched off in our systems. They are usually only set in response to actions made by you which amount to a request for services, such as setting your privacy preferences, logging in or filling in forms.    You can set your browser to block or alert you about these cookies, but some parts of the site will not then work. These cookies do not store any personally identifiable information.\n\nCookies Details‎\n\n#### Performance Cookies\n\nPerformance CookiesInactive\n\nThese cookies allow us to count visits and traffic sources so we can measure and improve the performance of our site. They help us to know which pages are the most and least popular and see how visitors move around the site.    All information these cookies collect is aggregated and therefore anonymous. If you do not allow these cookies we will not know when you have visited our site, and will not be able to monitor its performance.\n\nCookies Details‎\n\n#### Functional Cookies\n\nFunctional CookiesInactive\n\nThese cookies enable the website to provide enhanced functionality and personalisation. They may be set by us or by third party providers whose services we have added to our pages.    If you do not allow these cookies then some or all of these services may not function properly.\n\nCookies Details‎\n\n#### Targeting Cookies\n\nTargeting CookiesInactive\n\nThese cookies may be set through our site by our advertising partners. They may be used by those companies to build a profile of your interests and show you relevant adverts on other sites.    They do not store directly personal information, but are based on uniquely identifying your browser and internet device. If you do not allow these cookies, you will experience less targeted advertising.\n\nCookies Details‎\n\nBack Button\n\n### Cookie List\n\nFilter Button\n\nConsentLeg.Interest\n\ncheckbox labellabel\n\ncheckbox labellabel\n\ncheckbox labellabel\n\nClear\n\ncheckbox labellabel\n\nApplyCancel\n\nConfirm My Choices\n\nReject AllAllow All\n\n[![Powered by Onetrust](https://cdn-apac.onetrust.com/logos/static/powered_by_logo.svg)](https://www.onetrust.com/products/cookie-consent/)","metadata":{"url":"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/","title":"List of Travel Agencies in Malaysia","favicon":"https://www.japan.travel/static/favicon.992861e8417e.ico","og:type":"website","ogImage":"\n  https://res-3.cloudinary.com/jnto/image/upload/w_1000,h_667,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/7b/6c/7b6ccb9a-0b3f-4ddb-bf62-0e9266cbbc9e/shutterstock_753148948_ooubv1\n","ogTitle":"List of Travel Agencies in Malaysia","language":"en-my","ob:title":"List of Travel Agencies in Malaysia","og:image":"\n  https://res-3.cloudinary.com/jnto/image/upload/w_1000,h_667,c_fill,f_auto,fl_lossy,q_auto/v1/media/filer_public/7b/6c/7b6ccb9a-0b3f-4ddb-bf62-0e9266cbbc9e/shutterstock_753148948_ooubv1\n","og:title":"List of Travel Agencies in Malaysia","scrapeId":"51c9ff41-5e6f-4826-8754-ad190c70f261","viewport":"width=device-width","proxyUsed":"basic","sourceURL":"https://www.japan.travel/en/my/travel-trade/my-travel-agencies-list/","ogSiteName":"Japan National Tourism Organization (JNTO)","statusCode":200,"contentType":"text/html; charset=utf-8","description":"None","og:site_name":"Japan National Tourism Organization (JNTO)","twitter:card":"summary_large_image","ogDescription":"None","og:description":"None","format-detection":"telephone=no","ahrefs-site-verification":"","google-site-verification":["dQJlrBsMI52FmtL1nbI1yxauaXdvPhU7zoID5BJYrrg",""]}},"success":true}}],"When clicking ‘Test workflow’":[{"json":{}}]},"settings":{"callerPolicy":"workflowsFromSameOwner","executionOrder":"v1"},"versionId":"fa1737d5-7f2f-44b3-a07d-ce85f26adf5e","connections":{"Split Out":{"main":[[{"node":"Google Sheet - Data Store","type":"main","index":0}]]},"HTTP Scrape Website":{"main":[[{"node":"OpenAI Standardise Data","type":"main","index":0}]]},"OpenAI1 Mail Composer":{"main":[[{"node":"Google Sheet Update Records","type":"main","index":0}]]},"Google Sheet Data Store":{"main":[[{"node":"OpenAI1 Mail Composer","type":"main","index":0}]]},"OpenAI Standardise Data":{"main":[[{"node":"Split Out","type":"main","index":0}]]},"Google Sheet Update Records":{"main":[[{"node":"Send Email","type":"main","index":0}]]},"When clicking ‘Test workflow’":{"main":[[{"node":"Google Sheet Data Store","type":"main","index":0}]]}}}


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-07-06 21:16:30
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-nodes-base.googleSheets","n8n-nodes-base.crypto","n8n-nodes-base.code","@n8n/n8n-nodes-langchain.toolWorkflow"]

workflow_json:
  {"id":"VjYVuVxMuX9MbtGy","meta":{"instanceId":"1d007fe710bcfec364941eac14bfe94a42e89c72adf697a8959f00f5db851ca6","templateCredsSetupCompleted":true},"name":"MCP Personal Expense","tags":[],"nodes":[{"id":"544866c7-9676-4a94-a77d-8637b8b9f6e3","name":"MCP Server Trigger","type":"@n8n/n8n-nodes-langchain.mcpTrigger","position":[-1560,360],"webhookId":"676afb85-ff6d-45ad-ab36-e6cc590ba080","parameters":{"path":"personal-expense"},"typeVersion":1},{"id":"f45e1509-487b-46c6-b7dd-224df465c981","name":"Filter","type":"n8n-nodes-base.filter","position":[1360,-340],"parameters":{"options":{"ignoreCase":true},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":false,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c804feba-d6da-43d9-88a9-24dfa0f7a2ed","operator":{"type":"dateTime","operation":"afterOrEquals"},"leftValue":"={{ $json.date }}","rightValue":"={{ $('Switch').item.json.payload.dateStart }}"},{"id":"512eb3ab-f42d-4a35-bc0e-7ff67ab0d6a5","operator":{"type":"dateTime","operation":"beforeOrEquals"},"leftValue":"={{ $json.date }}","rightValue":"={{ $('Switch').item.json.payload.dateEnd }}"}]}},"typeVersion":2.2},{"id":"f4411283-0efa-4218-8d96-9d9a1c7c19e6","name":"Google Sheets Filter Workflow","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-40,420],"parameters":{"workflowInputs":{"values":[{"name":"function"},{"name":"payload","type":"object"}]}},"typeVersion":1.1},{"id":"827737c1-4466-499c-abae-bc2e03d9191a","name":"Get list transactions","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-1880,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Get Transactions","workflowInputs":{"value":{"payload":"={\n  \"dateStart\": \"{{ $fromAI(\"dateStart\", \"Date Start. Format: YYYY-MM-DD\", \"string\") }}\",\n  \"dateEnd\": \"{{ $fromAI(\"dateEnd\", \"Date End. Format: YYYY-MM-Dd\", \"string\") }}\"\n}","function":"list_transaction"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"afb64fd3-d554-4f4f-9447-3a5cd48bae1a","name":"Get By ID","type":"n8n-nodes-base.googleSheetsTool","position":[-1740,560],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values0_Value', ``, 'string') }}","lookupColumn":"id"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""},"descriptionType":"manual","toolDescription":"Get Data by ID"},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"05b35a22-757d-411f-ad56-a1b0e3d7a695","name":"Switch","type":"n8n-nodes-base.switch","position":[380,320],"parameters":{"rules":{"values":[{"outputKey":"list_transaction","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"3e9f8105-2bd7-4571-8909-86cddbf4e3eb","operator":{"type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"list_transaction"}]},"renameOutput":true},{"outputKey":"remove_transaction","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8bba675d-4f2f-411d-858e-cd0573f2a0d7","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"remove_transaction"}]},"renameOutput":true},{"outputKey":"add_transaction","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"1cf7fe89-f22e-4656-9e16-570f4b7088f0","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"add_transaction"}]},"renameOutput":true},{"outputKey":"update_transaction","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"f63ece2b-a821-4e79-8797-365fe6b6ce2b","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"update_transaction"}]},"renameOutput":true},{"outputKey":"add_budget","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"411a0ece-ac3a-49fe-b357-c7dc56f21042","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"add_budget"}]},"renameOutput":true},{"outputKey":"update_budget","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"8bac74de-c55c-4248-a2a7-728d8acae09a","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"update_budget"}]},"renameOutput":true},{"outputKey":"remove_budget","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"818c0b7b-c1b0-4150-b683-76287f0fd1f8","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"remove_budget"}]},"renameOutput":true},{"outputKey":"get_budget","conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"579f8f4d-7ce0-46cf-aee5-290d5025f071","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.function }}","rightValue":"get_budget"}]},"renameOutput":true}]},"options":{}},"typeVersion":3.2},{"id":"e7ac76ec-a796-429a-85d0-44490cfe4f00","name":"get by id","type":"n8n-nodes-base.googleSheets","position":[880,100],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.payload.id }}","lookupColumn":"id"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"d7ea9a2f-b9ef-4a02-92f7-25ec2c3a9232","name":"remove transaction","type":"n8n-nodes-base.googleSheets","position":[1160,100],"parameters":{"operation":"delete","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""},"startIndex":"={{ $json.row_number }}"},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"f6fe072a-ef50-4f95-87a6-e7b0e047127e","name":"get all transactions","type":"n8n-nodes-base.googleSheets","position":[1120,-200],"parameters":{"options":{},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"7af5ea63-d59b-49e6-9a42-c5e85ec4650e","name":"Remove Transaction","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-1600,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Remove Transaction","workflowInputs":{"value":{"payload":"={\n  \"id\": \"{{ $fromAI(\"id\", \"ID\", \"string\") }}\"\n}","function":"remove_transaction"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"e8c38268-0876-461a-8b89-ed121c321d4a","name":"Crypto","type":"n8n-nodes-base.crypto","position":[880,520],"parameters":{"action":"generate","dataPropertyName":"id"},"typeVersion":1},{"id":"ed85ffef-9a72-4025-a0e6-7f57eb9c4a0a","name":"If","type":"n8n-nodes-base.if","position":[1280,520],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"4e34ce93-3976-4f74-8933-32bc34bc459c","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.type }}","rightValue":"expense"}]}},"typeVersion":2.2},{"id":"085c44bd-dfbc-4a37-9f47-c9562e54b699","name":"Get existing budget","type":"n8n-nodes-base.googleSheets","position":[1480,500],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.date.substring(0, 7) }}","lookupColumn":"month"},{"lookupValue":"={{ $json.category }}","lookupColumn":"category"}]},"sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6,"alwaysOutputData":true},{"id":"7e6e1808-4b96-42a0-a696-5ef7a5b1fc6e","name":"Code","type":"n8n-nodes-base.code","position":[1900,320],"parameters":{"jsCode":"\n\nreturn {\n  \"id\": $(\"add transaction\").first().json.id,\n  \"budget\": {},\n  \"task\": \"Ask user to add monthly budget\"\n}"},"typeVersion":2},{"id":"4fe6970d-d46c-42c1-aa32-c5fa9a1f6b80","name":"add transaction","type":"n8n-nodes-base.googleSheets","position":[1080,520],"parameters":{"columns":{"value":{"id":"={{ $json.id }}","date":"={{ $json.payload.date }}","type":"={{ $json.payload.type }}","month":"={{ $json.payload.date.substring(0,7) }}","amount":"={{ $json.payload.amount }}","purpose":"={{ $json.payload.purpose }}","category":"={{ $json.payload.category }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"date","type":"string","display":true,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"purpose","type":"string","display":true,"required":false,"displayName":"purpose","defaultMatch":false,"canBeUsedToMatch":true},{"id":"category","type":"string","display":true,"required":false,"displayName":"category","defaultMatch":false,"canBeUsedToMatch":true},{"id":"amount","type":"string","display":true,"required":false,"displayName":"amount","defaultMatch":false,"canBeUsedToMatch":true},{"id":"type","type":"string","display":true,"required":false,"displayName":"type","defaultMatch":false,"canBeUsedToMatch":true},{"id":"month","type":"string","display":true,"removed":false,"required":false,"displayName":"month","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"e97f4b19-6d86-4c73-8d64-356c5a6f33fe","name":"budget not found?","type":"n8n-nodes-base.if","position":[1660,500],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d062f954-0a17-4870-b632-aebea115dad9","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"dcebec66-c750-4e64-8974-d659de8c0943","name":"Code1","type":"n8n-nodes-base.code","position":[2140,520],"parameters":{"jsCode":"let totalExpenses = 0;\n\nfor (const item of $('Get Monthly Expenses').all()) {\n  totalExpenses += item.json.amount  \n}\n\nlet result = {\n  \"id\": $('add transaction').first().json.id,\n  \"budget\": {\n    \"monthlyLimit\": $('Get existing budget').first().json.budget,\n    \"remainingLimit\": $('Get existing budget').first().json.budget - totalExpenses\n  },\n  \"task\": \"\"\n}\n\nif (totalExpenses > $('Get existing budget').first().json.budget) {\n  result.task = \"Give warning to user or suggest to adjust the budget\"\n}\n\nreturn result;"},"typeVersion":2},{"id":"9164bfe3-1549-4943-a489-c67da1d32d9d","name":"Get Monthly Expenses","type":"n8n-nodes-base.googleSheets","position":[1900,520],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.month }}","lookupColumn":"month"},{"lookupValue":"={{ $json.category }}","lookupColumn":"category"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"ff8d7da3-c567-41f8-af20-88c3248822bb","name":"Add Transaction","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-1440,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Add Transaction","workflowInputs":{"value":{"payload":"={   \n  \"date\": \"{{ $fromAI(\"date\", \"Transaction date. Format: YYYY-MM-DD\", \"string\") }}\",   \n  \"purpose\": \"{{ $fromAI(\"purpose\", \"Purpose of the transaction\", \"string\") }}\", \n  \"category\": \"{{ $fromAI(\"category\", \"Transaction category\", \"string\") }}\",\n  \"amount\": {{ $fromAI(\"amount\", \"Transaction amount\", \"number\") }}, \n  \"type\": \"{{ $fromAI(\"type\", \"Transaction type. Can be expense or income\", \"string\") }}\"\n}","function":"add_transaction"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"e71da569-0165-4c3f-917a-b97843aba5bf","name":"Code2","type":"n8n-nodes-base.code","position":[1500,700],"parameters":{"jsCode":"\nreturn {\n  \"id\": $('add transaction').first().json.id,\n  \"budget\": {},\n  \"task\": \"Congratulate user for new income.\"\n}"},"typeVersion":2},{"id":"f601629b-975a-48ba-a832-f53003776246","name":"Update transaction","type":"n8n-nodes-base.googleSheets","position":[900,1020],"parameters":{"columns":{"value":{"id":"={{ $json.payload.id }}","date":"={{ $json.payload.date }}","type":"={{ $json.payload.type }}","month":"={{ $json.payload.date.substring(0,7) }}","amount":"={{ $json.payload.amount }}","purpose":"={{ $json.payload.purpose }}","category":"={{ $json.payload.category }}"},"schema":[{"id":"id","type":"string","display":true,"removed":false,"required":false,"displayName":"id","defaultMatch":true,"canBeUsedToMatch":true},{"id":"date","type":"string","display":true,"required":false,"displayName":"date","defaultMatch":false,"canBeUsedToMatch":true},{"id":"purpose","type":"string","display":true,"required":false,"displayName":"purpose","defaultMatch":false,"canBeUsedToMatch":true},{"id":"category","type":"string","display":true,"required":false,"displayName":"category","defaultMatch":false,"canBeUsedToMatch":true},{"id":"amount","type":"string","display":true,"required":false,"displayName":"amount","defaultMatch":false,"canBeUsedToMatch":true},{"id":"type","type":"string","display":true,"required":false,"displayName":"type","defaultMatch":false,"canBeUsedToMatch":true},{"id":"month","type":"string","display":true,"required":false,"displayName":"month","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":true,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["id"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"0bd3eebb-e341-49cc-87d3-c5ba6fe73da6","name":"If1","type":"n8n-nodes-base.if","position":[1120,1040],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"4e34ce93-3976-4f74-8933-32bc34bc459c","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $('Update transaction').item.json.type }}","rightValue":"expense"}]}},"typeVersion":2.2},{"id":"c82171bf-fae5-4407-9af3-c9abddff0b04","name":"Code3","type":"n8n-nodes-base.code","position":[1840,880],"parameters":{"jsCode":"\n\nreturn {\n  \"id\": $(\"Update transaction\").first().json.id,\n  \"budget\": {},\n  \"task\": \"Ask user to add monthly budget\"\n}"},"typeVersion":2},{"id":"740cbba3-76e5-42a4-b8c8-1a33f137a576","name":"budget not found?1","type":"n8n-nodes-base.if","position":[1600,1040],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d062f954-0a17-4870-b632-aebea115dad9","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"d297855a-d70d-43cb-83d6-df2e712698d8","name":"Code4","type":"n8n-nodes-base.code","position":[2080,1060],"parameters":{"jsCode":"let totalExpenses = 0;\n\nfor (const item of $('Get Monthly Expenses1').all()) {\n  totalExpenses += item.json.amount  \n}\n\nlet result = {\n  \"id\": $('Update transaction').first().json.id,\n  \"budget\": {\n    \"monthlyLimit\": $('Get existing budget2').first().json.budget,\n    \"remainingLimit\": $('Get existing budget2').first().json.budget - totalExpenses\n  },\n  \"task\": \"\"\n}\n\nif (totalExpenses > $('Get existing budget2').first().json.budget) {\n  result.task = \"Give warning to user or suggest to adjust the budget\"\n}\n\nreturn result;"},"typeVersion":2},{"id":"3369be8c-67cc-4b2d-9c04-fb712afa6509","name":"Get Monthly Expenses1","type":"n8n-nodes-base.googleSheets","position":[1840,1060],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.month }}","lookupColumn":"month"},{"lookupValue":"={{ $json.category }}","lookupColumn":"category"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"4ae8401e-0ad5-43b4-aa72-b04edc150d4d","name":"Code5","type":"n8n-nodes-base.code","position":[1440,1240],"parameters":{"jsCode":"\nreturn {\n  \"id\": $('add transaction').first().json.id,\n  \"budget\": {},\n  \"task\": \"Congratulate user for new income.\"\n}"},"typeVersion":2},{"id":"ebcd4517-f735-4378-8c25-1b48e4593808","name":"Get Existing Budget","type":"n8n-nodes-base.googleSheets","position":[920,1500],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.payload.category }}","lookupColumn":"category"},{"lookupValue":"={{ $json.payload.month }}","lookupColumn":"month"}]},"sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6,"alwaysOutputData":true},{"id":"76132552-d70d-46dd-add6-39436430699f","name":"Get existing budget2","type":"n8n-nodes-base.googleSheets","position":[1420,1040],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.date.substring(0, 7) }}","lookupColumn":"month"},{"lookupValue":"={{ $json.category }}","lookupColumn":"category"}]},"sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6,"alwaysOutputData":true},{"id":"4d91a329-61d5-4ceb-a51a-27278c9112ad","name":"Add budget","type":"n8n-nodes-base.googleSheets","position":[1440,1480],"parameters":{"columns":{"value":{"month":"={{ $('Switch').item.json.payload.month }}","budget":"={{ $('Switch').item.json.payload.amount }}","category":"={{ $('Switch').item.json.payload.category }}"},"schema":[{"id":"month","type":"string","display":true,"required":false,"displayName":"month","defaultMatch":false,"canBeUsedToMatch":true},{"id":"category","type":"string","display":true,"required":false,"displayName":"category","defaultMatch":false,"canBeUsedToMatch":true},{"id":"budget","type":"string","display":true,"required":false,"displayName":"budget","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"append","sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"83c5093e-fa10-4bcc-b684-e5bd22fdfd00","name":"Code6","type":"n8n-nodes-base.code","position":[1440,1680],"parameters":{"jsCode":"\n\nreturn {\n  \"task\": \"Budget already exists. Ask user to update it instead.\"\n}"},"typeVersion":2},{"id":"f83089ee-33de-48a0-8440-f02988ddd736","name":"Get Existing Budget1","type":"n8n-nodes-base.googleSheets","position":[940,1960],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.payload.month }}","lookupColumn":"month"},{"lookupValue":"={{ $json.payload.category }}","lookupColumn":"category"}]},"sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"84bcedda-5a53-4dbe-a2d9-811f96f13fd6","name":"Code7","type":"n8n-nodes-base.code","position":[1360,1940],"parameters":{"jsCode":"\n\nreturn {\n  \"task\": \"Budget not found. Ask user to add budget instead.\"\n}"},"typeVersion":2},{"id":"d761eb69-7f8d-4f7a-9f16-f06a863fa2a6","name":"Update Budget","type":"n8n-nodes-base.googleSheets","position":[1360,2120],"parameters":{"columns":{"value":{"month":"={{ $('Switch').item.json.payload.month }}","budget":"={{ $('Switch').item.json.payload.amount }}","category":"={{ $('Switch').item.json.payload.category }}","row_number":"={{ $json.row_number }}"},"schema":[{"id":"month","type":"string","display":true,"required":false,"displayName":"month","defaultMatch":false,"canBeUsedToMatch":true},{"id":"category","type":"string","display":true,"required":false,"displayName":"category","defaultMatch":false,"canBeUsedToMatch":true},{"id":"budget","type":"string","display":true,"required":false,"displayName":"budget","defaultMatch":false,"canBeUsedToMatch":true},{"id":"row_number","type":"string","display":true,"removed":false,"readOnly":true,"required":false,"displayName":"row_number","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":["row_number"],"attemptToConvertTypes":false,"convertFieldsToString":false},"options":{},"operation":"update","sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"1ea98857-1eac-4135-87b9-be5b89df0a0f","name":"Get Existing Budget2","type":"n8n-nodes-base.googleSheets","position":[940,2420],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.payload.category }}","lookupColumn":"category"},{"lookupValue":"={{ $json.payload.month }}","lookupColumn":"month"}]},"sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6,"alwaysOutputData":true},{"id":"2c3cc9d2-2001-4698-9529-1373c43bebef","name":"budget not found?4","type":"n8n-nodes-base.if","position":[1120,2420],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d062f954-0a17-4870-b632-aebea115dad9","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"32259e82-ea9f-475f-9b5d-609e1bc63595","name":"Code8","type":"n8n-nodes-base.code","position":[1360,2400],"parameters":{"jsCode":"\n\nreturn {\n  \"task\": \"Budget not found, nothing to remove.\"\n}"},"typeVersion":2},{"id":"d5f55296-427e-4525-b71a-7015b89b9215","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[-2580,260],"parameters":{"width":2040,"height":540,"content":"## MCP Main tools\n\nThis is an MCP main entry point. \nIt has several tools that are available to use by AI client.\n\nMost of the tools will execute another workflow\n\n\n### How to use\n\n* You need to be able to sign in via google in order to use google sheets node. \n  Refer to this [documentation](https://docs.n8n.io/integrations/builtin/credentials/google/) on how to sign in with google.\n* Copy this [google sheet template](https://docs.google.com/spreadsheets/d/1XzoYEZflj1Rdo2MVKosRqXHSjkazE5vuwYWHLybX4b0/edit?usp=sharing)\n* after you copy the sheet, make sure you enable sharing with everyone who has the link\n* In each google sheet nodes, change `document` source to `By URL`, paste the link in the URL field\n* For the nodes that related to transaction, change the `sheet` target to `transactions`\n* For the nodes that related to budget, change the `sheet` target to `budgets`"},"typeVersion":1},{"id":"605dcb3d-1bd9-403a-b50a-75ffdb755c0a","name":"Update Transaction","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-1280,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Update Transaction","workflowInputs":{"value":{"payload":"={   \n  \"id\": \"{{ $fromAI(\"id\", \"UUID of the transaction.\", \"string\") }}\",\n  \"date\": \"{{ $fromAI(\"date\", \"Transaction date. Format: YYYY-MM-DD\", \"string\") }}\",   \n  \"purpose\": \"{{ $fromAI(\"purpose\", \"Purpose of the transaction\", \"string\") }}\", \n  \"category\": \"{{ $fromAI(\"category\", \"Transaction category\", \"string\") }}\",\n  \"amount\": {{ $fromAI(\"amount\", \"Transaction amount\", \"number\") }}, \n  \"type\": \"{{ $fromAI(\"type\", \"Transaction type. Can be expense or income\", \"string\") }}\"\n}","function":"update_transaction"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"65352e90-d0b3-4a93-94bc-a31e32efb6ea","name":"Add Budget","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-1120,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Add monthly budget","workflowInputs":{"value":{"payload":"={   \n  \"month\": \"{{ $fromAI(\"month\", \"Budget month. Format : YYYY-MM\", \"string\") }}\",\n  \"category\": \"{{ $fromAI(\"category\", \"Budget category\", \"string\") }}\",   \n  \"amount\": {{ $fromAI(\"amount\", \"Budget amount\", \"number\") }}\n}","function":"add_budget"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"6c1666ec-7ebd-4f61-98db-06dc6c892892","name":"Update Budget Tool","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-980,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Update monthly budget","workflowInputs":{"value":{"payload":"={   \n  \"month\": \"{{ $fromAI(\"month\", \"Budget month. Format : YYYY-MM\", \"string\") }}\",\n  \"category\": \"{{ $fromAI(\"category\", \"Budget category\", \"string\") }}\",   \n  \"amount\": {{ $fromAI(\"amount\", \"Budget amount\", \"number\") }}\n}","function":"update_budget"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"2544655e-d5fd-476f-9185-5fe67f28b425","name":"Remove Budget","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-820,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Remove Budget","workflowInputs":{"value":{"payload":"={   \n  \"month\": \"{{ $fromAI(\"month\", \"Budget month. Format : YYYY-MM\", \"string\") }}\",\n  \"category\": \"{{ $fromAI(\"category\", \"Budget category\", \"string\") }}\"\n}","function":"remove_budget"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"021e523b-c47f-4b06-9104-279e7013df6b","name":"Execution Data","type":"n8n-nodes-base.executionData","position":[180,420],"parameters":{"dataToSave":{"values":[{"key":"function","value":"={{ $('Google Sheets Filter Workflow').item.json.function }}"},{"key":"payload","value":"={{ JSON.stringify($('Google Sheets Filter Workflow').item.json.payload) }}"}]}},"typeVersion":1},{"id":"dc42a268-4b4d-46a2-9caa-04400bccfbbc","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[1620,-420],"parameters":{"color":6,"width":580,"height":180,"content":"### Get all transaction\n\nIt will get list of transactions. \n\nSince currently google sheets integration doesn't support date range filter, so if the start date and end date criterial fall into same month it will get data by filtering helper column `month`. But if they're different month, then it get all transactions"},"typeVersion":1},{"id":"acaaf56e-62c6-4b08-a7dc-2837fe153229","name":"If2","type":"n8n-nodes-base.if","position":[840,-360],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"7fc9f6b2-f43e-41da-b3cb-969c70ac3b46","operator":{"name":"filter.operator.equals","type":"string","operation":"equals"},"leftValue":"={{ $json.payload.dateStart.substring(0,7) }}","rightValue":"={{ $json.payload.dateEnd.substring(0,7) }}"}]}},"typeVersion":2.2},{"id":"31a41bd8-f14f-45a0-8611-5a778b502312","name":"get all transactions1","type":"n8n-nodes-base.googleSheets","position":[1120,-480],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.payload.dateStart.substring(0,7) }}","lookupColumn":"month"}]},"sheetName":{"__rl":true,"mode":"list","value":"gid=0","cachedResultUrl":"","cachedResultName":"transactions"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"7e99365b-555e-470d-bad1-1a406ba20a15","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[1400,40],"parameters":{"color":6,"width":320,"height":180,"content":"### Remove transaction\n\nIt will remove transaction by ID. However we need to get the transaction first before removing to get row number. Because removing transaction needs a row number, can't be filtered by anything"},"typeVersion":1},{"id":"b470904a-69db-4e88-9656-ccc736114c87","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[2380,480],"parameters":{"color":6,"width":500,"height":200,"content":"### Add transaction\n\nIt will add transaction to a new row. In this workflow it will also check for the existing budget.\n\nIn the response, it has `task` field that will tell AI client what to do next. Either it will suggest user to add budget, or give warning if the budget already reached or surpassed."},"typeVersion":1},{"id":"4ddd4f34-be88-40f9-bfbc-84c3707f485d","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[2380,1020],"parameters":{"color":6,"width":540,"height":200,"content":"### Update transaction\n\nIt will update transaction by ID. In this workflow it will also check for the existing budget.\n\nIt has the same checking budget workflow with the add transaction. I have to duplicate it since in the end it needs to ID from the different previous node. Currently n8n doesn't allow check return value from the node that has not been executed."},"typeVersion":1},{"id":"4fe2b09d-ece3-4686-a3bd-8e80800957d0","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[1700,1460],"parameters":{"color":6,"width":340,"height":280,"content":"### Add monthly budget\n\nIt will add monthly budget.\n\n#### pro tip :\nYou can ask AI client to add budget for several months by prompting such \n\n```\nAdd budget for fashion for this month until the end of the year, $500 per month\n```"},"typeVersion":1},{"id":"8e7b0528-61e7-43cb-941c-28cd4dd6e423","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[1620,2020],"parameters":{"color":6,"width":260,"height":120,"content":"### update monthly budget\n\nIt will update budget"},"typeVersion":1},{"id":"7da84021-9af7-496e-8089-ac2237beba24","name":"budget not found?2","type":"n8n-nodes-base.if","position":[1140,1500],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d062f954-0a17-4870-b632-aebea115dad9","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"b6c0e7ff-92b8-43cf-b037-8adfa2b07a05","name":"budget not found?3","type":"n8n-nodes-base.if","position":[1140,1960],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"d062f954-0a17-4870-b632-aebea115dad9","operator":{"type":"object","operation":"empty","singleValue":true},"leftValue":"={{ $json }}","rightValue":""}]}},"typeVersion":2.2},{"id":"dd3206eb-134c-44a2-bcd2-08bd28c408de","name":"Sticky Note7","type":"n8n-nodes-base.stickyNote","position":[1620,2460],"parameters":{"color":6,"width":260,"height":120,"content":"### Remove budget\n\nIt will remove existing budget"},"typeVersion":1},{"id":"cb4aae48-7fa0-42ca-8052-441758d8775c","name":"Remove budget","type":"n8n-nodes-base.googleSheets","position":[1360,2580],"parameters":{"operation":"delete","sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""},"startIndex":"={{ $json.row_number }}"},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6},{"id":"bb0b7988-c13c-47e7-be28-2e3fc942e566","name":"Get Existing Budget3","type":"n8n-nodes-base.googleSheets","position":[960,2840],"parameters":{"options":{},"filtersUI":{"values":[{"lookupValue":"={{ $json.payload.category }}","lookupColumn":"category"},{"lookupValue":"={{ $json.payload.month }}","lookupColumn":"month"}]},"sheetName":{"__rl":true,"mode":"list","value":1146268703,"cachedResultUrl":"","cachedResultName":"budgets"},"documentId":{"__rl":true,"mode":"url","value":""}},"credentials":{"googleSheetsOAuth2Api":{"id":"FL23BODpHRnWRCE4","name":"Google Sheets account"}},"typeVersion":4.6,"alwaysOutputData":true},{"id":"bca9ba8a-9d65-4d85-bfbb-8fcb71a73dce","name":"Sticky Note8","type":"n8n-nodes-base.stickyNote","position":[1200,2840],"parameters":{"color":6,"width":260,"height":120,"content":"### Get existing budget\n\nIt will get existing budget"},"typeVersion":1},{"id":"bce1c72b-a5e8-415b-8c26-b15405da7d9f","name":"Get Budget","type":"@n8n/n8n-nodes-langchain.toolWorkflow","position":[-680,560],"parameters":{"workflowId":{"__rl":true,"mode":"list","value":"VjYVuVxMuX9MbtGy","cachedResultName":"MCP Personal Expense"},"description":"Get Budget","workflowInputs":{"value":{"payload":"={      \"month\": \"{{ $fromAI(\"month\", \"Budget month. Format : YYYY-MM\", \"string\") }}\",   \"category\": \"{{ $fromAI(\"category\", \"Budget category\", \"string\") }}\" }","function":"get_budget"},"schema":[{"id":"function","type":"string","display":true,"required":false,"displayName":"function","defaultMatch":false,"canBeUsedToMatch":true},{"id":"payload","type":"object","display":true,"required":false,"displayName":"payload","defaultMatch":false,"canBeUsedToMatch":true}],"mappingMode":"defineBelow","matchingColumns":[],"attemptToConvertTypes":false,"convertFieldsToString":false}},"typeVersion":2.2},{"id":"f4485275-c028-4888-90bd-414d488e0a74","name":"Sticky Note9","type":"n8n-nodes-base.stickyNote","position":[-2580,60],"parameters":{"color":4,"width":420,"content":"# MCP Personal Expense\n\nThis is a template for MCP that has tools to manage personal expenses and budget"},"typeVersion":1}],"active":true,"pinData":{"MCP Server Trigger":[{"json":{"payload":{"dateEnd":"2025-05-30","dateStart":"2025-05-01"}}}],"Update transaction":[{"json":{"id":"117efdb5-f849-47f4-8b3f-906d3c79178a","date":"2025-06-05","type":"expense","month":"2025-06","amount":35000,"purpose":"Beli bensin","category":"transportation"}}],"Google Sheets Filter Workflow":[{"json":{"payload":{"dateEnd":"2025-05-31","dateStart":"2025-05-01"},"function":"list_transaction"}}]},"settings":{"executionOrder":"v1"},"versionId":"f79633ea-5057-4b65-b41e-4dbb80470657","connections":{"If":{"main":[[{"node":"Get existing budget","type":"main","index":0}],[{"node":"Code2","type":"main","index":0}]]},"If1":{"main":[[{"node":"Get existing budget2","type":"main","index":0}],[{"node":"Code5","type":"main","index":0}]]},"If2":{"main":[[{"node":"get all transactions1","type":"main","index":0}],[{"node":"get all transactions","type":"main","index":0}]]},"Crypto":{"main":[[{"node":"add transaction","type":"main","index":0}]]},"Filter":{"main":[[]]},"Switch":{"main":[[{"node":"If2","type":"main","index":0}],[{"node":"get by id","type":"main","index":0}],[{"node":"Crypto","type":"main","index":0}],[{"node":"Update transaction","type":"main","index":0}],[{"node":"Get Existing Budget","type":"main","index":0}],[{"node":"Get Existing Budget1","type":"main","index":0}],[{"node":"Get Existing Budget2","type":"main","index":0}],[{"node":"Get Existing Budget3","type":"main","index":0}]]},"Get By ID":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"get by id":{"main":[[{"node":"remove transaction","type":"main","index":0}]]},"Add Budget":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"Add budget":{"main":[[]]},"Get Budget":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"Remove Budget":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"Execution Data":{"main":[[{"node":"Switch","type":"main","index":0}]]},"Add Transaction":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"add transaction":{"main":[[{"node":"If","type":"main","index":0}]]},"budget not found?":{"main":[[{"node":"Code","type":"main","index":0}],[{"node":"Get Monthly Expenses","type":"main","index":0}]]},"Remove Transaction":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"Update Budget Tool":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"Update Transaction":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"Update transaction":{"main":[[{"node":"If1","type":"main","index":0}]]},"budget not found?1":{"main":[[{"node":"Code3","type":"main","index":0}],[{"node":"Get Monthly Expenses1","type":"main","index":0}]]},"budget not found?2":{"main":[[{"node":"Add budget","type":"main","index":0}],[{"node":"Code6","type":"main","index":0}]]},"budget not found?3":{"main":[[{"node":"Code7","type":"main","index":0}],[{"node":"Update Budget","type":"main","index":0}]]},"budget not found?4":{"main":[[{"node":"Code8","type":"main","index":0}],[{"node":"Remove budget","type":"main","index":0}]]},"Get Existing Budget":{"main":[[{"node":"budget not found?2","type":"main","index":0}]]},"Get existing budget":{"main":[[{"node":"budget not found?","type":"main","index":0}]]},"Get Existing Budget1":{"main":[[{"node":"budget not found?3","type":"main","index":0}]]},"Get Existing Budget2":{"main":[[{"node":"budget not found?4","type":"main","index":0}]]},"Get Monthly Expenses":{"main":[[{"node":"Code1","type":"main","index":0}]]},"Get existing budget2":{"main":[[{"node":"budget not found?1","type":"main","index":0}]]},"get all transactions":{"main":[[{"node":"Filter","type":"main","index":0}]]},"Get Monthly Expenses1":{"main":[[{"node":"Code4","type":"main","index":0}]]},"Get list transactions":{"ai_tool":[[{"node":"MCP Server Trigger","type":"ai_tool","index":0}]]},"get all transactions1":{"main":[[{"node":"Filter","type":"main","index":0}]]},"Google Sheets Filter Workflow":{"main":[[{"node":"Execution Data","type":"main","index":0}]]}}}


