Showing preview only (5,853K chars total). Download the full file or copy to clipboard to get everything.
Repository: enescingoz/awesome-n8n-templates
Branch: main
Commit: 677896bf53d5
Files: 330
Total size: 5.5 MB
Directory structure:
gitextract_go929gig/
├── AI product imagines.json
├── AI_Research_RAG_and_Data_Analysis/
│ ├── Analyze tradingview.com charts with Chrome extension, N8N and OpenAI.json
│ ├── Automated Hugging Face Paper Summary Fetching & Categorization Workflow.json
│ ├── Autonomous AI crawler.json
│ ├── Build Your Own Image Search Using AI Object Detection, CDN and ElasticSearchBuild Your Own Image Search Using AI Object Detection, CDN and ElasticSearch.json
│ ├── Build a Financial Documents Assistant using Qdrant and Mistral.ai.json
│ ├── Build a Tax Code Assistant with Qdrant, Mistral.ai and OpenAI.json
│ ├── Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI.json
│ ├── Chat with GitHub API Documentation_ RAG-Powered Chatbot with Pinecone & OpenAI.json
│ ├── Create a Google Analytics Data Report with AI and sent it to E-Mail and Telegram.json
│ ├── Customer Insights with Qdrant, Python and Information Extractor.json
│ ├── Deduplicate Scraping AI Grants for Eligibility using AI.json
│ ├── Enrich Property Inventory Survey with Image Recognition and AI Agent.json
│ ├── Extract insights & analyse YouTube comments via AI Agent chat.json
│ ├── Generate SEO Seed Keywords Using AI.json
│ ├── Hacker News Job Listing Scraper and Parser.json
│ ├── Hacker News to Video Content.json
│ ├── Host Your Own AI Deep Research Agent with n8n, Apify and OpenAI o3.json
│ ├── Intelligent Web Query and Semantic Re-Ranking Flow using Brave and Google Gemini.json
│ ├── Learn Anything from HN - Get Top Resource Recommendations from Hacker News.json
│ ├── Make OpenAI Citation for File Retrieval RAG.json
│ ├── Open Deep Research - AI-Powered Autonomous Research Workflow.json
│ ├── Query Perplexity AI from your n8n workflows.json
│ ├── Recipe Recommendations with Qdrant and Mistral.json
│ ├── Reconcile Rent Payments with Local Excel Spreadsheet and OpenAI.json
│ ├── Scrape Trustpilot Reviews with DeepSeek, Analyze Sentiment with OpenAI.json
│ ├── Scrape and summarize posts of a news site without RSS feed using AI and save them to a NocoDB.json
│ ├── Scrape and summarize webpages with AI.json
│ ├── Send Google analytics data to A.I. to analyze then save results in Baserow.json
│ ├── Send Google analytics data to A.I. to analyze then save results in BaserowSend Google analytics data to A.I. to analyze then save results in Baserow.json
│ ├── Spot Workplace Discrimination Patterns with AI.json
│ ├── Summarize SERPBear data with AI (via Openrouter) and save it to Baserow.json
│ ├── Summarize Umami data with AI (via Openrouter) and save it to Baserow.json
│ ├── Survey Insights with Qdrant, Python and Information Extractor.json
│ ├── Ultimate Scraper Workflow for n8n.json
│ ├── Vector Database as a Big Data Analysis Tool for AI Agents [1_3 anomaly][1_2 KNN].json
│ ├── Vector Database as a Big Data Analysis Tool for AI Agents [2_2 KNN].json
│ ├── Vector Database as a Big Data Analysis Tool for AI Agents [2_3 - anomaly].json
│ ├── Vector Database as a Big Data Analysis Tool for AI Agents [3_3 - anomaly].json
│ ├── Visual Regression Testing with Apify and AI Vision Model.json
│ └── 🔍 Perplexity Research to HTML_ AI-Powered Content Creation.json
├── Airtable/
│ ├── AI Agent for project management and meetings with Airtable and Fireflies.json
│ ├── AI Agent to chat with Airtable and analyze data.json
│ ├── Get Airtable data via AI and Obsidian Notes.json
│ ├── Handling Job Application Submissions with AI and n8n Forms.json
│ └── vAssistant for Hubspot Chat using OpenAi and Airtable.json
├── CITATION.cff
├── CONTRIBUTING.md
├── Database_and_Storage/
│ ├── Chat with Postgresql Database.json
│ ├── Generate SQL queries from schema only - AI-powered.json
│ ├── MongoDB AI Agent - Intelligent Movie Recommendations.json
│ ├── Supabase Insertion & Upsertion & Retrieval.json
│ └── Talk to your SQLite database with a LangChain AI Agent.json
├── Discord/
│ ├── Discord AI-powered bot.json
│ ├── Send daily translated Calvin and Hobbes Comics to Discord.json
│ └── Share YouTube Videos with AI Summaries on Discord.json
├── Forms_and_Surveys/
│ ├── Conversational Interviews with AI Agents and n8n Forms.json
│ ├── Email Subscription Service with n8n Forms, Airtable and AI.json
│ └── Qualifying Appointment Requests with AI & n8n Forms.json
├── Gmail_and_Email_Automation/
│ ├── A Very Simple _Human in the Loop_ Email Response System Using AI and IMAP.json
│ ├── AI-powered email processing autoresponder and response approval (Yes_No).json
│ ├── Analyze & Sort Suspicious Email Contents with ChatGPT.json
│ ├── Analyze Suspicious Email Contents with ChatGPT Vision.json
│ ├── Auto Categorise Outlook Emails with AI.json
│ ├── Auto-label incoming Gmail messages with AI nodes.json
│ ├── Basic Automatic Gmail Email Labelling with OpenAI and Gmail API.json
│ ├── Classify lemlist replies using OpenAI and automate reply handling.json
│ ├── Compose reply draft in Gmail with OpenAI Assistant.json
│ ├── Effortless Email Management with AI-Powered Summarization & Review.json
│ ├── Email Summary Agent.json
│ ├── Extract spending history from gmail to google sheet.json
│ ├── Gmail AI Auto-Responder_ Create Draft Replies to incoming emails.json
│ ├── Microsoft Outlook AI Email Assistant with contact support from Monday and Airtable.json
│ ├── Modular & Customizable AI-Powered Email Routing_ Text Classifier for eCommerce.json
│ ├── Send a ChatGPT email reply and save responses to Google Sheets.json
│ ├── Send specific PDF attachments from Gmail to Google Drive using OpenAI.json
│ ├── Summarize your emails with A.I. (via Openrouter) and send to Line messenger.json
│ ├── create e-mail responses with fastmail and OpenAI.json
│ └── 📈 Receive Daily Market News from FT.com to your Microsoft outlook inbox.json
├── Google_Drive_and_Google_Sheets/
│ ├── Author and Publish Blog Posts From Google Sheets.json
│ ├── Automated End-to-End Fine-Tuning of OpenAI Models with Google Drive Integration.json
│ ├── Automatic Background Removal for Images in Google Drive.json
│ ├── Build an OpenAI Assistant with Google Drive Integration.json
│ ├── Chat with a Google Sheet using AI.json
│ ├── Chat with your event schedule from Google Sheets in Telegram.json
│ ├── Extract Information from a Logo Sheet using forms, AI, Google Sheet and Airtable.json
│ ├── Flux Dev Image Generation (Fal.ai) to Google Drive.json
│ ├── Qualify new leads in Google Sheets via OpenAI_s GPT-4.json
│ ├── RAG Chatbot for Company Documents using Google Drive and Gemini.json
│ ├── RAG_Context-Aware Chunking _ Google Drive to Pinecone via OpenRouter & Gemini.json
│ ├── Screen Applicants With AI, notify HR and save them in a Google Sheet.json
│ ├── Simple Expense Tracker with n8n Chat, AI Agent and Google Sheets.json
│ ├── Summarize Google Sheets form feedback via OpenAI_s GPT-4.json
│ ├── Summarize the New Documents from Google Drive and Save Summary in Google Sheet.json
│ ├── Upload to Instagram and Tiktok from Google Drive.json
│ └── ✨ Vision-Based AI Agent Scraper - with Google Sheets, ScrapingBee, and Gemini.json
├── HR_and_Recruitment/
│ ├── BambooHR AI-Powered Company Policies and Benefits Chatbot.json
│ ├── CV Screening with OpenAI.json
│ ├── HR & IT Helpdesk Chatbot with Audio Transcription.json
│ └── HR Job Posting and Evaluation with AI.json
├── Instagram_Twitter_Social_Media/
│ ├── AI agent for Instagram DM_inbox. Manychat + Open AI integration.json
│ ├── Create dynamic Twitter profile banner.json
│ ├── Generate Instagram Content from Top Trends with AI Image Generation.json
│ ├── OpenAI-powered tweet generator.json
│ ├── Post New YouTube Videos to X.json
│ ├── Reddit AI digest.json
│ ├── Social Media Analysis and Automated Email Generation.json
│ ├── Speed Up Social Media Banners With BannerBear.com.json
│ ├── Twitter Virtual AI Influencer.json
│ └── Update Twitter banner using HTTP request.json
├── LICENSE
├── Notion/
│ ├── Add positive feedback messages to a table in Notion.json
│ ├── Analyse papers from Hugging Face with AI and store them in Notion.json
│ ├── Automate Competitor Research with Exa.ai, Notion and AI Agents.json
│ ├── Automate LinkedIn Outreach with Notion and OpenAI.json
│ ├── Notion AI Assistant Generator.json
│ ├── Notion knowledge base AI assistant.json
│ ├── Notion to Pinecone Vector Store Integration.json
│ ├── Store Notion_s Pages as Vector Documents into Supabase with OpenAI.json
│ ├── Turn Emails into AI-Enhanced Tasks in Notion (Multi-User Support) with Gmail, Airtable and Softr.json
│ └── Upsert huge documents in a vector store with Supabase and Notion.json
├── OpenAI_and_LLMs/
│ ├── AI Agent To Chat With Files In Supabase Storage.json
│ ├── AI Agent _ Google calendar assistant using OpenAI.json
│ ├── AI Agent for realtime insights on meetings.json
│ ├── AI Agent to chat with Supabase_PostgreSQL DB.json
│ ├── AI Agent to chat with you Search Console Data, using OpenAI and Postgres.json
│ ├── AI Agent with Ollama for current weather and wiki.json
│ ├── AI Automated HR Workflow for CV Analysis and Candidate Evaluation.json
│ ├── AI Crew to Automate Fundamental Stock Analysis - Q&A Workflow.json
│ ├── AI Customer feedback sentiment analysis.json
│ ├── AI Data Extraction with Dynamic Prompts and Airtable.json
│ ├── AI Data Extraction with Dynamic Prompts and Baserow.json
│ ├── AI Fitness Coach Strava Data Analysis and Personalized Training Insights.json
│ ├── AI Powered Web Scraping with Jina, Google Sheets and OpenAI _ the EASY way.json
│ ├── AI Social Media Caption Creator creates social media post captions in Airtable.json
│ ├── AI Voice Chat using Webhook, Memory Manager, OpenAI, Google Gemini & ElevenLabs.json
│ ├── AI Voice Chatbot with ElevenLabs & OpenAI for Customer Service and Restaurants.json
│ ├── AI Youtube Trend Finder Based On Niche.json
│ ├── AI agent chat.json
│ ├── AI agent that can scrape webpages.json
│ ├── AI chat with any data source (using the n8n workflow tool).json
│ ├── AI chatbot that can search the web.json
│ ├── AI web researcher for sales.json
│ ├── AI-Driven Lead Management and Inquiry Automation with ERPNext & n8n.json
│ ├── AI-Generated Summary Block for WordPress Posts.json
│ ├── AI-Powered Candidate Shortlisting Automation for ERPNext.json
│ ├── AI-Powered Email Automation for Business_ Summarize & Respond with RAG.json
│ ├── AI-Powered RAG Workflow For Stock Earnings Report Analysis.json
│ ├── AI-Powered Social Media Amplifier.json
│ ├── AI-powered WooCommerce Support-Agent.json
│ ├── AI_ Ask questions about any data source (using the n8n workflow retriever).json
│ ├── AI_ Summarize podcast episode and enhance using Wikipedia.json
│ ├── Actioning Your Meeting Next Steps using Transcripts and AI.json
│ ├── Advanced AI Demo (Presented at AI Developers #14 meetup).json
│ ├── Ask a human for help when the AI doesn_t know the answer.json
│ ├── Automate Customer Support Issue Resolution using AI Text Classifier.json
│ ├── Automate Image Validation Tasks using AI Vision.json
│ ├── Automate Your RFP Process with OpenAI Assistants.json
│ ├── Chat Assistant (OpenAI assistant) with Postgres Memory And API Calling Capabalities.json
│ ├── Chat with OpenAI Assistant (by adding a memory).json
│ ├── Chat with local LLMs using n8n and Ollama.json
│ ├── Configure your own Image Creation API Using OpenAI DALLE-3.json
│ ├── Convert text to speech with OpenAI.json
│ ├── Create a Branded AI-Powered Website Chatbot.json
│ ├── Custom LangChain agent written in JavaScript.json
│ ├── Daily Podcast Summary.json
│ ├── Daily meetings summarization with Gemini AI.json
│ ├── Detect hallucinations using specialised Ollama model bespoke-minicheck.json
│ ├── Dynamically generate a webpage from user request using OpenAI Structured Output.json
│ ├── Easy Image Captioning with Gemini 1.5 Pro.json
│ ├── Enrich FAQ sections on your website pages at scale with AI.json
│ ├── Extract personal data with self-hosted LLM Mistral NeMo.json
│ ├── Fetch Dynamic Prompts from GitHub and Auto-Populate n8n Expressions in Prompt.json
│ ├── Flux AI Image Generator.json
│ ├── Force AI to use a specific output format.json
│ ├── Generate 9_16 Images from Content and Brand Guidelines.json
│ ├── Generate Text-to-Speech Using Elevenlabs via API.json
│ ├── Generate audio from text using OpenAI and Webhook _ Text to Speech Workflow.json
│ ├── Generating Image Embeddings via Textual Summarisation.json
│ ├── Narrating over a Video using Multimodal AI.json
│ ├── OpenAI Assistant workflow_ upload file, create an Assistant, chat with it!.json
│ ├── OpenAI assistant with custom tools.json
│ ├── OpenAI examples_ ChatGPT, DALLE-2, Whisper-1 – 5-in-1.json
│ ├── Organise Your Local File Directories With AI.json
│ ├── Personal Shopper Chatbot for WooCommerce with RAG using Google Drive and openAI.json
│ ├── Prompt-based Object Detection with Gemini 2.0.json
│ ├── Proxmox AI Agent with n8n and Generative AI Integration.json
│ ├── Query n8n Credentials with AI SQL Agent.json
│ ├── Suggest meeting slots using AI.json
│ ├── Summarize YouTube Videos from Transcript.json
│ ├── Transform Image to Lego Style Using Line and Dall-E.json
│ ├── Translate audio using AI.json
│ ├── Use OpenRouter in n8n versions _1.78.json
│ ├── lemlist __ GPT-3_ Supercharge your sales workflows.json
│ ├── ⚡AI-Powered YouTube Video Summarization & Analysis.json
│ ├── 🎨 Interactive Image Editor with FLUX.1 Fill Tool for Inpainting.json
│ ├── 🐋DeepSeek V3 Chat & R1 Reasoning Quick Start.json
│ ├── 📚 Auto-generate documentation for n8n workflows with GPT and Docsify.json
│ ├── 🔐🦙🤖 Private & Local Ollama Self-Hosted AI Assistant.json
│ ├── 🔥📈🤖 AI Agent for n8n Creators Leaderboard - Find Popular Workflows.json
│ ├── 🚀 Local Multi-LLM Testing & Performance Tracker.json
│ └── 🤖🧑_💻 AI Agent for Top n8n Creators Leaderboard Reporting.json
├── Other/
│ └── ALL_unique_nodes.json
├── Other_Integrations_and_Use_Cases/
│ ├── API Schema Extractor.json
│ ├── Analyze feedback and send a message on Mattermost.json
│ ├── Analyze feedback using AWS Comprehend and send it to a Mattermost channel.json
│ ├── Automate Pinterest Analysis & AI-Powered Content Suggestions With Pinterest API.json
│ ├── Automate SIEM Alert Enrichment with MITRE ATT&CK, Qdrant & Zendesk in n8n.json
│ ├── Automate Screenshots with URLbox & Analyze them with AI.json
│ ├── Automate testimonials in Strapi with n8n.json
│ ├── Bitrix24 Chatbot Application Workflow example with Webhook Integration.json
│ ├── ChatGPT Automatic Code Review in Gitlab MR.json
│ ├── Classify new bugs in Linear with OpenAI_s GPT-4 and move them to the right team.json
│ ├── Create, update, and get a profile in Humantic AI.json
│ ├── Enhance Customer Chat by Buffering Messages with Twilio and Redis.json
│ ├── Hacker News Throwback Machine - See What Was Hot on This Day, Every Year!.json
│ ├── Handling Appointment Leads and Follow-up With Twilio, Cal.com and AI.json
│ ├── Integrating AI with Open-Meteo API for Enhanced Weather Forecasting.json
│ ├── Introduction to the HTTP Tool.json
│ ├── KB Tool - Confluence Knowledge Base.json
│ ├── LINE Assistant with Google Calendar and Gmail Integration.json
│ ├── Monthly Spotify Track Archiving and Playlist Classification.json
│ ├── Obsidian Notes Read Aloud using AI_ Available as a Podcast Feed.json
│ ├── Optimize & Update Printify Title and Description Workflow.json
│ ├── Qualify replies from Pipedrive persons with AI.json
│ ├── Siri AI Agent_ Apple Shortcuts powered voice template.json
│ ├── Text automations using Apple Shortcuts.json
│ ├── UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports.json
│ ├── Use AI to organize your Todoist Inbox.json
│ ├── Using External Workflows as Tools in n8n.json
│ ├── Visualize your SQL Agent queries with OpenAI and Quickchart.io.json
│ └── Zoom AI Meeting Assistant creates mail summary, ClickUp tasks and follow-up call.json
├── PDF_and_Document_Processing/
│ ├── Ask questions about a PDF using AI.json
│ ├── Breakdown Documents into Study Notes using Templating MistralAI and Qdrant.json
│ ├── CV Resume PDF Parsing with Multimodal Vision AI.json
│ ├── Chat with PDF docs using AI (quoting sources).json
│ ├── Convert URL HTML to Markdown Format and Get Page Links.json
│ ├── ETL pipeline for text processing.json
│ ├── Extract and process information directly from PDF using Claude and Gemini.json
│ ├── Extract data from resume and create PDF with Gotenberg.json
│ ├── Extract license plate number from image uploaded via an n8n form.json
│ ├── Extract text from PDF and image using Vertex AI (Gemini) into CSV.json
│ ├── Invoice data extraction with LlamaParse and OpenAI.json
│ ├── Manipulate PDF with Adobe developer API.json
│ ├── Parse PDF with LlamaParse and save to Airtable.json
│ ├── Prepare CSV files with GPT-4Prepare CSV files with GPT-4.json
│ ├── Remove Personally Identifiable Information (PII) from CSV Files with OpenAI.json
│ ├── Transcribe Audio Files, Summarize with GPT-4, and Store in Notion.json
│ └── Transcribing Bank Statements To Markdown Using Gemini Vision AI.json
├── README-ar.md
├── README-de.md
├── README-es.md
├── README-fr.md
├── README-hi.md
├── README-id.md
├── README-it.md
├── README-ja.md
├── README-ko.md
├── README-pt.md
├── README-ru.md
├── README-tr.md
├── README-zh.md
├── README.md
├── Slack/
│ ├── AI-Powered Information Monitoring with OpenAI, Google Sheets, Jina AI and Slack.json
│ ├── Creating a AI Slack Bot with Google Gemini.json
│ ├── Customer Support Channel and Ticketing System with Slack and Linear.json
│ ├── Enhance Security Operations with the Qualys Slack Shortcut Bot!.json
│ ├── Enrich Pipedrive_s Organization Data with OpenAI GPT-4o & Notify it in Slack.json
│ ├── IT Ops AI SlackBot Workflow - Chat with your knowledge base.json
│ ├── Sentiment Analysis Tracking on Support Issues with Linear and Slack.json
│ ├── Slack slash commands AI Chat Bot.json
│ └── Venafi Cloud Slack Cert Bot.json
├── Telegram/
│ ├── AI-Powered Children_s Arabic Storytelling on Telegram.json
│ ├── AI-Powered Children_s English Storytelling on Telegram with OpenAI.json
│ ├── Agentic Telegram AI bot with with LangChain nodes and new tools.json
│ ├── Angie, Personal AI Assistant with Telegram Voice and Text.json
│ ├── Automated AI image analysis and response via Telegram.json
│ ├── Chat with OpenAIs GPT via a simple Telegram Bot.json
│ ├── Detect toxic language in Telegram messages.json
│ ├── Image Creation with OpenAI and Telegram.json
│ ├── Send a random recipe once a day to Telegram.json
│ ├── TeleBot_KnowledgeHub.json
│ ├── Telegram AI Bot_ NeurochainAI Text & Image - NeurochainAI Basic API Integration.json
│ ├── Telegram AI Chatbot.json
│ ├── Telegram AI bot assistant_ ready-made template for voice & text messages.json
│ ├── Telegram AI bot with LangChain nodes.json
│ ├── Telegram Bot with Supabase memory and OpenAI assistant integration.json
│ ├── Telegram chat with PDF.json
│ ├── Telegram to Spotify with OpenAI.json
│ ├── Translate Telegram audio messages with AI (55 supported languages).json
│ ├── 🐋🤖 DeepSeek AI Agent + Telegram + LONG TERM Memory 🧠.json
│ ├── 🤖 Telegram Messaging Agent for Text_Audio_Images.json
│ └── 🤖🧠 AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram.json
├── WhatsApp/
│ ├── Automate Sales Meeting Prep with AI & APIFY Sent To WhatsApp.json
│ ├── Building Your First WhatsApp Chatbot.json
│ ├── Complete business WhatsApp AI-Powered RAG Chatbot using OpenAI.json
│ └── Respond to WhatsApp Messages with AI Like a Pro!.json
├── WordPress/
│ ├── Auto-Categorize blog posts in wordpress using A.I..json
│ ├── Auto-Tag Blog Posts in WordPress with AI.json
│ ├── Automate Blog Creation in Brand Voice with AI.json
│ ├── Automate Content Generator for WordPress with DeepSeek R1.json
│ ├── WordPress - AI Chatbot to enhance user experience - with Supabase and OpenAI.json
│ └── Write a WordPress post with AI (starting from a few keywords).json
├── devops/
│ ├── docker-compose-controller.json
│ └── linux-update-via-webhook.json
├── docs/
│ ├── 404.md
│ ├── _config.yml
│ ├── _includes/
│ │ └── head-custom.html
│ ├── _layouts/
│ │ └── default.html
│ ├── categories/
│ │ ├── ai-research-rag.md
│ │ ├── airtable.md
│ │ ├── database-storage.md
│ │ ├── devops-server-automation.md
│ │ ├── discord.md
│ │ ├── forms-surveys.md
│ │ ├── gmail-email-automation.md
│ │ ├── google-drive-sheets.md
│ │ ├── hr-recruitment.md
│ │ ├── notion.md
│ │ ├── openai-llms.md
│ │ ├── other-integrations.md
│ │ ├── pdf-document-processing.md
│ │ ├── slack.md
│ │ ├── social-media.md
│ │ ├── telegram-bots.md
│ │ ├── whatsapp.md
│ │ └── wordpress.md
│ ├── index.md
│ └── robots.txt
└── llms.txt
================================================
FILE CONTENTS
================================================
================================================
FILE: AI product imagines.json
================================================
{
"name": "AI product Images",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.manualTrigger",
"typeVersion": 1,
"position": [
0,
0
],
"id": "1ddfbdfd-f3c0-4ef5-8b48-a3ae77a92955",
"name": "When clicking ‘Test workflow’"
},
{
"parameters": {
"resource": "fileFolder",
"filter": {
"folderId": {
"__rl": true,
"value": "1NQ_9HXkMrjm_DPZENAmwRo0JJkvQm8BU",
"mode": "id"
}
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
220,
0
],
"id": "6feb317d-1d43-4174-a5a3-b9e4a2bf46e6",
"name": "Google Drive",
"credentials": {
"googleDriveOAuth2Api": {
"id": "mVYRcVX1PvkdODpc",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{$json[\"id\"]}}",
"mode": "id"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
460,
0
],
"id": "b5232274-25a6-43b7-a424-dcfff47057ba",
"name": "Google Drive1",
"credentials": {
"googleDriveOAuth2Api": {
"id": "mVYRcVX1PvkdODpc",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"resource": "image",
"operation": "analyze",
"modelId": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "GPT-4O"
},
"text": "Describe the visual style of this image, what stands out. if you had to have a holistic overview, as a professional facebook ads designer. How would you explain this image / or images to be able to reproduce the elements that make it work for other ads.\n\nThe core goal of the output here should be to create a template of the style for inspirations. As later we will take ideas from these to generate our own high converting facebook ads.\n\nensure you do not make this product specific, rather focusing on creating outlines for static ad styles. so keep ti vague in terms of what exactly is in the ad, but rather the principles of the ad",
"inputType": "base64",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
720,
-20
],
"id": "ff9ab47d-5980-4d2d-ab5e-1e76d0df87ab",
"name": "OpenAI",
"credentials": {
"openAiApi": {
"id": "hLlMCh2BqN9e4ile",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"resource": "fileFolder",
"searchMethod": "query",
"filter": {
"folderId": {
"__rl": true,
"value": "11t72SNGpHJvGk-UurfuLwGpdMz37-cwW",
"mode": "id"
}
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
220,
240
],
"id": "b5e0b994-cde8-4069-bdac-3173ecf8ccfb",
"name": "Google Drive2",
"credentials": {
"googleDriveOAuth2Api": {
"id": "mVYRcVX1PvkdODpc",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"operation": "download",
"fileId": {
"__rl": true,
"value": "={{$json[\"id\"]}}",
"mode": "id"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
460,
240
],
"id": "41b44442-46d1-40b7-9a26-57f410d0426b",
"name": "Google Drive3",
"credentials": {
"googleDriveOAuth2Api": {
"id": "mVYRcVX1PvkdODpc",
"name": "Google Drive account"
}
}
},
{
"parameters": {
"resource": "image",
"operation": "analyze",
"modelId": {
"__rl": true,
"value": "gpt-4o",
"mode": "list",
"cachedResultName": "GPT-4O"
},
"text": "Analyse our product image. Identify the core emotions behind it and the main product. we will use this later to connect the product image with some ad styles and generate our own ads",
"inputType": "base64",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
700,
240
],
"id": "1eea9b08-38d1-48dc-b578-88d0818de342",
"name": "OpenAI1",
"credentials": {
"openAiApi": {
"id": "hLlMCh2BqN9e4ile",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"model": {
"__rl": true,
"value": "gpt-4",
"mode": "list",
"cachedResultName": "gpt-4"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
1040,
420
],
"id": "6a97f2fe-fc62-4591-bb03-37d4ae24343c",
"name": "OpenAI Chat Model",
"credentials": {
"openAiApi": {
"id": "hLlMCh2BqN9e4ile",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "=You’ve been given an outline that includes: \n\n(use all the data from here when creating the prompts {{ $json.choices[0].message.content }} - it is also critical our product image is displayed in here: {{ $('OpenAI1').item.json.content }} )\n\nWhat the product is and who it’s for\n\nWhat’s visible in the product image (e.g. background, angle, lighting)\n\nPatterns and emotional triggers from top-performing ad examples\n\nYour task:\nUsing this outline, generate 10 image ad prompts that follow this format exactly:\n\nprompt: [Detailed visual description of the ad concept]\n\nEach prompt should include:\n\nA bold, testimonial-style headline (in quotation marks at the top)\n\nA clear description of the emotional transformation the image should convey\n\nWhat is shown in the image (body parts, facial expressions, environment, etc.)\n\nWhere and how the product is placed\n\nThe color palette and visual tone (e.g., icy blue for calm, red for pain)\n\nWhere the headline should appear on the image\n\nRendering style (e.g., cinematic, hyperrealistic, dramatic shadows)\n\nFinal format for Facebook or Instagram (1:1 format always)\n\nRepeat this 10 times. Each one must be unique, emotionally powerful, and visually clear.",
"hasOutputParser": true,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 1.9,
"position": [
1120,
240
],
"id": "16138c72-2b3d-4c4b-9d11-ad91d15c2e4c",
"name": "AI prompt agent"
},
{
"parameters": {
"jsonSchemaExample": "[\n {\n \"Prompt\": \"Sun-drenched poolside shot of the product on a marble ledge at golden hour, with soft shadows and warm tones. Aspect ratio 1:1.\"\n },\n {\n \"Prompt\": \"Cool lavender-tinted sunset beach backdrop behind the product, highlighting reflective metallic accents. Aspect ratio 4:5.\"\n },\n {\n \"Prompt\": \"...\"\n }\n]\n"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.2,
"position": [
1380,
420
],
"id": "8fbfad99-d724-45a9-9b3e-e45e486dcfc5",
"name": "Structured Output Parser"
},
{
"parameters": {
"fieldToSplitOut": "output",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1560,
160
],
"id": "508946cd-0aed-4858-bf5a-c25e64371ea4",
"name": "Split Out"
},
{
"parameters": {
"method": "POST",
"url": "https://api.openai.com/v1/images/generations",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer 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"
},
{
"name": "Content-type",
"value": "application/json"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "gpt-image-1"
},
{
"name": "prompt",
"value": "={{ $json.Prompt }}"
},
{
"name": "size",
"value": "1024x1024"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
2320,
160
],
"id": "ab08c200-9ff9-4dd9-86be-09b8f1e219a9",
"name": "HTTP Request1"
},
{
"parameters": {
"options": {}
},
"type": "n8n-nodes-base.splitInBatches",
"typeVersion": 3,
"position": [
1840,
160
],
"id": "dc69258e-7c57-4158-92af-7257ba85102e",
"name": "Loop Over Items1"
},
{
"parameters": {
"amount": 15
},
"type": "n8n-nodes-base.wait",
"typeVersion": 1.1,
"position": [
2100,
160
],
"id": "1af8885e-00a3-49f1-b159-1a02eba84a84",
"name": "Wait",
"webhookId": "9f2950cd-2ab2-405f-83d7-4f44e15e16f2"
},
{
"parameters": {
"operation": "toBinary",
"sourceProperty": "data[0].b64_json",
"options": {
"fileName": "image.png",
"mimeType": "image/png"
}
},
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
2540,
160
],
"id": "535a5a20-11ab-476a-be3b-07e23073d5f5",
"name": "Convert to File"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "gpt-4",
"mode": "list",
"cachedResultName": "GPT-4"
},
"messages": {
"values": [
{
"content": "=Analyse this prompt which is a template of a high converting facebook ad we have built {{ $json.content }}\n\nNow we will take this template, and add our product in as the hero for our ads{{ $json.content}}\n\nensure the template is applied to make our product the hereo, with all copy, colours and vibe being focused on making the product stand out, in a facebook ad, deisgn to convert.\n\nMake a relevant prompt & outline as our next step in the flow is to break down this prompt (combining the facebook ad visual style, with our product image) and spit it into 10 prompts, all to create individual statics.\n\nDo what you think is best to pass this information forward.",
"role": "system"
},
{
"content": "Put both pieces of data together and only generate 1 output prompt\n"
}
]
},
"simplify": false,
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.openAi",
"typeVersion": 1.8,
"position": [
1020,
-20
],
"id": "a01ff233-7e6f-456e-b691-f54a5c73aee0",
"name": "OpenAI2",
"executeOnce": false,
"alwaysOutputData": false,
"credentials": {
"openAiApi": {
"id": "CiqduZPbaJF5yveA",
"name": "OpenAi account 2"
}
}
},
{
"parameters": {
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"folderId": {
"__rl": true,
"value": "1V_USzVT-v-6LIjk3HPd0nlr2vnv4nJAr",
"mode": "list",
"cachedResultName": "n8n testing",
"cachedResultUrl": "https://drive.google.com/drive/folders/1V_USzVT-v-6LIjk3HPd0nlr2vnv4nJAr"
},
"options": {}
},
"type": "n8n-nodes-base.googleDrive",
"typeVersion": 3,
"position": [
2780,
160
],
"id": "3deb2f20-abc3-439e-b181-24c1956a4657",
"name": "Google Drive4",
"credentials": {
"googleDriveOAuth2Api": {
"id": "mVYRcVX1PvkdODpc",
"name": "Google Drive account"
}
}
}
],
"pinData": {},
"connections": {
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "Google Drive",
"type": "main",
"index": 0
}
]
]
},
"Google Drive": {
"main": [
[
{
"node": "Google Drive1",
"type": "main",
"index": 0
}
]
]
},
"Google Drive1": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
},
"Google Drive2": {
"main": [
[
{
"node": "Google Drive3",
"type": "main",
"index": 0
}
]
]
},
"Google Drive3": {
"main": [
[
{
"node": "OpenAI1",
"type": "main",
"index": 0
}
]
]
},
"OpenAI": {
"main": [
[
{
"node": "Google Drive2",
"type": "main",
"index": 0
}
]
]
},
"OpenAI1": {
"main": [
[
{
"node": "OpenAI2",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI prompt agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"AI prompt agent": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "AI prompt agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request1": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items1": {
"main": [
[],
[
{
"node": "Wait",
"type": "main",
"index": 0
}
]
]
},
"Wait": {
"main": [
[
{
"node": "HTTP Request1",
"type": "main",
"index": 0
}
]
]
},
"Convert to File": {
"main": [
[
{
"node": "Google Drive4",
"type": "main",
"index": 0
}
]
]
},
"OpenAI2": {
"main": [
[
{
"node": "AI prompt agent",
"type": "main",
"index": 0
}
]
]
},
"Google Drive4": {
"main": [
[
{
"node": "Loop Over Items1",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "85462564-6f39-41df-b09c-9507c177c96a",
"meta": {
"templateCredsSetupCompleted": true,
"instanceId": "aa305389a9f146cc99db373653903c47ecf7fe4bb66df261da9bedf94add0f72"
},
"id": "XZrlhnSYaHKcAdp4",
"tags": []
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Analyze tradingview.com charts with Chrome extension, N8N and OpenAI.json
================================================
{
"id": "Q8On8rR6BkmPzDUd",
"meta": {
"instanceId": "f57770b08f6a574802832e927ed1b0063c627ffc5b95965abf0d4a7396150138"
},
"name": "chrome extension backend with AI",
"tags": [],
"nodes": [
{
"id": "0f38fe62-36d9-43da-a992-a3981377e89e",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-220,
-20
],
"webhookId": "e9a97dd5-f1e7-4d5b-a6f1-be5f0c9eb96c",
"parameters": {
"path": "e9a97dd5-f1e7-4d5b-a6f1-be5f0c9eb96c",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "83959562-edf5-4d37-bd11-47186c6a31c7",
"name": "OpenAI",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-40,
-20
],
"parameters": {
"text": "You are an expert financial analyst tasked with providing an advanced technical analyses of a stock or crypto currency chart provided. Your analysis will be based on various technical indicators and will provide simple insights for novice traders. Just explain to traders were you expect the market is moving. Also warn them this is not a binding advice. Make sure to explain everything in infant language.",
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"resource": "image",
"inputType": "base64",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"id": "8MS1muoK4z86fxUs",
"name": "OpenAi account"
}
},
"typeVersion": 1.7
},
{
"id": "c6f1f833-7ba3-49c5-86df-f586e6bb5975",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
140,
-20
],
"parameters": {
"options": {},
"respondWith": "text",
"responseBody": "={{ $json.content }}"
},
"typeVersion": 1.1
},
{
"id": "e3a38a76-283b-4567-a8da-315ef1e2bc4f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-260,
-140
],
"parameters": {
"width": 620,
"height": 300,
"content": "## N8N en OpenAI image analyser"
},
"typeVersion": 1
},
{
"id": "8e7e26db-8767-4727-ab0c-900b50a73411",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-80,
180
],
"parameters": {
"color": 5,
"height": 340,
"content": "## AI prompt\nYou are an expert financial analyst tasked with providing an advanced technical analyses of a stock or crypto currency chart provided. Your analysis will be based on various technical indicators and will provide simple insights for novice traders. Just explain to traders were you expect the market is moving. Also warn them this is not a binding advice. Make sure to explain everything in infant language."
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "caf32442-e9c5-466a-8888-9abd2c1b3449",
"connections": {
"OpenAI": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "OpenAI",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Automated Hugging Face Paper Summary Fetching & Categorization Workflow.json
================================================
{
"id": "G8jRDBvwsMkkMiLN",
"meta": {
"instanceId": "205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa"
},
"name": "[3/3] Anomaly detection tool (crops dataset)",
"tags": [
{
"id": "spMntyrlE9ydvWFA",
"name": "anomaly-detection",
"createdAt": "2024-12-08T22:05:15.945Z",
"updatedAt": "2024-12-09T12:50:19.287Z"
}
],
"nodes": [
{
"id": "e01bafec-eb24-44c7-b3c4-a60f91666350",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
180
],
"parameters": {
"color": 6,
"width": 400,
"height": 740,
"content": "We are working here with crops dataset: \nExisting (so not anomalies) crops images in dataset are:\n- 'pearl_millet(bajra)',\n- 'tobacco-plant',\n- 'cherry',\n- 'cotton',\n- 'banana',\n- 'cucumber',\n- 'maize',\n- 'wheat',\n- 'clove',\n- 'jowar',\n- 'olive-tree',\n- 'soyabean',\n- 'coffee-plant',\n- 'rice',\n- 'lemon',\n- 'mustard-oil',\n- 'vigna-radiati(mung)',\n- 'coconut',\n- 'gram',\n- 'pineapple',\n- 'sugarcane',\n- 'sunflower',\n- 'chilli',\n- 'fox_nut(makhana)',\n- 'jute',\n- 'papaya',\n- 'tea',\n- 'cardamom',\n- 'almond'\n"
},
"typeVersion": 1
},
{
"id": "b9943781-de1f-4129-9b81-ed836e9ebb11",
"name": "Embed image",
"type": "n8n-nodes-base.httpRequest",
"position": [
680,
60
],
"parameters": {
"url": "https://api.voyageai.com/v1/multimodalembeddings",
"method": "POST",
"options": {},
"jsonBody": "={{\n{\n \"inputs\": [\n {\n \"content\": [\n {\n \"type\": \"image_url\",\n \"image_url\": $('Image URL hardcode').first().json.imageURL\n }\n ]\n }\n ],\n \"model\": \"voyage-multimodal-3\",\n \"input_type\": \"document\"\n}\n}}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "Vb0RNVDnIHmgnZOP",
"name": "Voyage API"
}
},
"typeVersion": 4.2
},
{
"id": "47b72bc2-4817-48c6-b517-c1328e402468",
"name": "Get similarity of medoids",
"type": "n8n-nodes-base.httpRequest",
"position": [
940,
60
],
"parameters": {
"url": "={{ $('Variables for medoids').first().json.qdrantCloudURL }}/collections/{{ $('Variables for medoids').first().json.collectionName }}/points/query",
"method": "POST",
"options": {},
"jsonBody": "={{\n{\n \"query\": $json.data[0].embedding,\n \"using\": \"voyage\",\n \"limit\": $('Info About Crop Labeled Clusters').first().json.cropsNumber,\n \"with_payload\": true,\n \"filter\": {\n \"must\": [\n { \n \"key\": $('Variables for medoids').first().json.clusterCenterType,\n \"match\": {\n \"value\": true\n }\n }\n ]\n }\n}\n}}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "it3j3hP9FICqhgX6",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "42d7eb27-ec38-4406-b5c4-27eb45358e93",
"name": "Compare scores",
"type": "n8n-nodes-base.code",
"position": [
1140,
60
],
"parameters": {
"language": "python",
"pythonCode": "points = _input.first()['json']['result']['points']\nthreshold_type = _('Variables for medoids').first()['json']['clusterThresholdCenterType']\n\nmax_score = -1\ncrop_with_max_score = None\nundefined = True\n\nfor center in points:\n if center['score'] >= center['payload'][threshold_type]:\n undefined = False\n if center['score'] > max_score:\n max_score = center['score']\n crop_with_max_score = center['payload']['crop_name']\n\nif undefined:\n result_message = \"ALERT, we might have a new undefined crop!\"\nelse:\n result_message = f\"Looks similar to {crop_with_max_score}\"\n\nreturn [{\n \"json\": {\n \"result\": result_message\n }\n}]\n"
},
"typeVersion": 2
},
{
"id": "23aa604a-ff0b-4948-bcd5-af39300198c0",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1200,
-220
],
"parameters": {
"width": 400,
"height": 380,
"content": "## Crop Anomaly Detection Tool\n### This is the tool that can be used directly for anomalous crops detection. \nIt takes as input (any) **image URL** and returns a **text message** telling if whatever this image depicts is anomalous to the crop dataset stored in Qdrant. \n\n* An Image URL is received via the Execute Workflow Trigger which is used to generate embedding vectors via the Voyage.ai Embeddings API.\n* The returned vectors are used to query the Qdrant collection to determine if the given crop is known by comparing it to **threshold scores** of each image class (crop type).\n* If the image scores lower than all thresholds, then the image is considered an anomaly for the dataset."
},
"typeVersion": 1
},
{
"id": "3a79eca2-44f9-4aee-8a0d-9c7ca2f9149d",
"name": "Variables for medoids",
"type": "n8n-nodes-base.set",
"position": [
-200,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "dbbc1e7b-c63e-4ff1-9524-8ef3e9f6cd48",
"name": "clusterCenterType",
"type": "string",
"value": "is_medoid"
},
{
"id": "a994ce37-2530-4030-acfb-ec777a7ddb05",
"name": "qdrantCloudURL",
"type": "string",
"value": "https://152bc6e2-832a-415c-a1aa-fb529f8baf8d.eu-central-1-0.aws.cloud.qdrant.io"
},
{
"id": "12f0a9e6-686d-416e-a61b-72d034ec21ba",
"name": "collectionName",
"type": "string",
"value": "=agricultural-crops"
},
{
"id": "4c88a617-d44f-4776-b457-8a1dffb1d03c",
"name": "clusterThresholdCenterType",
"type": "string",
"value": "is_medoid_cluster_threshold"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "13b25434-bd66-4293-93f1-26c67b9ec7dd",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-340,
260
],
"parameters": {
"color": 6,
"width": 360,
"height": 200,
"content": "**clusterCenterType** - either\n* \"is_text_anchor_medoid\" or\n* \"is_medoid\"\n\n\n**clusterThresholdCenterType** - either\n* \"is_text_anchor_medoid_cluster_threshold\" or\n* \"is_medoid_cluster_threshold\""
},
"typeVersion": 1
},
{
"id": "869b0962-6cae-487d-8230-539a0cc4c14c",
"name": "Info About Crop Labeled Clusters",
"type": "n8n-nodes-base.set",
"position": [
440,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5327b254-b703-4a34-a398-f82edb1d6d6b",
"name": "=cropsNumber",
"type": "number",
"value": "={{ $json.result.hits.length }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "5d3956f8-f43b-439e-b176-a594a21d8011",
"name": "Total Points in Collection",
"type": "n8n-nodes-base.httpRequest",
"position": [
40,
60
],
"parameters": {
"url": "={{ $json.qdrantCloudURL }}/collections/{{ $json.collectionName }}/points/count",
"method": "POST",
"options": {},
"jsonBody": "={\n \"exact\": true\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "it3j3hP9FICqhgX6",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "14ba3db9-3965-4b20-b333-145616d45c3a",
"name": "Each Crop Counts",
"type": "n8n-nodes-base.httpRequest",
"position": [
240,
60
],
"parameters": {
"url": "={{ $('Variables for medoids').first().json.qdrantCloudURL }}/collections/{{ $('Variables for medoids').first().json.collectionName }}/facet",
"method": "POST",
"options": {},
"jsonBody": "={{\n{\n \"key\": \"crop_name\",\n \"limit\": $json.result.count,\n \"exact\": true\n}\n}}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "it3j3hP9FICqhgX6",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "e37c6758-0556-4a56-ab14-d4df663cb53a",
"name": "Image URL hardcode",
"type": "n8n-nodes-base.set",
"position": [
-480,
60
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "46ceba40-fb25-450c-8550-d43d8b8aa94c",
"name": "imageURL",
"type": "string",
"value": "={{ $json.query.imageURL }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "b24ad1a7-0cf8-4acc-9c18-6fe9d58b10f2",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
-720,
60
],
"parameters": {},
"typeVersion": 1
},
{
"id": "50424f2b-6831-41bf-8de4-81f69d901ce1",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-80
],
"parameters": {
"width": 180,
"height": 120,
"content": "Variables to access Qdrant's collection we uploaded & prepared for anomaly detection in 2 previous pipelines\n"
},
"typeVersion": 1
},
{
"id": "2e8ed3ca-1bba-4214-b34b-376a237842ff",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
40,
-120
],
"parameters": {
"width": 560,
"height": 140,
"content": "These three nodes are needed just to figure out how many different classes (crops) we have in our Qdrant collection: **cropsNumber** (needed in *\"Get similarity of medoids\"* node. \n[Note] *\"Total Points in Collection\"* -> *\"Each Crop Counts\"* were used&explained already in *\"[2/4] Set up medoids (2 types) for anomaly detection (crops dataset)\"* pipeline.\n"
},
"typeVersion": 1
},
{
"id": "e2fa5763-6e97-4ff5-8919-1cb85a3c6968",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
240
],
"parameters": {
"height": 120,
"content": "Here, we're embedding the image passed to this workflow tool with the Voyage embedding model to compare the image to all crop images in the database."
},
"typeVersion": 1
},
{
"id": "cdb6b8d3-f7f4-4d66-850f-ce16c8ed98b9",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
220
],
"parameters": {
"width": 400,
"height": 180,
"content": "Checking how similar the image is to all the centres of clusters (crops).\nIf it's more similar to the thresholds we set up and stored in centres in the previous workflow, the image probably belongs to this crop class; otherwise, it's anomalous to the class. \nIf image is anomalous to all the classes, it's an anomaly."
},
"typeVersion": 1
},
{
"id": "03b4699f-ba43-4f5f-ad69-6f81deea2641",
"name": "Sticky Note22",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
580
],
"parameters": {
"color": 4,
"width": 540,
"height": 300,
"content": "### For anomaly detection\n1. The first pipeline is uploading (crops) dataset to Qdrant's collection.\n2. The second pipeline sets up cluster (class) centres in this Qdrant collection & cluster (class) threshold scores.\n3. **This is the anomaly detection tool, which takes any image as input and uses all preparatory work done with Qdrant (crops) collection.**\n\n### To recreate it\nYou'll have to upload [crops](https://www.kaggle.com/datasets/mdwaquarazam/agricultural-crops-image-classification) dataset from Kaggle to your own Google Storage bucket, and re-create APIs/connections to [Qdrant Cloud](https://qdrant.tech/documentation/quickstart-cloud/) (you can use **Free Tier** cluster), Voyage AI API & Google Cloud Storage\n\n**In general, pipelines are adaptable to any dataset of images**\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {
"Execute Workflow Trigger": [
{
"json": {
"query": {
"imageURL": "https://storage.googleapis.com/n8n-qdrant-demo/agricultural-crops%2Fcotton%2Fimage%20(36).jpg"
}
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "f67b764b-9e1a-4db0-b9f2-490077a62f74",
"connections": {
"Embed image": {
"main": [
[
{
"node": "Get similarity of medoids",
"type": "main",
"index": 0
}
]
]
},
"Each Crop Counts": {
"main": [
[
{
"node": "Info About Crop Labeled Clusters",
"type": "main",
"index": 0
}
]
]
},
"Image URL hardcode": {
"main": [
[
{
"node": "Variables for medoids",
"type": "main",
"index": 0
}
]
]
},
"Variables for medoids": {
"main": [
[
{
"node": "Total Points in Collection",
"type": "main",
"index": 0
}
]
]
},
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Image URL hardcode",
"type": "main",
"index": 0
}
]
]
},
"Get similarity of medoids": {
"main": [
[
{
"node": "Compare scores",
"type": "main",
"index": 0
}
]
]
},
"Total Points in Collection": {
"main": [
[
{
"node": "Each Crop Counts",
"type": "main",
"index": 0
}
]
]
},
"Info About Crop Labeled Clusters": {
"main": [
[
{
"node": "Embed image",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Autonomous AI crawler.json
================================================
{
"nodes": [
{
"id": "6cdc45e5-1fa4-47fe-b80a-0e1560996936",
"name": "Text",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
1460,
980
],
"parameters": {
"name": "text_retrieval_tool",
"source": "parameter",
"description": "Call this tool to return all text from the given website. Query should be full website URL.",
"workflowJson": "{\n \"nodes\": [\n {\n \"parameters\": {},\n \"id\": \"05107436-c9cb-419b-ae8a-b74d309a130d\",\n \"name\": \"Execute workflow\",\n \"type\": \"n8n-nodes-base.manualTrigger\",\n \"typeVersion\": 1,\n \"position\": [\n 2220,\n 620\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"253c2b17-c749-4f0a-93e8-5ff74f1ce49b\",\n \"name\": \"domain\",\n \"value\": \"={{ $json.query }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"bb8be616-3227-4705-8520-1827069faacd\",\n \"name\": \"Set domain\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 2440,\n 620\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"ed0f1505-82b6-4393-a0d8-088055137ec9\",\n \"name\": \"domain\",\n \"value\": \"={{ $json.domain.startsWith(\\\"http\\\") ? $json.domain : \\\"http://\\\" + $json.domain }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"bdf29340-f135-489f-848e-1c7fa43a01df\",\n \"name\": \"Add protocool to domain\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 2640,\n 620\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"2b1c7ff8-06a7-448b-99b7-5ede4b2e0bf0\",\n \"name\": \"response\",\n \"value\": \"={{ $json.data }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"9f0aa264-08c1-459a-bb99-e28599fe8f76\",\n \"name\": \"Set response\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 3300,\n 620\n ]\n },\n {\n \"parameters\": {\n \"url\": \"={{ $json.domain }}\",\n \"options\": {}\n },\n \"id\": \"cec7c8e8-bf5e-43d5-aa41-876293dbec78\",\n \"name\": \"Get website\",\n \"type\": \"n8n-nodes-base.httpRequest\",\n \"typeVersion\": 4.2,\n \"position\": [\n 2860,\n 620\n ]\n },\n {\n \"parameters\": {\n \"html\": \"={{ $json.data }}\",\n \"options\": {\n \"ignore\": \"a,img\"\n }\n },\n \"id\": \"1af94fcb-bca3-45c4-9277-18878c75d417\",\n \"name\": \"Convert HTML to Markdown\",\n \"type\": \"n8n-nodes-base.markdown\",\n \"typeVersion\": 1,\n \"position\": [\n 3080,\n 620\n ]\n }\n ],\n \"connections\": {\n \"Execute workflow\": {\n \"main\": [\n [\n {\n \"node\": \"Set domain\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Set domain\": {\n \"main\": [\n [\n {\n \"node\": \"Add protocool to domain\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Add protocool to domain\": {\n \"main\": [\n [\n {\n \"node\": \"Get website\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Get website\": {\n \"main\": [\n [\n {\n \"node\": \"Convert HTML to Markdown\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Convert HTML to Markdown\": {\n \"main\": [\n [\n {\n \"node\": \"Set response\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n }\n },\n \"pinData\": {}\n}",
"requestOptions": {}
},
"typeVersion": 1.1
},
{
"id": "af8efccb-ba3c-44de-85f7-b932d7a2e3ca",
"name": "URLs",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
1640,
980
],
"parameters": {
"name": "url_retrieval_tool",
"source": "parameter",
"description": "Call this tool to return all URLs from the given website. Query should be full website URL.",
"workflowJson": "{\n \"nodes\": [\n {\n \"parameters\": {},\n \"id\": \"05107436-c9cb-419b-ae8a-b74d309a130d\",\n \"name\": \"Execute workflow\",\n \"type\": \"n8n-nodes-base.manualTrigger\",\n \"typeVersion\": 1,\n \"position\": [\n 2200,\n 740\n ]\n },\n {\n \"parameters\": {\n \"operation\": \"extractHtmlContent\",\n \"extractionValues\": {\n \"values\": [\n {\n \"key\": \"output\",\n \"cssSelector\": \"a\",\n \"returnValue\": \"attribute\",\n \"returnArray\": true\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"1972e13e-d923-45e8-9752-e4bf45faaccf\",\n \"name\": \"Retrieve URLs\",\n \"type\": \"n8n-nodes-base.html\",\n \"typeVersion\": 1.2,\n \"position\": [\n 3060,\n 740\n ]\n },\n {\n \"parameters\": {\n \"fieldToSplitOut\": \"output\",\n \"options\": {}\n },\n \"id\": \"19703fbc-05ff-4d80-ab53-85ba6d39fc3f\",\n \"name\": \"Split out URLs\",\n \"type\": \"n8n-nodes-base.splitOut\",\n \"typeVersion\": 1,\n \"position\": [\n 3280,\n 740\n ]\n },\n {\n \"parameters\": {\n \"compare\": \"selectedFields\",\n \"fieldsToCompare\": \"href\",\n \"options\": {}\n },\n \"id\": \"5cc988e7-de9b-4177-b5e7-edb3842202c8\",\n \"name\": \"Remove duplicated\",\n \"type\": \"n8n-nodes-base.removeDuplicates\",\n \"typeVersion\": 1,\n \"position\": [\n 3720,\n 740\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"04ced063-09f0-496c-9b28-b8095f9e2297\",\n \"name\": \"href\",\n \"value\": \"={{ $json.href.startsWith(\\\"/\\\") ? $('Add protocool to domain (URL)').item.json[\\\"domain\\\"] + $json.href : $json.href }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"includeOtherFields\": true,\n \"include\": \"selected\",\n \"includeFields\": \"title\",\n \"options\": {}\n },\n \"id\": \"4715a25d-93a7-4056-8768-e3f886a1a0c9\",\n \"name\": \"Set domain to path\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 3940,\n 740\n ]\n },\n {\n \"parameters\": {\n \"conditions\": {\n \"options\": {\n \"caseSensitive\": true,\n \"leftValue\": \"\",\n \"typeValidation\": \"strict\"\n },\n \"conditions\": [\n {\n \"id\": \"d01ea6a8-7e75-40d4-98f2-25d42b245f36\",\n \"leftValue\": \"={{ $json.href.isUrl() }}\",\n \"rightValue\": \"\",\n \"operator\": {\n \"type\": \"boolean\",\n \"operation\": \"true\",\n \"singleValue\": true\n }\n }\n ],\n \"combinator\": \"and\"\n },\n \"options\": {}\n },\n \"id\": \"353deefb-ae69-440c-95b6-fdadacf4bf91\",\n \"name\": \"Filter out invalid URLs\",\n \"type\": \"n8n-nodes-base.filter\",\n \"typeVersion\": 2,\n \"position\": [\n 4160,\n 740\n ]\n },\n {\n \"parameters\": {\n \"aggregate\": \"aggregateAllItemData\",\n \"include\": \"specifiedFields\",\n \"fieldsToInclude\": \"title,href\",\n \"options\": {}\n },\n \"id\": \"9f87be8c-72d7-4ab1-b297-dc7069b2dd11\",\n \"name\": \"Aggregate URLs\",\n \"type\": \"n8n-nodes-base.aggregate\",\n \"typeVersion\": 1,\n \"position\": [\n 4380,\n 740\n ]\n },\n {\n \"parameters\": {\n \"conditions\": {\n \"options\": {\n \"caseSensitive\": true,\n \"leftValue\": \"\",\n \"typeValidation\": \"strict\"\n },\n \"conditions\": [\n {\n \"id\": \"5b9b7353-bd04-4af2-9480-8de135ff4223\",\n \"leftValue\": \"={{ $json.href }}\",\n \"rightValue\": \"\",\n \"operator\": {\n \"type\": \"string\",\n \"operation\": \"exists\",\n \"singleValue\": true\n }\n }\n ],\n \"combinator\": \"and\"\n },\n \"options\": {}\n },\n \"id\": \"35c8323a-5350-403a-9c2d-114b0527e395\",\n \"name\": \"Filter out empty hrefs\",\n \"type\": \"n8n-nodes-base.filter\",\n \"typeVersion\": 2,\n \"position\": [\n 3500,\n 740\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"253c2b17-c749-4f0a-93e8-5ff74f1ce49b\",\n \"name\": \"domain\",\n \"value\": \"={{ $json.query }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"d9f6a148-6c8c-4a58-89f5-4e9cfcd8d910\",\n \"name\": \"Set domain (URL)\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 2400,\n 740\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"ed0f1505-82b6-4393-a0d8-088055137ec9\",\n \"name\": \"domain\",\n \"value\": \"={{ $json.domain.startsWith(\\\"http\\\") ? $json.domain : \\\"http://\\\" + $json.domain }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"1f974444-da58-4a47-a9c3-ba3091fc1e96\",\n \"name\": \"Add protocool to domain (URL)\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 2620,\n 740\n ]\n },\n {\n \"parameters\": {\n \"url\": \"={{ $json.domain }}\",\n \"options\": {}\n },\n \"id\": \"31d7c7d4-8f61-402b-858d-63dd68ac69ee\",\n \"name\": \"Get website (URL)\",\n \"type\": \"n8n-nodes-base.httpRequest\",\n \"typeVersion\": 4.2,\n \"position\": [\n 2840,\n 740\n ]\n },\n {\n \"parameters\": {\n \"assignments\": {\n \"assignments\": [\n {\n \"id\": \"53c1c016-7983-4eba-a91d-da2a0523d805\",\n \"name\": \"response\",\n \"value\": \"={{ JSON.stringify($json.data) }}\",\n \"type\": \"string\"\n }\n ]\n },\n \"options\": {}\n },\n \"id\": \"f4b6df77-96be-4b12-9a8b-ae9b7009f13d\",\n \"name\": \"Set response (URL)\",\n \"type\": \"n8n-nodes-base.set\",\n \"typeVersion\": 3.3,\n \"position\": [\n 4600,\n 740\n ]\n }\n ],\n \"connections\": {\n \"Execute workflow\": {\n \"main\": [\n [\n {\n \"node\": \"Set domain (URL)\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Retrieve URLs\": {\n \"main\": [\n [\n {\n \"node\": \"Split out URLs\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Split out URLs\": {\n \"main\": [\n [\n {\n \"node\": \"Filter out empty hrefs\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Remove duplicated\": {\n \"main\": [\n [\n {\n \"node\": \"Set domain to path\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Set domain to path\": {\n \"main\": [\n [\n {\n \"node\": \"Filter out invalid URLs\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Filter out invalid URLs\": {\n \"main\": [\n [\n {\n \"node\": \"Aggregate URLs\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Aggregate URLs\": {\n \"main\": [\n [\n {\n \"node\": \"Set response (URL)\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Filter out empty hrefs\": {\n \"main\": [\n [\n {\n \"node\": \"Remove duplicated\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Set domain (URL)\": {\n \"main\": [\n [\n {\n \"node\": \"Add protocool to domain (URL)\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Add protocool to domain (URL)\": {\n \"main\": [\n [\n {\n \"node\": \"Get website (URL)\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n },\n \"Get website (URL)\": {\n \"main\": [\n [\n {\n \"node\": \"Retrieve URLs\",\n \"type\": \"main\",\n \"index\": 0\n }\n ]\n ]\n }\n },\n \"pinData\": {}\n}",
"requestOptions": {}
},
"typeVersion": 1.1
},
{
"id": "725dc9d9-dc10-4895-aedb-93ecd7494d76",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1300,
980
],
"parameters": {
"model": "gpt-4o",
"options": {
"temperature": 0,
"responseFormat": "json_object"
},
"requestOptions": {}
},
"credentials": {
"openAiApi": {
"id": "Qp9mop4DylpfqiTH",
"name": "OpenAI (avirago@avirago.pl)"
}
},
"typeVersion": 1
},
{
"id": "2b9aa18b-e72e-486a-b307-db50e408842b",
"name": "JSON Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1800,
980
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n \"type\": \"object\",\n \"properties\": {\n \"social_media\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"platform\": {\n \"type\": \"string\",\n \"description\": \"The name of the social media platform (e.g., LinkedIn, Instagram)\"\n },\n \"urls\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"format\": \"uri\",\n \"description\": \"A URL for the social media platform\"\n }\n }\n },\n \"required\": [\"platform\", \"urls\"],\n \"additionalProperties\": false\n }\n }\n },\n \"required\": [\"platforms\"],\n \"additionalProperties\": false\n}\n",
"requestOptions": {}
},
"typeVersion": 1.2
},
{
"id": "87dcfe83-01f3-439c-8175-7da3d96391b4",
"name": "Map company name and website",
"type": "n8n-nodes-base.set",
"position": [
1400,
300
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ae484e44-36bc-4d88-9772-545e579a261c",
"name": "company_name",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "c426ab19-649c-4443-aabb-eb0826680452",
"name": "company_website",
"type": "string",
"value": "={{ $json.website }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "a904bd16-b470-4c98-ac05-50bbc09bf24b",
"name": "Execute workflow",
"type": "n8n-nodes-base.manualTrigger",
"position": [
540,
620
],
"parameters": {},
"typeVersion": 1
},
{
"id": "a9801b62-a691-457c-a52f-ac0d68c8e8b3",
"name": "Get companies",
"type": "n8n-nodes-base.supabase",
"position": [
780,
620
],
"parameters": {
"tableId": "companies_input",
"operation": "getAll"
},
"credentials": {
"supabaseApi": {
"id": "TZeFGe5qO3z7X5Zk",
"name": "Supabase (workfloows@gmail.com)"
}
},
"typeVersion": 1
},
{
"id": "40d8fe8a-2975-4ea5-b6ac-46e19d158eea",
"name": "Select company name and website",
"type": "n8n-nodes-base.set",
"position": [
1040,
620
],
"parameters": {
"include": "selected",
"options": {},
"assignments": {
"assignments": []
},
"includeFields": "name,website",
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "20aa3aea-f1f6-435c-a511-d4e8db047c6d",
"name": "Set social media array",
"type": "n8n-nodes-base.set",
"position": [
1800,
720
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a6e109b7-9333-44e8-aa13-590aeb91a56b",
"name": "social_media",
"type": "array",
"value": "={{ $json.output.social_media }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "53f64ebf-8d9f-4718-9a33-aaae06e9cf9a",
"name": "Merge all data",
"type": "n8n-nodes-base.merge",
"position": [
2040,
620
],
"parameters": {
"mode": "combine",
"options": {},
"combinationMode": "mergeByPosition"
},
"typeVersion": 2.1
},
{
"id": "e38e590e-cc1c-485f-b6c4-e7631f1c8381",
"name": "Insert new row",
"type": "n8n-nodes-base.supabase",
"position": [
2260,
620
],
"parameters": {
"tableId": "companies_output",
"dataToSend": "autoMapInputData"
},
"credentials": {
"supabaseApi": {
"id": "TZeFGe5qO3z7X5Zk",
"name": "Supabase (workfloows@gmail.com)"
}
},
"typeVersion": 1
},
{
"id": "aac08494-b324-4307-a5c5-5d5345cc9070",
"name": "Convert HTML to Markdown",
"type": "n8n-nodes-base.markdown",
"position": [
2100,
1314
],
"parameters": {
"html": "={{ $json.data }}",
"options": {
"ignore": "a,img"
}
},
"typeVersion": 1
},
{
"id": "ca6733cb-973f-4e7b-9d52-48f1af2e08e3",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
940
],
"parameters": {
"color": 5,
"width": 157.8125,
"height": 166.55000000000004,
"content": ""
},
"typeVersion": 1
},
{
"id": "4acd71c9-9e31-43fc-bda6-66d6a057306b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
940
],
"parameters": {
"color": 4,
"width": 157.8125,
"height": 166.55000000000004,
"content": ""
},
"typeVersion": 1
},
{
"id": "359adcd6-6bb9-4d64-8dde-6a45b0439fd6",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
1180
],
"parameters": {
"color": 5,
"width": 1117.5005339977713,
"height": 329.45390772033636,
"content": "### Text scraper tool\nThis tool is designed to return all text from the given webpage.\n\n💡 **Consider adding proxy for better crawling accuracy.**\n"
},
"typeVersion": 1
},
{
"id": "84133903-dcec-4c0c-8684-fdeb49f5702d",
"name": "Retrieve URLs",
"type": "n8n-nodes-base.html",
"position": [
2120,
1700
],
"parameters": {
"options": {},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "output",
"cssSelector": "a",
"returnArray": true,
"returnValue": "attribute"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "2ebffed6-5517-47ff-9fcd-5ce503aa3b63",
"name": "Split out URLs",
"type": "n8n-nodes-base.splitOut",
"position": [
2340,
1700
],
"parameters": {
"options": {},
"fieldToSplitOut": "output"
},
"typeVersion": 1
},
{
"id": "215da9b2-0c0d-4d0e-b5f9-9887be75b0c4",
"name": "Remove duplicated",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
2780,
1700
],
"parameters": {
"compare": "selectedFields",
"options": {},
"fieldsToCompare": "href"
},
"typeVersion": 1
},
{
"id": "55825a1c-9351-413c-858a-c44cd3078f11",
"name": "Set domain to path",
"type": "n8n-nodes-base.set",
"position": [
3000,
1700
],
"parameters": {
"include": "selected",
"options": {},
"assignments": {
"assignments": [
{
"id": "04ced063-09f0-496c-9b28-b8095f9e2297",
"name": "href",
"type": "string",
"value": "={{ $json.href.startsWith(\"/\") ? $('Add protocool to domain (URL)').item.json[\"domain\"] + $json.href : $json.href }}"
}
]
},
"includeFields": "title",
"includeOtherFields": true
},
"typeVersion": 3.3
},
{
"id": "57858d59-2727-4291-9dc6-238101de25ea",
"name": "Filter out invalid URLs",
"type": "n8n-nodes-base.filter",
"position": [
3220,
1700
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d01ea6a8-7e75-40d4-98f2-25d42b245f36",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.href.isUrl() }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "0e487a35-8a6c-48f7-9048-fe66a5a346e8",
"name": "Aggregate URLs",
"type": "n8n-nodes-base.aggregate",
"position": [
3440,
1700
],
"parameters": {
"include": "specifiedFields",
"options": {},
"aggregate": "aggregateAllItemData",
"fieldsToInclude": "title,href"
},
"typeVersion": 1
},
{
"id": "0062af28-8727-4ed4-b283-e250146c2085",
"name": "Filter out empty hrefs",
"type": "n8n-nodes-base.filter",
"position": [
2560,
1700
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5b9b7353-bd04-4af2-9480-8de135ff4223",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.href }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "995e04f2-f5e3-48b8-879e-913f3a9fb657",
"name": "Set domain (text)",
"type": "n8n-nodes-base.set",
"position": [
1460,
1314
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "253c2b17-c749-4f0a-93e8-5ff74f1ce49b",
"name": "domain",
"type": "string",
"value": "={{ $json.query }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "c88f1008-00f8-4285-b595-a936e1f925a5",
"name": "Add protocool to domain (text)",
"type": "n8n-nodes-base.set",
"position": [
1660,
1314
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ed0f1505-82b6-4393-a0d8-088055137ec9",
"name": "domain",
"type": "string",
"value": "={{ $json.domain.startsWith(\"http\") ? $json.domain : \"http://\" + $json.domain }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "3bc68a89-8bab-423a-b4bf-4739739aeb07",
"name": "Get website (text)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1880,
1314
],
"parameters": {
"url": "={{ $json.domain }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "9d4782c3-872b-4e3c-9f8c-02cfea7a8ff2",
"name": "Set response (text)",
"type": "n8n-nodes-base.set",
"position": [
2320,
1314
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2b1c7ff8-06a7-448b-99b7-5ede4b2e0bf0",
"name": "response",
"type": "string",
"value": "={{ $json.data }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "2b6ffbd9-892d-4246-b47c-86ad51362ac9",
"name": "Set domain (URL)",
"type": "n8n-nodes-base.set",
"position": [
1460,
1700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "253c2b17-c749-4f0a-93e8-5ff74f1ce49b",
"name": "domain",
"type": "string",
"value": "={{ $json.query }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "2477677e-262e-45a3-99c3-06607b5ae270",
"name": "Get website (URL)",
"type": "n8n-nodes-base.httpRequest",
"position": [
1900,
1700
],
"parameters": {
"url": "={{ $json.domain }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "4f84eb31-7ad4-4b10-8043-b474fc7f367a",
"name": "Set response (URL)",
"type": "n8n-nodes-base.set",
"position": [
3660,
1700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "53c1c016-7983-4eba-a91d-da2a0523d805",
"name": "response",
"type": "string",
"value": "={{ JSON.stringify($json.data) }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "2d2288dd-2ab5-41a1-984c-ff7c5bbab8d1",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1420,
1560
],
"parameters": {
"color": 4,
"width": 2467.2678721043376,
"height": 328.79842054012374,
"content": "### URL scraper tool\nThis tool is designed to return all links (URLs) from the given webpage.\n\n💡 **Consider adding proxy for better crawling accuracy.**"
},
"typeVersion": 1
},
{
"id": "61c1b30f-38e5-44a5-a8be-edd4df1b13e5",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
720,
400
],
"parameters": {
"width": 221.7729148148145,
"height": 400.16865185185225,
"content": "### Get companies from database\nRetrieve names and websites of companies from Supabase table to process crawling.\n\n💡 **You can replace Supabase with other database of your choice.**"
},
"typeVersion": 1
},
{
"id": "b6c6643a-4450-4576-b9c3-e28bc9ebed5d",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
980,
429.32034814814835
],
"parameters": {
"width": 221.7729148148145,
"height": 370.14757037037066,
"content": "### Set parameters for execution\nPass only `name` and `website` values from database. \n\n⚠️ **If you use other field namings, update this node.**"
},
"typeVersion": 1
},
{
"id": "52196e71-c2c2-4ec9-91ab-f7ebc9874d6c",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
536.6201859111013
],
"parameters": {
"width": 339.7128777777775,
"height": 328.4957622370491,
"content": "### Crawling agent (retrieve social media profile links)\nCrawl website to extract social media profile links and return them in unified JSON format.\n\n💡 **You can change type of retrieved data by editing prompt and parser schema.**"
},
"typeVersion": 1
},
{
"id": "ea11931b-c1c7-43c4-a728-f10479863e38",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
2200,
435.3819888888892
],
"parameters": {
"width": 221.7729148148145,
"height": 364.786662962963,
"content": "### Insert data to database\nAdd new rows in database table with extracted data.\n\n💡 **You can replace Supabase with other database of your choice.**"
},
"typeVersion": 1
},
{
"id": "bc3d3337-a5b9-45ec-bb73-810cea9c0e73",
"name": "Add protocool to domain (URL)",
"type": "n8n-nodes-base.set",
"position": [
1680,
1700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ed0f1505-82b6-4393-a0d8-088055137ec9",
"name": "domain",
"type": "string",
"value": "={{ $json.domain.startsWith(\"http\") ? $json.domain : \"http://\" + $json.domain }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "db91703c-0133-4030-a9b5-fc3ab4331784",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
660
],
"parameters": {
"color": 3,
"width": 369.60264559047334,
"height": 256.26672065702303,
"content": "## ⚠️ Note\n\n1. Complete video guide for this workflow is available [on my YouTube](https://youtu.be/2W09puFZwtY). \n2. Remember to add your credentials and configure nodes.\n3. If you like this workflow, please subscribe to [my YouTube channel](https://www.youtube.com/@workfloows) and/or [my newsletter](https://workfloows.com/).\n\n**Thank you for your support!**"
},
"typeVersion": 1
},
{
"id": "54530733-f8dc-44c7-a645-6f279e9a2c21",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
420
],
"parameters": {
"color": 7,
"width": 369.93062670813185,
"height": 212.09880341753203,
"content": "## Autonomous AI crawler\nThis workflow autonomously navigates through given websites and retrieves social media profile links. \n\n💡 **You can modify this workflow to retrieve other type of data (e.g. contact details or company profile summary).**"
},
"typeVersion": 1
},
{
"id": "b43aee3c-47b5-47fd-89c4-7d213b26b4ca",
"name": "Crawl website",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1400,
720
],
"parameters": {
"text": "=Retrieve social media profile URLs from this website: {{ $json.website }}",
"options": {
"systemMessage": "You are an automated web crawler tasked with extracting social media URLs from a webpage provided by the user. You have access to a text retrieval tool to gather all text content from the page and a URL retrieval tool to identify and navigate through links on the page. Utilize the URLs retrieved to crawl additional pages. Your objective is to provide a unified JSON output containing the extracted data (links to all possible social media profiles from the website)."
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 1.6
}
],
"pinData": {
"Get companies": [
{
"id": 1,
"name": "n8n",
"website": "https://n8n.io"
}
]
},
"connections": {
"Text": {
"ai_tool": [
[
{
"node": "Crawl website",
"type": "ai_tool",
"index": 0
}
]
]
},
"URLs": {
"ai_tool": [
[
{
"node": "Crawl website",
"type": "ai_tool",
"index": 0
}
]
]
},
"JSON Parser": {
"ai_outputParser": [
[
{
"node": "Crawl website",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Crawl website": {
"main": [
[
{
"node": "Set social media array",
"type": "main",
"index": 0
}
]
]
},
"Get companies": {
"main": [
[
{
"node": "Select company name and website",
"type": "main",
"index": 0
}
]
]
},
"Retrieve URLs": {
"main": [
[
{
"node": "Split out URLs",
"type": "main",
"index": 0
}
]
]
},
"Aggregate URLs": {
"main": [
[
{
"node": "Set response (URL)",
"type": "main",
"index": 0
}
]
]
},
"Merge all data": {
"main": [
[
{
"node": "Insert new row",
"type": "main",
"index": 0
}
]
]
},
"Split out URLs": {
"main": [
[
{
"node": "Filter out empty hrefs",
"type": "main",
"index": 0
}
]
]
},
"Execute workflow": {
"main": [
[
{
"node": "Get companies",
"type": "main",
"index": 0
}
]
]
},
"Set domain (URL)": {
"main": [
[
{
"node": "Add protocool to domain (URL)",
"type": "main",
"index": 0
}
]
]
},
"Get website (URL)": {
"main": [
[
{
"node": "Retrieve URLs",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Crawl website",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Remove duplicated": {
"main": [
[
{
"node": "Set domain to path",
"type": "main",
"index": 0
}
]
]
},
"Set domain (text)": {
"main": [
[
{
"node": "Add protocool to domain (text)",
"type": "main",
"index": 0
}
]
]
},
"Get website (text)": {
"main": [
[
{
"node": "Convert HTML to Markdown",
"type": "main",
"index": 0
}
]
]
},
"Set domain to path": {
"main": [
[
{
"node": "Filter out invalid URLs",
"type": "main",
"index": 0
}
]
]
},
"Filter out empty hrefs": {
"main": [
[
{
"node": "Remove duplicated",
"type": "main",
"index": 0
}
]
]
},
"Set social media array": {
"main": [
[
{
"node": "Merge all data",
"type": "main",
"index": 1
}
]
]
},
"Filter out invalid URLs": {
"main": [
[
{
"node": "Aggregate URLs",
"type": "main",
"index": 0
}
]
]
},
"Convert HTML to Markdown": {
"main": [
[
{
"node": "Set response (text)",
"type": "main",
"index": 0
}
]
]
},
"Map company name and website": {
"main": [
[
{
"node": "Merge all data",
"type": "main",
"index": 0
}
]
]
},
"Add protocool to domain (URL)": {
"main": [
[
{
"node": "Get website (URL)",
"type": "main",
"index": 0
}
]
]
},
"Add protocool to domain (text)": {
"main": [
[
{
"node": "Get website (text)",
"type": "main",
"index": 0
}
]
]
},
"Select company name and website": {
"main": [
[
{
"node": "Crawl website",
"type": "main",
"index": 0
},
{
"node": "Map company name and website",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Build Your Own Image Search Using AI Object Detection, CDN and ElasticSearchBuild Your Own Image Search Using AI Object Detection, CDN and ElasticSearch.json
================================================
{
"meta": {
"instanceId": "26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e"
},
"nodes": [
{
"id": "6359f725-1ede-4b05-bc19-05a7e85c0865",
"name": "When clicking \"Test workflow\"",
"type": "n8n-nodes-base.manualTrigger",
"position": [
680,
292
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9e1e61c7-f5fd-4e8a-99a6-ccc5a24f5528",
"name": "Fetch Source Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
1000,
292
],
"parameters": {
"url": "={{ $json.source_image }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "9b1b94cf-3a7d-4c43-ab6c-8df9824b5667",
"name": "Split Out Results Only",
"type": "n8n-nodes-base.splitOut",
"position": [
1428,
323
],
"parameters": {
"options": {},
"fieldToSplitOut": "result"
},
"typeVersion": 1
},
{
"id": "fcbaf6c3-2aee-4ea1-9c5e-2833dd7a9f50",
"name": "Filter Score >= 0.9",
"type": "n8n-nodes-base.filter",
"position": [
1608,
323
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "367d83ef-8ecf-41fe-858c-9bfd78b0ae9f",
"operator": {
"type": "number",
"operation": "gte"
},
"leftValue": "={{ $json.score }}",
"rightValue": 0.9
}
]
}
},
"typeVersion": 2
},
{
"id": "954ce7b0-ef82-4203-8706-17cfa5e5e3ff",
"name": "Crop Object From Image",
"type": "n8n-nodes-base.editImage",
"position": [
2080,
432
],
"parameters": {
"width": "={{ $json.box.xmax - $json.box.xmin }}",
"height": "={{ $json.box.ymax - $json.box.ymin }}",
"options": {
"format": "jpeg",
"fileName": "={{ $binary.data.fileName.split('.')[0].urlEncode()+'-'+$json.label.urlEncode() + '-' + $itemIndex }}.jpg"
},
"operation": "crop",
"positionX": "={{ $json.box.xmin }}",
"positionY": "={{ $json.box.ymin }}"
},
"typeVersion": 1
},
{
"id": "40027456-4bf9-4eea-8d71-aa28e69b29e5",
"name": "Set Variables",
"type": "n8n-nodes-base.set",
"position": [
840,
292
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9e95d951-8530-4a80-bd00-6bb55623a71f",
"name": "CLOUDFLARE_ACCOUNT_ID",
"type": "string",
"value": ""
},
{
"id": "66807a90-63a1-4d4e-886e-e8abf3019a34",
"name": "model",
"type": "string",
"value": "@cf/facebook/detr-resnet-50"
},
{
"id": "a13ccde6-e6e3-46f4-afa3-2134af7bc765",
"name": "source_image",
"type": "string",
"value": "https://images.pexels.com/photos/2293367/pexels-photo-2293367.jpeg?auto=compress&cs=tinysrgb&w=600"
},
{
"id": "0734fc55-b414-47f7-8b3e-5c880243f3ed",
"name": "elasticsearch_index",
"type": "string",
"value": "n8n-image-search"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "c3d8c5e3-546e-472c-9e6e-091cf5cee3c3",
"name": "Use Detr-Resnet-50 Object Classification",
"type": "n8n-nodes-base.httpRequest",
"position": [
1248,
324
],
"parameters": {
"url": "=https://api.cloudflare.com/client/v4/accounts/{{ $('Set Variables').item.json.CLOUDFLARE_ACCOUNT_ID }}/ai/run/{{ $('Set Variables').item.json.model }}",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"authentication": "predefinedCredentialType",
"inputDataFieldName": "data",
"nodeCredentialType": "cloudflareApi"
},
"credentials": {
"cloudflareApi": {
"id": "qOynkQdBH48ofOSS",
"name": "Cloudflare account"
}
},
"typeVersion": 4.2
},
{
"id": "3c7aa2fc-9ca1-41ba-a10d-aa5930d45f18",
"name": "Upload to Cloudinary",
"type": "n8n-nodes-base.httpRequest",
"position": [
2380,
380
],
"parameters": {
"url": "https://api.cloudinary.com/v1_1/daglih2g8/image/upload",
"method": "POST",
"options": {},
"sendBody": true,
"sendQuery": true,
"contentType": "multipart-form-data",
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "file",
"parameterType": "formBinaryData",
"inputDataFieldName": "data"
}
]
},
"genericAuthType": "httpQueryAuth",
"queryParameters": {
"parameters": [
{
"name": "upload_preset",
"value": "n8n-workflows-preset"
}
]
}
},
"credentials": {
"httpQueryAuth": {
"id": "sT9jeKzZiLJ3bVPz",
"name": "Cloudinary API"
}
},
"typeVersion": 4.2
},
{
"id": "3c4e1f04-a0ba-4cce-b82a-aa3eadc4e7e1",
"name": "Create Docs In Elasticsearch",
"type": "n8n-nodes-base.elasticsearch",
"position": [
2580,
380
],
"parameters": {
"indexId": "={{ $('Set Variables').item.json.elasticsearch_index }}",
"options": {},
"fieldsUi": {
"fieldValues": [
{
"fieldId": "image_url",
"fieldValue": "={{ $json.secure_url.replace('upload','upload/f_auto,q_auto') }}"
},
{
"fieldId": "source_image_url",
"fieldValue": "={{ $('Set Variables').item.json.source_image }}"
},
{
"fieldId": "label",
"fieldValue": "={{ $('Crop Object From Image').item.json.label }}"
},
{
"fieldId": "metadata",
"fieldValue": "={{ JSON.stringify(Object.assign($('Crop Object From Image').item.json, { filename: $json.original_filename })) }}"
}
]
},
"operation": "create",
"additionalFields": {}
},
"credentials": {
"elasticsearchApi": {
"id": "dRuuhAgS7AF0mw0S",
"name": "Elasticsearch account"
}
},
"typeVersion": 1
},
{
"id": "292c9821-c123-44fa-9ba1-c37bf84079bc",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
120
],
"parameters": {
"color": 7,
"width": 541.1455500767354,
"height": 381.6388867600897,
"content": "## 1. Get Source Image\n[Read more about setting variables for your workflow](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set)\n\nFor this demo, we'll manually define an image to process. In production however, this image can come from a variety of sources such as drives, webhooks and more."
},
"typeVersion": 1
},
{
"id": "863271dc-fb9d-4211-972d-6b57336073b4",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1180,
80
],
"parameters": {
"color": 7,
"width": 579.7748008857744,
"height": 437.4680103498263,
"content": "## 2. Use Detr-Resnet-50 Object Classification\n[Learn more about Cloudflare Workers AI](https://developers.cloudflare.com/workers-ai/)\n\nNot all AI workflows need an LLM! As in this example, we're using a non-LLM vision model to parse the source image and return what objects are contained within. The image search feature we're building will be based on the objects in the image making for a much more granular search via object association.\n\nWe'll use the Cloudflare Workers AI service which conveniently provides this model via API use."
},
"typeVersion": 1
},
{
"id": "b73b45da-0436-4099-b538-c6b3b84822f2",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1800,
260
],
"parameters": {
"color": 7,
"width": 466.35460775498495,
"height": 371.9272151757119,
"content": "## 3. Crop Objects Out of Source Image\n[Read more about Editing Images in n8n](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.editimage)\n\nWith our objects identified by their bounding boxes, we can \"cut\" them out of the source image as separate images."
},
"typeVersion": 1
},
{
"id": "465bd842-8a35-49d8-a9ff-c30d164620db",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
2300,
180
],
"parameters": {
"color": 7,
"width": 478.20345439832454,
"height": 386.06196032653685,
"content": "## 4. Index Object Images In ElasticSearch\n[Read more about using ElasticSearch](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.elasticsearch)\n\nBy storing the newly created object images externally and indexing them in Elasticsearch, we now have a foundation for our Image Search service which queries by object association."
},
"typeVersion": 1
},
{
"id": "6a04b4b5-7830-410d-9b5b-79acb0b1c78b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1800,
-220
],
"parameters": {
"color": 7,
"width": 328.419768654291,
"height": 462.65463700396174,
"content": "Fig 1. Result of Classification\n"
},
"typeVersion": 1
},
{
"id": "8f607951-ba41-4362-8323-e8b4b96ad122",
"name": "Fetch Source Image Again",
"type": "n8n-nodes-base.httpRequest",
"position": [
1880,
432
],
"parameters": {
"url": "={{ $('Set Variables').item.json.source_image }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "6933f67d-276b-4908-8602-654aa352a68b",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
120
],
"parameters": {
"width": 359.6648027457353,
"height": 352.41026669883723,
"content": "## Try It Out!\n### This workflow does the following:\n* Downloads an image\n* Uses an object classification AI model to identify objects in the image.\n* Crops the objects out from the original image into new image files.\n* Indexes the image's object in an Elasticsearch Database to enable image search.\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Hacking!"
},
"typeVersion": 1
},
{
"id": "35615ed5-43e8-43f0-95fe-1f95a1177d69",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
800,
280
],
"parameters": {
"width": 172.9365918827757,
"height": 291.6881468483679,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n🚨**Required**\n* Set your variables here first!"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Set Variables": {
"main": [
[
{
"node": "Fetch Source Image",
"type": "main",
"index": 0
}
]
]
},
"Fetch Source Image": {
"main": [
[
{
"node": "Use Detr-Resnet-50 Object Classification",
"type": "main",
"index": 0
}
]
]
},
"Filter Score >= 0.9": {
"main": [
[
{
"node": "Fetch Source Image Again",
"type": "main",
"index": 0
}
]
]
},
"Upload to Cloudinary": {
"main": [
[
{
"node": "Create Docs In Elasticsearch",
"type": "main",
"index": 0
}
]
]
},
"Crop Object From Image": {
"main": [
[
{
"node": "Upload to Cloudinary",
"type": "main",
"index": 0
}
]
]
},
"Split Out Results Only": {
"main": [
[
{
"node": "Filter Score >= 0.9",
"type": "main",
"index": 0
}
]
]
},
"Fetch Source Image Again": {
"main": [
[
{
"node": "Crop Object From Image",
"type": "main",
"index": 0
}
]
]
},
"When clicking \"Test workflow\"": {
"main": [
[
{
"node": "Set Variables",
"type": "main",
"index": 0
}
]
]
},
"Use Detr-Resnet-50 Object Classification": {
"main": [
[
{
"node": "Split Out Results Only",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Build a Financial Documents Assistant using Qdrant and Mistral.ai.json
================================================
{
"meta": {
"instanceId": "26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e"
},
"nodes": [
{
"id": "c5525f47-4d91-4b98-87bb-566b90da64a1",
"name": "Local File Trigger",
"type": "n8n-nodes-base.localFileTrigger",
"position": [
660,
700
],
"parameters": {
"path": "/home/node/host_mount/local_file_search",
"events": [
"add",
"change",
"unlink"
],
"options": {
"awaitWriteFinish": true
},
"triggerOn": "folder"
},
"typeVersion": 1
},
{
"id": "804334d6-e34d-40d1-9555-b331ffe66f6f",
"name": "When clicking \"Test workflow\"",
"type": "n8n-nodes-base.manualTrigger",
"position": [
664.5766613599001,
881.8474780113352
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7ab0e284-b667-4d1f-8ceb-fb05e4081a06",
"name": "Set Variables",
"type": "n8n-nodes-base.set",
"position": [
840,
700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "35ea70c4-8669-4975-a68d-bbaa094713c0",
"name": "directory",
"type": "string",
"value": "/home/node/BankStatements"
},
{
"id": "1d081d19-ff4e-462a-9cbe-7af2244bf87f",
"name": "file_added",
"type": "string",
"value": "={{ $json.event === 'add' && $json.path || ''}}"
},
{
"id": "18f8dc03-51ca-48c7-947f-87ce8e1979bf",
"name": "file_changed",
"type": "string",
"value": "={{ $json.event === 'change' && $json.path || '' }}"
},
{
"id": "65074ff7-037b-4b3b-b2c3-8a61755ab43b",
"name": "file_deleted",
"type": "string",
"value": "={{ $json.event === 'unlink' && $json.path || '' }}"
},
{
"id": "9a1902e7-f94d-4d1f-9006-91c67354d3e8",
"name": "qdrant_collection",
"type": "string",
"value": "local_file_search"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "76173972-ceca-43a4-b85f-00b41f774304",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
460
],
"parameters": {
"color": 7,
"width": 665.0909497859384,
"height": 596.8351502261468,
"content": "## Step 1. Select the target folder\n[Read more about local file trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.localfiletrigger)\n\nIn this workflow, we'll monitor a specific folder on disk that n8n has access to. Since we're using docker, we can either use the n8n volume or mount a folder from the host machine.\n\nThe local file trigger is useful to execute the workflow whenever changes are made to our target folder."
},
"typeVersion": 1
},
{
"id": "eda839f7-dde4-4d1f-9fe6-692df4ac7282",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
184.57666135990007,
461.84747801133517
],
"parameters": {
"width": 372.51107341403605,
"height": 356.540665091993,
"content": "## Try It Out!\n### This workflow does the following:\n* Monitors a target folder for changes using the local file trigger\n* Synchronises files in the target folder with their vectors in Qdrant\n* Mistral AI is used to create a Q&A AI agent on all files in the target folder\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Hacking!"
},
"typeVersion": 1
},
{
"id": "f82f6de0-af8f-4fdf-a733-f59ba4fed02f",
"name": "Read File",
"type": "n8n-nodes-base.readWriteFile",
"position": [
1340,
1120
],
"parameters": {
"options": {},
"fileSelector": "={{ $json.file_added }}"
},
"typeVersion": 1
},
{
"id": "7354a080-051b-479f-97b1-49cc0c14c9d8",
"name": "Embeddings Mistral Cloud",
"type": "@n8n/n8n-nodes-langchain.embeddingsMistralCloud",
"position": [
1720,
1280
],
"parameters": {
"options": {}
},
"credentials": {
"mistralCloudApi": {
"id": "EIl2QxhXAS9Hkg37",
"name": "Mistral Cloud account"
}
},
"typeVersion": 1
},
{
"id": "a1ad45ff-a882-4aed-82e2-cad2483cf4e8",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1820,
1280
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "filter_by_filename",
"value": "={{ $json.file_location }}"
},
{
"name": "filter_by_created_month",
"value": "={{ $now.year + '-' + $now.monthShort }}"
},
{
"name": "filter_by_created_week",
"value": "={{ $now.year + '-' + $now.monthShort + '-W' + $now.weekNumber }}"
}
]
}
},
"jsonData": "={{ $json.data }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "0b0e29b9-8873-4074-94dc-9f0364c28835",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1840,
1400
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "c0555ba6-a1bd-4aa9-a340-a9c617f8e6db",
"name": "Prepare Embedding Document",
"type": "n8n-nodes-base.set",
"position": [
1520,
1120
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "41a1d4ca-e5a5-4fb9-b249-8796ae759b33",
"name": "data",
"type": "string",
"value": "=## file location\n{{ [$json.directory, $json.fileName].join('/') }}\n## file created\n{{ $now.toISO() }}\n## file contents\n{{ $input.item.binary.data.data.base64Decode() }}"
},
{
"id": "c091704d-b81c-448b-8c90-156ef568b871",
"name": "file_location",
"type": "string",
"value": "={{ [$json.directory, $json.fileName].join('/') }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "ffe8c363-0809-4d21-aa8f-34b0fc2dc57f",
"name": "Chat Trigger",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
2280,
680
],
"webhookId": "37587fe0-b8db-4012-90a7-1f65b9bfd0df",
"parameters": {},
"typeVersion": 1
},
{
"id": "8d958669-60be-4bb2-80fc-2a6c7c7bfae6",
"name": "Question and Answer Chain",
"type": "@n8n/n8n-nodes-langchain.chainRetrievalQa",
"position": [
2500,
680
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "f143e438-8176-4923-a866-3f9a2a16793d",
"name": "Mistral Cloud Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatMistralCloud",
"position": [
2500,
840
],
"parameters": {
"model": "mistral-small-2402",
"options": {}
},
"credentials": {
"mistralCloudApi": {
"id": "EIl2QxhXAS9Hkg37",
"name": "Mistral Cloud account"
}
},
"typeVersion": 1
},
{
"id": "06dd8f4c-3b66-43e0-85c8-ec222e275f87",
"name": "Vector Store Retriever",
"type": "@n8n/n8n-nodes-langchain.retrieverVectorStore",
"position": [
2620,
840
],
"parameters": {},
"typeVersion": 1
},
{
"id": "2fdabcb5-a7a7-4e02-8c1b-9190e2e52385",
"name": "Embeddings Mistral Cloud1",
"type": "@n8n/n8n-nodes-langchain.embeddingsMistralCloud",
"position": [
2620,
1080
],
"parameters": {
"options": {}
},
"credentials": {
"mistralCloudApi": {
"id": "EIl2QxhXAS9Hkg37",
"name": "Mistral Cloud account"
}
},
"typeVersion": 1
},
{
"id": "e5664534-de07-481f-87dd-68d7d0715baa",
"name": "Remap for File_Added Flow",
"type": "n8n-nodes-base.set",
"position": [
1920,
700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "840219e1-ed47-4b00-83fd-6b3c0bd71650",
"name": "file_added",
"type": "string",
"value": "={{ $('Set Variables').item.json.file_changed }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "1fd14832-aafe-4d72-b4f2-7afc72df97dc",
"name": "Search For Existing Point",
"type": "n8n-nodes-base.httpRequest",
"position": [
1340,
280
],
"parameters": {
"url": "=http://qdrant:6333/collections/{{ $('Set Variables').item.json.qdrant_collection }}/points/scroll",
"method": "POST",
"options": {},
"jsonBody": "={\n \"filter\": {\n \"must\": [\n {\n \"key\": \"metadata.filter_by_filename\",\n \"match\": {\n \"value\": \"{{ $json.file_changed }}\"\n }\n }\n ]\n },\n \"limit\": 1,\n \"with_payload\": false,\n \"with_vector\": false\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "b5fa817f-82d6-41dd-9817-4c1dd9137b76",
"name": "Has Existing Point?",
"type": "n8n-nodes-base.if",
"position": [
1520,
280
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0392bac0-8fb5-406b-b59f-575edf5ab30d",
"operator": {
"type": "array",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.result.points }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "b0fa4fa4-5d1b-4a12-b8ba-a10d71f31f94",
"name": "Delete Existing Point",
"type": "n8n-nodes-base.httpRequest",
"position": [
1720,
700
],
"parameters": {
"url": "=http://qdrant:6333/collections/{{ $('Set Variables').item.json.qdrant_collection }}/points/delete",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "points",
"value": "={{ $json.result.points.map(point => point.id) }}"
}
]
},
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "5408adfe-4d6b-407c-aac7-e87c9b1a1592",
"name": "Search For Existing Point1",
"type": "n8n-nodes-base.httpRequest",
"position": [
1340,
700
],
"parameters": {
"url": "=http://qdrant:6333/collections/{{ $('Set Variables').item.json.qdrant_collection }}/points/scroll",
"method": "POST",
"options": {},
"jsonBody": "={\n \"filter\": {\n \"must\": [\n {\n \"key\": \"metadata.filter_by_filename\",\n \"match\": {\n \"value\": \"{{ $json.file_changed }}\"\n }\n }\n ]\n },\n \"limit\": 1,\n \"with_payload\": false,\n \"with_vector\": false\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "fac43587-0d24-4d6e-a0d5-8cc8f9615967",
"name": "Has Existing Point?1",
"type": "n8n-nodes-base.if",
"position": [
1520,
700
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0392bac0-8fb5-406b-b59f-575edf5ab30d",
"operator": {
"type": "array",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.result.points }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "010baacd-fac1-4cc1-86bf-9d6ef11916fe",
"name": "Delete Existing Point1",
"type": "n8n-nodes-base.httpRequest",
"position": [
1700,
280
],
"parameters": {
"url": "=http://qdrant:6333/collections/{{ $('Set Variables').item.json.qdrant_collection }}/points/delete",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "points",
"value": "={{ $json.result.points.map(point => point.id) }}"
}
]
},
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "2d6fb29c-2fac-41de-9ad0-cc781b246378",
"name": "Handle File Event",
"type": "n8n-nodes-base.switch",
"position": [
1000,
700
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "file_deleted",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a1f6d86a-9805-4d0e-ac70-90c9cf0ad339",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.file_deleted }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "file_changed",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d15cde67-b5b0-4676-b4fb-ead749147392",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.file_changed }}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "file_added",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.file_added }}",
"rightValue": ""
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3
},
{
"id": "da91b2aa-613c-4e3e-af83-fbd3bb7e922e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
123.92779403575491
],
"parameters": {
"color": 7,
"width": 847.032584995578,
"height": 335.8400964393443,
"content": "## Step 2. When files are removed, the vector point is cleared.\n[Learn how to delete points using the Qdrant API](https://qdrant.tech/documentation/concepts/points/#delete-points)\n\nTo keep our vectorstore relevant, we'll implement a simple synchronisation system whereby documents deleted from the local file folder are also purged from Qdrant. This can be simply achieved using Qdrant APIs."
},
"typeVersion": 1
},
{
"id": "2f9f5b2b-6504-4b27-a0c4-f3373df352df",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
480
],
"parameters": {
"color": 7,
"width": 855.9952607674757,
"height": 433.01782147687817,
"content": "## Step 3. When files are updated, the vector point is updated.\n[Learn how to delete points using the Qdrant API](https://qdrant.tech/documentation/concepts/points/#delete-points)\n\nSimilarly to the files deleted branch, when we encounter a change in a file we'll update the matching vector point in Qdrant to ensure our vector store stays relevant. Here, we can achieve this my deleting the existing vector point and creating it anew with the updated bank statement."
},
"typeVersion": 1
},
{
"id": "38128b7f-d0f2-405c-a7de-662df812c344",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
940
],
"parameters": {
"color": 7,
"width": 846.8204626627492,
"height": 629.9714759033081,
"content": "## Step 4. When new files are added, add them to Qdrant Vectorstore.\n[Read more about the Qdrant node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreqdrant)\n\nUsing Qdrant, we'll able to create a simple yet powerful RAG based application for our bank statements. One of Qdrant's most powerful features is its filtering system, we'll use it to manage the synchronisation of our local file system and Qdrant."
},
"typeVersion": 1
},
{
"id": "e85e2a30-e775-42fe-a12a-ac5de4eb4673",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2180,
491.43199269284935
],
"parameters": {
"color": 7,
"width": 744.4578330639196,
"height": 759.7908149448928,
"content": "## Step 5. Create AI Agent expert on historic bank statements \n[Read more about the Question & Answer Chain](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainretrievalqa)\n\nFinally, let's use a Question & Answer AI node to combine the Mistral AI model and Qdrant as the vector store retriever to create a local expert for all our bank statements questions. "
},
"typeVersion": 1
},
{
"id": "7b29b0b9-ffee-4456-b036-9b39400d2b31",
"name": "Qdrant Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
1700,
1120
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "id",
"value": "={{ $('Set Variables').item.json.qdrant_collection }}"
}
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 1
},
{
"id": "1857bebb-b492-415e-96c8-235329bfd28a",
"name": "Qdrant Vector Store1",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
2620,
960
],
"parameters": {
"qdrantCollection": {
"__rl": true,
"mode": "id",
"value": "BankStatements"
}
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Read File": {
"main": [
[
{
"node": "Prepare Embedding Document",
"type": "main",
"index": 0
}
]
]
},
"Chat Trigger": {
"main": [
[
{
"node": "Question and Answer Chain",
"type": "main",
"index": 0
}
]
]
},
"Set Variables": {
"main": [
[
{
"node": "Handle File Event",
"type": "main",
"index": 0
}
]
]
},
"Handle File Event": {
"main": [
[
{
"node": "Search For Existing Point",
"type": "main",
"index": 0
}
],
[
{
"node": "Search For Existing Point1",
"type": "main",
"index": 0
}
],
[
{
"node": "Read File",
"type": "main",
"index": 0
}
]
]
},
"Local File Trigger": {
"main": [
[
{
"node": "Set Variables",
"type": "main",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Has Existing Point?": {
"main": [
[
{
"node": "Delete Existing Point1",
"type": "main",
"index": 0
}
]
]
},
"Has Existing Point?1": {
"main": [
[
{
"node": "Delete Existing Point",
"type": "main",
"index": 0
}
]
]
},
"Qdrant Vector Store1": {
"ai_vectorStore": [
[
{
"node": "Vector Store Retriever",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Delete Existing Point": {
"main": [
[
{
"node": "Remap for File_Added Flow",
"type": "main",
"index": 0
}
]
]
},
"Vector Store Retriever": {
"ai_retriever": [
[
{
"node": "Question and Answer Chain",
"type": "ai_retriever",
"index": 0
}
]
]
},
"Embeddings Mistral Cloud": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Mistral Cloud Chat Model": {
"ai_languageModel": [
[
{
"node": "Question and Answer Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Embeddings Mistral Cloud1": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store1",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Remap for File_Added Flow": {
"main": [
[
{
"node": "Read File",
"type": "main",
"index": 0
}
]
]
},
"Search For Existing Point": {
"main": [
[
{
"node": "Has Existing Point?",
"type": "main",
"index": 0
}
]
]
},
"Prepare Embedding Document": {
"main": [
[
{
"node": "Qdrant Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Search For Existing Point1": {
"main": [
[
{
"node": "Has Existing Point?1",
"type": "main",
"index": 0
}
]
]
},
"When clicking \"Test workflow\"": {
"main": [
[
{
"node": "Set Variables",
"type": "main",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Build a Tax Code Assistant with Qdrant, Mistral.ai and OpenAI.json
================================================
{
"meta": {
"instanceId": "26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e"
},
"nodes": [
{
"id": "1bb3c94e-326e-41ca-82e4-102a598dba39",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-320,
300
],
"parameters": {},
"typeVersion": 1
},
{
"id": "751b283b-ea88-4fcd-ace3-3c86631f8876",
"name": "Embeddings Mistral Cloud",
"type": "@n8n/n8n-nodes-langchain.embeddingsMistralCloud",
"position": [
1760,
560
],
"parameters": {
"options": {}
},
"credentials": {
"mistralCloudApi": {
"id": "EIl2QxhXAS9Hkg37",
"name": "Mistral Cloud account"
}
},
"typeVersion": 1
},
{
"id": "f0851949-1036-4040-84df-61295cc5db74",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1900,
560
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "chapter",
"value": "={{ $('For Each Section...').item.json.chapter }}"
},
{
"name": "section",
"value": "={{ $('For Each Section...').item.json.label }}"
},
{
"name": "=title",
"value": "={{ $('For Each Section...').item.json.title }}"
},
{
"name": "content_order",
"value": "={{ $itemIndex }}"
}
]
}
},
"jsonData": "={{ $json.content }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "41d10b61-9fbe-446e-a65a-0db6e0116e5b",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1920,
680
],
"parameters": {
"options": {},
"chunkSize": 2000
},
"typeVersion": 1
},
{
"id": "a1ecb096-4d31-4993-b801-ca3f09a9edc7",
"name": "Get Tax Code Zip File",
"type": "n8n-nodes-base.httpRequest",
"position": [
-20,
340
],
"parameters": {
"url": "https://statutes.capitol.texas.gov/Docs/Zips/TX.pdf.zip",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "cf983315-fe2a-43c1-8dc6-b17a217b845e",
"name": "Extract Zip Files",
"type": "n8n-nodes-base.compression",
"position": [
140,
340
],
"parameters": {},
"typeVersion": 1.1
},
{
"id": "8d02dd80-d14a-4e56-ab40-f2c4a445c57b",
"name": "Files as Items",
"type": "n8n-nodes-base.splitOut",
"position": [
300,
340
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "$binary"
},
"typeVersion": 1
},
{
"id": "038060dc-e01d-40ae-878d-5043bc36ab91",
"name": "Extract PDF Contents",
"type": "n8n-nodes-base.extractFromFile",
"position": [
560,
380
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "=file_{{ $itemIndex }}"
},
"typeVersion": 1
},
{
"id": "4a85003b-b988-467b-b1cb-29206cbed879",
"name": "Extract From Chapter",
"type": "n8n-nodes-base.set",
"position": [
740,
380
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "d791928a-d775-48cc-9004-a92cbe2403d3",
"name": "contents",
"type": "array",
"value": "={{\n $json.text\n .substring($json.text.search(/\\nSec\\.\\nA[0-9]{1,4}\\.[0-9]{1,5}\\.AA/), $json.text.length)\n .split(/\\nSec\\.\\nA[0-9]{1,2}\\.[0-9]{1,2}\\.AA/g)\n .filter(text => !text.isEmpty())\n .map(text => {\n const output = text.replaceAll('AA', ' ').replaceAll('\\nA', ' ');\n const title = output.substring(0, output.indexOf('.'));\n const content = output.substring(output.indexOf('.')+1, output.length).replaceAll('\\n', ' ').trim();\n return { title, content };\n })\n}}"
},
{
"id": "bc06641f-0b75-4a35-8752-78803231d5d6",
"name": "labels",
"type": "array",
"value": "={{\n $json.text\n .match(/\\nSec\\.\\nA[0-9]{1,4}\\.[0-9]{1,5}\\.AA/g)\n .map(text => ({\n label: text.replaceAll('AA', ' ')\n .replaceAll('\\nA', ' ')\n .replaceAll('\\n', '')\n .trim()\n }))\n}}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "ee338786-91df-4784-bd7e-f86c0e13ca26",
"name": "Map To Sections",
"type": "n8n-nodes-base.set",
"position": [
740,
520
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "60109e60-d760-45bb-be09-7cb2b5eb85bc",
"name": "section",
"type": "array",
"value": "={{\n $json.labels.map((label, idx) => ({\n label: label.label.match(/\\d.+/)[0].replace(/\\.$/, ''),\n title: $json.contents[idx].title,\n content: $json.contents[idx].content,\n chapter: $('Extract PDF Contents').first().json.info.Title,\n }))\n}}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "41c9899d-26d7-48af-9af2-8563ab0fb7e4",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
1313,
1200
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3a93c19b-09d9-4e38-8b0c-2008fc03f7fc",
"name": "Get Mistral Embeddings",
"type": "n8n-nodes-base.httpRequest",
"position": [
1660,
1060
],
"parameters": {
"url": "https://api.mistral.ai/v1/embeddings",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "model",
"value": "mistral-embed"
},
{
"name": "encoding_format",
"value": "float"
},
{
"name": "input",
"value": "={{ $json.query }}"
}
]
},
"nodeCredentialType": "mistralCloudApi"
},
"credentials": {
"mistralCloudApi": {
"id": "EIl2QxhXAS9Hkg37",
"name": "Mistral Cloud account"
}
},
"typeVersion": 4.2
},
{
"id": "1adc12bd-ba61-4f1a-b1f9-3f19a542e294",
"name": "Content Chunking @ 50k Chars",
"type": "n8n-nodes-base.set",
"position": [
1580,
400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "7753a4f4-3ec2-4c05-81df-3d5e8979a478",
"name": "=content",
"type": "array",
"value": "={{ new Array(Math.round($json.content.length / Math.min($json.content.length, 30000))).fill('').map((_,idx) => $json.content.substring(idx * 30000, idx * 50000 + 30000)) }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "ff8adce2-8f73-4a8f-b512-5aa560ca0954",
"name": "Split Out Chunks",
"type": "n8n-nodes-base.splitOut",
"position": [
1580,
580
],
"parameters": {
"options": {},
"fieldToSplitOut": "content"
},
"typeVersion": 1
},
{
"id": "5f08ce3c-240d-4c91-bb23-953866fd0361",
"name": "For Each Section...",
"type": "n8n-nodes-base.splitInBatches",
"position": [
1400,
280
],
"parameters": {
"options": {},
"batchSize": 5
},
"typeVersion": 3
},
{
"id": "6346cf67-7d93-4315-bb0d-2e016c9853b9",
"name": "Sections To List",
"type": "n8n-nodes-base.splitOut",
"position": [
940,
380
],
"parameters": {
"options": {},
"fieldToSplitOut": "section"
},
"typeVersion": 1
},
{
"id": "95e34952-03e2-40e3-a245-9da8c9e1f249",
"name": "Only Valid Sections",
"type": "n8n-nodes-base.filter",
"position": [
1100,
380
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "121e8f86-2ead-47e0-8e17-52d7c6ba8265",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.content }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "dfe1818f-93b7-4116-8a6e-dcb2e6c23fcf",
"name": "Use Qdrant Search API1",
"type": "n8n-nodes-base.httpRequest",
"position": [
1860,
1060
],
"parameters": {
"url": "=http://qdrant:6333/collections/texas_tax_codes/points/search",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "limit",
"value": "={{ 4 }}"
},
{
"name": "vector",
"value": "={{ $json.data[0].embedding }}"
},
{
"name": "with_payload",
"value": "={{ true }}"
}
]
},
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "588318e6-e188-4d99-9c11-39b2f3fb1c18",
"name": "Use Qdrant Scroll API",
"type": "n8n-nodes-base.httpRequest",
"position": [
1660,
1320
],
"parameters": {
"url": "=http://qdrant:6333/collections/texas_tax_codes/points/scroll",
"method": "POST",
"options": {
"pagination": {
"pagination": {
"parameters": {
"parameters": [
{
"name": "next_page_offset",
"type": "body",
"value": "={{ $response.body.result.next_page_offset }}"
}
]
},
"completeExpression": "={{ $response.body.result.next_page_offset === null }}",
"paginationCompleteWhen": "other"
}
}
},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "limit",
"value": "={{ 100 }}"
},
{
"name": "with_payload",
"value": "={{ true }}"
},
{
"name": "filter",
"value": "={{\n{\n \"must\": [\n ($json.query.section\n ? { \"key\": \"metadata.section\", \"match\": { \"value\": $json.query.section } }\n : { \"key\": \"metadata.chapter\", \"match\": { \"value\": $json.query.chapter } }\n )\n ]\n}\n}}"
}
]
},
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "bbf01344-c60e-42b3-8d7d-2bb360876d79",
"name": "Get Search Response",
"type": "n8n-nodes-base.set",
"position": [
1860,
1320
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "08ad2d6e-4ed1-409e-b89c-1f0c7fdf1b64",
"name": "response",
"type": "string",
"value": "=---\nchapter: {{ $json.result.points.first().payload.metadata.chapter }}\nsection: {{ $json.result.points.first().payload.metadata.section }}\ntitle: {{ $json.result.points.first().payload.metadata.title }}\n---\n{{ $json.result.points\n .toSorted((a,b) => (a.payload.metadata.content_order || 0) - (b.payload.metadata.content_order || 0))\n .map(point => point.payload.content).join('\\n') }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "3b23ff5e-158a-470f-a262-d001d52feeba",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-100,
183.38345554113084
],
"parameters": {
"color": 7,
"width": 571.4359274276384,
"height": 352.65642339230595,
"content": "## Step 1. Download the Tax Code PDF\n[Read more about handling Zip Files](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.compression/)\n\nLet's begin by pulling a zip file containing all the tax codes as separate PDF files. We can unzip on the fly with n8n's compression node."
},
"typeVersion": 1
},
{
"id": "02826887-eb26-48a0-928e-fe56ee008425",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
500,
199.87747230655896
],
"parameters": {
"color": 7,
"width": 777.897719182587,
"height": 503.3459981018574,
"content": "## Step 2. Extract and Partition Into Chapters & Sections\n[Learn more about reading PDF Files](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.extractfromfile)\n\nRather than ingest the raw text of the PDF, we'll be a little more strategic and extract the tax code sections separately instead. Not only will this provide cleaner results, we'll also be able to fetch sections in isolation if required."
},
"typeVersion": 1
},
{
"id": "31a34972-31ab-4b96-9d09-cd30a3b184cf",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1300,
108.82958126396
],
"parameters": {
"color": 7,
"width": 1045.1698686248747,
"height": 771.1260499456115,
"content": "## Step 3. Save into Qdrant VectorStore\n[Read more about using the Qdrant Vectorstore](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreqdrant)\n\nWe'll save our data into a Qdrant collection being mindful to use metadata to take full advantage of Qdrant's filtering capabilities later.\nThough not always required, since the tax code documents can be quite large we'll implement a loop here to throttle the number of tokens being processed as to not trip the Mistral.ai rate limits for embeddings."
},
"typeVersion": 1
},
{
"id": "27039fa6-6388-45ee-a2d5-6bb68554944b",
"name": "Qdrant Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
1760,
400
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "list",
"value": "texas_tax_codes",
"cachedResultName": "texas_tax_codes"
}
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 1
},
{
"id": "5ec16c20-eb1e-454a-8165-594d83dd8711",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
360,
900
],
"parameters": {
"color": 7,
"width": 858.1415560000298,
"height": 513.2269439624808,
"content": "## Step 4. Build a Tax Code Assistant ChatBot\n[Learn more about using AI Agents in n8n](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent)\n\nFor our chatbot, we'll use an AI agent node because we want to achieve more than one functionality. The first will be querying to relevant texts to answer a user's question and secondly, a direct search feature to pull full section text when requested."
},
"typeVersion": 1
},
{
"id": "d5145c6f-768b-42d8-a045-20e045f52b0b",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
904.6076722083936
],
"parameters": {
"color": 7,
"width": 1030.0926850706744,
"height": 577.7854680142904,
"content": "## Step 5. Use Qdrant API as Tools\n[Learn more about using AI Agents in n8n](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.agent)\n\nOur Ask Tool will generate embeddings using Mistral.ai and query our Qdrant collection using the Qdrant Search API.\nOur Search Tool will use filter our Qdrant collection using the Qdrant Scroll API, matching on each doc's section metadata key."
},
"typeVersion": 1
},
{
"id": "ccf50479-53d8-4edf-8f2b-73060a6a6e0f",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
700,
1063
],
"parameters": {
"options": {
"systemMessage": "You are a helpful assistant answering user questions on the tax code legistration for the state of Texas, united states of america.\n\nAlong with your response also note in which chapter and section number the information was found. "
}
},
"typeVersion": 1.6
},
{
"id": "d7e7fa9e-73ba-4df3-862e-25af63d9d9b4",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
820,
1223
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "a79bdbcd-7157-470a-aadc-bd3f8a4c40d2",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
420,
1063
],
"webhookId": "db2b118d-942e-4be9-b154-7df887232f97",
"parameters": {
"public": true,
"options": {
"loadPreviousSession": "memory"
},
"initialMessages": ""
},
"typeVersion": 1
},
{
"id": "6046f137-b508-484f-8577-ac51a35eee09",
"name": "Window Buffer Memory1",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
420,
1223
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "30f238f8-1987-4d6d-b06d-ac2106ea3734",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
700,
1223
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1
},
{
"id": "8a8490f6-5957-495c-a7af-15cec669f39c",
"name": "1sec",
"type": "n8n-nodes-base.wait",
"position": [
2160,
660
],
"webhookId": "852317f0-aadf-4658-ae44-d05e5de29302",
"parameters": {
"amount": 1
},
"executeOnce": false,
"typeVersion": 1.1
},
{
"id": "142450f5-8ec1-4ae6-b25c-df3233394d4e",
"name": "Ask Tool",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
960,
1223
],
"parameters": {
"name": "query_tax_code_knowledgebase",
"fields": {
"values": [
{
"name": "route",
"stringValue": "ask_tool"
}
]
},
"workflowId": "={{ $workflow.id }}",
"description": "Call this tool to query the tax code database for information. Structure your query in the form of a question for best results."
},
"typeVersion": 1.1
},
{
"id": "ee455a4e-c9a1-49b2-a036-d3f3d34099c6",
"name": "Search Tool",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
1060,
1223
],
"parameters": {
"name": "get_tax_code_section",
"fields": {
"values": [
{
"name": "route",
"stringValue": "search_tool"
}
]
},
"workflowId": "={{ $workflow.id }}",
"description": "Call this tool to search for specific sections of the tax code document. Pass in either a known section number/id to get the section's text or a known chapter name to return all sections for the chapter.",
"jsonSchemaExample": "{\n\t\"chapter\": \"some_value\",\n \"section\": \"Sec 1.01\"\n}",
"specifyInputSchema": true
},
"typeVersion": 1.1
},
{
"id": "f3240f8d-8869-4088-8e4f-d4e23a3c12a8",
"name": "Switch",
"type": "n8n-nodes-base.switch",
"position": [
1473,
1200
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "ask_tool",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.route }}",
"rightValue": "ask_tool"
}
]
},
"renameOutput": true
},
{
"outputKey": "search_tool",
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "909362ed-eb97-405c-9f2f-f404a3bfeaf3",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.route }}",
"rightValue": "search_tool"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3
},
{
"id": "71441b5a-099b-49e0-a212-3087d958b38b",
"name": "Get Ask Response",
"type": "n8n-nodes-base.set",
"position": [
2060,
1060
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "eb5f2b3c-bb88-4cae-a960-164016c9a9e4",
"name": "response",
"type": "string",
"value": "=|chapter|section|title|content|\n|-|-|-|-|\n{{\n $json.result.map(row => [\n '',\n row.payload.metadata.chapter,\n row.payload.metadata.section,\n row.payload.metadata.title,\n row.payload.content,\n ''\n ].join('|')).join('\\n')\n}}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "54a744a3-95c9-4d9a-b1e7-e266a51f77ca",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-520,
-79.56762868134751
],
"parameters": {
"width": 383.14868794462586,
"height": 563.604204119637,
"content": "## Try Me Out!\n### This workflow builds an AI powered Legal assistant who answers questions about tax codes.\n* Download publically available tax code PDFs from the relevant government website.\n* Strategically exact tax code sections and store these in our Qdrant Vectorstore using Mistral.ai embeddings.\n* Use an AI Agent to answer user's tax questions by attaching tools which query our Qdrant vectorstore.\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Hacking!"
},
"typeVersion": 1
},
{
"id": "7f802f12-03e0-4b8e-a880-8c26242c1152",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
790.1971986436472,
720
],
"parameters": {
"color": 5,
"width": 489.3944544742706,
"height": 131.61363932813174,
"content": "### 🙋♀️What's the difference?\nWith raw PDF data, we may blur the boundaries between chapters and sections making later results hard to find, incoherent or misleading.\nDepending on your use-case, store your data in a way you intend to retrieve it!"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"1sec": {
"main": [
[
{
"node": "For Each Section...",
"type": "main",
"index": 0
}
]
]
},
"Switch": {
"main": [
[
{
"node": "Get Mistral Embeddings",
"type": "main",
"index": 0
}
],
[
{
"node": "Use Qdrant Scroll API",
"type": "main",
"index": 0
}
]
]
},
"Ask Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Search Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Files as Items": {
"main": [
[
{
"node": "Extract PDF Contents",
"type": "main",
"index": 0
}
]
]
},
"Map To Sections": {
"main": [
[
{
"node": "Sections To List",
"type": "main",
"index": 0
}
]
]
},
"Sections To List": {
"main": [
[
{
"node": "Only Valid Sections",
"type": "main",
"index": 0
}
]
]
},
"Split Out Chunks": {
"main": [
[
{
"node": "Qdrant Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Extract Zip Files": {
"main": [
[
{
"node": "Files as Items",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"For Each Section...": {
"main": [
null,
[
{
"node": "Content Chunking @ 50k Chars",
"type": "main",
"index": 0
}
]
]
},
"Only Valid Sections": {
"main": [
[
{
"node": "For Each Section...",
"type": "main",
"index": 0
}
]
]
},
"Qdrant Vector Store": {
"main": [
[
{
"node": "1sec",
"type": "main",
"index": 0
}
]
]
},
"Extract From Chapter": {
"main": [
[
{
"node": "Map To Sections",
"type": "main",
"index": 0
}
]
]
},
"Extract PDF Contents": {
"main": [
[
{
"node": "Extract From Chapter",
"type": "main",
"index": 0
}
]
]
},
"Window Buffer Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Get Tax Code Zip File": {
"main": [
[
{
"node": "Extract Zip Files",
"type": "main",
"index": 0
}
]
]
},
"Use Qdrant Scroll API": {
"main": [
[
{
"node": "Get Search Response",
"type": "main",
"index": 0
}
]
]
},
"Window Buffer Memory1": {
"ai_memory": [
[
{
"node": "When chat message received",
"type": "ai_memory",
"index": 0
}
]
]
},
"Get Mistral Embeddings": {
"main": [
[
{
"node": "Use Qdrant Search API1",
"type": "main",
"index": 0
}
]
]
},
"Use Qdrant Search API1": {
"main": [
[
{
"node": "Get Ask Response",
"type": "main",
"index": 0
}
]
]
},
"Embeddings Mistral Cloud": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Switch",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Content Chunking @ 50k Chars": {
"main": [
[
{
"node": "Split Out Chunks",
"type": "main",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "Get Tax Code Zip File",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI.json
================================================
{
"id": "a58HZKwcOy7lmz56",
"meta": {
"instanceId": "178ef8a5109fc76c716d40bcadb720c455319f7b7a3fd5a39e4f336a091f524a",
"templateCredsSetupCompleted": true
},
"name": "Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI",
"tags": [],
"nodes": [
{
"id": "06a34e3b-519a-4b48-afd0-4f2b51d2105d",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
4980,
740
],
"parameters": {},
"typeVersion": 1
},
{
"id": "9213003d-433f-41ab-838b-be93860261b2",
"name": "GitHub",
"type": "n8n-nodes-base.github",
"position": [
5200,
740
],
"parameters": {
"owner": {
"__rl": true,
"mode": "name",
"value": "mrscoopers"
},
"filePath": "Top_1000_IMDB_movies.csv",
"resource": "file",
"operation": "get",
"repository": {
"__rl": true,
"mode": "list",
"value": "n8n_demo",
"cachedResultUrl": "https://github.com/mrscoopers/n8n_demo",
"cachedResultName": "n8n_demo"
},
"additionalParameters": {}
},
"credentials": {
"githubApi": {
"id": "VbfC0mqEq24vPIwq",
"name": "GitHub n8n demo"
}
},
"typeVersion": 1
},
{
"id": "9850d1a9-3a6f-44c0-9f9d-4d20fda0b602",
"name": "Extract from File",
"type": "n8n-nodes-base.extractFromFile",
"position": [
5360,
740
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "7704f993-b1c9-477a-8b5a-77dc2cb68161",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
5560,
940
],
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "deYJUwkgL1Euu613",
"name": "OpenAi account 2"
}
},
"typeVersion": 1
},
{
"id": "bc6dd8e5-0186-4bf9-9c60-2eab6d9b6520",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
5700,
960
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "movie_name",
"value": "={{ $('Extract from File').item.json['Movie Name'] }}"
},
{
"name": "movie_release_date",
"value": "={{ $('Extract from File').item.json['Year of Release'] }}"
},
{
"name": "movie_description",
"value": "={{ $('Extract from File').item.json.Description }}"
}
]
}
},
"jsonData": "={{ $('Extract from File').item.json.Description }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "f87ea014-fe79-444b-88ea-0c4773872b0a",
"name": "Token Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterTokenSplitter",
"position": [
5700,
1140
],
"parameters": {},
"typeVersion": 1
},
{
"id": "d8d28cec-c8e8-4350-9e98-cdbc6da54988",
"name": "Qdrant Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
5600,
740
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "id",
"value": "imdb"
}
},
"credentials": {
"qdrantApi": {
"id": "Zin08PA0RdXVUKK7",
"name": "QdrantApi n8n demo"
}
},
"typeVersion": 1
},
{
"id": "f86e03dc-12ea-4929-9035-4ec3cf46e300",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
4920,
1140
],
"webhookId": "71bfe0f8-227e-466b-9d07-69fd9fe4a27b",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "ead23ef6-2b6b-428d-b412-b3394bff8248",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
5040,
1340
],
"parameters": {
"model": "gpt-4o-mini",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "deYJUwkgL1Euu613",
"name": "OpenAi account 2"
}
},
"typeVersion": 1
},
{
"id": "7ab936e1-aac8-43bc-a497-f2d02c2c19e5",
"name": "Call n8n Workflow Tool",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
5320,
1340
],
"parameters": {
"name": "movie_recommender",
"schemaType": "manual",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "a58HZKwcOy7lmz56"
},
"description": "Call this tool to get a list of recommended movies from a vector database. ",
"inputSchema": "{\n\"type\": \"object\",\n\"properties\": {\n\t\"positive_example\": {\n \"type\": \"string\",\n \"description\": \"A string with a movie description matching the user's positive recommendation request\"\n },\n \"negative_example\": {\n \"type\": \"string\",\n \"description\": \"A string with a movie description matching the user's negative anti-recommendation reuqest\"\n }\n}\n}",
"specifyInputSchema": true
},
"typeVersion": 1.2
},
{
"id": "ce55f334-698b-45b1-9e12-0eaa473187d4",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
5160,
1340
],
"parameters": {},
"typeVersion": 1.2
},
{
"id": "41c1ee11-3117-4765-98fc-e56cc6fc8fb2",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
5640,
1600
],
"parameters": {},
"typeVersion": 1
},
{
"id": "db8d6ab6-8cd2-4a8c-993d-f1b7d7fdcffd",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
6540,
1500
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineAll"
},
"typeVersion": 3
},
{
"id": "c7bc5e04-22b1-40db-ba74-1ab234e51375",
"name": "Split Out",
"type": "n8n-nodes-base.splitOut",
"position": [
7260,
1480
],
"parameters": {
"options": {},
"fieldToSplitOut": "result"
},
"typeVersion": 1
},
{
"id": "a2002d2e-362a-49eb-a42d-7b665ddd67a0",
"name": "Split Out1",
"type": "n8n-nodes-base.splitOut",
"position": [
7140,
1260
],
"parameters": {
"options": {},
"fieldToSplitOut": "result.points"
},
"typeVersion": 1
},
{
"id": "f69a87f1-bfb9-4337-9350-28d2416c1580",
"name": "Merge1",
"type": "n8n-nodes-base.merge",
"position": [
7520,
1400
],
"parameters": {
"mode": "combine",
"options": {},
"fieldsToMatchString": "id"
},
"typeVersion": 3
},
{
"id": "b2f2529e-e260-4d72-88ef-09b804226004",
"name": "Aggregate",
"type": "n8n-nodes-base.aggregate",
"position": [
7960,
1400
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "response"
},
"typeVersion": 1
},
{
"id": "bedea10f-b4de-4f0e-9d60-cc8117a2b328",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
5140,
1140
],
"parameters": {
"options": {
"systemMessage": "You are a Movie Recommender Tool using a Vector Database under the hood. Provide top-3 movie recommendations returned by the database, ordered by their recommendation score, but not showing the score to the user."
}
},
"typeVersion": 1.6
},
{
"id": "e04276b5-7d69-437b-bf4f-9717808cc8f6",
"name": "Embedding Recommendation Request with Open AI",
"type": "n8n-nodes-base.httpRequest",
"position": [
5900,
1460
],
"parameters": {
"url": "https://api.openai.com/v1/embeddings",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "input",
"value": "={{ $json.query.positive_example }}"
},
{
"name": "model",
"value": "text-embedding-3-small"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer $OPENAI_API_KEY"
}
]
},
"nodeCredentialType": "openAiApi"
},
"credentials": {
"openAiApi": {
"id": "deYJUwkgL1Euu613",
"name": "OpenAi account 2"
}
},
"typeVersion": 4.2
},
{
"id": "68e99f06-82f5-432c-8b31-8a1ae34981a6",
"name": "Embedding Anti-Recommendation Request with Open AI",
"type": "n8n-nodes-base.httpRequest",
"position": [
5920,
1660
],
"parameters": {
"url": "https://api.openai.com/v1/embeddings",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "input",
"value": "={{ $json.query.negative_example }}"
},
{
"name": "model",
"value": "text-embedding-3-small"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer $OPENAI_API_KEY"
}
]
},
"nodeCredentialType": "openAiApi"
},
"credentials": {
"openAiApi": {
"id": "deYJUwkgL1Euu613",
"name": "OpenAi account 2"
}
},
"typeVersion": 4.2
},
{
"id": "ecb1d7e1-b389-48e8-a34a-176bfc923641",
"name": "Extracting Embedding",
"type": "n8n-nodes-base.set",
"position": [
6180,
1460
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "01a28c9d-aeb1-48bb-8a73-f8bddbd73460",
"name": "positive_example",
"type": "array",
"value": "={{ $json.data[0].embedding }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4ed11142-a734-435f-9f7a-f59e2d423076",
"name": "Extracting Embedding1",
"type": "n8n-nodes-base.set",
"position": [
6180,
1660
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "01a28c9d-aeb1-48bb-8a73-f8bddbd73460",
"name": "negative_example",
"type": "array",
"value": "={{ $json.data[0].embedding }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "ce3aa9bc-a5b1-4529-bff5-e0dba43b99f3",
"name": "Calling Qdrant Recommendation API",
"type": "n8n-nodes-base.httpRequest",
"position": [
6840,
1500
],
"parameters": {
"url": "https://edcc6735-2ffb-484f-b735-3467043828fe.europe-west3-0.gcp.cloud.qdrant.io:6333/collections/imdb_1000_open_ai/points/query",
"method": "POST",
"options": {},
"jsonBody": "={\n \"query\": {\n \"recommend\": {\n \"positive\": [[{{ $json.positive_example }}]],\n \"negative\": [[{{ $json.negative_example }}]],\n \"strategy\": \"average_vector\"\n }\n },\n \"limit\":3\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "Zin08PA0RdXVUKK7",
"name": "QdrantApi n8n demo"
}
},
"typeVersion": 4.2
},
{
"id": "9b8a6bdb-16fe-4edc-86d0-136fe059a777",
"name": "Retrieving Recommended Movies Meta Data",
"type": "n8n-nodes-base.httpRequest",
"position": [
7060,
1460
],
"parameters": {
"url": "https://edcc6735-2ffb-484f-b735-3467043828fe.europe-west3-0.gcp.cloud.qdrant.io:6333/collections/imdb_1000_open_ai/points",
"method": "POST",
"options": {},
"jsonBody": "={\n \"ids\": [\"{{ $json.result.points[0].id }}\", \"{{ $json.result.points[1].id }}\", \"{{ $json.result.points[2].id }}\"],\n \"with_payload\":true\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "Zin08PA0RdXVUKK7",
"name": "QdrantApi n8n demo"
}
},
"typeVersion": 4.2
},
{
"id": "28cdcad5-3dca-48a1-b626-19eef657114c",
"name": "Selecting Fields Relevant for Agent",
"type": "n8n-nodes-base.set",
"position": [
7740,
1400
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b4b520a5-d0e2-4dcb-af9d-0b7748fd44d6",
"name": "movie_recommendation_score",
"type": "number",
"value": "={{ $json.score }}"
},
{
"id": "c9f0982e-bd4e-484b-9eab-7e69e333f706",
"name": "movie_description",
"type": "string",
"value": "={{ $json.payload.content }}"
},
{
"id": "7c7baf11-89cd-4695-9f37-13eca7e01163",
"name": "movie_name",
"type": "string",
"value": "={{ $json.payload.metadata.movie_name }}"
},
{
"id": "1d1d269e-43c7-47b0-859b-268adf2dbc21",
"name": "movie_release_year",
"type": "string",
"value": "={{ $json.payload.metadata.release_year }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "56e73f01-5557-460a-9a63-01357a1b456f",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
5560,
1780
],
"parameters": {
"content": "Tool, calling Qdrant's recommendation API based on user's request, transformed by AI agent"
},
"typeVersion": 1
},
{
"id": "cce5250e-0285-4fd0-857f-4b117151cd8b",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
4680,
720
],
"parameters": {
"content": "Uploading data (movies and their descriptions) to Qdrant Vector Store\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {
"Execute Workflow Trigger": [
{
"json": {
"query": {
"negative_example": "horror bloody movie",
"positive_example": "romantic comedy"
}
}
}
]
},
"settings": {
"executionOrder": "v1"
},
"versionId": "40d3669b-d333-435f-99fc-db623deda2cb",
"connections": {
"Merge": {
"main": [
[
{
"node": "Calling Qdrant Recommendation API",
"type": "main",
"index": 0
}
]
]
},
"GitHub": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Selecting Fields Relevant for Agent",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
]
]
},
"Split Out1": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Token Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Qdrant Vector Store",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Extracting Embedding": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Window Buffer Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"Extracting Embedding1": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Call n8n Workflow Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Embedding Recommendation Request with Open AI",
"type": "main",
"index": 0
},
{
"node": "Embedding Anti-Recommendation Request with Open AI",
"type": "main",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Calling Qdrant Recommendation API": {
"main": [
[
{
"node": "Retrieving Recommended Movies Meta Data",
"type": "main",
"index": 0
},
{
"node": "Split Out1",
"type": "main",
"index": 0
}
]
]
},
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "GitHub",
"type": "main",
"index": 0
}
]
]
},
"Selecting Fields Relevant for Agent": {
"main": [
[
{
"node": "Aggregate",
"type": "main",
"index": 0
}
]
]
},
"Retrieving Recommended Movies Meta Data": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Embedding Recommendation Request with Open AI": {
"main": [
[
{
"node": "Extracting Embedding",
"type": "main",
"index": 0
}
]
]
},
"Embedding Anti-Recommendation Request with Open AI": {
"main": [
[
{
"node": "Extracting Embedding1",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Chat with GitHub API Documentation_ RAG-Powered Chatbot with Pinecone & OpenAI.json
================================================
{
"id": "FD0bHNaehP3LzCNN",
"meta": {
"instanceId": "69133932b9ba8e1ef14816d0b63297bb44feb97c19f759b5d153ff6b0c59e18d"
},
"name": "Chat with GitHub OpenAPI Specification using RAG (Pinecone and OpenAI)",
"tags": [],
"nodes": [
{
"id": "362cb773-7540-4753-a401-e585cdf4af8a",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
0,
0
],
"parameters": {},
"typeVersion": 1
},
{
"id": "45470036-cae6-48d0-ac66-addc8999e776",
"name": "HTTP Request",
"type": "n8n-nodes-base.httpRequest",
"position": [
300,
0
],
"parameters": {
"url": "https://raw.githubusercontent.com/github/rest-api-description/refs/heads/main/descriptions/api.github.com/api.github.com.json",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "a9e65897-52c9-4941-bf49-e1a659e442ef",
"name": "Pinecone Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"position": [
520,
0
],
"parameters": {
"mode": "insert",
"options": {},
"pineconeIndex": {
"__rl": true,
"mode": "list",
"value": "n8n-demo",
"cachedResultName": "n8n-demo"
}
},
"credentials": {
"pineconeApi": {
"id": "bQTNry52ypGLqt47",
"name": "PineconeApi account"
}
},
"typeVersion": 1
},
{
"id": "c2a2354b-5457-4ceb-abfc-9a58e8593b81",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
660,
180
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "7338d9ea-ae8f-46eb-807f-a15dc7639fc9",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
740,
360
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "44fd7a59-f208-4d5d-a22d-e9f8ca9badf1",
"name": "When chat message received",
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
"position": [
-20,
760
],
"webhookId": "089e38ab-4eee-4c34-aa5d-54cf4a8f53b7",
"parameters": {
"options": {}
},
"typeVersion": 1.1
},
{
"id": "51d819d6-70ff-428d-aa56-1d7e06490dee",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
320,
760
],
"parameters": {
"options": {
"systemMessage": "You are a helpful assistant providing information about the GitHub API and how to use it based on the OpenAPI V3 specifications."
}
},
"typeVersion": 1.7
},
{
"id": "aed548bf-7083-44ad-a3e0-163dee7423ef",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
220,
980
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "tQLWnWRzD8aebYvp",
"name": "OpenAi account"
}
},
"typeVersion": 1.1
},
{
"id": "dfe9f356-2225-4f4b-86c7-e56a230b4193",
"name": "Window Buffer Memory",
"type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
"position": [
420,
1020
],
"parameters": {},
"typeVersion": 1.3
},
{
"id": "4cf672ee-13b8-4355-b8e0-c2e7381671bc",
"name": "Vector Store Tool",
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
"position": [
580,
980
],
"parameters": {
"name": "GitHub_OpenAPI_Specification",
"description": "Use this tool to get information about the GitHub API. This database contains OpenAPI v3 specifications."
},
"typeVersion": 1
},
{
"id": "1df7fb85-9d4a-4db5-9bed-41d28e2e4643",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
840,
1160
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "tQLWnWRzD8aebYvp",
"name": "OpenAi account"
}
},
"typeVersion": 1.1
},
{
"id": "7b52ef7a-5935-451e-8747-efe16ce288af",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
-260
],
"parameters": {
"width": 640,
"height": 200,
"content": "## Indexing content in the vector database\nThis part of the workflow is responsible for extracting content, generating embeddings and sending them to the Pinecone vector store.\n\nIt requests the OpenAPI specifications from GitHub using a HTTP request. Then, it splits the file in chunks, generating embeddings for each chunk using OpenAI, and saving them in Pinecone vector DB."
},
"typeVersion": 1
},
{
"id": "3508d602-56d4-4818-84eb-ca75cdeec1d0",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-20,
560
],
"parameters": {
"width": 580,
"content": "## Querying and response generation \n\nThis part of the workflow is responsible for the chat interface, querying the vector store and generating relevant responses.\n\nIt uses OpenAI GPT 4o-mini to generate responses."
},
"typeVersion": 1
},
{
"id": "5a9808ef-4edd-4ec9-ba01-2fe50b2dbf4b",
"name": "Generate User Query Embedding",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
480,
1400
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "tQLWnWRzD8aebYvp",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "f703dc8e-9d4b-45e3-8994-789b3dfe8631",
"name": "Pinecone Vector Store (Querying)",
"type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
"position": [
440,
1220
],
"parameters": {
"options": {},
"pineconeIndex": {
"__rl": true,
"mode": "list",
"value": "n8n-demo",
"cachedResultName": "n8n-demo"
}
},
"credentials": {
"pineconeApi": {
"id": "bQTNry52ypGLqt47",
"name": "PineconeApi account"
}
},
"typeVersion": 1
},
{
"id": "ea64a7a5-1fa5-4938-83a9-271929733a8e",
"name": "Generate Embeddings",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
480,
220
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "tQLWnWRzD8aebYvp",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "65cbd4e3-91f6-441a-9ef1-528c3019e238",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-820,
-260
],
"parameters": {
"width": 620,
"height": 320,
"content": "## RAG workflow in n8n\n\nThis is an example of how to use RAG techniques to create a chatbot with n8n. It is an API documentation chatbot that can answer questions about the GitHub API. It uses OpenAI for generating embeddings, the gpt-4o-mini LLM for generating responses and Pinecone as a vector database.\n\n### Before using this template\n* create OpenAI and Pinecone accounts\n* obtain API keys OpenAI and Pinecone \n* configure credentials in n8n for both\n* ensure you have a Pinecone index named \"n8n-demo\" or adjust the workflow accordingly."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "2908105f-c20c-4183-bb9d-26e3559b9911",
"connections": {
"HTTP Request": {
"main": [
[
{
"node": "Pinecone Vector Store",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Vector Store Tool": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"OpenAI Chat Model1": {
"ai_languageModel": [
[
{
"node": "Vector Store Tool",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Generate Embeddings": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Window Buffer Memory": {
"ai_memory": [
[
{
"node": "AI Agent",
"type": "ai_memory",
"index": 0
}
]
]
},
"When chat message received": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Generate User Query Embedding": {
"ai_embedding": [
[
{
"node": "Pinecone Vector Store (Querying)",
"type": "ai_embedding",
"index": 0
}
]
]
},
"Pinecone Vector Store (Querying)": {
"ai_vectorStore": [
[
{
"node": "Vector Store Tool",
"type": "ai_vectorStore",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Create a Google Analytics Data Report with AI and sent it to E-Mail and Telegram.json
================================================
{
"id": "AAjX1BuwhyXpo8xP",
"meta": {
"instanceId": "558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
"name": "Google Analytics: Weekly Report",
"tags": [],
"nodes": [
{
"id": "91ba5982-e226-4f0b-af0d-8c9a44b08279",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1740,
300
],
"parameters": {
"rule": {
"interval": [
{
"field": "weeks",
"triggerAtDay": [
1
],
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "62c38eaf-2222-4d22-8589-677f36bce10d",
"name": "Google Analytics Letzte 7 Tage",
"type": "n8n-nodes-base.googleAnalytics",
"position": [
-1540,
300
],
"parameters": {
"metricsGA4": {
"metricValues": [
{
"listName": "screenPageViews"
},
{},
{
"listName": "sessions"
},
{
"listName": "sessionsPerUser"
},
{
"name": "averageSessionDuration",
"listName": "other"
},
{
"name": "ecommercePurchases",
"listName": "other"
},
{
"name": "averagePurchaseRevenue",
"listName": "other"
},
{
"name": "purchaseRevenue",
"listName": "other"
}
]
},
"propertyId": {
"__rl": true,
"mode": "list",
"value": "345060083",
"cachedResultUrl": "https://analytics.google.com/analytics/web/#/p345060083/",
"cachedResultName": "https://www.ep-reisen.de – GA4"
},
"dimensionsGA4": {
"dimensionValues": [
{}
]
},
"additionalFields": {}
},
"credentials": {
"googleAnalyticsOAuth2": {
"id": "onRKXREI8izfGzv0",
"name": "Google Analytics account"
}
},
"typeVersion": 2
},
{
"id": "0a51c2f3-a487-4226-884f-63d4cb2bf4e4",
"name": "Send Email",
"type": "n8n-nodes-base.emailSend",
"position": [
420,
80
],
"parameters": {
"html": "={{ $json.message.content }}",
"options": {},
"subject": "Weekly Report: Google Analytics: Last 7 days",
"toEmail": "friedemann.schuetz@ep-reisen.de",
"fromEmail": "friedemann.schuetz@posteo.de"
},
"credentials": {
"smtp": {
"id": "A71x7hx6lKj7nxp1",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "04963783-f455-4983-afea-e94b316d8532",
"name": "Telegram",
"type": "n8n-nodes-base.telegram",
"position": [
420,
420
],
"parameters": {
"text": "={{ $json.message.content }}",
"chatId": "1810565648",
"additionalFields": {}
},
"credentials": {
"telegramApi": {
"id": "0hnyvxyUMN77sBmU",
"name": "Telegram account"
}
},
"typeVersion": 1.2
},
{
"id": "3b6b4902-15b3-4bbc-8427-c35471a7431b",
"name": "Processing for Telegram",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
60,
420
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Convert the following text from HTML to normal text:\n\n{{ $json.message.content }}\n\nPlease format the table so that each metric is a separate paragraph!\n\nExample:\n\nTotal views: xx.xxx\nTotal views previous year: xx,xxx\nDifference: x.xx %\n\nTotal users: xx,xxx\nTotal users previous year: xx,xxx\nDifference: -x.xx %"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "niikB3HA4fT5WAqt",
"name": "OpenAi account"
}
},
"typeVersion": 1.7
},
{
"id": "d761980c-0327-4d4e-92aa-d0342b2e249e",
"name": "Calculator",
"type": "@n8n/n8n-nodes-langchain.toolCalculator",
"position": [
140,
300
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ce7ba356-80bb-4b17-9445-fb535267cdf0",
"name": "Google Analytics: Past 7 days of the previous year",
"type": "n8n-nodes-base.googleAnalytics",
"position": [
-600,
300
],
"parameters": {
"endDate": "={{ $json.endDate }}",
"dateRange": "custom",
"startDate": "={{ $json.startDate }}",
"metricsGA4": {
"metricValues": [
{
"listName": "screenPageViews"
},
{},
{
"listName": "sessions"
},
{
"listName": "sessionsPerUser"
},
{
"name": "averageSessionDuration",
"listName": "other"
},
{
"name": "ecommercePurchases",
"listName": "other"
},
{
"name": "averagePurchaseRevenue",
"listName": "other"
},
{
"name": "purchaseRevenue",
"listName": "other"
}
]
},
"propertyId": {
"__rl": true,
"mode": "list",
"value": "345060083",
"cachedResultUrl": "https://analytics.google.com/analytics/web/#/p345060083/",
"cachedResultName": "https://www.ep-reisen.de – GA4"
},
"dimensionsGA4": {
"dimensionValues": [
{}
]
},
"additionalFields": {}
},
"credentials": {
"googleAnalyticsOAuth2": {
"id": "onRKXREI8izfGzv0",
"name": "Google Analytics account"
}
},
"typeVersion": 2
},
{
"id": "d2062aaa-e41b-4405-8470-9e7b4cd77245",
"name": "Summarize Data",
"type": "n8n-nodes-base.summarize",
"position": [
-1080,
300
],
"parameters": {
"options": {},
"fieldsToSummarize": {
"values": [
{
"field": "Aufrufe",
"aggregation": "sum"
},
{
"field": "Nutzer",
"aggregation": "sum"
},
{
"field": "Sitzungen",
"aggregation": "sum"
},
{
"field": "Sitzungen pro Nutzer",
"aggregation": "average"
},
{
"field": "Sitzungsdauer",
"aggregation": "average"
},
{
"field": "Käufe",
"aggregation": "sum"
},
{
"field": "Revenue pro Kauf",
"aggregation": "average"
},
{
"field": "Revenue",
"aggregation": "sum"
},
{
"field": "date"
}
]
}
},
"typeVersion": 1
},
{
"id": "d1f48d36-9f27-4cda-af53-e6d430d1a8db",
"name": "Summarize Data1",
"type": "n8n-nodes-base.summarize",
"position": [
-220,
300
],
"parameters": {
"options": {},
"fieldsToSummarize": {
"values": [
{
"field": "Aufrufe",
"aggregation": "sum"
},
{
"field": "Nutzer",
"aggregation": "sum"
},
{
"field": "Sitzungen",
"aggregation": "sum"
},
{
"field": "Sitzungen pro Nutzer",
"aggregation": "average"
},
{
"field": "Sitzungsdauer",
"aggregation": "average"
},
{
"field": "Käufe",
"aggregation": "sum"
},
{
"field": "Revenue pro Kauf",
"aggregation": "average"
},
{
"field": "Revenue",
"aggregation": "sum"
},
{
"field": "date"
}
]
}
},
"typeVersion": 1
},
{
"id": "5b6a0644-3839-4a62-8ff3-bf866aa4568c",
"name": "Calculation same period previous year",
"type": "n8n-nodes-base.code",
"position": [
-840,
300
],
"parameters": {
"jsCode": "return {\n // Berechnung des Startdatums: Vorjahr, gleiche Woche, 7 Tage zurück\n startDate: (() => {\n const date = new Date();\n date.setFullYear(date.getFullYear() - 1); // Zurück ins Vorjahr\n date.setDate(date.getDate() - 7); // 7 Tage zurück\n return date.toISOString().split('T')[0];\n })(),\n \n // Berechnung des Enddatums: Vorjahr, heutiges Datum\n endDate: (() => {\n const date = new Date();\n date.setFullYear(date.getFullYear() - 1); // Zurück ins Vorjahr\n return date.toISOString().split('T')[0];\n })(),\n};\n"
},
"typeVersion": 2
},
{
"id": "ab813532-cbe6-4c41-b20b-7efaa1ae4389",
"name": "Assign data",
"type": "n8n-nodes-base.set",
"position": [
-1300,
300
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9c2f8b9a-e964-49a0-8837-efb0dfd7bcae",
"name": "Aufrufe",
"type": "number",
"value": "={{ $json.screenPageViews }}"
},
{
"id": "8b524518-1268-4971-b5c9-ae7da09d94f9",
"name": "Nutzer",
"type": "number",
"value": "={{ $json.totalUsers }}"
},
{
"id": "ca7279b9-c643-425f-aa99-cb17146e9994",
"name": "Sitzungen",
"type": "number",
"value": "={{ $json.sessions }}"
},
{
"id": "591288f7-e8cf-445e-872a-5b83f997b825",
"name": "Sitzungen pro Nutzer",
"type": "number",
"value": "={{ $json.sessionsPerUser }}"
},
{
"id": "dc1a43da-3f3a-4dca-bbde-904222d7f693",
"name": "Sitzungsdauer",
"type": "number",
"value": "={{ $json.averageSessionDuration }}"
},
{
"id": "eac0b53e-c452-40b8-92bc-8af8ea349984",
"name": "=Käufe",
"type": "number",
"value": "={{ $json.ecommercePurchases }}"
},
{
"id": "b96439be-189d-4ebe-b49e-d5c31fefe9f0",
"name": "Revenue pro Kauf",
"type": "number",
"value": "={{ $json.averagePurchaseRevenue }}"
},
{
"id": "94835d43-2fc8-49c0-97f0-6f0f8699337a",
"name": "Revenue",
"type": "number",
"value": "={{ $json.purchaseRevenue }}"
},
{
"id": "d70f8138-3b84-4b88-a98f-eb929e1cc29a",
"name": "date",
"type": "string",
"value": "={{ $json.date }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "2454fe8a-005d-46dc-ae22-1044c1b793b7",
"name": "Assign data1",
"type": "n8n-nodes-base.set",
"position": [
-400,
300
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "9c2f8b9a-e964-49a0-8837-efb0dfd7bcae",
"name": "Aufrufe",
"type": "number",
"value": "={{ $json.screenPageViews }}"
},
{
"id": "8b524518-1268-4971-b5c9-ae7da09d94f9",
"name": "Nutzer",
"type": "number",
"value": "={{ $json.totalUsers }}"
},
{
"id": "ca7279b9-c643-425f-aa99-cb17146e9994",
"name": "Sitzungen",
"type": "number",
"value": "={{ $json.sessions }}"
},
{
"id": "591288f7-e8cf-445e-872a-5b83f997b825",
"name": "Sitzungen pro Nutzer",
"type": "number",
"value": "={{ $json.sessionsPerUser }}"
},
{
"id": "dc1a43da-3f3a-4dca-bbde-904222d7f693",
"name": "Sitzungsdauer",
"type": "number",
"value": "={{ $json.averageSessionDuration }}"
},
{
"id": "eac0b53e-c452-40b8-92bc-8af8ea349984",
"name": "=Käufe",
"type": "number",
"value": "={{ $json.ecommercePurchases }}"
},
{
"id": "b96439be-189d-4ebe-b49e-d5c31fefe9f0",
"name": "Revenue pro Kauf",
"type": "number",
"value": "={{ $json.averagePurchaseRevenue }}"
},
{
"id": "94835d43-2fc8-49c0-97f0-6f0f8699337a",
"name": "Revenue",
"type": "number",
"value": "={{ $json.purchaseRevenue }}"
},
{
"id": "dd8255c6-65b1-41ce-b596-70c09108d6e2",
"name": "=date",
"type": "string",
"value": "={{ $json.date }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0a48cbb0-3d4c-4ac8-8dba-08213f7fc430",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2220,
80
],
"parameters": {
"width": 440,
"height": 560,
"content": "Welcome to my Google Analytics Weekly Report Workflow!\n\nThis workflow has the following sequence:\n\n1. time trigger (e.g. every Monday at 7 a.m.)\n2. retrieval of Google Analytics data from the last 7 days\n3. assignment and summary of the data\n4. retrieval of Google Analytics data from the last 7 days of the previous year\n5. allocation and summary of the data\n6. preparation in tabular form and brief analysis by AI.\n7. sending the report as an email\n8. preparation in short form by AI for Telegram (optional)\n9. sending as Telegram message.\n\nThe following accesses are required for the workflow:\n- Google Analytics (via Google Analytics API): https://docs.n8n.io/integrations/builtin/credentials/google/\n- AI API access (e.g. via OpenAI, Anthropic, Google or Ollama)\n- SMTP access data (for sending the mail)\n- Telegram access data (optional for sending as Telegram message): https://docs.n8n.io/integrations/builtin/credentials/telegram/\n\nYou can contact me via LinkedIn, if you have any questions: https://www.linkedin.com/in/friedemann-schuetz"
},
"typeVersion": 1
},
{
"id": "c87bc648-8fe8-4cec-84d4-2742060f9c53",
"name": "Processing for email",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
60,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {},
"messages": {
"values": [
{
"content": "=Please analyze the following data and output the results in tabular form:\n\n| Metrics | Last 7 days | Previous year | Percentage change |\n|-------------------------------|---------------|---------|\n| Total page views | {{ $('Summarize Data').item.json.sum_Aufrufe }} | {{ $('Summarize Data1').item.json.sum_Aufrufe }} | Percentage change |\n| total users | {{ $('Summarize Data').item.json.sum_Nutzer }} | {{ $('Summarize Data1').item.json.sum_Nutzer }} | Percentage change |\n| Total sessions | {{ $('Summarize Data').item.json.sum_Sitzungen }} | {{ $('Summarize Data1').item.json.sum_Sitzungen }} | Percentage change |\n| Average sessions/user | {{ $('Summarize Data').item.json.average_Sitzungen_pro_Nutzer }} | {{ $('Summarize Data1').item.json.average_Sitzungen_pro_Nutzer }} | Percentage change |\n| Average session duration | {{ $('Summarize Data').item.json.average_Sitzungsdauer }} | {{ $('Summarize Data1').item.json.average_Sitzungsdauer }} | Percentage change |\n| Total purchases | {{ $('Summarize Data').item.json['sum_Käufe'] }} | {{ $('Summarize Data1').item.json['sum_Käufe'] }} | Percentage change |\n| Average revenue/purchase | {{ $('Summarize Data').item.json.average_Revenue_pro_Kauf }} | {{ $('Summarize Data1').item.json.average_Revenue_pro_Kauf }} | Percentage change |\n| Total revenue | {{ $('Summarize Data').item.json.sum_Revenue }} | {{ $('Summarize Data1').item.json.sum_Revenue }} | Percentage change |\n\nFormat for numbers:\n- Dot (.) for numbers in thousands (e.g. 4,000)\n- Comma (,) for decimal numbers (e.g. 3.4)\n- Conversion of average session duration in minutes instead of seconds\n- Average turnover/purchase and total turnover in €\n\nPlease write a short summary of the analyzed data above the table (in a maximum of 3 sentences!)\n\nPlease format to a sleek and modern HTML format so that the result can be sent as HTML mail!\n\nStructure of the e-mail:\n\n“Hello! Here is the Weekly Report: Google Analytics of the last 7 days!\n[Summary]\n[Table]”"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "niikB3HA4fT5WAqt",
"name": "OpenAi account"
}
},
"typeVersion": 1.7
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "556c3292-0d40-4c75-8037-90bacf1b2ccb",
"connections": {
"Telegram": {
"main": [
[]
]
},
"Calculator": {
"ai_tool": [
[
{
"node": "Processing for email",
"type": "ai_tool",
"index": 0
}
]
]
},
"Assign data": {
"main": [
[
{
"node": "Summarize Data",
"type": "main",
"index": 0
}
]
]
},
"Assign data1": {
"main": [
[
{
"node": "Summarize Data1",
"type": "main",
"index": 0
}
]
]
},
"Summarize Data": {
"main": [
[
{
"node": "Calculation same period previous year",
"type": "main",
"index": 0
}
]
]
},
"Summarize Data1": {
"main": [
[
{
"node": "Processing for email",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Google Analytics Letzte 7 Tage",
"type": "main",
"index": 0
}
]
]
},
"Processing for email": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
},
{
"node": "Processing for Telegram",
"type": "main",
"index": 0
}
]
]
},
"Processing for Telegram": {
"main": [
[
{
"node": "Telegram",
"type": "main",
"index": 0
}
]
]
},
"Google Analytics Letzte 7 Tage": {
"main": [
[
{
"node": "Assign data",
"type": "main",
"index": 0
}
]
]
},
"Calculation same period previous year": {
"main": [
[
{
"node": "Google Analytics: Past 7 days of the previous year",
"type": "main",
"index": 0
}
]
]
},
"Google Analytics: Past 7 days of the previous year": {
"main": [
[
{
"node": "Assign data1",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Customer Insights with Qdrant, Python and Information Extractor.json
================================================
{
"meta": {
"instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9"
},
"nodes": [
{
"id": "63501cc8-77c9-4037-9f70-da23b6d20b03",
"name": "When clicking ‘Test workflow’",
"type": "n8n-nodes-base.manualTrigger",
"position": [
280,
440
],
"parameters": {},
"typeVersion": 1
},
{
"id": "00de989c-d9e9-4b42-b5db-7097800a6017",
"name": "Zip Entries",
"type": "n8n-nodes-base.set",
"position": [
1380,
360
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "833a554d-2b39-4160-9348-18b17b28ce30",
"name": "data",
"type": "array",
"value": "={{ \n $json.review_author.map((review_author, idx) => ({\n review_author,\n review_author_reviews_count: $json.review_author_reviews_count[idx].replace(' reviews', '').toInt(),\n review_country: $json.review_country[idx],\n review_date: $json.review_date[idx].toDate(),\n review_date_of_experience: $json.review_date_of_experience[idx].replace('Date of experience: ', '').toDate(),\n review_rating: $json.review_rating[idx].toInt(),\n review_text: $json.review_text[idx],\n review_title: $json.review_title[idx],\n review_url: $('Get TrustPilot Page').params.url.match(/https:\\/\\/[^/]+/) + $json.review_url[idx],\n }))\n}}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9290e116-c001-49d5-ae4c-d91cd246f2c2",
"name": "Extract Reviews",
"type": "n8n-nodes-base.html",
"position": [
1140,
520
],
"parameters": {
"options": {
"trimValues": true
},
"operation": "extractHtmlContent",
"extractionValues": {
"values": [
{
"key": "review_author",
"cssSelector": "[data-service-review-card-paper] [data-consumer-name-typography]",
"returnArray": true
},
{
"key": "review_rating",
"attribute": "data-service-review-rating",
"cssSelector": "[data-service-review-rating]",
"returnArray": true,
"returnValue": "attribute"
},
{
"key": "review_title",
"cssSelector": "[data-service-review-title-typography]",
"returnArray": true
},
{
"key": "review_text",
"cssSelector": "[data-service-review-text-typography]",
"returnArray": true
},
{
"key": "review_date_of_experience",
"cssSelector": "[data-service-review-date-of-experience-typography]",
"returnArray": true
},
{
"key": "review_date",
"attribute": "datetime",
"cssSelector": "[data-service-review-date-time-ago]",
"returnArray": true,
"returnValue": "attribute"
},
{
"key": "review_country",
"cssSelector": "[data-consumer-country-typography]",
"returnArray": true
},
{
"key": "review_author_reviews_count",
"cssSelector": "[data-consumer-reviews-count-typography]",
"returnArray": true
},
{
"key": "review_url",
"attribute": "href",
"cssSelector": "a[data-review-title-typography]",
"returnArray": true,
"returnValue": "attribute"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "4aa3e50d-fcce-48a7-8237-c12f8592f69e",
"name": "Reviews to List",
"type": "n8n-nodes-base.splitOut",
"position": [
1380,
520
],
"parameters": {
"options": {},
"fieldToSplitOut": "data"
},
"typeVersion": 1
},
{
"id": "a6b9abf9-a17a-4f30-9f90-6183770c4933",
"name": "Default Data Loader",
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
"position": [
1980,
520
],
"parameters": {
"options": {
"metadata": {
"metadataValues": [
{
"name": "review_author",
"value": "={{ $json.review_author }}"
},
{
"name": "review_author_reviews_count",
"value": "={{ $json.review_author_reviews_count }}"
},
{
"name": "review_country",
"value": "={{ $json.review_country }}"
},
{
"name": "review_date",
"value": "={{ $json.review_date }}"
},
{
"name": "review_date_of_experience",
"value": "={{ $json.review_date_of_experience }}"
},
{
"name": "review_rating",
"value": "={{ $json.review_rating }}"
},
{
"name": "review_date_month",
"value": "={{ $json.review_date.toDateTime().format('M') }}"
},
{
"name": "review_date_year",
"value": "={{ $json.review_date.toDateTime().format('yyyy') }}"
},
{
"name": "review_date_of_experience_month",
"value": "={{ $json.review_date_of_experience.toDateTime().format('M') }}"
},
{
"name": "review_date_of_experience_year",
"value": "={{ $json.review_date_of_experience.toDateTime().format('yyyy') }}"
},
{
"name": "company_id",
"value": "={{ $('Set Variables').item.json.companyId }}"
},
{
"name": "review_url",
"value": "={{ $json.review_url }}"
}
]
}
},
"jsonData": "={{ $json.review_title }}\n{{ $json.review_text }}",
"jsonMode": "expressionData"
},
"typeVersion": 1
},
{
"id": "afd8907c-9a59-4dcc-94c5-2114fb2a7d5d",
"name": "Recursive Character Text Splitter",
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
"position": [
1980,
660
],
"parameters": {
"options": {},
"chunkSize": 4000
},
"typeVersion": 1
},
{
"id": "e22d92b8-e8e9-42aa-9d02-2e70234f11ed",
"name": "Embeddings OpenAI",
"type": "@n8n/n8n-nodes-langchain.embeddingsOpenAi",
"position": [
1860,
520
],
"parameters": {
"model": "text-embedding-3-small",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1
},
{
"id": "f0ea6b63-c96d-4b3f-8a21-d0f2dbb4efc3",
"name": "Set Variables",
"type": "n8n-nodes-base.set",
"position": [
520,
440
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2e58a9fa-a14d-4a6c-8cc8-8ec947c791fb",
"name": "companyId",
"type": "string",
"value": "www.freddiesflowers.com"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "0188986f-fbe9-4c06-892a-3cb71b52a309",
"name": "Get Payload of Points",
"type": "n8n-nodes-base.httpRequest",
"position": [
1740,
1120
],
"parameters": {
"url": "=http://qdrant:6333/collections/trustpilot_reviews/points",
"method": "POST",
"options": {},
"jsonBody": "={{\n {\n \"ids\": $json.points,\n \"with_payload\": true\n }\n}}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "5fc6e0b6-507f-4cfd-951b-be3709b86ac2",
"name": "Clusters To List",
"type": "n8n-nodes-base.splitOut",
"position": [
1480,
1120
],
"parameters": {
"options": {},
"fieldToSplitOut": "output"
},
"typeVersion": 1
},
{
"id": "f21369b9-1dd5-4b35-a1f3-00fd67794051",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
2140,
1340
],
"parameters": {
"model": "gpt-4o-mini",
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1
},
{
"id": "b0075699-6513-4781-b5de-81d1ab81dfe1",
"name": "Only Clusters With 3+ points",
"type": "n8n-nodes-base.filter",
"position": [
1480,
1300
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "328f806c-0792-4d90-9bee-a1e10049e78f",
"operator": {
"type": "array",
"operation": "lengthGt",
"rightType": "number"
},
"leftValue": "={{ $json.points }}",
"rightValue": 2
}
]
}
},
"typeVersion": 2
},
{
"id": "f6a6209c-d269-4238-8e92-230df7b41df9",
"name": "Set Variables1",
"type": "n8n-nodes-base.set",
"position": [
519,
1220
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2e58a9fa-a14d-4a6c-8cc8-8ec947c791fb",
"name": "companyId",
"type": "string",
"value": "={{ $json.companyId }}"
},
{
"id": "37cf8af2-6f0f-40b1-b822-c9bd6a620a3c",
"name": "review_date_from",
"type": "string",
"value": "={{ $today.startOf('month').toISO() }}"
},
{
"id": "8d72f739-f832-4c25-b62a-2ae70ad2b1e7",
"name": "review_date_to",
"type": "string",
"value": "={{ $today.endOf('month').toISO() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "85cb48b1-0ab9-4f88-88f3-82fcfb041ebe",
"name": "Find Reviews",
"type": "n8n-nodes-base.httpRequest",
"position": [
896,
1160
],
"parameters": {
"url": "=http://qdrant:6333/collections/trustpilot_reviews/points/scroll",
"method": "POST",
"options": {},
"jsonBody": "={\n \"limit\": 500,\n \"filter\":{\n \"must\": [\n {\n \"key\": \"metadata.company_id\",\n \"match\": { \"value\": \"{{ $('Set Variables1').item.json.companyId }}\" }\n },\n {\n \"key\": \"metadata.review_date\",\n \"range\": {\n \"gte\": \"{{ $('Set Variables1').item.json.review_date_from }}\",\n \"gt\": null,\n \"lt\": null,\n \"lte\": \"{{ $('Set Variables1').item.json.review_date_to }}\"\n }\n }\n ]\n },\n \"with_vector\":true\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "69bbd197-c78f-4dae-9300-fe23d4d49855",
"name": "Prep Output For Export",
"type": "n8n-nodes-base.set",
"position": [
2720,
1203
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={{ {\n ...$json.output,\n \"CompanyID\": $('Set Variables1').item.json.companyId,\n \"From\": $('Set Variables1').item.json.review_date_from,\n \"To\": $('Set Variables1').item.json.review_date_to,\n \"Number of Responses\": $('Get Payload of Points').item.json.result.length,\n \"Raw Responses\": $('Get Payload of Points').item.json.result.map(item =>\n [\n item.payload.metadata.review_date,\n item.payload.metadata.review_author,\n item.payload.metadata.review_rating,\n item.payload.content.replaceAll('\"', '\\\"').replaceAll('\\n', ' '),\n item.payload.metadata.review_url,\n ]\n ).join('\\n')\n} }}\n"
},
"typeVersion": 3.4
},
{
"id": "d77daa23-6acf-4daa-bf4c-33da4d05a54c",
"name": "Export To Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2940,
1203
],
"parameters": {
"columns": {
"value": {},
"schema": [
{
"id": "CompanyID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "CompanyID",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "From",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "From",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "To",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "To",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Insight",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Insight",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Sentiment",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Sentiment",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Suggested Improvements",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Suggested Improvements",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Number of Responses",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Number of Responses",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Raw Responses",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Raw Responses",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "autoMapInputData",
"matchingColumns": []
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "=Sheet1"
},
"documentId": {
"__rl": true,
"mode": "id",
"value": "=1wAwWCcIZod00IGtxwTbTgjIRbKHu3Yl9wYWJ8GeT2Os"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "XHvC7jIRR8A2TlUl",
"name": "Google Sheets account"
}
},
"typeVersion": 4.4
},
{
"id": "1f60c3a5-a47a-4313-9b29-8ea652d573f7",
"name": "Clear Existing Reviews",
"type": "n8n-nodes-base.httpRequest",
"position": [
760,
440
],
"parameters": {
"url": "http://qdrant:6333/collections/trustpilot_reviews/points/delete",
"method": "POST",
"options": {},
"jsonBody": "={\n \"filter\": {\n \"must\": [\n {\n \"key\": \"metadata.company_id\",\n \"match\": {\n \"value\": \"{{ $('Set Variables').item.json.companyId }}\"\n }\n }\n ]\n }\n}",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "qdrantApi"
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 4.2
},
{
"id": "61c3117c-757c-45dd-b9d5-1122b793be30",
"name": "Trigger Insights",
"type": "n8n-nodes-base.executeWorkflow",
"position": [
2660,
440
],
"parameters": {
"options": {},
"workflowId": "={{ $workflow.id }}"
},
"typeVersion": 1
},
{
"id": "d3c6e81f-34bb-4be9-b869-2c219b87c4fb",
"name": "Prep Values For Trigger",
"type": "n8n-nodes-base.set",
"position": [
2460,
440
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "24dd90ad-390f-444e-ba6c-8c06a41e836e",
"name": "companyId",
"type": "string",
"value": "={{ $('Set Variables').item.json.companyId }}"
}
]
}
},
"executeOnce": true,
"typeVersion": 3.4
},
{
"id": "64af9cc7-a194-4427-ba78-d9a1136b962f",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
316,
1220
],
"parameters": {},
"typeVersion": 1
},
{
"id": "7b6ba502-36c2-41e6-9d67-781d0d40a569",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
186.9455564469605,
263.2301011325764
],
"parameters": {
"color": 7,
"width": 787.3314861380661,
"height": 465.52420584035275,
"content": "## Step 1. Starting Fresh\nFor this demo, we'll clear any existing records in our Qdrant vector store for the selected company. We do this using the Qdrant's delete points API."
},
"typeVersion": 1
},
{
"id": "a99389d4-8ea6-4379-b725-f30e92b0d29e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1006.3778510483207,
148.50042906971555
],
"parameters": {
"color": 7,
"width": 638.5221986278162,
"height": 580.2538779032135,
"content": "## Step 2. Scraping TrustPilot For Company Reviews\n[Read more about HTTP Request Node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/)\n\nWe'll scrape at the most recent 3 pages of reviews for illustrative purposes but we could easily scrape them all if required. The HTML node offers a convenient way to extract data from the returned html pages and using it, we'll retrieve all the reviews data."
},
"typeVersion": 1
},
{
"id": "139ccadd-9135-4681-b2eb-403b8d8bd710",
"name": "Get TrustPilot Page",
"type": "n8n-nodes-base.httpRequest",
"position": [
1140,
360
],
"parameters": {
"url": "=https://uk.trustpilot.com/review/{{ $('Set Variables').item.json.companyId }}?sort=recency",
"options": {
"pagination": {
"pagination": {
"parameters": {
"parameters": [
{
"name": "page",
"value": "={{ $pageCount + 1 }}"
}
]
},
"maxRequests": 3,
"limitPagesFetched": true
}
}
}
},
"executeOnce": false,
"typeVersion": 4.2
},
{
"id": "1c71db65-713b-4c31-9c11-5ff678fb327a",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1680,
140
],
"parameters": {
"color": 7,
"width": 638.5221986278162,
"height": 689.8000993522735,
"content": "## Step 3. Store Reviews in Qdrant\n[Learn more about the Qdrant Vector Store](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.vectorstoreqdrant/)\n\nVector databases are a great way to store data if you're interested in perform similiarity searches which applies here as we want to group similar reviews to find patterns. Qdrant is a powerful vector database and tool of choice because of its robust API implementation and advanced filtering capabilities."
},
"typeVersion": 1
},
{
"id": "a4f82a1b-5a76-46b6-a7a3-84ab09b46699",
"name": "Qdrant Vector Store",
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
"position": [
1860,
360
],
"parameters": {
"mode": "insert",
"options": {},
"qdrantCollection": {
"__rl": true,
"mode": "id",
"value": "=trustpilot_reviews"
}
},
"credentials": {
"qdrantApi": {
"id": "NyinAS3Pgfik66w5",
"name": "QdrantApi account"
}
},
"typeVersion": 1
},
{
"id": "cbad9e73-c5b3-474c-95ef-7269addc4e62",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
216,
1000
],
"parameters": {
"color": 7,
"width": 543.4265511994403,
"height": 453.31956386852846,
"content": "## Step 5. The Insight Subworkflow\n[Learn more about Workflow Triggers](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger)\n\nThis subworkflow takes the companyId to find the relevant records in our Qdrant vector store. It also takes a \"from\" and \"to\" date to scope the insights to a particular range - doing this we can say something like \"we only want insights for the past month of reviews\". "
},
"typeVersion": 1
},
{
"id": "9c530716-63f4-4368-8d0e-0cdbe8f5b08e",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
920
],
"parameters": {
"color": 7,
"width": 557.7420442679241,
"height": 526.2781960611934,
"content": "## Step 6. Apply Clustering Algorithm to Reviews\n[Read more about using Python in n8n](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code)\n\nWe'll retrieve our vectors embeddings for the desired company reviews and perform an advanced clustering algorithm on them. This powerful echnique allows us to quickly group similar embeddings into clusters which we can then use to discover popular feedback, opinions and pain-points!"
},
"typeVersion": 1
},
{
"id": "9790b3a5-cc7c-4e12-8038-fc661c8226f8",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1360,
920
],
"parameters": {
"color": 7,
"width": 598.5585287222906,
"height": 605.9905193915599,
"content": "## Step 7. Fetch Reviews By Cluster\n[Learn more about using the Code Node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/)\n\nWith the Qdrant point IDs grouped and returned by our code node, all that's left is to fetch the payload of each. Note that the clustering algorithm isn't perfect and may require some tweaking depending on your data."
},
"typeVersion": 1
},
{
"id": "267057b6-9727-4a45-9d87-5429da42f48e",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1980,
969
],
"parameters": {
"color": 7,
"width": 587.6069484146701,
"height": 552.9535170892194,
"content": "## Step 8. Getting Insights from Grouped Reviews\n[Read more about using Information Extractor Node](https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.information-extractor)\n\nNext, we'll use our state-of-the-art LLM to generate insights on our reviews. Doing it this way, we'll able to pull more granular results addressing many key topics within the reviews."
},
"typeVersion": 1
},
{
"id": "b8cc07d0-ffa3-425f-ae74-76dcb68fa88f",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2600,
980
],
"parameters": {
"color": 7,
"width": 572.5638733479158,
"height": 464.4019616956416,
"content": "## Step 9. Write To Insights Sheet\nFinally, our completed insights to appended to the Insights Sheet we created earlier in the workflow.\n\nYou can find a sample sheet here: https://docs.google.com/spreadsheets/d/e/2PACX-1vQ6ipJnXWXgr5wlUJnhioNpeYrxaIpsRYZCwN3C-fFXumkbh9TAsA_JzE0kbv7DcGAVIP7az0L46_2P/pubhtml"
},
"typeVersion": 1
},
{
"id": "0dac0854-7106-44e3-bd68-fad7b201a6bc",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2340,
240
],
"parameters": {
"color": 7,
"width": 519.6419932444072,
"height": 429.11782776909047,
"content": "## Step 4. Trigger Insights SubWorkflow\n[Learn more about Workflow Triggers](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflow)\n\nA subworkflow is used to trigger the analysis for the survey. This separation is optional but used here to better demonstrate the two part process."
},
"typeVersion": 1
},
{
"id": "4aa7e73e-c29d-41df-b2f8-a62109285ccb",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
460,
380
],
"parameters": {
"width": 226.36363118160727,
"height": 327.0249036433755,
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### 🚨 Set company here!\nTrustpilot must recognise it as part of the url."
},
"typeVersion": 1
},
{
"id": "4d895cf9-452c-401e-a6f3-b9d3a359a96d",
"name": "Apply K-means Clustering Algorithm",
"type": "n8n-nodes-base.code",
"position": [
1116,
1160
],
"parameters": {
"language": "python",
"pythonCode": "import numpy as np\nfrom sklearn.cluster import KMeans\n\n# get vectors for all answers\npoint_ids = [item.id for item in _input.first().json.result.points]\nvectors = [item.vector.to_py() for item in _input.first().json.result.points]\nvectors_array = np.array(vectors)\n\n# apply k-means clustering where n_clusters = 5\n# this is a max and we'll discard some of these clusters later\nkmeans = KMeans(n_clusters=min(len(vectors), 5), random_state=42).fit(vectors_array)\nlabels = kmeans.labels_\nunique_labels = set(labels)\n\n# Extract and print points in each cluster\nclusters = {}\nfor label in set(labels):\n clusters[label] = vectors_array[labels == label]\n\n# return Qdrant point ids for each cluster\n# we'll use these ids to fetch the payloads from the vector store.\noutput = []\nfor cluster_id, cluster_points in clusters.items():\n points = [point_ids[i] for i in range(len(labels)) if labels[i] == cluster_id]\n output.append({\n \"id\": f\"Cluster {cluster_id}\",\n \"total\": len(cluster_points),\n \"points\": points\n })\n\nreturn {\"json\": {\"output\": output } }"
},
"typeVersion": 2
},
{
"id": "95c57019-d9d7-4d9f-93dd-21d3d9708861",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-260,
40
],
"parameters": {
"width": 400.381109509268,
"height": 612.855812336249,
"content": "## Try It Out!\n\n### This workflow generates highly-detailed customer insights from Trustpilot reviews. Works best when dealing with a large number of reviews.\n\n* Import Trustpilot reviews and vectorise in Qdrant vectorstore.\n* Identify clusters of popular topics in reviews using K-means clustering algorithm. \n* Each valid cluster is analysed and summarised by LLM.\n* Export LLM response and cluster results back into sheet.\n\nCheck out the reference google sheet here: https://docs.google.com/spreadsheets/d/e/2PACX-1vQ6ipJnXWXgr5wlUJnhioNpeYrxaIpsRYZCwN3C-fFXumkbh9TAsA_JzE0kbv7DcGAVIP7az0L46_2P/pubhtml\n\n### Need Help?\nJoin the [Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [Forum](https://community.n8n.io/)!\n\nHappy Hacking!"
},
"typeVersion": 1
},
{
"id": "9bba9480-792e-48e3-ad9f-8809ce3aba09",
"name": "Customer Insights Agent",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
2140,
1180
],
"parameters": {
"text": "=The {{ $json.result.length }} reviews were:\n{{\n$json.result.map(item =>\n`* ${item.payload.metadata.review_author} gave ${item.payload.metadata.review_rating} stars: \"${item.payload.content.replaceAll('\"', '\\\"').replaceAll('\\n', ' ')}\"`\n).join('\\n')\n}}",
"options": {
"systemPromptTemplate": "=You help summarise a selection of trustpilot reviews for a company called \"{{ $json.result[0].payload.metadata.company_id }}\".\nThe {{ $json.result.length }} reviews were selected because their contents were similar in context.\n\nYour task is to: \n* summarise the given reviews into a short paragraph. Provide an insight from this summary and what we could learn from the reviews.\n* determine if the overall sentiment of all the listed responses to be either strongly negative, negative, neutral, positive or strongly positive."
},
"schemaType": "fromJson",
"jsonSchemaExample": "{\n\t\"Insight\": \"\",\n \"Sentiment\": \"\",\n \"Suggested Improvements\": \"\"\n}"
},
"typeVersion": 1
},
{
"id": "4488deb9-27f6-4f9d-b17e-9b5e7a1bba33",
"name": "Sticky Note12",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
760
],
"parameters": {
"color": 5,
"width": 323.2987132716669,
"height": 80,
"content": "### Run this once! \nIf for any reason you need to run more than once, be sure to clear the existing data first."
},
"typeVersion": 1
},
{
"id": "5cb3bd73-1e77-4eba-9d2e-634fdc374330",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
780,
1480
],
"parameters": {
"color": 5,
"width": 323.2987132716669,
"height": 110.05160146874424,
"content": "### First Time Running?\nThere is a slight delay on first run because the code node has to download the required packages."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Zip Entries": {
"main": [
[
{
"node": "Reviews to List",
"type": "main",
"index": 0
}
]
]
},
"Find Reviews": {
"main": [
[
{
"node": "Apply K-means Clustering Algorithm",
"type": "main",
"index": 0
}
]
]
},
"Set Variables": {
"main": [
[
{
"node": "Clear Existing Reviews",
"type": "main",
"index": 0
}
]
]
},
"Set Variables1": {
"main": [
[
{
"node": "Find Reviews",
"type": "main",
"index": 0
}
]
]
},
"Extract Reviews": {
"main": [
[
{
"node": "Zip Entries",
"type": "main",
"index": 0
}
]
]
},
"Reviews to List": {
"main": [
[
{
"node": "Qdrant Vector Store",
"type": "main",
"index": 0
}
]
]
},
"Clusters To List": {
"main": [
[
{
"node": "Only Clusters With 3+ points",
"type": "main",
"index": 0
}
]
]
},
"Embeddings OpenAI": {
"ai_embedding": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_embedding",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Customer Insights Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Default Data Loader": {
"ai_document": [
[
{
"node": "Qdrant Vector Store",
"type": "ai_document",
"index": 0
}
]
]
},
"Get TrustPilot Page": {
"main": [
[
{
"node": "Extract Reviews",
"type": "main",
"index": 0
}
]
]
},
"Qdrant Vector Store": {
"main": [
[
{
"node": "Prep Values For Trigger",
"type": "main",
"index": 0
}
]
]
},
"Get Payload of Points": {
"main": [
[
{
"node": "Customer Insights Agent",
"type": "main",
"index": 0
}
]
]
},
"Clear Existing Reviews": {
"main": [
[
{
"node": "Get TrustPilot Page",
"type": "main",
"index": 0
}
]
]
},
"Prep Output For Export": {
"main": [
[
{
"node": "Export To Sheets",
"type": "main",
"index": 0
}
]
]
},
"Customer Insights Agent": {
"main": [
[
{
"node": "Prep Output For Export",
"type": "main",
"index": 0
}
]
]
},
"Prep Values For Trigger": {
"main": [
[
{
"node": "Trigger Insights",
"type": "main",
"index": 0
}
]
]
},
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Set Variables1",
"type": "main",
"index": 0
}
]
]
},
"Only Clusters With 3+ points": {
"main": [
[
{
"node": "Get Payload of Points",
"type": "main",
"index": 0
}
]
]
},
"Recursive Character Text Splitter": {
"ai_textSplitter": [
[
{
"node": "Default Data Loader",
"type": "ai_textSplitter",
"index": 0
}
]
]
},
"When clicking ‘Test workflow’": {
"main": [
[
{
"node": "Set Variables",
"type": "main",
"index": 0
}
]
]
},
"Apply K-means Clustering Algorithm": {
"main": [
[
{
"node": "Clusters To List",
"type": "main",
"index": 0
}
]
]
}
}
}
================================================
FILE: AI_Research_RAG_and_Data_Analysis/Deduplicate Scraping AI Grants for Eligibility using AI.json
================================================
{
"nodes": [
{
"id": "c17e444e-0a5e-4bfe-8de6-c3185de4465d",
"name": "Grants to List",
"type": "n8n-nodes-base.splitOut",
"position": [
-240,
-180
],
"parameters": {
"options": {},
"fieldToSplitOut": "oppHits"
},
"typeVersion": 1
},
{
"id": "9251d39c-6098-42fa-aadd-3a22464dee64",
"name": "Get Grant Details",
"type": "n8n-nodes-base.httpRequest",
"position": [
280,
-280
],
"parameters": {
"url": "https://apply07.grants.gov/grantsws/rest/opportunity/details",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "form-urlencoded",
"bodyParameters": {
"parameters": [
{
"name": "oppId",
"value": "={{ $json.id }}"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "ade994d6-a1f8-45bf-a82e-83eb38da08d6",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
440,
-120
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1
},
{
"id": "4d81b20e-0038-48d3-840c-3fcf8b798a0d",
"name": "Summarize Synopsis",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
460,
-280
],
"parameters": {
"text": "=Agency: {{ $json.synopsis.agencyName }}\nTitle: {{ $json.opportunityTitle }}\nSynopsis: {{ $json.synopsis.synopsisDesc }}",
"options": {
"systemPromptTemplate": "You've been given a grant opportunity listing. Help summarize the opportunity in simple terms."
},
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n \"goal\": { \"type\": [\"string\", \"null\"] },\n \"duration\": { \"type\": \"string\" },\n \"success_criteria\": {\n \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n },\n \"good_to_know\": {\n\t\t \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n\t}\n}"
},
"typeVersion": 1
},
{
"id": "71e1a2e9-6690-4247-aae3-f5bd61019553",
"name": "Eligibility Factors",
"type": "@n8n/n8n-nodes-langchain.informationExtractor",
"position": [
640,
-120
],
"parameters": {
"text": "=Agency: {{ $json.synopsis.agencyName }}\nTitle: {{ $json.opportunityTitle }}\nSynopsis: {{ $json.synopsis.synopsisDesc }}\nEligibility: {{ $json.synopsis.applicantEligibilityDesc }}",
"options": {
"systemPromptTemplate": "Help determine if we are eligible for this grant.\n\nWe are AI Consultants Limited (“Company”) and are the controllers of your personal data. Our registered office is Unit 29, Intelligent Park, Milton Road, Cambridge Cambridgeshire CB9 RDW, and our registered company number is 1234567.\n\nWe are part of a group of companies which provides consultancy services across the globe. Our other group companies are:\n\nAI Consultants Inc. of 2 Drydock Avenue, Suite 1210, Boston, MA 02210, USA\nAI Consultants (Singapore) Pte Ltd of 300 Beach Road, Singapore 199555\nAI Consultants Japan Inc, of 3-1-3 Minamiaoyama, Minato-ku, Tokyo, 107-0062\nIn the UK we are registered with the Information Commissioner’s Office under registration number Z9888888.\n\nIn the US we are registered with the Data Privacy Framework Program (DPF). To view the Company’s certification, please visit https://www.dataprivacyframework.gov/list.\n\nWe are a leading, worldwide product development service provider. We specialise in design engineering services, professional technical services and product technical support services (“Services”).\n\nAs the deep tech powerhouse of Capgemini, CC spearheads transformative projects to solve the toughest scientific and engineering challenges. Ambitious clients collaborate with us to create new-to-the-world technologies, services and products that have never been seen before. Our unique combination of technical, commercial and market expertise yields market-leading solutions that are hard to copy. This creates valuable intellectual property that generates protectable long-term value.\n\nWe work with some of the world’s biggest brands and most ambitious technology start-up ventures across a wide range of markets. From aerospace to agritech, consumer to industry, communications to healthcare, our knowledge of one sector can often be applied to another to create new breakthroughs. We focus on our clients’ success and we are trusted as integral partners in the future of their businesses.\n\nWe do important, difficult, radical and impactful things that benefit society. We helped develop the world's first 24/7 wrist-worn activity monitor, wireless pacemaker and wireless patient monitor, as well as the first connected drug inhaler. Our work led to the most densely packed cellular network in the world – orchestrating swarms of bots across highly automated warehouses. It produced the Bluetooth chip that connects your phone to your car and the latest satellite technology that lets people in remote locations across the world keep in touch."
},
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"eligibility_matches\": {\n\t\t \"type\": \"array\",\n \"items\": { \"type\": \"string\" }\n }\n\t}\n}"
},
"typeVersion": 1
},
{
"id": "d741ef63-dcf3-452d-978c-8cbc27f55a33",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
600,
20
],
"parameters": {
"options": {}
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1
},
{
"id": "7354ed6d-50f5-4234-90d8-2d9d0c7eccd4",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1000,
-120
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3
},
{
"id": "2dffda98-18c6-4c7b-8fc3-0e6539642ea2",
"name": "Save to Tracker",
"type": "n8n-nodes-base.airtable",
"position": [
1420,
-20
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appiNoPRvhJxz9crl",
"cachedResultUrl": "https://airtable.com/appiNoPRvhJxz9crl",
"cachedResultName": "US Grants.gov Tracker"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblX93C9MNzizhibd",
"cachedResultUrl": "https://airtable.com/appiNoPRvhJxz9crl/tblX93C9MNzizhibd",
"cachedResultName": "Table 1"
},
"columns": {
"value": {
"URL": "=https://grants.gov/search-results-detail/{{ $('Get Grant Details').item.json.id }}",
"Goal": "={{ $json.output.goal }}",
"Notes": "={{ $json.output.good_to_know.join('\\n') }}",
"Title": "={{ $('Get Grant Details').item.json.opportunityTitle }}",
"Agency": "={{ $('Get Grant Details').item.json.synopsis.agencyContactName }}",
"Status": "New",
"Funding": "={{ $('Get Grant Details').item.json.synopsis.estimatedFunding }}",
"Duration": "={{ $json.output.duration }}",
"Award Floor": "={{ $('Get Grant Details').item.json.synopsis.awardFloor }}",
"Posted Date": "={{ $('Get Grant Details').item.json.synopsis.postingDate }}",
"Agency Email": "={{ $('Get Grant Details').item.json.synopsis.agencyContactEmail }}",
"Agency Phone": "={{ $('Get Grant Details').item.json.synopsis.agencyContactPhone }}",
"Eligibility?": "={{ $json.output.eligibility_matches.length > 0 ? 'Yes' : 'No' }}",
"Award Ceiling": "={{ $('Get Grant Details').item.json.synopsis.awardCeiling }}",
"Response Date": "={{ $('Get Grant Details').item.json.synopsis.responseDate }}",
"Success Criteria": "={{ $json.output.success_criteria.join('\\n') }}",
"Eligibility Notes": "={{ $json.output.eligibility_matches.join('\\n') }}",
"Opportunity Number": "={{ $('Get Grant Details').item.json.opportunityNumber }}"
},
"schema": [
{
"id": "Opportunity Number",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Opportunity Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "New",
"value": "New"
},
{
"name": "Under Review",
"value": "Under Review"
},
{
"name": "Interested",
"value": "Interested"
},
{
"name": "Not Interested",
"value": "Not Interested"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "URL",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Goal",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Goal",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Success Criteria",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Success Criteria",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Eligibility?",
"type": "options",
"display": true,
"options": [
{
"name": "Yes",
"value": "Yes"
},
{
"name": "No",
"value": "No"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Eligibility?",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Eligibility Notes",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Eligibility Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Duration",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Duration",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Agency",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Agency",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Agency Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Agency Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Agency Phone",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Agency Phone",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Posted Date",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Posted Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Response Date",
"type": "dateTime",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Response Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Funding",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Funding",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Award Ceiling",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Award Ceiling",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Award Floor",
"type": "number",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Award Floor",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": []
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "f0712788-b801-4070-a5c2-2f7ed620588e",
"name": "Only New Grants",
"type": "n8n-nodes-base.removeDuplicates",
"position": [
-60,
-180
],
"parameters": {
"options": {},
"operation": "removeItemsSeenInPreviousExecutions",
"dedupeValue": "={{ $json.id }}"
},
"typeVersion": 2
},
{
"id": "fb4ac14d-0bdd-40f7-9b31-3a23450b1f0b",
"name": "AI Grants since Yesterday",
"type": "n8n-nodes-base.httpRequest",
"position": [
-420,
-180
],
"parameters": {
"url": "https://apply07.grants.gov/grantsws/rest/opportunities/search",
"method": "POST",
"options": {},
"jsonBody": "{\n \"keyword\": \"ai\",\n \"cfda\": null,\n \"agencies\": null,\n \"sortBy\": \"openDate|desc\",\n \"rows\": 5000,\n \"eligibilities\": null,\n \"fundingCategories\": null,\n \"fundingInstruments\": null,\n \"dateRange\": \"1\",\n \"oppStatuses\": \"forecasted|posted\"\n}",
"sendBody": true,
"specifyBody": "json"
},
"typeVersion": 4.2
},
{
"id": "0446c882-764a-4c94-8c49-f368c50586a0",
"name": "Get New Eligible Grants Today",
"type": "n8n-nodes-base.airtable",
"position": [
-400,
500
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appiNoPRvhJxz9crl",
"cachedResultUrl": "https://airtable.com/appiNoPRvhJxz9crl",
"cachedResultName": "US Grants.gov Tracker"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblX93C9MNzizhibd",
"cachedResultUrl": "https://airtable.com/appiNoPRvhJxz9crl/tblX93C9MNzizhibd",
"cachedResultName": "Table 1"
},
"options": {},
"operation": "search",
"filterByFormula": "=AND(\n {Status} = 'New',\n {Eligibility?} = 'Yes',\n IS_SAME(DATETIME_FORMAT(Created, 'YYYY-MM-DD'), DATETIME_FORMAT(TODAY(), 'YYYY-MM-DD'))\n)"
},
"credentials": {
"airtableTokenApi": {
"id": "Und0frCQ6SNVX3VV",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "70bca43a-d00e-4ee6-828a-9926ba1d8fdb",
"name": "Generate Email",
"type": "n8n-nodes-base.html",
"position": [
-160,
500
],
"parameters": {
"html": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional //EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\">\n<head>\n<!--[if gte mso 9]>\n<xml>\n <o:OfficeDocumentSettings>\n <o:AllowPNG/>\n <o:PixelsPerInch>96</o:PixelsPerInch>\n </o:OfficeDocumentSettings>\n</xml>\n<![endif]-->\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <meta name=\"x-apple-disable-message-reformatting\">\n <!--[if !mso]><!--><meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\"><!--<![endif]-->\n <title></title>\n \n <style type=\"text/css\">\n @media only screen and (min-width: 520px) {\n .u-row {\n width: 500px !important;\n }\n .u-row .u-col {\n vertical-align: top;\n }\n\n .u-row .u-col-100 {\n width: 500px !important;\n }\n\n}\n\n@media (max-width: 520px) {\n .u-row-container {\n max-width: 100% !important;\n padding-left: 0px !important;\n padding-right: 0px !important;\n }\n .u-row .u-col {\n min-width: 320px !important;\n max-width: 100% !important;\n display: block !important;\n }\n .u-row {\n width: 100% !important;\n }\n .u-col {\n width: 100% !important;\n }\n .u-col > div {\n margin: 0 auto;\n }\n}\nbody {\n margin: 0;\n padding: 0;\n}\n\ntable,\ntr,\ntd {\n vertical-align: top;\n border-collapse: collapse;\n}\n\np {\n margin: 0;\n}\n\n.ie-container table,\n.mso-container table {\n table-layout: fixed;\n}\n\n* {\n line-height: inherit;\n}\n\na[x-apple-data-detectors='true'] {\n color: inherit !important;\n text-decoration: none !important;\n}\n\ntable, td { color: #000000; } </style>\n \n \n\n</head>\n\n<body class=\"clean-body u_body\" style=\"margin: 0;padding: 0;-webkit-text-size-adjust: 100%;background-color: #F7F8F9;color: #000000\">\n <!--[if IE]><div class=\"ie-container\"><![endif]-->\n <!--[if mso]><div class=\"mso-container\"><![endif]-->\n <table style=\"border-collapse: collapse;table-layout: fixed;border-spacing: 0;mso-table-lspace: 0pt;mso-table-rspace: 0pt;vertical-align: top;min-width: 320px;Margin: 0 auto;background-color: #F7F8F9;width:100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tbody>\n <tr style=\"vertical-align: top\">\n <td style=\"word-break: break-word;border-collapse: collapse !important;vertical-align: top\">\n <!--[if (mso)|(IE)]><table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr><td align=\"center\" style=\"background-color: #F7F8F9;\"><![endif]-->\n \n \n \n<div class=\"u-row-container\" style=\"padding: 0px;background-color: #f7f8f9\">\n <div class=\"u-row\" style=\"margin: 0 auto;min-width: 320px;max-width: 500px;overflow-wrap: break-word;word-wrap: break-word;word-break: break-word;background-color: #ffffff;\">\n <div style=\"border-collapse: collapse;display: table;width: 100%;height: 100%;background-color: transparent;\">\n <!--[if (mso)|(IE)]><table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\"><tr><td style=\"padding: 0px;background-color: #f7f8f9;\" align=\"center\"><table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"width:500px;\"><tr style=\"background-color: #ffffff;\"><![endif]-->\n \n<!--[if (mso)|(IE)]><td align=\"center\" width=\"500\" style=\"background-color: #f7f8f9;width: 500px;padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;\" valign=\"top\"><![endif]-->\n<div class=\"u-col u-col-100\" style=\"max-width: 320px;min-width: 500px;display: table-cell;vertical-align: top;\">\n <div style=\"background-color: #f7f8f9;height: 100%;width: 100% !important;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;\">\n <!--[if (!mso)&(!IE)]><!--><div style=\"box-sizing: border-box; height: 100%; padding: 0px;border-top: 0px solid transparent;border-left: 0px solid transparent;border-right: 0px solid transparent;border-bottom: 0px solid transparent;border-radius: 0px;-webkit-border-radius: 0px; -moz-border-radius: 0px;\"><!--<![endif]-->\n \n<table style=\"font-family:arial,helvetica,sans-serif;\" role=\"pres
gitextract_go929gig/ ├── AI product imagines.json ├── AI_Research_RAG_and_Data_Analysis/ │ ├── Analyze tradingview.com charts with Chrome extension, N8N and OpenAI.json │ ├── Automated Hugging Face Paper Summary Fetching & Categorization Workflow.json │ ├── Autonomous AI crawler.json │ ├── Build Your Own Image Search Using AI Object Detection, CDN and ElasticSearchBuild Your Own Image Search Using AI Object Detection, CDN and ElasticSearch.json │ ├── Build a Financial Documents Assistant using Qdrant and Mistral.ai.json │ ├── Build a Tax Code Assistant with Qdrant, Mistral.ai and OpenAI.json │ ├── Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI.json │ ├── Chat with GitHub API Documentation_ RAG-Powered Chatbot with Pinecone & OpenAI.json │ ├── Create a Google Analytics Data Report with AI and sent it to E-Mail and Telegram.json │ ├── Customer Insights with Qdrant, Python and Information Extractor.json │ ├── Deduplicate Scraping AI Grants for Eligibility using AI.json │ ├── Enrich Property Inventory Survey with Image Recognition and AI Agent.json │ ├── Extract insights & analyse YouTube comments via AI Agent chat.json │ ├── Generate SEO Seed Keywords Using AI.json │ ├── Hacker News Job Listing Scraper and Parser.json │ ├── Hacker News to Video Content.json │ ├── Host Your Own AI Deep Research Agent with n8n, Apify and OpenAI o3.json │ ├── Intelligent Web Query and Semantic Re-Ranking Flow using Brave and Google Gemini.json │ ├── Learn Anything from HN - Get Top Resource Recommendations from Hacker News.json │ ├── Make OpenAI Citation for File Retrieval RAG.json │ ├── Open Deep Research - AI-Powered Autonomous Research Workflow.json │ ├── Query Perplexity AI from your n8n workflows.json │ ├── Recipe Recommendations with Qdrant and Mistral.json │ ├── Reconcile Rent Payments with Local Excel Spreadsheet and OpenAI.json │ ├── Scrape Trustpilot Reviews with DeepSeek, Analyze Sentiment with OpenAI.json │ ├── Scrape and summarize posts of a news site without RSS feed using AI and save them to a NocoDB.json │ ├── Scrape and summarize webpages with AI.json │ ├── Send Google analytics data to A.I. to analyze then save results in Baserow.json │ ├── Send Google analytics data to A.I. to analyze then save results in BaserowSend Google analytics data to A.I. to analyze then save results in Baserow.json │ ├── Spot Workplace Discrimination Patterns with AI.json │ ├── Summarize SERPBear data with AI (via Openrouter) and save it to Baserow.json │ ├── Summarize Umami data with AI (via Openrouter) and save it to Baserow.json │ ├── Survey Insights with Qdrant, Python and Information Extractor.json │ ├── Ultimate Scraper Workflow for n8n.json │ ├── Vector Database as a Big Data Analysis Tool for AI Agents [1_3 anomaly][1_2 KNN].json │ ├── Vector Database as a Big Data Analysis Tool for AI Agents [2_2 KNN].json │ ├── Vector Database as a Big Data Analysis Tool for AI Agents [2_3 - anomaly].json │ ├── Vector Database as a Big Data Analysis Tool for AI Agents [3_3 - anomaly].json │ ├── Visual Regression Testing with Apify and AI Vision Model.json │ └── 🔍 Perplexity Research to HTML_ AI-Powered Content Creation.json ├── Airtable/ │ ├── AI Agent for project management and meetings with Airtable and Fireflies.json │ ├── AI Agent to chat with Airtable and analyze data.json │ ├── Get Airtable data via AI and Obsidian Notes.json │ ├── Handling Job Application Submissions with AI and n8n Forms.json │ └── vAssistant for Hubspot Chat using OpenAi and Airtable.json ├── CITATION.cff ├── CONTRIBUTING.md ├── Database_and_Storage/ │ ├── Chat with Postgresql Database.json │ ├── Generate SQL queries from schema only - AI-powered.json │ ├── MongoDB AI Agent - Intelligent Movie Recommendations.json │ ├── Supabase Insertion & Upsertion & Retrieval.json │ └── Talk to your SQLite database with a LangChain AI Agent.json ├── Discord/ │ ├── Discord AI-powered bot.json │ ├── Send daily translated Calvin and Hobbes Comics to Discord.json │ └── Share YouTube Videos with AI Summaries on Discord.json ├── Forms_and_Surveys/ │ ├── Conversational Interviews with AI Agents and n8n Forms.json │ ├── Email Subscription Service with n8n Forms, Airtable and AI.json │ └── Qualifying Appointment Requests with AI & n8n Forms.json ├── Gmail_and_Email_Automation/ │ ├── A Very Simple _Human in the Loop_ Email Response System Using AI and IMAP.json │ ├── AI-powered email processing autoresponder and response approval (Yes_No).json │ ├── Analyze & Sort Suspicious Email Contents with ChatGPT.json │ ├── Analyze Suspicious Email Contents with ChatGPT Vision.json │ ├── Auto Categorise Outlook Emails with AI.json │ ├── Auto-label incoming Gmail messages with AI nodes.json │ ├── Basic Automatic Gmail Email Labelling with OpenAI and Gmail API.json │ ├── Classify lemlist replies using OpenAI and automate reply handling.json │ ├── Compose reply draft in Gmail with OpenAI Assistant.json │ ├── Effortless Email Management with AI-Powered Summarization & Review.json │ ├── Email Summary Agent.json │ ├── Extract spending history from gmail to google sheet.json │ ├── Gmail AI Auto-Responder_ Create Draft Replies to incoming emails.json │ ├── Microsoft Outlook AI Email Assistant with contact support from Monday and Airtable.json │ ├── Modular & Customizable AI-Powered Email Routing_ Text Classifier for eCommerce.json │ ├── Send a ChatGPT email reply and save responses to Google Sheets.json │ ├── Send specific PDF attachments from Gmail to Google Drive using OpenAI.json │ ├── Summarize your emails with A.I. (via Openrouter) and send to Line messenger.json │ ├── create e-mail responses with fastmail and OpenAI.json │ └── 📈 Receive Daily Market News from FT.com to your Microsoft outlook inbox.json ├── Google_Drive_and_Google_Sheets/ │ ├── Author and Publish Blog Posts From Google Sheets.json │ ├── Automated End-to-End Fine-Tuning of OpenAI Models with Google Drive Integration.json │ ├── Automatic Background Removal for Images in Google Drive.json │ ├── Build an OpenAI Assistant with Google Drive Integration.json │ ├── Chat with a Google Sheet using AI.json │ ├── Chat with your event schedule from Google Sheets in Telegram.json │ ├── Extract Information from a Logo Sheet using forms, AI, Google Sheet and Airtable.json │ ├── Flux Dev Image Generation (Fal.ai) to Google Drive.json │ ├── Qualify new leads in Google Sheets via OpenAI_s GPT-4.json │ ├── RAG Chatbot for Company Documents using Google Drive and Gemini.json │ ├── RAG_Context-Aware Chunking _ Google Drive to Pinecone via OpenRouter & Gemini.json │ ├── Screen Applicants With AI, notify HR and save them in a Google Sheet.json │ ├── Simple Expense Tracker with n8n Chat, AI Agent and Google Sheets.json │ ├── Summarize Google Sheets form feedback via OpenAI_s GPT-4.json │ ├── Summarize the New Documents from Google Drive and Save Summary in Google Sheet.json │ ├── Upload to Instagram and Tiktok from Google Drive.json │ └── ✨ Vision-Based AI Agent Scraper - with Google Sheets, ScrapingBee, and Gemini.json ├── HR_and_Recruitment/ │ ├── BambooHR AI-Powered Company Policies and Benefits Chatbot.json │ ├── CV Screening with OpenAI.json │ ├── HR & IT Helpdesk Chatbot with Audio Transcription.json │ └── HR Job Posting and Evaluation with AI.json ├── Instagram_Twitter_Social_Media/ │ ├── AI agent for Instagram DM_inbox. Manychat + Open AI integration.json │ ├── Create dynamic Twitter profile banner.json │ ├── Generate Instagram Content from Top Trends with AI Image Generation.json │ ├── OpenAI-powered tweet generator.json │ ├── Post New YouTube Videos to X.json │ ├── Reddit AI digest.json │ ├── Social Media Analysis and Automated Email Generation.json │ ├── Speed Up Social Media Banners With BannerBear.com.json │ ├── Twitter Virtual AI Influencer.json │ └── Update Twitter banner using HTTP request.json ├── LICENSE ├── Notion/ │ ├── Add positive feedback messages to a table in Notion.json │ ├── Analyse papers from Hugging Face with AI and store them in Notion.json │ ├── Automate Competitor Research with Exa.ai, Notion and AI Agents.json │ ├── Automate LinkedIn Outreach with Notion and OpenAI.json │ ├── Notion AI Assistant Generator.json │ ├── Notion knowledge base AI assistant.json │ ├── Notion to Pinecone Vector Store Integration.json │ ├── Store Notion_s Pages as Vector Documents into Supabase with OpenAI.json │ ├── Turn Emails into AI-Enhanced Tasks in Notion (Multi-User Support) with Gmail, Airtable and Softr.json │ └── Upsert huge documents in a vector store with Supabase and Notion.json ├── OpenAI_and_LLMs/ │ ├── AI Agent To Chat With Files In Supabase Storage.json │ ├── AI Agent _ Google calendar assistant using OpenAI.json │ ├── AI Agent for realtime insights on meetings.json │ ├── AI Agent to chat with Supabase_PostgreSQL DB.json │ ├── AI Agent to chat with you Search Console Data, using OpenAI and Postgres.json │ ├── AI Agent with Ollama for current weather and wiki.json │ ├── AI Automated HR Workflow for CV Analysis and Candidate Evaluation.json │ ├── AI Crew to Automate Fundamental Stock Analysis - Q&A Workflow.json │ ├── AI Customer feedback sentiment analysis.json │ ├── AI Data Extraction with Dynamic Prompts and Airtable.json │ ├── AI Data Extraction with Dynamic Prompts and Baserow.json │ ├── AI Fitness Coach Strava Data Analysis and Personalized Training Insights.json │ ├── AI Powered Web Scraping with Jina, Google Sheets and OpenAI _ the EASY way.json │ ├── AI Social Media Caption Creator creates social media post captions in Airtable.json │ ├── AI Voice Chat using Webhook, Memory Manager, OpenAI, Google Gemini & ElevenLabs.json │ ├── AI Voice Chatbot with ElevenLabs & OpenAI for Customer Service and Restaurants.json │ ├── AI Youtube Trend Finder Based On Niche.json │ ├── AI agent chat.json │ ├── AI agent that can scrape webpages.json │ ├── AI chat with any data source (using the n8n workflow tool).json │ ├── AI chatbot that can search the web.json │ ├── AI web researcher for sales.json │ ├── AI-Driven Lead Management and Inquiry Automation with ERPNext & n8n.json │ ├── AI-Generated Summary Block for WordPress Posts.json │ ├── AI-Powered Candidate Shortlisting Automation for ERPNext.json │ ├── AI-Powered Email Automation for Business_ Summarize & Respond with RAG.json │ ├── AI-Powered RAG Workflow For Stock Earnings Report Analysis.json │ ├── AI-Powered Social Media Amplifier.json │ ├── AI-powered WooCommerce Support-Agent.json │ ├── AI_ Ask questions about any data source (using the n8n workflow retriever).json │ ├── AI_ Summarize podcast episode and enhance using Wikipedia.json │ ├── Actioning Your Meeting Next Steps using Transcripts and AI.json │ ├── Advanced AI Demo (Presented at AI Developers #14 meetup).json │ ├── Ask a human for help when the AI doesn_t know the answer.json │ ├── Automate Customer Support Issue Resolution using AI Text Classifier.json │ ├── Automate Image Validation Tasks using AI Vision.json │ ├── Automate Your RFP Process with OpenAI Assistants.json │ ├── Chat Assistant (OpenAI assistant) with Postgres Memory And API Calling Capabalities.json │ ├── Chat with OpenAI Assistant (by adding a memory).json │ ├── Chat with local LLMs using n8n and Ollama.json │ ├── Configure your own Image Creation API Using OpenAI DALLE-3.json │ ├── Convert text to speech with OpenAI.json │ ├── Create a Branded AI-Powered Website Chatbot.json │ ├── Custom LangChain agent written in JavaScript.json │ ├── Daily Podcast Summary.json │ ├── Daily meetings summarization with Gemini AI.json │ ├── Detect hallucinations using specialised Ollama model bespoke-minicheck.json │ ├── Dynamically generate a webpage from user request using OpenAI Structured Output.json │ ├── Easy Image Captioning with Gemini 1.5 Pro.json │ ├── Enrich FAQ sections on your website pages at scale with AI.json │ ├── Extract personal data with self-hosted LLM Mistral NeMo.json │ ├── Fetch Dynamic Prompts from GitHub and Auto-Populate n8n Expressions in Prompt.json │ ├── Flux AI Image Generator.json │ ├── Force AI to use a specific output format.json │ ├── Generate 9_16 Images from Content and Brand Guidelines.json │ ├── Generate Text-to-Speech Using Elevenlabs via API.json │ ├── Generate audio from text using OpenAI and Webhook _ Text to Speech Workflow.json │ ├── Generating Image Embeddings via Textual Summarisation.json │ ├── Narrating over a Video using Multimodal AI.json │ ├── OpenAI Assistant workflow_ upload file, create an Assistant, chat with it!.json │ ├── OpenAI assistant with custom tools.json │ ├── OpenAI examples_ ChatGPT, DALLE-2, Whisper-1 – 5-in-1.json │ ├── Organise Your Local File Directories With AI.json │ ├── Personal Shopper Chatbot for WooCommerce with RAG using Google Drive and openAI.json │ ├── Prompt-based Object Detection with Gemini 2.0.json │ ├── Proxmox AI Agent with n8n and Generative AI Integration.json │ ├── Query n8n Credentials with AI SQL Agent.json │ ├── Suggest meeting slots using AI.json │ ├── Summarize YouTube Videos from Transcript.json │ ├── Transform Image to Lego Style Using Line and Dall-E.json │ ├── Translate audio using AI.json │ ├── Use OpenRouter in n8n versions _1.78.json │ ├── lemlist __ GPT-3_ Supercharge your sales workflows.json │ ├── ⚡AI-Powered YouTube Video Summarization & Analysis.json │ ├── 🎨 Interactive Image Editor with FLUX.1 Fill Tool for Inpainting.json │ ├── 🐋DeepSeek V3 Chat & R1 Reasoning Quick Start.json │ ├── 📚 Auto-generate documentation for n8n workflows with GPT and Docsify.json │ ├── 🔐🦙🤖 Private & Local Ollama Self-Hosted AI Assistant.json │ ├── 🔥📈🤖 AI Agent for n8n Creators Leaderboard - Find Popular Workflows.json │ ├── 🚀 Local Multi-LLM Testing & Performance Tracker.json │ └── 🤖🧑_💻 AI Agent for Top n8n Creators Leaderboard Reporting.json ├── Other/ │ └── ALL_unique_nodes.json ├── Other_Integrations_and_Use_Cases/ │ ├── API Schema Extractor.json │ ├── Analyze feedback and send a message on Mattermost.json │ ├── Analyze feedback using AWS Comprehend and send it to a Mattermost channel.json │ ├── Automate Pinterest Analysis & AI-Powered Content Suggestions With Pinterest API.json │ ├── Automate SIEM Alert Enrichment with MITRE ATT&CK, Qdrant & Zendesk in n8n.json │ ├── Automate Screenshots with URLbox & Analyze them with AI.json │ ├── Automate testimonials in Strapi with n8n.json │ ├── Bitrix24 Chatbot Application Workflow example with Webhook Integration.json │ ├── ChatGPT Automatic Code Review in Gitlab MR.json │ ├── Classify new bugs in Linear with OpenAI_s GPT-4 and move them to the right team.json │ ├── Create, update, and get a profile in Humantic AI.json │ ├── Enhance Customer Chat by Buffering Messages with Twilio and Redis.json │ ├── Hacker News Throwback Machine - See What Was Hot on This Day, Every Year!.json │ ├── Handling Appointment Leads and Follow-up With Twilio, Cal.com and AI.json │ ├── Integrating AI with Open-Meteo API for Enhanced Weather Forecasting.json │ ├── Introduction to the HTTP Tool.json │ ├── KB Tool - Confluence Knowledge Base.json │ ├── LINE Assistant with Google Calendar and Gmail Integration.json │ ├── Monthly Spotify Track Archiving and Playlist Classification.json │ ├── Obsidian Notes Read Aloud using AI_ Available as a Podcast Feed.json │ ├── Optimize & Update Printify Title and Description Workflow.json │ ├── Qualify replies from Pipedrive persons with AI.json │ ├── Siri AI Agent_ Apple Shortcuts powered voice template.json │ ├── Text automations using Apple Shortcuts.json │ ├── UTM Link Creator & QR Code Generator with Scheduled Google Analytics Reports.json │ ├── Use AI to organize your Todoist Inbox.json │ ├── Using External Workflows as Tools in n8n.json │ ├── Visualize your SQL Agent queries with OpenAI and Quickchart.io.json │ └── Zoom AI Meeting Assistant creates mail summary, ClickUp tasks and follow-up call.json ├── PDF_and_Document_Processing/ │ ├── Ask questions about a PDF using AI.json │ ├── Breakdown Documents into Study Notes using Templating MistralAI and Qdrant.json │ ├── CV Resume PDF Parsing with Multimodal Vision AI.json │ ├── Chat with PDF docs using AI (quoting sources).json │ ├── Convert URL HTML to Markdown Format and Get Page Links.json │ ├── ETL pipeline for text processing.json │ ├── Extract and process information directly from PDF using Claude and Gemini.json │ ├── Extract data from resume and create PDF with Gotenberg.json │ ├── Extract license plate number from image uploaded via an n8n form.json │ ├── Extract text from PDF and image using Vertex AI (Gemini) into CSV.json │ ├── Invoice data extraction with LlamaParse and OpenAI.json │ ├── Manipulate PDF with Adobe developer API.json │ ├── Parse PDF with LlamaParse and save to Airtable.json │ ├── Prepare CSV files with GPT-4Prepare CSV files with GPT-4.json │ ├── Remove Personally Identifiable Information (PII) from CSV Files with OpenAI.json │ ├── Transcribe Audio Files, Summarize with GPT-4, and Store in Notion.json │ └── Transcribing Bank Statements To Markdown Using Gemini Vision AI.json ├── README-ar.md ├── README-de.md ├── README-es.md ├── README-fr.md ├── README-hi.md ├── README-id.md ├── README-it.md ├── README-ja.md ├── README-ko.md ├── README-pt.md ├── README-ru.md ├── README-tr.md ├── README-zh.md ├── README.md ├── Slack/ │ ├── AI-Powered Information Monitoring with OpenAI, Google Sheets, Jina AI and Slack.json │ ├── Creating a AI Slack Bot with Google Gemini.json │ ├── Customer Support Channel and Ticketing System with Slack and Linear.json │ ├── Enhance Security Operations with the Qualys Slack Shortcut Bot!.json │ ├── Enrich Pipedrive_s Organization Data with OpenAI GPT-4o & Notify it in Slack.json │ ├── IT Ops AI SlackBot Workflow - Chat with your knowledge base.json │ ├── Sentiment Analysis Tracking on Support Issues with Linear and Slack.json │ ├── Slack slash commands AI Chat Bot.json │ └── Venafi Cloud Slack Cert Bot.json ├── Telegram/ │ ├── AI-Powered Children_s Arabic Storytelling on Telegram.json │ ├── AI-Powered Children_s English Storytelling on Telegram with OpenAI.json │ ├── Agentic Telegram AI bot with with LangChain nodes and new tools.json │ ├── Angie, Personal AI Assistant with Telegram Voice and Text.json │ ├── Automated AI image analysis and response via Telegram.json │ ├── Chat with OpenAIs GPT via a simple Telegram Bot.json │ ├── Detect toxic language in Telegram messages.json │ ├── Image Creation with OpenAI and Telegram.json │ ├── Send a random recipe once a day to Telegram.json │ ├── TeleBot_KnowledgeHub.json │ ├── Telegram AI Bot_ NeurochainAI Text & Image - NeurochainAI Basic API Integration.json │ ├── Telegram AI Chatbot.json │ ├── Telegram AI bot assistant_ ready-made template for voice & text messages.json │ ├── Telegram AI bot with LangChain nodes.json │ ├── Telegram Bot with Supabase memory and OpenAI assistant integration.json │ ├── Telegram chat with PDF.json │ ├── Telegram to Spotify with OpenAI.json │ ├── Translate Telegram audio messages with AI (55 supported languages).json │ ├── 🐋🤖 DeepSeek AI Agent + Telegram + LONG TERM Memory 🧠.json │ ├── 🤖 Telegram Messaging Agent for Text_Audio_Images.json │ └── 🤖🧠 AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram.json ├── WhatsApp/ │ ├── Automate Sales Meeting Prep with AI & APIFY Sent To WhatsApp.json │ ├── Building Your First WhatsApp Chatbot.json │ ├── Complete business WhatsApp AI-Powered RAG Chatbot using OpenAI.json │ └── Respond to WhatsApp Messages with AI Like a Pro!.json ├── WordPress/ │ ├── Auto-Categorize blog posts in wordpress using A.I..json │ ├── Auto-Tag Blog Posts in WordPress with AI.json │ ├── Automate Blog Creation in Brand Voice with AI.json │ ├── Automate Content Generator for WordPress with DeepSeek R1.json │ ├── WordPress - AI Chatbot to enhance user experience - with Supabase and OpenAI.json │ └── Write a WordPress post with AI (starting from a few keywords).json ├── devops/ │ ├── docker-compose-controller.json │ └── linux-update-via-webhook.json ├── docs/ │ ├── 404.md │ ├── _config.yml │ ├── _includes/ │ │ └── head-custom.html │ ├── _layouts/ │ │ └── default.html │ ├── categories/ │ │ ├── ai-research-rag.md │ │ ├── airtable.md │ │ ├── database-storage.md │ │ ├── devops-server-automation.md │ │ ├── discord.md │ │ ├── forms-surveys.md │ │ ├── gmail-email-automation.md │ │ ├── google-drive-sheets.md │ │ ├── hr-recruitment.md │ │ ├── notion.md │ │ ├── openai-llms.md │ │ ├── other-integrations.md │ │ ├── pdf-document-processing.md │ │ ├── slack.md │ │ ├── social-media.md │ │ ├── telegram-bots.md │ │ ├── whatsapp.md │ │ └── wordpress.md │ ├── index.md │ └── robots.txt └── llms.txt
Condensed preview — 330 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,623K chars).
[
{
"path": "AI product imagines.json",
"chars": 16292,
"preview": "{\n \"name\": \"AI product Images\",\n \"nodes\": [\n {\n \"parameters\": {},\n \"type\": \"n8n-nodes-base.manualTrigger\""
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Analyze tradingview.com charts with Chrome extension, N8N and OpenAI.json",
"chars": 2990,
"preview": "{\r\n\"id\": \"Q8On8rR6BkmPzDUd\",\r\n\"meta\": {\r\n\"instanceId\": \"f57770b08f6a574802832e927ed1b0063c627ffc5b95965abf0d4a7396150138"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Automated Hugging Face Paper Summary Fetching & Categorization Workflow.json",
"chars": 12452,
"preview": "{\r\n\"id\": \"G8jRDBvwsMkkMiLN\",\r\n\"meta\": {\r\n\"instanceId\": \"205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Autonomous AI crawler.json",
"chars": 28595,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"6cdc45e5-1fa4-47fe-b80a-0e1560996936\",\r\n\"name\": \"Text\",\r\n\"type\": \"@n8n/n8n-nodes-langchain.tool"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Build Your Own Image Search Using AI Object Detection, CDN and ElasticSearchBuild Your Own Image Search Using AI Object Detection, CDN and ElasticSearch.json",
"chars": 10681,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Build a Financial Documents Assistant using Qdrant and Mistral.ai.json",
"chars": 19038,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Build a Tax Code Assistant with Qdrant, Mistral.ai and OpenAI.json",
"chars": 23234,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Building RAG Chatbot for Movie Recommendations with Qdrant and Open AI.json",
"chars": 15155,
"preview": "{\r\n\"id\": \"a58HZKwcOy7lmz56\",\r\n\"meta\": {\r\n\"instanceId\": \"178ef8a5109fc76c716d40bcadb720c455319f7b7a3fd5a39e4f336a091f524a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Chat with GitHub API Documentation_ RAG-Powered Chatbot with Pinecone & OpenAI.json",
"chars": 8231,
"preview": "{\r\n\"id\": \"FD0bHNaehP3LzCNN\",\r\n\"meta\": {\r\n\"instanceId\": \"69133932b9ba8e1ef14816d0b63297bb44feb97c19f759b5d153ff6b0c59e18d"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Create a Google Analytics Data Report with AI and sent it to E-Mail and Telegram.json",
"chars": 14949,
"preview": "{\r\n\"id\": \"AAjX1BuwhyXpo8xP\",\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Customer Insights with Qdrant, Python and Information Extractor.json",
"chars": 27732,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Deduplicate Scraping AI Grants for Eligibility using AI.json",
"chars": 35072,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"c17e444e-0a5e-4bfe-8de6-c3185de4465d\",\r\n\"name\": \"Grants to List\",\r\n\"type\": \"n8n-nodes-base.spli"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Enrich Property Inventory Survey with Image Recognition and AI Agent.json",
"chars": 21632,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Extract insights & analyse YouTube comments via AI Agent chat.json",
"chars": 28084,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"6a2a7715680b8313f7cb4676321c5baa46680adfb913072f089f2766f42e43bd\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Generate SEO Seed Keywords Using AI.json",
"chars": 9001,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"257476b1ef58bf3cb6a46e65fac7ee34a53a5e1a8492d5c6e4da5f87c9b82833\",\r\n\"templateId\": \"2473\"\r\n}"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Hacker News Job Listing Scraper and Parser.json",
"chars": 18495,
"preview": "{\r\n\"id\": \"0JsHmmyeHw5Ffz5m\",\r\n\"meta\": {\r\n\"instanceId\": \"d4d7965840e96e50a3e02959a8487c692901dfa8d5cc294134442c67ce1622d3"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Hacker News to Video Content.json",
"chars": 30082,
"preview": "{\r\n\"id\": \"744G7emgZe0pXaPB\",\r\n\"meta\": {\r\n\"instanceId\": \"d868e3d040e7bda892c81b17cf446053ea25d2556fcef89cbe19dd61a3e876e9"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Host Your Own AI Deep Research Agent with n8n, Apify and OpenAI o3.json",
"chars": 150308,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\",\r\n\"templateCredsSetupComp"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Intelligent Web Query and Semantic Re-Ranking Flow using Brave and Google Gemini.json",
"chars": 35380,
"preview": "{\r\n\"id\": \"wa2uEnSIowqSrHoY\",\r\n\"meta\": {\r\n\"instanceId\": \"cca06617664f52c5a019ea575691fdbce675dd95dc0452af5f13dbe76d615b69"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Learn Anything from HN - Get Top Resource Recommendations from Hacker News.json",
"chars": 6486,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"41183066-0045-4a75-ba23-42f4efcfeccc\",\r\n\"name\": \"Google Gemini Chat Model\",\r\n\"type\": \"@n8n/n8n-"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Make OpenAI Citation for File Retrieval RAG.json",
"chars": 10834,
"preview": "{\r\n\"id\": \"5NAbfX550LJsfz6f\",\r\n\"meta\": {\r\n\"instanceId\": \"00493e38fecfc163cb182114bc2fab90114038eb9aad665a7a752d076920d3d5"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Open Deep Research - AI-Powered Autonomous Research Workflow.json",
"chars": 10743,
"preview": "{\r\n\"id\": \"WLSqXECfQF7rOj2A\",\r\n\"meta\": {\r\n\"instanceId\": \"cba4a4a2eb5d7683330e2944837278938831ed3c042e20da6f5049c07ad14798"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Query Perplexity AI from your n8n workflows.json",
"chars": 3882,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"293b70f0-06e8-4db5-befd-bfaed1f3575a\",\r\n\"name\": \"When clicking ‘Test workflow’\",\r\n\"type\": \"n8n-"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Recipe Recommendations with Qdrant and Mistral.json",
"chars": 22215,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Reconcile Rent Payments with Local Excel Spreadsheet and OpenAI.json",
"chars": 13031,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Scrape Trustpilot Reviews with DeepSeek, Analyze Sentiment with OpenAI.json",
"chars": 16320,
"preview": "{\r\n\"id\": \"w434EiZ2z7klQAyp\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Scrape and summarize posts of a news site without RSS feed using AI and save them to a NocoDB.json",
"chars": 17766,
"preview": "{\r\n\"id\": \"xM8Z5vZVNTNjCySL\",\r\n\"meta\": {\r\n\"instanceId\": \"b8ef33547995f2a520f12118ac1f7819ea58faa7a1096148cac519fa08be8e99"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Scrape and summarize webpages with AI.json",
"chars": 5989,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Send Google analytics data to A.I. to analyze then save results in Baserow.json",
"chars": 24187,
"preview": "{\r\n\"id\": \"K3uf8aY8wipScEay\",\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Send Google analytics data to A.I. to analyze then save results in BaserowSend Google analytics data to A.I. to analyze then save results in Baserow.json",
"chars": 24187,
"preview": "{\r\n\"id\": \"K3uf8aY8wipScEay\",\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Spot Workplace Discrimination Patterns with AI.json",
"chars": 59962,
"preview": "{\r\n\"id\": \"vzU9QRZsHcyRsord\",\r\n\"meta\": {\r\n\"instanceId\": \"a9f3b18652ddc96459b459de4fa8fa33252fb820a9e5a1593074f3580352864a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Summarize SERPBear data with AI (via Openrouter) and save it to Baserow.json",
"chars": 7035,
"preview": "{\r\n\"id\": \"qmmXKcpJOCm9qaCk\",\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Summarize Umami data with AI (via Openrouter) and save it to Baserow.json",
"chars": 11896,
"preview": "{\r\n\"id\": \"eZT6SZ4Kvmq5TzyQ\",\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Survey Insights with Qdrant, Python and Information Extractor.json",
"chars": 29248,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Ultimate Scraper Workflow for n8n.json",
"chars": 41080,
"preview": "{\r\n\"id\": \"kZ3aL4r7xc96Q7lp\",\r\n\"meta\": {\r\n\"instanceId\": \"b8b2c0d20b02864cf66adc9cbefc86e9e56de0252b653d37ba6613341b5e0bef"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Vector Database as a Big Data Analysis Tool for AI Agents [1_3 anomaly][1_2 KNN].json",
"chars": 18749,
"preview": "{\r\n\"id\": \"pPtCy6qPfEv1qNRn\",\r\n\"meta\": {\r\n\"instanceId\": \"205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Vector Database as a Big Data Analysis Tool for AI Agents [2_2 KNN].json",
"chars": 13098,
"preview": "{\r\n\"id\": \"itzURpN5wbUNOXOw\",\r\n\"meta\": {\r\n\"instanceId\": \"205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Vector Database as a Big Data Analysis Tool for AI Agents [2_3 - anomaly].json",
"chars": 34961,
"preview": "{\r\n\"id\": \"m9aACcHqydEbH4nR\",\r\n\"meta\": {\r\n\"instanceId\": \"205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Vector Database as a Big Data Analysis Tool for AI Agents [3_3 - anomaly].json",
"chars": 12452,
"preview": "{\r\n\"id\": \"G8jRDBvwsMkkMiLN\",\r\n\"meta\": {\r\n\"instanceId\": \"205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/Visual Regression Testing with Apify and AI Vision Model.json",
"chars": 23488,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "AI_Research_RAG_and_Data_Analysis/🔍 Perplexity Research to HTML_ AI-Powered Content Creation.json",
"chars": 141412,
"preview": "{\r\n\"id\": \"HnqGW0eq5asKfZxf\",\r\n\"meta\": {\r\n\"instanceId\": \"03907a25f048377a8789a4332f28148522ba31ee907fababf704f1d88130b1b6"
},
{
"path": "Airtable/AI Agent for project management and meetings with Airtable and Fireflies.json",
"chars": 14513,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"38972c5c-09f4-4120-a468-731e720914e1\",\r\n\"name\": \"AI Agent\",\r\n\"type\": \"@n8n/n8n-nodes-langchain."
},
{
"path": "Airtable/AI Agent to chat with Airtable and analyze data.json",
"chars": 33289,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"799d2e0c-29b9-494c-b11a-d79c7ed4a06d\",\r\n\"name\": \"OpenAI Chat Model\",\r\n\"type\": \"@n8n/n8n-nodes-l"
},
{
"path": "Airtable/Get Airtable data via AI and Obsidian Notes.json",
"chars": 4220,
"preview": "{\r\n\"id\": \"aZSJ2BZQhNduZZ8w\",\r\n\"meta\": {\r\n\"instanceId\": \"d47f3738b860eed937a1b18d7345fa2c65cf4b4957554e29477cb064a7039870"
},
{
"path": "Airtable/Handling Job Application Submissions with AI and n8n Forms.json",
"chars": 27011,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Airtable/vAssistant for Hubspot Chat using OpenAi and Airtable.json",
"chars": 22013,
"preview": "{\r\n\"id\": \"C2pB17EpXAJwOcst\",\r\n\"meta\": {\r\n\"instanceId\": \"ba379c9b99d35340c90344105e7e5d06ca0de3e88926f0384d2c23099dad1937"
},
{
"path": "CITATION.cff",
"chars": 745,
"preview": "cff-version: 1.2.0\r\nmessage: \"If you find this collection useful, please cite it as below.\"\r\ntitle: \"Awesome n8n Templat"
},
{
"path": "CONTRIBUTING.md",
"chars": 2299,
"preview": "# Contributing to Awesome n8n Templates\r\n\r\nThank you for your interest in contributing! This repository contains 280+ n8"
},
{
"path": "Database_and_Storage/Chat with Postgresql Database.json",
"chars": 6987,
"preview": "{\r\n\"id\": \"eOUewYsEzJmQixI6\",\r\n\"meta\": {\r\n\"instanceId\": \"77c4feba8f41570ef06dc76ece9a6ded0f0d44f7f1477a64c2d71a8508c11faa"
},
{
"path": "Database_and_Storage/Generate SQL queries from schema only - AI-powered.json",
"chars": 16699,
"preview": "{\r\n\"id\": \"P307QnrxpA1ddsM5\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "Database_and_Storage/MongoDB AI Agent - Intelligent Movie Recommendations.json",
"chars": 5427,
"preview": "{\r\n\"id\": \"22PddLUgcjSJbT1w\",\r\n\"meta\": {\r\n\"instanceId\": \"fa7d5e2425ec76075df7100dbafffed91cc6f71f12fe92614bf78af63c54a61d"
},
{
"path": "Database_and_Storage/Supabase Insertion & Upsertion & Retrieval.json",
"chars": 11386,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"1a23006df50de49624f69e85993be557d137b6efe723a867a7d68a84e0b32704\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Database_and_Storage/Talk to your SQLite database with a LangChain AI Agent.json",
"chars": 5713,
"preview": "{\r\n\"id\": \"AQJ6QnF2yVdCWMnx\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "Discord/Discord AI-powered bot.json",
"chars": 5273,
"preview": "{\r\n\"id\": \"180\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a\"\r\n},\r\n\"name\""
},
{
"path": "Discord/Send daily translated Calvin and Hobbes Comics to Discord.json",
"chars": 5718,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"4bf26356-9c59-4cee-8eb8-8553b23a172f\",\r\n\"name\": \"Sticky Note\",\r\n\"type\": \"n8n-nodes-base.stickyN"
},
{
"path": "Discord/Share YouTube Videos with AI Summaries on Discord.json",
"chars": 5201,
"preview": "{\r\n\"id\": \"LF8gz3iz74u45a5i\",\r\n\"meta\": {\r\n\"instanceId\": \"889f0d7d968f3b02a88433e2529a399907d2ca89e329934b608193beaa2301f8"
},
{
"path": "Forms_and_Surveys/Conversational Interviews with AI Agents and n8n Forms.json",
"chars": 40251,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"d73e5113-119f-4e62-9872-48e6a971d760\",\r\n\"name\": \"Stop Interview?\",\r\n\"type\": \"n8n-nodes-base.if\""
},
{
"path": "Forms_and_Surveys/Email Subscription Service with n8n Forms, Airtable and AI.json",
"chars": 28842,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"4dd52c72-9a9b-4db4-8de5-5b12b1e5c4be\",\r\n\"name\": \"Schedule Trigger\",\r\n\"type\": \"n8n-nodes-base.sc"
},
{
"path": "Forms_and_Surveys/Qualifying Appointment Requests with AI & n8n Forms.json",
"chars": 20259,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/A Very Simple _Human in the Loop_ Email Response System Using AI and IMAP.json",
"chars": 8171,
"preview": "{\r\n\"id\": \"Nvn78tMRNnKji7Fg\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "Gmail_and_Email_Automation/AI-powered email processing autoresponder and response approval (Yes_No).json",
"chars": 9829,
"preview": "{\r\n\"id\": \"OuHrYOR3uWGmrhWQ\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "Gmail_and_Email_Automation/Analyze & Sort Suspicious Email Contents with ChatGPT.json",
"chars": 19759,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"03e9d14e9196363fe7191ce21dc0bb17387a6e755dcc9acc4f5904752919dca8\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/Analyze Suspicious Email Contents with ChatGPT Vision.json",
"chars": 14305,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"03e9d14e9196363fe7191ce21dc0bb17387a6e755dcc9acc4f5904752919dca8\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/Auto Categorise Outlook Emails with AI.json",
"chars": 26353,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"67d4d33d8b0ad4e5e12f051d8ad92fc35893d7f48d7f801bc6da4f39967b3592\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/Auto-label incoming Gmail messages with AI nodes.json",
"chars": 9468,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"8141ffad-df2a-403b-a869-799c036f9733\",\r\n\"name\": \"Gmail trigger\",\r\n\"type\": \"n8n-nodes-base.gmail"
},
{
"path": "Gmail_and_Email_Automation/Basic Automatic Gmail Email Labelling with OpenAI and Gmail API.json",
"chars": 10475,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"2a41e2da-19f7-4c31-ab93-3a534db3179e\",\r\n\"name\": \"Gmail Trigger\",\r\n\"type\": \"n8n-nodes-base.gmail"
},
{
"path": "Gmail_and_Email_Automation/Classify lemlist replies using OpenAI and automate reply handling.json",
"chars": 10840,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"2b1cc1a8b0a2fb9caab11ab2d5eb3712f9973066051b2e898cf4041a1f2a7757\",\r\n\"templateCredsSetupComp"
},
{
"path": "Gmail_and_Email_Automation/Compose reply draft in Gmail with OpenAI Assistant.json",
"chars": 11776,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"a99b3164-fe36-4dde-9525-110c1ae08afb\",\r\n\"name\": \"Convert raw to base64\",\r\n\"type\": \"n8n-nodes-ba"
},
{
"path": "Gmail_and_Email_Automation/Effortless Email Management with AI-Powered Summarization & Review.json",
"chars": 16991,
"preview": "{\r\n\"id\": \"nkPjDxMrrkKbgHaV\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "Gmail_and_Email_Automation/Email Summary Agent.json",
"chars": 9257,
"preview": "{\r\n\"id\": \"M8oLW9Qd59zNJzg2\",\r\n\"meta\": {\r\n\"instanceId\": \"1abe0e4c2be794795d12bf72aa530a426a6f87aabad209ed6619bcaf0f666fb0"
},
{
"path": "Gmail_and_Email_Automation/Extract spending history from gmail to google sheet.json",
"chars": 25813,
"preview": "{\r\n\"id\": \"nkMjcOC4hpte1a0t\",\r\n\"meta\": {\r\n\"instanceId\": \"3986dc65ca3ddc4ee46e71fc194b0a9d4ef46d960a5e71624f9f7eaa198213cb"
},
{
"path": "Gmail_and_Email_Automation/Gmail AI Auto-Responder_ Create Draft Replies to incoming emails.json",
"chars": 6952,
"preview": "{\r\n\"id\": \"aOQANirVMuWrH0ZD\",\r\n\"meta\": {\r\n\"instanceId\": \"b78ce2d06ac74b90a581919cf44503cf07404c11eda5c3847597226683145618"
},
{
"path": "Gmail_and_Email_Automation/Microsoft Outlook AI Email Assistant with contact support from Monday and Airtable.json",
"chars": 20739,
"preview": "{\r\n\"id\": \"reQhibpNwU63Y8sn\",\r\n\"meta\": {\r\n\"instanceId\": \"2128095e13afd30151f0fb53632960213a789cd45ed0afd3a7fb96a985bb4bcf"
},
{
"path": "Gmail_and_Email_Automation/Modular & Customizable AI-Powered Email Routing_ Text Classifier for eCommerce.json",
"chars": 18495,
"preview": "{\r\n\"id\": \"LGpVLWPpNZSt9ISM\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "Gmail_and_Email_Automation/Send a ChatGPT email reply and save responses to Google Sheets.json",
"chars": 74862,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"a2434c94d549548a685cca39cc4614698e94f527bcea84eefa363f1037ae14cd\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/Send specific PDF attachments from Gmail to Google Drive using OpenAI.json",
"chars": 9479,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"a2434c94d549548a685cca39cc4614698e94f527bcea84eefa363f1037ae14cd\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/Summarize your emails with A.I. (via Openrouter) and send to Line messenger.json",
"chars": 4976,
"preview": "{\r\n\"id\": \"QnVdtKiTf3nbrNkh\",\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a"
},
{
"path": "Gmail_and_Email_Automation/create e-mail responses with fastmail and OpenAI.json",
"chars": 10756,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"04ab549d8bbb435ec33b81e4e29965c46cf6f0f9e7afe631018b5e34c8eead58\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Gmail_and_Email_Automation/📈 Receive Daily Market News from FT.com to your Microsoft outlook inbox.json",
"chars": 7289,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"6045c639951d83c8706b0dd8d6330164bda01fe58f103cedc2c276bf1f9c11f1\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Google_Drive_and_Google_Sheets/Author and Publish Blog Posts From Google Sheets.json",
"chars": 36257,
"preview": "{\r\n\"id\": \"b0KRVIuuUxE5afHo\",\r\n\"meta\": {\r\n\"instanceId\": \"98bf0d6aef1dd8b7a752798121440fb171bf7686b95727fd617f43452393daa3"
},
{
"path": "Google_Drive_and_Google_Sheets/Automated End-to-End Fine-Tuning of OpenAI Models with Google Drive Integration.json",
"chars": 5701,
"preview": "{\r\n\"id\": \"gAzsjTGbfWuvAObi\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "Google_Drive_and_Google_Sheets/Automatic Background Removal for Images in Google Drive.json",
"chars": 10984,
"preview": "{\r\n\"id\": \"oNJCLq4egGByMeSl\",\r\n\"meta\": {\r\n\"instanceId\": \"1bc0f4fa5e7d17ac362404cbb49337e51e5061e019cfa24022a8667c1f1ce287"
},
{
"path": "Google_Drive_and_Google_Sheets/Build an OpenAI Assistant with Google Drive Integration.json",
"chars": 6633,
"preview": "{\r\n\"id\": \"AjJ7O98qjw8XVirk\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "Google_Drive_and_Google_Sheets/Chat with a Google Sheet using AI.json",
"chars": 11040,
"preview": "{\r\n\"id\": \"ZVUQL1bUQ8gBCZTl\",\r\n\"meta\": {\r\n\"instanceId\": \"23e6ce638471979c8a2c72a9fb50e44f4f2bfd5a9fc2f5b7f5c842b9abeb9393"
},
{
"path": "Google_Drive_and_Google_Sheets/Chat with your event schedule from Google Sheets in Telegram.json",
"chars": 12698,
"preview": "{\r\n\"id\": \"bV0JTA5NtRZxiD1q\",\r\n\"meta\": {\r\n\"instanceId\": \"98bf0d6aef1dd8b7a752798121440fb171bf7686b95727fd617f43452393daa3"
},
{
"path": "Google_Drive_and_Google_Sheets/Extract Information from a Logo Sheet using forms, AI, Google Sheet and Airtable.json",
"chars": 36502,
"preview": "{\r\n\"id\": \"dDAqkobn2pqgdl2N\",\r\n\"meta\": {\r\n\"instanceId\": \"9e331a89ae45a204c6dee51c77131d32a8c962ec20ccf002135ea60bd285dba9"
},
{
"path": "Google_Drive_and_Google_Sheets/Flux Dev Image Generation (Fal.ai) to Google Drive.json",
"chars": 6660,
"preview": "{\r\n\"id\": \"nJwkSOrJIFvutw1n\",\r\n\"meta\": {\r\n\"instanceId\": \"08daa2aa5b6032ff63690600b74f68f5b0f34a3b100102e019b35c4419168977"
},
{
"path": "Google_Drive_and_Google_Sheets/Qualify new leads in Google Sheets via OpenAI_s GPT-4.json",
"chars": 8560,
"preview": "{\r\n\"id\": \"8FLJK1NsduFL0Y5P\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "Google_Drive_and_Google_Sheets/RAG Chatbot for Company Documents using Google Drive and Gemini.json",
"chars": 10484,
"preview": "{\r\n\"id\": \"7cXvgkl9170QXzT2\",\r\n\"meta\": {\r\n\"instanceId\": \"69133932b9ba8e1ef14816d0b63297bb44feb97c19f759b5d153ff6b0c59e18d"
},
{
"path": "Google_Drive_and_Google_Sheets/RAG_Context-Aware Chunking _ Google Drive to Pinecone via OpenRouter & Gemini.json",
"chars": 8941,
"preview": "{\r\n\"id\": \"VY4WBXuNDPxmOO5e\",\r\n\"meta\": {\r\n\"instanceId\": \"d16fb7d4b3eb9b9d4ad2ee6a7fbae593d73e9715e51f583c2a0e9acd1781c08e"
},
{
"path": "Google_Drive_and_Google_Sheets/Screen Applicants With AI, notify HR and save them in a Google Sheet.json",
"chars": 8668,
"preview": "{\r\n\"id\": \"ES4TSw9HacxoNhLZ\",\r\n\"meta\": {\r\n\"instanceId\": \"5219bc76ea806909b58e13e2acac1c19192522e70dc3c90467e1800e94864105"
},
{
"path": "Google_Drive_and_Google_Sheets/Simple Expense Tracker with n8n Chat, AI Agent and Google Sheets.json",
"chars": 7812,
"preview": "{\r\n\"id\": \"aLTkMiEDYXbMK4fT\",\r\n\"meta\": {\r\n\"instanceId\": \"5b860a91d7844b5237bb51cc58691ca8c3dc5b576f42d4d6bbedfb8d43d58ece"
},
{
"path": "Google_Drive_and_Google_Sheets/Summarize Google Sheets form feedback via OpenAI_s GPT-4.json",
"chars": 6791,
"preview": "{\r\n\"id\": \"Lwvu2jjMU2irTyAY\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "Google_Drive_and_Google_Sheets/Summarize the New Documents from Google Drive and Save Summary in Google Sheet.json",
"chars": 7030,
"preview": "{\r\n\"id\": \"s8YgrWCxnGJxbctt\",\r\n\"meta\": {\r\n\"instanceId\": \"2b1c62c6d8c9216d51c1f40c64044e24b558ea8311c19d032d1278472159cfec"
},
{
"path": "Google_Drive_and_Google_Sheets/Upload to Instagram and Tiktok from Google Drive.json",
"chars": 10274,
"preview": "{\r\n\"id\": \"cZPEH5aMMZNy61xs\",\r\n\"meta\": {\r\n\"instanceId\": \"3378b0d68c3b7ebfc71b79896d94e1a044dec38e99a1160aed4e9c323910fbe2"
},
{
"path": "Google_Drive_and_Google_Sheets/✨ Vision-Based AI Agent Scraper - with Google Sheets, ScrapingBee, and Gemini.json",
"chars": 21082,
"preview": "{\r\n\"id\": \"PpFVCrTiYoa35q1m\",\r\n\"meta\": {\r\n\"instanceId\": \"b9faf72fe0d7c3be94b3ebff0778790b50b135c336412d28fd4fca2cbbf8d1f5"
},
{
"path": "HR_and_Recruitment/BambooHR AI-Powered Company Policies and Benefits Chatbot.json",
"chars": 26677,
"preview": "{\r\n\"id\": \"dYjQS1bJmVSAxNnj\",\r\n\"meta\": {\r\n\"instanceId\": \"a9f3b18652ddc96459b459de4fa8fa33252fb820a9e5a1593074f3580352864a"
},
{
"path": "HR_and_Recruitment/CV Screening with OpenAI.json",
"chars": 12309,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"6a2a7715680b8313f7cb4676321c5baa46680adfb913072f089f2766f42e43bd\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "HR_and_Recruitment/HR & IT Helpdesk Chatbot with Audio Transcription.json",
"chars": 16187,
"preview": "{\r\n\"id\": \"zmgSshZ5xESr3ozl\",\r\n\"meta\": {\r\n\"instanceId\": \"1fedaf0aa3a5d200ffa1bbc98554b56cac895dd5d001907cb6f1c7a3c0a78215"
},
{
"path": "HR_and_Recruitment/HR Job Posting and Evaluation with AI.json",
"chars": 61845,
"preview": "{\r\n\"id\": \"eMxH0GjgfWEvBDic\",\r\n\"meta\": {\r\n\"instanceId\": \"be27b2af86ae3a5dc19ef2a1947644c0aec45fd8c88f29daa7dea6f0ce537691"
},
{
"path": "Instagram_Twitter_Social_Media/AI agent for Instagram DM_inbox. Manychat + Open AI integration.json",
"chars": 6028,
"preview": "{\r\n\"id\": \"qww129cm4TM9N8Ru\",\r\n\"meta\": {\r\n\"instanceId\": \"038da3428bba4563b42be267feeca21b4922693db254331ac640a5c56ee7cadf"
},
{
"path": "Instagram_Twitter_Social_Media/Create dynamic Twitter profile banner.json",
"chars": 5015,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"name\": \"On clicking 'execute'\",\r\n\"type\": \"n8n-nodes-base.manualTrigger\",\r\n\"position\": [\r\n260,\r\n210\r\n]"
},
{
"path": "Instagram_Twitter_Social_Media/Generate Instagram Content from Top Trends with AI Image Generation.json",
"chars": 29270,
"preview": "{\r\n\"id\": \"H7porcmXYj7StO23\",\r\n\"meta\": {\r\n\"instanceId\": \"35409808e3cc9dd8ecfa6f7b93ae931f074920a2f681e667da8974c0ecf81c52"
},
{
"path": "Instagram_Twitter_Social_Media/OpenAI-powered tweet generator.json",
"chars": 2264,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"name\": \"On clicking 'execute'\",\r\n\"type\": \"n8n-nodes-base.manualTrigger\",\r\n\"position\": [\r\n250,\r\n300\r\n]"
},
{
"path": "Instagram_Twitter_Social_Media/Post New YouTube Videos to X.json",
"chars": 3408,
"preview": "{\r\n\"id\": \"O9FXr8iXzhSgYKaL\",\r\n\"meta\": {\r\n\"instanceId\": \"d8bbc8c5a59875a8be9f3c7142d858bc46c4b8e36a11781a25e945fcf9a5767a"
},
{
"path": "Instagram_Twitter_Social_Media/Reddit AI digest.json",
"chars": 8858,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Instagram_Twitter_Social_Media/Social Media Analysis and Automated Email Generation.json",
"chars": 17849,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"a768bce6-ae26-464c-95fc-009edea4f94d\",\r\n\"name\": \"Set your company's variables\",\r\n\"type\": \"n8n-n"
},
{
"path": "Instagram_Twitter_Social_Media/Speed Up Social Media Banners With BannerBear.com.json",
"chars": 11340,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Instagram_Twitter_Social_Media/Twitter Virtual AI Influencer.json",
"chars": 6769,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Instagram_Twitter_Social_Media/Update Twitter banner using HTTP request.json",
"chars": 1339,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"name\": \"On clicking 'execute'\",\r\n\"type\": \"n8n-nodes-base.manualTrigger\",\r\n\"position\": [\r\n250,\r\n300\r\n]"
},
{
"path": "LICENSE",
"chars": 1228,
"preview": "Creative Commons Attribution 4.0 International License\r\n\r\nCopyright (c) 2024-2026 Enes Cingoz\r\n\r\nYou are free to:\r\n\r\n S"
},
{
"path": "Notion/Add positive feedback messages to a table in Notion.json",
"chars": 2873,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"name\": \"Typeform Trigger\",\r\n\"type\": \"n8n-nodes-base.typeformTrigger\",\r\n\"position\": [\r\n0,\r\n400\r\n],\r\n\"w"
},
{
"path": "Notion/Analyse papers from Hugging Face with AI and store them in Notion.json",
"chars": 9417,
"preview": "{\r\n\"id\": \"FU3MrLkaTHmfdG4n\",\r\n\"meta\": {\r\n\"instanceId\": \"3294023dd650d95df294922b9d55d174ef26f4a2e6cce97c8a4ab5f98f5b8c7b"
},
{
"path": "Notion/Automate Competitor Research with Exa.ai, Notion and AI Agents.json",
"chars": 36606,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Notion/Automate LinkedIn Outreach with Notion and OpenAI.json",
"chars": 6722,
"preview": "{\r\n\"id\": \"mb2MU4xOaT3NrvqN\",\r\n\"meta\": {\r\n\"instanceId\": \"e7a28cc5c8c9de1976820e0f309940cf456344d9daf5360a4975186f3d8a107f"
},
{
"path": "Notion/Notion AI Assistant Generator.json",
"chars": 25737,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"9052b5b2-1e2d-425c-92e5-1ed51323e71c\",\r\n\"name\": \"Sticky Note\",\r\n\"type\": \"n8n-nodes-base.stickyN"
},
{
"path": "Notion/Notion knowledge base AI assistant.json",
"chars": 10273,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"205b3bc06c96f2dc835b4f00e1cbf9a937a74eeb3b47c99d0c30b0586dbf85aa\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "Notion/Notion to Pinecone Vector Store Integration.json",
"chars": 5467,
"preview": "{\r\n\"id\": \"vOSQYz747gtzj1zF\",\r\n\"meta\": {\r\n\"instanceId\": \"d16fb7d4b3eb9b9d4ad2ee6a7fbae593d73e9715e51f583c2a0e9acd1781c08e"
},
{
"path": "Notion/Store Notion_s Pages as Vector Documents into Supabase with OpenAI.json",
"chars": 6920,
"preview": "{\r\n\"id\": \"DvP6IHWymTIVg8Up\",\r\n\"meta\": {\r\n\"instanceId\": \"b9faf72fe0d7c3be94b3ebff0778790b50b135c336412d28fd4fca2cbbf8d1f5"
},
{
"path": "Notion/Turn Emails into AI-Enhanced Tasks in Notion (Multi-User Support) with Gmail, Airtable and Softr.json",
"chars": 25374,
"preview": "{\r\n\"id\": \"30r9acI1XVIIwAMi\",\r\n\"meta\": {\r\n\"instanceId\": \"378c072a34d9e63949fd9cf26b8d28ff276a486e303f0d8963f23e1d74169c1b"
},
{
"path": "Notion/Upsert huge documents in a vector store with Supabase and Notion.json",
"chars": 15045,
"preview": "{\r\n\"id\": \"JxFP8FJ2W7e4Kmqn\",\r\n\"meta\": {\r\n\"instanceId\": \"fb8bc2e315f7f03c97140b30aa454a27bc7883a19000fa1da6e6b571bf56ad6d"
},
{
"path": "OpenAI_and_LLMs/AI Agent To Chat With Files In Supabase Storage.json",
"chars": 17902,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"6a2a7715680b8313f7cb4676321c5baa46680adfb913072f089f2766f42e43bd\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI Agent _ Google calendar assistant using OpenAI.json",
"chars": 11957,
"preview": "{\r\n\"id\": \"ITH6r6UYtlCyUcpj\",\r\n\"meta\": {\r\n\"instanceId\": \"b9faf72fe0d7c3be94b3ebff0778790b50b135c336412d28fd4fca2cbbf8d1f5"
},
{
"path": "OpenAI_and_LLMs/AI Agent for realtime insights on meetings.json",
"chars": 17217,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"d44489b8-8cb7-4776-8c16-a8bb01e52171\",\r\n\"name\": \"OpenAI1\",\r\n\"type\": \"@n8n/n8n-nodes-langchain.o"
},
{
"path": "OpenAI_and_LLMs/AI Agent to chat with Supabase_PostgreSQL DB.json",
"chars": 7548,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"0a4e65b7-39be-44eb-8c66-913ebfe8a87a\",\r\n\"name\": \"Sticky Note3\",\r\n\"type\": \"n8n-nodes-base.sticky"
},
{
"path": "OpenAI_and_LLMs/AI Agent to chat with you Search Console Data, using OpenAI and Postgres.json",
"chars": 24081,
"preview": "{\r\n\"id\": \"PoiRk5w0xd1ysq4U\",\r\n\"meta\": {\r\n\"instanceId\": \"b9faf72fe0d7c3be94b3ebff0778790b50b135c336412d28fd4fca2cbbf8d1f5"
},
{
"path": "OpenAI_and_LLMs/AI Agent with Ollama for current weather and wiki.json",
"chars": 4335,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"558d88703fb65b2d0e44613bc35916258b0f0bf983c5d4730c00c424b77ca36a\",\r\n\"templateId\": \"2931\",\r\n"
},
{
"path": "OpenAI_and_LLMs/AI Automated HR Workflow for CV Analysis and Candidate Evaluation.json",
"chars": 14431,
"preview": "{\r\n\"id\": \"t1P14FvfibKYCh3E\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "OpenAI_and_LLMs/AI Crew to Automate Fundamental Stock Analysis - Q&A Workflow.json",
"chars": 7668,
"preview": "{\r\n\"id\": \"tMiRJYDrXzpKysTX\",\r\n\"meta\": {\r\n\"instanceId\": \"2723a3a635131edfcb16103f3d4dbaadf3658e386b4762989cbf49528dccbdbd"
},
{
"path": "OpenAI_and_LLMs/AI Customer feedback sentiment analysis.json",
"chars": 6590,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"82a17fa4a0b8e81bf77e5ab999d980f392150f2a9541fde626dc5f74857b1f54\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI Data Extraction with Dynamic Prompts and Airtable.json",
"chars": 35902,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"36816ae7-414a-482e-8a50-021885237273\",\r\n\"name\": \"Event Type\",\r\n\"type\": \"n8n-nodes-base.switch\","
},
{
"path": "OpenAI_and_LLMs/AI Data Extraction with Dynamic Prompts and Baserow.json",
"chars": 28920,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"065d7ec9-edc5-46f6-b8ac-d62ed0e5c8e3\",\r\n\"name\": \"Baserow Event\",\r\n\"type\": \"n8n-nodes-base.webho"
},
{
"path": "OpenAI_and_LLMs/AI Fitness Coach Strava Data Analysis and Personalized Training Insights.json",
"chars": 16536,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"32d80f55a35a7b57f8e47a2ac19558d9f5bcec983a5519d9c29ba713ff4f12c7\",\r\n\"templateCredsSetupComp"
},
{
"path": "OpenAI_and_LLMs/AI Powered Web Scraping with Jina, Google Sheets and OpenAI _ the EASY way.json",
"chars": 5365,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"c3ef40df-084e-435c-9a11-3aa0a2f94f36\",\r\n\"name\": \"When clicking \\\"Test workflow\\\"\",\r\n\"type\": \"n8"
},
{
"path": "OpenAI_and_LLMs/AI Social Media Caption Creator creates social media post captions in Airtable.json",
"chars": 21369,
"preview": "{\r\n\"id\": \"V8ypWn7oaOVS3zH0\",\r\n\"meta\": {\r\n\"instanceId\": \"1acdaec6c8e84424b4715cf41a9f7ec057947452db21cd2e22afbc454c8711cd"
},
{
"path": "OpenAI_and_LLMs/AI Voice Chat using Webhook, Memory Manager, OpenAI, Google Gemini & ElevenLabs.json",
"chars": 8267,
"preview": "{\r\n\"id\": \"TtoDcjgthgA4NTkU\",\r\n\"meta\": {\r\n\"instanceId\": \"fb261afc5089eae952e09babdadd9983000b3d863639802f6ded8c5be2e40067"
},
{
"path": "OpenAI_and_LLMs/AI Voice Chatbot with ElevenLabs & OpenAI for Customer Service and Restaurants.json",
"chars": 12008,
"preview": "{\r\n\"id\": \"ibiHg6umCqvcTF4g\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "OpenAI_and_LLMs/AI Youtube Trend Finder Based On Niche.json",
"chars": 11743,
"preview": "{\r\n\"id\": \"XSyVFC1tsGSxNwX9\",\r\n\"meta\": {\r\n\"instanceId\": \"60ad864624415060d2d0a0e71acd8b3b40e4ee2e9ef4b439d9937d3d33537a96"
},
{
"path": "OpenAI_and_LLMs/AI agent chat.json",
"chars": 1945,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI agent that can scrape webpages.json",
"chars": 11723,
"preview": "{\r\n\"id\": \"dsKnCFwysROIA4MT\",\r\n\"meta\": {\r\n\"instanceId\": \"03524270bab2c2dfd5b82778cd1355e56cdda3cf098bf2dfd865e18164c00485"
},
{
"path": "OpenAI_and_LLMs/AI chat with any data source (using the n8n workflow tool).json",
"chars": 4736,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI chatbot that can search the web.json",
"chars": 3079,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI web researcher for sales.json",
"chars": 20242,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"2b1cc1a8b0a2fb9caab11ab2d5eb3712f9973066051b2e898cf4041a1f2a7757\",\r\n\"templateId\": \"2324\",\r\n"
},
{
"path": "OpenAI_and_LLMs/AI-Driven Lead Management and Inquiry Automation with ERPNext & n8n.json",
"chars": 21451,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"e4f78845dfed9ddcfba1945ae00d12e9a7d76eab052afd19299228ce02349d86\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI-Generated Summary Block for WordPress Posts.json",
"chars": 34384,
"preview": "{\r\n\"id\": \"AhP1Fgv0eCrh9Jxs\",\r\n\"meta\": {\r\n\"instanceId\": \"b9faf72fe0d7c3be94b3ebff0778790b50b135c336412d28fd4fca2cbbf8d1f5"
},
{
"path": "OpenAI_and_LLMs/AI-Powered Candidate Shortlisting Automation for ERPNext.json",
"chars": 24241,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"e4f78845dfed9ddcfba1945ae00d12e9a7d76eab052afd19299228ce02349d86\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI-Powered Email Automation for Business_ Summarize & Respond with RAG.json",
"chars": 23636,
"preview": "{\r\n\"id\": \"q8IFGLeOCGSfoWZu\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "OpenAI_and_LLMs/AI-Powered RAG Workflow For Stock Earnings Report Analysis.json",
"chars": 17492,
"preview": "{\r\n\"id\": \"fqaNojXWrspqjfkY\",\r\n\"meta\": {\r\n\"instanceId\": \"69133932b9ba8e1ef14816d0b63297bb44feb97c19f759b5d153ff6b0c59e18d"
},
{
"path": "OpenAI_and_LLMs/AI-Powered Social Media Amplifier.json",
"chars": 25441,
"preview": "{\r\n\"id\": \"ZeSJSbwXI593H1Qj\",\r\n\"meta\": {\r\n\"instanceId\": \"8e1a7e3413df437923cda0e92c098469371d84f7001856e525beaff17be8b941"
},
{
"path": "OpenAI_and_LLMs/AI-powered WooCommerce Support-Agent.json",
"chars": 25852,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/AI_ Ask questions about any data source (using the n8n workflow retriever).json",
"chars": 2981,
"preview": "{\r\n\"id\": \"mjCQV12PbF6fw8hR\",\r\n\"meta\": {\r\n\"instanceId\": \"021d3c82ba2d3bc090cbf4fc81c9312668bcc34297e022bb3438c5c88a43a5ff"
},
{
"path": "OpenAI_and_LLMs/AI_ Summarize podcast episode and enhance using Wikipedia.json",
"chars": 37540,
"preview": "{\r\n\"id\": \"zFxUMqgvTXGIMzvh\",\r\n\"meta\": {\r\n\"instanceId\": \"ec7a5f4ffdb34436e59d23eaccb5015b5238de2a877e205b28572bf1ffecfe04"
},
{
"path": "OpenAI_and_LLMs/Actioning Your Meeting Next Steps using Transcripts and AI.json",
"chars": 18427,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Advanced AI Demo (Presented at AI Developers #14 meetup).json",
"chars": 18979,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"84ba6d895254e080ac2b4916d987aa66b000f88d4d919a6b9c76848f9b8a7616\",\r\n\"templateId\": \"2358\"\r\n}"
},
{
"path": "OpenAI_and_LLMs/Ask a human for help when the AI doesn_t know the answer.json",
"chars": 7094,
"preview": "{\r\n\"name\": \"Ask a human\",\r\n\"nodes\": [\r\n{\r\n\"id\": \"a60c8572-56c1-4bf3-8352-a6419a475887\",\r\n\"name\": \"Window Buffer Memory\","
},
{
"path": "OpenAI_and_LLMs/Automate Customer Support Issue Resolution using AI Text Classifier.json",
"chars": 28204,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Automate Image Validation Tasks using AI Vision.json",
"chars": 8801,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Automate Your RFP Process with OpenAI Assistants.json",
"chars": 14285,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Chat Assistant (OpenAI assistant) with Postgres Memory And API Calling Capabalities.json",
"chars": 9874,
"preview": "{\r\n\"id\": \"BMI5WkmyU8nZqfII\",\r\n\"meta\": {\r\n\"instanceId\": \"e03b0f22ca12c92061d789d5980a9bc31d9d7e7dd7513ac93c09ac5a0d147623"
},
{
"path": "OpenAI_and_LLMs/Chat with OpenAI Assistant (by adding a memory).json",
"chars": 5818,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Chat with local LLMs using n8n and Ollama.json",
"chars": 2970,
"preview": "{\r\n\"id\": \"af8RV5b2TWB2LclA\",\r\n\"meta\": {\r\n\"instanceId\": \"95f2ab28b3dabb8da5d47aa5145b95fe3845f47b20d6343dd5256b6a28ba8fab"
},
{
"path": "OpenAI_and_LLMs/Configure your own Image Creation API Using OpenAI DALLE-3.json",
"chars": 3061,
"preview": "{\r\n\"id\": \"wDD4XugmHIvx3KMT\",\r\n\"meta\": {\r\n\"instanceId\": \"149cdf730f0c143663259ddc6124c9c26e824d8d2d059973b871074cf4bda531"
},
{
"path": "OpenAI_and_LLMs/Convert text to speech with OpenAI.json",
"chars": 4005,
"preview": "{\r\n\"id\": \"6Yzmlp5xF6oHo1VW\",\r\n\"meta\": {\r\n\"instanceId\": \"173f55e6572798fa42ea9c5c92623a3c3308080d3fcd2bd784d26d855b1ce820"
},
{
"path": "OpenAI_and_LLMs/Create a Branded AI-Powered Website Chatbot.json",
"chars": 27581,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"67d4d33d8b0ad4e5e12f051d8ad92fc35893d7f48d7f801bc6da4f39967b3592\",\r\n\"templateCredsSetupComp"
},
{
"path": "OpenAI_and_LLMs/Custom LangChain agent written in JavaScript.json",
"chars": 4524,
"preview": "{\r\n\"id\": \"q2MJWAqpKF2BCJkq\",\r\n\"meta\": {\r\n\"instanceId\": \"021d3c82ba2d3bc090cbf4fc81c9312668bcc34297e022bb3438c5c88a43a5ff"
},
{
"path": "OpenAI_and_LLMs/Daily Podcast Summary.json",
"chars": 13164,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"7858a8e25b8fc4dae485c1ef345e6fe74effb1f5060433ef500b4c186c965c18\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Daily meetings summarization with Gemini AI.json",
"chars": 5170,
"preview": "{\r\n\"id\": \"jAML9xW28lOdsObH\",\r\n\"meta\": {\r\n\"instanceId\": \"be04c66ddabda64dad2c5d4c4611c3879370cfcff746359dfed22dbbfaacfc1a"
},
{
"path": "OpenAI_and_LLMs/Detect hallucinations using specialised Ollama model bespoke-minicheck.json",
"chars": 13073,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"6e361bfcd1e8378c9b07774b22409c7eaea7080f01d5248da45077c0c6108b99\",\r\n\"templateCredsSetupComp"
},
{
"path": "OpenAI_and_LLMs/Dynamically generate a webpage from user request using OpenAI Structured Output.json",
"chars": 7929,
"preview": "{\r\n\"id\": \"eXiaTDyKfXpMeyLh\",\r\n\"meta\": {\r\n\"instanceId\": \"f4f5d195bb2162a0972f737368404b18be694648d365d6c6771d7b4909d28167"
},
{
"path": "OpenAI_and_LLMs/Easy Image Captioning with Gemini 1.5 Pro.json",
"chars": 10150,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Enrich FAQ sections on your website pages at scale with AI.json",
"chars": 32793,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"ff412ab2a6cd55af5dedbbab9b8e43f0f3a0cb16fb794fa8d3837f957b771ad2\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Extract personal data with self-hosted LLM Mistral NeMo.json",
"chars": 6489,
"preview": "{\r\n\"id\": \"HMoUOg8J7RzEcslH\",\r\n\"meta\": {\r\n\"instanceId\": \"3f91626b10fcfa8a3d3ab8655534ff3e94151838fd2709ecd2dcb14afb3d061a"
},
{
"path": "OpenAI_and_LLMs/Fetch Dynamic Prompts from GitHub and Auto-Populate n8n Expressions in Prompt.json",
"chars": 9648,
"preview": "{\r\n\"id\": \"QyMyf3zraY0wxXDf\",\r\n\"meta\": {\r\n\"instanceId\": \"ba3fa76a571c35110ef5f67e5099c9a5c1768ef125c2f3b804ba20de75248c0b"
},
{
"path": "OpenAI_and_LLMs/Flux AI Image Generator.json",
"chars": 17912,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"6abe578b-d503-4da5-9af8-f9977de71139\",\r\n\"name\": \"Vivid Pop Explosion\",\r\n\"type\": \"n8n-nodes-base"
},
{
"path": "OpenAI_and_LLMs/Force AI to use a specific output format.json",
"chars": 4509,
"preview": "{\r\n\"id\": \"cKRViOHDPsosO7UX\",\r\n\"meta\": {\r\n\"instanceId\": \"ec7a5f4ffdb34436e59d23eaccb5015b5238de2a877e205b28572bf1ffecfe04"
},
{
"path": "OpenAI_and_LLMs/Generate 9_16 Images from Content and Brand Guidelines.json",
"chars": 42977,
"preview": "{\r\n\"id\": \"VlCgU5K9SYQbdxTa\",\r\n\"meta\": {\r\n\"instanceId\": \"d868e3d040e7bda892c81b17cf446053ea25d2556fcef89cbe19dd61a3e876e9"
},
{
"path": "OpenAI_and_LLMs/Generate Text-to-Speech Using Elevenlabs via API.json",
"chars": 3927,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"73b64763-5e18-4ff1-bb52-ba25a08d3c3a\",\r\n\"name\": \"If params correct\",\r\n\"type\": \"n8n-nodes-base.i"
},
{
"path": "OpenAI_and_LLMs/Generate audio from text using OpenAI and Webhook _ Text to Speech Workflow.json",
"chars": 2905,
"preview": "{\r\n\"id\": \"OVSyGmI6YFviPu8Q\",\r\n\"meta\": {\r\n\"instanceId\": \"fb261afc5089eae952e09babdadd9983000b3d863639802f6ded8c5be2e40067"
},
{
"path": "OpenAI_and_LLMs/Generating Image Embeddings via Textual Summarisation.json",
"chars": 12044,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Narrating over a Video using Multimodal AI.json",
"chars": 15872,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/OpenAI Assistant workflow_ upload file, create an Assistant, chat with it!.json",
"chars": 6014,
"preview": "{\r\n\"id\": \"InzSAe2cnTJImvLm\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "OpenAI_and_LLMs/OpenAI assistant with custom tools.json",
"chars": 7903,
"preview": "{\r\n\"id\": \"aVTi7K9mFjK5OjAV\",\r\n\"meta\": {\r\n\"instanceId\": \"b3a8efae31a34c2224655b66499bee098263a56d266da574e8820468780b7ddd"
},
{
"path": "OpenAI_and_LLMs/OpenAI examples_ ChatGPT, DALLE-2, Whisper-1 – 5-in-1.json",
"chars": 15320,
"preview": "{\r\n\"id\": \"147\",\r\n\"meta\": {\r\n\"instanceId\": \"dfdeafd1c3ed2ee08eeab8c2fa0c3f522066931ed8138ccd35dc20a1e69decd3\"\r\n},\r\n\"name\""
},
{
"path": "OpenAI_and_LLMs/Organise Your Local File Directories With AI.json",
"chars": 10482,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Personal Shopper Chatbot for WooCommerce with RAG using Google Drive and openAI.json",
"chars": 14389,
"preview": "{\r\n\"id\": \"fqQcmSdoVqnPeGHj\",\r\n\"meta\": {\r\n\"instanceId\": \"a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462"
},
{
"path": "OpenAI_and_LLMs/Prompt-based Object Detection with Gemini 2.0.json",
"chars": 11409,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"bae5d407-9210-4bd0-99a3-3637ee893065\",\r\n\"name\": \"When clicking ‘Test workflow’\",\r\n\"type\": \"n8n-"
},
{
"path": "OpenAI_and_LLMs/Proxmox AI Agent with n8n and Generative AI Integration.json",
"chars": 28989,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"n8n.syncbricks.com\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\": \"e6d85380-7cfa-4c6e-9b0f-d390ad0cbc67\",\r\n\"nam"
},
{
"path": "OpenAI_and_LLMs/Query n8n Credentials with AI SQL Agent.json",
"chars": 7818,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"26ba763460b97c249b82942b23b6384876dfeb9327513332e743c5f6219c2b8e\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Suggest meeting slots using AI.json",
"chars": 10997,
"preview": "{\r\n\"id\": \"slP122GjD9meGkS6\",\r\n\"meta\": {\r\n\"instanceId\": \"178ef8a5109fc76c716d40bcadb720c455319f7b7a3fd5a39e4f336a091f524a"
},
{
"path": "OpenAI_and_LLMs/Summarize YouTube Videos from Transcript.json",
"chars": 4263,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"6d908a58-8893-48da-8311-8c28ebd8ec62\",\r\n\"name\": \"Sticky Note\",\r\n\"type\": \"n8n-nodes-base.stickyN"
},
{
"path": "OpenAI_and_LLMs/Transform Image to Lego Style Using Line and Dall-E.json",
"chars": 3534,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"c59c4acfed171bdc864e7c432be610946898c3ee271693e0303565c953d88c1d\",\r\n\"templateCredsSetupComp"
},
{
"path": "OpenAI_and_LLMs/Translate audio using AI.json",
"chars": 7394,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"cb484ba7b742928a2048bf8829668bed5b5ad9787579adea888f05980292a4a7\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/Use OpenRouter in n8n versions _1.78.json",
"chars": 3797,
"preview": "{\r\n\"id\": \"VhN3CX6QPBkX77pZ\",\r\n\"meta\": {\r\n\"instanceId\": \"98bf0d6aef1dd8b7a752798121440fb171bf7686b95727fd617f43452393daa3"
},
{
"path": "OpenAI_and_LLMs/lemlist __ GPT-3_ Supercharge your sales workflows.json",
"chars": 7024,
"preview": "{\r\n\"meta\": {\r\n\"instanceId\": \"f0a68da631efd4ed052a324b63ff90f7a844426af0398a68338f44245d1dd9e5\"\r\n},\r\n\"nodes\": [\r\n{\r\n\"id\":"
},
{
"path": "OpenAI_and_LLMs/⚡AI-Powered YouTube Video Summarization & Analysis.json",
"chars": 6488,
"preview": "{\r\n\"nodes\": [\r\n{\r\n\"id\": \"9320d08a-4868-4103-abdf-3f8f54a7a0a0\",\r\n\"name\": \"Webhook\",\r\n\"type\": \"n8n-nodes-base.webhook\",\r\n"
},
{
"path": "OpenAI_and_LLMs/🎨 Interactive Image Editor with FLUX.1 Fill Tool for Inpainting.json",
"chars": 13001,
"preview": "{\r\n\"id\": \"OvuZIXwt9mdU2JGK\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "OpenAI_and_LLMs/🐋DeepSeek V3 Chat & R1 Reasoning Quick Start.json",
"chars": 7563,
"preview": "{\r\n\"id\": \"IyhH1KHtXidKNSIA\",\r\n\"meta\": {\r\n\"instanceId\": \"31e69f7f4a77bf465b805824e303232f0227212ae922d12133a0f96ffeab4fef"
},
{
"path": "OpenAI_and_LLMs/📚 Auto-generate documentation for n8n workflows with GPT and Docsify.json",
"chars": 45737,
"preview": "{\r\n\"id\": \"VY4TXYGmqth57Een\",\r\n\"meta\": {\r\n\"instanceId\": \"fb924c73af8f703905bc09c9ee8076f48c17b596ed05b18c0ff86915ef8a7c4a"
},
{
"path": "OpenAI_and_LLMs/🔐🦙🤖 Private & Local Ollama Self-Hosted AI Assistant.json",
"chars": 8198,
"preview": "{\r\n\"id\": \"Telr6HU0ltH7s9f7\",\r\n\"meta\": {\r\n\"instanceId\": \"31e69f7f4a77bf465b805824e303232f0227212ae922d12133a0f96ffeab4fef"
},
{
"path": "OpenAI_and_LLMs/🔥📈🤖 AI Agent for n8n Creators Leaderboard - Find Popular Workflows.json",
"chars": 27659,
"preview": "{\r\n\"id\": \"b8a4IwiwD9SlgF42\",\r\n\"meta\": {\r\n\"instanceId\": \"31e69f7f4a77bf465b805824e303232f0227212ae922d12133a0f96ffeab4fef"
}
]
// ... and 130 more files (download for full content)
About this extraction
This page contains the full source code of the enescingoz/awesome-n8n-templates GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 330 files (5.5 MB), approximately 1.5M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.