by Jimleuk
This n8n template demonstrates one approach to customer authentication via chat agents. Unlike approaches where you have to authenticate users prior to interacting with the agent, this approach allows guest users to authenticate at any time during the session or not at all. Note about Security: this template is for illustration purposes only and requires much more work to be ready for production! How it works A conversational agent is used for this demonstration. The key component is the Redis node just after the chat trigger which acts as the session context. For guests, the session item is blank. for customers, the session item is populated with their customer profile. The agent is instructed to generate a unique login URL only for guests when appropriate or upon request. This login URL redirects the guest user to a simple n8n form also hosted in this template. The login URL has the current sessionID as a query parameter as the way to pass this data to the form. Once login is successful, the matching session item by sessionId is populated with the customer profile. The user can now return to the chat window. Back to the agent, now when the user sends their next message, the Redis node will pick up the session item and the customer profile associated with it. The system prompt is updated with this data which let's the agent know the user is now a customer. How to use You'll need to update the "auth URL" tool to match the URL of your n8n instance. Better yet, copy the production URL of your form from the trigger. Activate the workflow to turn on production mode which is required for this workflow. Implement the authentication logic in step 3. This could be sending the user and pass to a postgreSQL data for validation. Requirements OpenAI for LLM (feel free to swap to any provider) Redis for Cache/Sessions (again, feel free to swap this out for postgresql or other database) Customising this workflow Consider not populating the session item with the user data as it can become stale. Instead, just add the userId and instruct the agent to query using tools. Extend the Login URL idea by experimenting with signup URLs or single-use Urls.
by Nabin Bhandari
Who’s it for This template is designed for bakeries, event planners, and e-commerce platforms that want to automatically generate custom cake designs. It’s also ideal for marketers or digital creators who need personalized celebratory visuals for social media or email campaigns. How it works This workflow converts simple user input (e.g., “Sarah’s Birthday”) into a creative cake design: Webhook: Captures user input from the Bolt frontend form. OpenAI GPT: Generates a detailed and creative cake design prompt. Replicate Flux Schnell: Produces a unique cake image using the AI-generated prompt. HTTP Response: Sends the final cake image back to the frontend. How to set up Import this template into n8n. Add your OpenAI API Key under n8n Credentials for the OpenAI Chat Model node. Add your Replicate API Token as an HTTP Header Auth credential (do not hardcode it). Update the Webhook node URL in the Bolt frontend form to send a POST request to n8n. (Optional) Customize the OpenAI prompt in the Prompt Generator node to adjust cake style, colors, or decorations. Requirements n8n account (cloud or self-hosted). OpenAI API Key** for prompt generation. Replicate API Token** for AI image generation. A Bolt frontend or any form that can call the webhook endpoint. How to customize the workflow Replace "cake" with any product type (e.g., mugs, greeting cards, or T-shirts). Add a database node (Google Sheets or Supabase) to log user requests and images. Implement input moderation by adding an OpenAI moderation node before the prompt generation. Frontend
by Mykolas Bartkus
What This Workflow Does This n8n workflow reads backlinks from a Google Sheet, sends each one to the DataForSEO On-Page API, and checks: Whether the backlink is still live on the target page Whether it's dofollow or nofollow Whether it's missing (i.e., lost) The result is then written back to the same Google Sheet under a Status column. Your result will look like this: Step-by-Step Setup Instructions Add your DataForSEO and Google Sheets credentials in n8n Make sure your Google Sheet has these columns: Backlink URL, Landing page, and Status Click the Test Workflow button to check a batch of backlinks Workflow Breakdown Trigger: Manual test start Read Data: Pulls backlink URLs and target pages from Google Sheets Format URLs: Extracts domain from URL Send POST Request to DataForSEO: Triggers a crawl on the backlink URL Wait 20 seconds: Allows crawl to finish Fetch Link Results: Retrieves backlink data from DataForSEO Validate Backlink: Checks if the backlink is live, and whether it’s dofollow Update Google Sheets: Logs the status as Live, Lost, or Lost (Nofollow)
by Manu
In Grist, when I mark a row as confirmed (via a toggle): a webhook is set up to notify n8n, and this workflow will create derived records in the destination table. Design decisions Confirmation-based In the source table there is a boolean column "Confirmed" that will trigger the transfer. This way there is a manual check involved & it's a conscious step to trigger the workflow. Runs once If the destination table already contains an entry, we will not re-create/update it (as it might've already been changed manually) Setup Create a boolean column Confirmed in source table Add a webhook in Grist Settings Add grist API credentials in n8n Set document ID & source table ID/Name in the 'get existing' node Set docID, the destination table ID/Name - and the columns & values you want in the Create Row node
by n8n Team
This workflow gets leads' contacts from a CSV file and adds it to the Pipedrive CRM by creating an organization and a person. The CSV file in this workflow serves as a universal connector allowing you to export contacts from any platform like LinkedIn, Facebook, etc. Prerequisites Google account and Google credentials Pipedrive account and Pipedrive credentials How it works The Google Drive Trigger node starts the workflow when a new CSV file is uploaded to a specific folder in Google Drive. Google Drive node downloads the CSV file. Spreadsheet File node reads data from the CSV file and sends the output to the Merge node. This Spreadsheet File's output becomes the input 1 for the Merge node. Meanwhile, the Pipedrive node gets the same list of contacts from the CSV file. IF node checks if Pipedrive has these contacts already created previously and sends the checked results to the Merge node. These results arrive at the Merge node as input 2. Merge node compares two inputs via email and removes the matches. Pipedrive node creates new contacts based on the data provided by the Merge node with necessary details such as organization and notes.
by ist00dent
This n8n template empowers you to instantly summarize long pieces of text by sending a simple webhook request. By integrating with ApyHub's summarization API, you can distil complex articles, reports, or messages into concise summaries, significantly boosting efficiency across various domains. 🔧 How it works Receive Content Webhook:** This node acts as the entry point, listening for incoming POST requests. It expects a JSON body containing: content: The long text you want to summarize. summary_length (optional): The desired length of the summary (e.g., 'short', 'medium', 'long'). Defaults to 'medium'. And a header containing your apy-token for the ApyHub API. Start Summarization Job:** This node sends a POST request to ApyHub's summarization endpoint (api.apyhub.com/sharpapi/api/v1/content/summarize). It passes the content and summary_length from the webhook body, along with your apy-token from the headers. ApyHub processes the text asynchronously, and this node immediately returns a job_id. Get Summarization Result:** Since ApyHub's summarization is an asynchronous process, this node is crucial. It polls ApyHub's job status endpoint (api.apyhub.com/sharpapi/api/v1/content/summarize/job/status/{{job_id}}) using the job_id obtained from the previous step. It continues to check the status until the summarization is finished, at which point it retrieves the final summarized text. Respond with Summarized Content:** This node sends the final, distilled summarized text back to the service that initiated the webhook. 👤 Who is it for? This workflow is extremely useful for: Content Creators & Marketers:** Quickly summarize articles for social media snippets, email newsletters, or blog post intros. Researchers & Students:** Efficiently get the gist of academic papers, reports, or long documents without reading every word. Customer Support & Sales Teams:** Summarize customer inquiries, long email chains, or call transcripts to quickly understand key issues or discussion points. News Aggregators & Media Monitoring:** Automatically generate summaries of news articles from various sources for quick consumption. Business Professionals:** Condense lengthy reports, meeting minutes, or project updates into digestible summaries for busy stakeholders. Legal & Compliance:** Summarize legal documents or regulatory texts to highlight critical clauses or changes. Anyone Dealing with Information Overload:** Use it to save time and extract key information from overwhelming amounts of text. 📑Data Structure When you trigger the webhook, send a POST ** request with a **JSON body and an apy-token in the headers: { "content": "Your very long text goes here. This could be an article, a report, a transcript, or any other textual content you want to summarize. The longer the text, the more valuable summarization becomes!", "summary_length": "medium" // Optional: "short", "medium", or "long" } Headers: apy-token: YOUR_APYHUB_API_KEY Note: You'll need to obtain an API Key from ApyHub to use their API services. They typically offer a free tier for testing. The workflow will return a JSON response similar to this (the summary content will vary based on input): { "summary": "Max Verstappen believes the Las Vegas Grand Prix is '99% show and 1% sporting event', not looking forward to the razzmatazz. Other drivers, like Fernando Alonso, were more equivocal about the hype, acknowledging the investment and spectacle. Lewis Hamilton praised the city's energy but emphasized it's 'a business, ultimately', believing there will still be good racing.", "status": "finished", "result_file_id": "..." // ApyHub might provide a file ID for larger results } ⚙️ Setup Instructions Get an ApyHub API Key:** Go to https://apyhub.com/ and sign up to get your API key. Import Workflow:** In your n8n editor, click "Import from JSON" and paste the provided workflow JSON. Configure Webhook Path:** Double-click the Receive Content Webhook node. In the 'Path' field, set a unique and descriptive path (e.g., /summarize-content). Activate Workflow:** Save and activate the workflow. 📝 Tips This content summarizer is a powerful component. Here's how to supercharge it and make it an indispensable part of your automation arsenal: Integrate with Document/File Storage:** Google Drive/Dropbox/OneDrive:* Automatically summarize documents uploaded to these services. Add a Watch New Files trigger (if available for your service) or a Cron node to regularly check for new files. Then, read the file content, pass it to this summarizer, and save the summary back to a designated folder or as a comment on the original file. CRM/CMS Systems:* Pull long notes, customer interactions, or article drafts from your CRM/CMS, summarize them, and update the records with the concise version. Email Processing & Triage:** Email Trigger: Use an Email node to trigger the workflow when new emails arrive. Extract the email body, summarize it, and then: Send a shortened summary as a notification to your Slack or Telegram. Add a summary to a task management tool (e.g., Trello, Asana) for quicker triaging. Create a summary for an email digest. Slack/Discord Bot Integration:** Create a Slack/Discord command (using a custom webhook or a dedicated Slack/Discord node) where users can paste long text. The bot then sends the summarized version back to the channel. Dynamic Summary Length & Options:** Allow the user to specify summary_length (short, medium, long) in the webhook body, as already implemented. Explore ApyHub's documentation for more parameters (if any) and dynamically pass them. Error Handling & User Feedback:** Add an IF node after Get Summarization Result to check for status: 'failed' or error messages. If an error occurs, send a helpful message back to the webhook caller or an internal alert. For very long texts that might exceed API limits, add a Function node to truncate the input content if it's too long, and notify the user. Multi-language Support (if ApyHub offers it):** If ApyHub supports summarization in multiple languages, extend the webhook to accept a language parameter and pass it to the API. Web Scraping & Article Summaries:** Combine this with a HTTP Request node to scrape content from a web page (e.g., a news article). Then, pass the extracted article text to this summarizer to get quick insights. Data Storage & Archiving:** Store the original content alongside its summary in a database (e.g., PostgreSQL, MongoDB) or a simple spreadsheet (Google Sheets, Airtable). This creates a searchable, summarized archive of your content. Automated Report Generation:** If you receive daily/weekly reports, use this workflow to summarize key sections, then compile these summaries into a concise digest or dashboard using a Merge node and send it out automatically.
by Amit Mehta
How it Works This workflow reads sheet details from a source Google Spreadsheet, creates a new spreadsheet, replicates the sheet structure, enriches the content by reading data, and writes it into the corresponding sheets in the new spreadsheet. The process is looped for every sheet, providing an automated way to duplicate and transform structured data. 🎯 Use Case Automate duplication and data enrichment for multi-sheet Google Spreadsheets Replicate templates across new documents with consistent formatting Data team workflows requiring repetitive structured Google Sheets setup Setup Instructions 1. Required Google Sheets You must have a source spreadsheet with multiple sheets. The destination spreadsheet will be created automatically. 2. API Credentials Google Sheets OAuth2** – connect to both read and write spreadsheets. HTTP Request Auth** – if external API headers are needed. 3. Configure Fields in Write Sheet Ensure you define appropriate columns and mapping for the destination sheet. 🔁 Workflow Logic Manual Trigger: Starts the flow on user demand. Create New Spreadsheet: Generates a blank spreadsheet. HTTP Request: Retrieves all sheet names from the source spreadsheet. JavaScript Code: Extracts titles and metadata from the HTTP response. Loop Over Sheets: Iterates through each sheet retrieved. Delete Default Sheet: Removes the placeholder 'Sheet1'. Create Sheets: Replicates each original sheet in the new document. Read Spreadsheet1: Pulls data from the matching original sheet. Write Sheet: Appends the data to the newly created sheets. 🧩 Node Descriptions | Node Name | Description | |-----------|-------------| | Manual Trigger | Starts the workflow manually by user test. | | Create New Spreadsheet | Creates a new Google Spreadsheet for output. | | HTTP Request | Fetches metadata from the source spreadsheet including sheet names. | | Code | Processes sheet metadata into a list for iteration. | | Loop Over Items | Loops over each sheet to replicate and populate. | | Google Sheets2 | Deletes the default 'Sheet1' from the new spreadsheet. | | Create Sheets | Creates a new sheet matching each source sheet. | | Read Spreadsheet1 | Reads data from the source sheet. | | Write sheet | Writes the data into the corresponding new sheet. | 🛠️ Customization Tips Adjust the Google Sheet title to be dynamic or user-input driven Add filtering logic before writing data Append custom audit columns like 'Timestamp' or 'Processed By' Enable logging or Slack alerts after each sheet is created 📎 Required Files | File Name | Purpose | |-----------|---------| | My_workflow_4.json | Main workflow JSON file for sheet duplication and enrichment | 🧪 Testing Tips Test with a spreadsheet containing 2–3 simple sheets Validate whether all sheets are duplicated Check if columns and data structure remain intact Watch for authentication issues in Google Sheets nodes 🏷 Suggested Tags & Categories #GoogleSheets #Automation #DataEnrichment #Workflow #Spreadsheet
by ankitkansaldev
📰 Comprehensive Reuters News Intelligence System With Brightdata & Telegram Alerts A powerful n8n automation workflow that scrapes the latest Reuters news articles using Bright Data's web scraping capabilities and delivers intelligent news summaries directly to your Telegram chat. 📋 Overview This workflow provides an automated news intelligence solution that monitors Reuters for breaking news, analyzes content using Claude AI, and delivers personalized news alerts. Perfect for journalists, researchers, traders, and anyone who needs real-time access to Reuters content with AI-powered insights. ✨ Key Features 🎯 Form-Based Input: Easy web form to specify keywords and news type preferences 🤖 AI-Powered Processing: Uses Claude 4 Sonnet for intelligent content analysis 🌐 Professional Scraping: Leverages Bright Data's Reuters dataset for reliable data extraction 📱 Telegram Integration: Instant notifications delivered to your preferred chat ⏰ Smart Waiting: Built-in delays to ensure data processing completion 🔄 Status Monitoring: Automatic scraping status checks with retry logic 📊 Data Formatting: Clean, structured output with essential article fields 🚀 Scalable Design: Handles multiple articles with batch processing 🎯 What This Workflow Does Input Keywords**: Search terms for Reuters articles (e.g., "Election", "Gas shocks", "Technology") News Type**: Sorting preference (newest, oldest, relevance) Form Submission**: Web-based interface for easy interaction Processing Form Trigger: Captures user input via web form interface AI Agent Orchestration: Claude processes requirements and coordinates actions Bright Data Request: Initiates Reuters scraping with specified keywords Status Monitoring: Checks scraping progress with smart retry logic Data Retrieval: Fetches completed article data when ready Content Processing: Extracts and formats essential article information Telegram Delivery: Sends structured news updates to specified chat Output Data Points | Field | Description | Example | |-------|-------------|---------| | article_title | The main headline of the article | "Global Energy Markets Face Uncertainty" | | headline | Reuters display headline | "Oil Prices Surge Amid Supply Concerns" | | description | Article summary/meta description | "Energy markets react to geopolitical tensions..." | | content | Full article body text | "LONDON (Reuters) - Oil prices jumped 3%..." | | article_url | Direct link to Reuters article | "https://reuters.com/business/energy/..." | 🚀 Setup Instructions Prerequisites n8n instance (self-hosted or cloud) Bright Data account with Reuters dataset access Telegram bot and channel setup Claude API access (Anthropic) 15-20 minutes for complete setup Step 1: Import the Workflow Copy the JSON workflow code from the provided file In n8n: Workflows → + Add workflow → Import from JSON Paste JSON content and click Import Save the workflow with a descriptive name Step 2: Configure Bright Data Integration Set up Bright Data credentials: In n8n: Credentials → + Add credential → HTTP Header Auth Name: "Bright Data API" Add header: Authorization: Bearer YOUR_BRIGHT_DATA_API_KEY Test the connection Configure Reuters dataset: Ensure access to dataset ID: gd_lyptx9h74wtlvpnfu Verify Reuters scraping permissions in Bright Data dashboard Check monthly quota and usage limits Step 3: Configure Anthropic Claude Integration Set up Anthropic credentials: In n8n: Credentials → + Add credential → Anthropic API Enter your Anthropic API key Test the connection Update model settings: Open "Anthropic Chat Model" node Verify model is set to: claude-sonnet-4-20250514 Adjust temperature and other parameters if needed Step 4: Configure Telegram Notifications Create Telegram Bot: Message @BotFather on Telegram Use /newbot command and follow instructions Save the bot token provided Get Chat ID: Add your bot to desired channel/group Send a test message Visit: https://api.telegram.org/bot{BOT_TOKEN}/getUpdates Find your chat ID in the response Set up Telegram credentials: In n8n: Credentials → + Add credential → Telegram API Enter bot token from BotFather Test the connection Update Telegram node: Open "Telegram" node Replace DEMO_CHAT_ID with your actual chat ID Customize message format if needed Step 5: Configure Web Form Set up form trigger: Open "On form submission" node Note the webhook URL provided Customize form title and fields if needed Test form functionality: Access the webhook URL in your browser Fill out test form with sample keywords Verify form submission triggers workflow Step 6: Update Node Configurations Update HTTP Request nodes: Replace BRIGHT_DATA_API_KEY with actual credentials reference Verify dataset ID matches your Bright Data setup Check request parameters and headers Configure Data Formatting: Open "Data Formatting" node Review JavaScript code for field extraction Modify output fields if additional data needed Step 7: Test & Activate Run initial test: Submit form with test keywords (e.g., "Technology") Monitor workflow execution in n8n Check for Telegram message delivery Verify data flow: Confirm Bright Data snapshot creation Check status monitoring functionality Validate final data formatting Activate workflow: Toggle workflow to "Active" status Monitor for any execution errors Set up error notifications if needed 📖 Usage Guide Submitting News Requests Access the form: Navigate to your webhook URL Form title: "Reuters News Intelligence" Fill required fields: Keywords: Enter search terms (e.g., "Climate Change", "Tech Earnings") News Type: Select sorting preference: newest: Most recent articles first oldest: Historical articles first relevance: Best matching articles Submit and wait: Click submit to trigger workflow Expect 1-3 minutes for processing Check Telegram for article delivery Understanding the Process The workflow follows this sequence: Form submission triggers Claude AI agent Claude coordinates all scraping and processing steps Bright Data scrapes Reuters with your keywords System waits for scraping completion (60 seconds) Status check confirms data readiness Article data is retrieved and formatted Telegram message delivers final results Reading Telegram Results Each article includes: Clickable URL** to full Reuters article Headline** for quick scanning Description** with article summary Content preview** with key details 🔧 Customization Options Modifying Search Parameters Edit the "HTTP Request" node to adjust: { "keyword": "Your search terms", "sort": "newest|oldest|relevance", "limit_per_input": "2-10 articles" } Customizing Telegram Messages Update the "Telegram" node message format: 🗞️ {{ $json.heading }} 📖 {{ $json.description }} 🔗 Read Full Article 📅 Retrieved: {{ $now.format('YYYY-MM-DD HH:mm') }} Adding Email Notifications Add "Email" node after "Data Formatting" Configure SMTP credentials Create HTML email template with article data Connect to same input as Telegram node Enhancing AI Processing Modify the MCP Agent prompt to: Request specific article sections Add sentiment analysis Include market impact assessment Generate executive summaries Extract key quotes and statistics Adding Data Storage Include database storage by: Adding "Postgres" or "MySQL" node Creating articles table with schema Storing full article data for analysis Building historical news database 🚨 Troubleshooting Common Issues & Solutions 1. "Bright Data snapshot failed" Cause**: Invalid API key or dataset access Solution**: Verify credentials and dataset permissions in Bright Data dashboard 2. "No articles found" Cause**: Keywords too specific or no matching content Solution**: Try broader search terms, check Reuters availability 3. "Telegram message not sent" Cause**: Invalid bot token or chat ID Solution**: Re-verify bot setup with @BotFather, confirm chat ID 4. "Workflow timeout" Cause**: Bright Data scraping taking too long Solution**: Increase timeout in "sleep tool" or add retry logic 5. "Data formatting errors" Cause**: Unexpected response structure from Bright Data Solution**: Check "Data Formatting" node logs, adjust parsing logic 6. "Claude API errors" Cause**: API key issues or rate limiting Solution**: Verify Anthropic credentials, check usage limits Advanced Troubleshooting Monitor execution logs** in n8n for detailed error messages Test individual nodes** by running them separately Verify JSON structures** ensure data flows correctly between nodes Check rate limits** for both Bright Data and Claude API Add error handling** implement try-catch logic for robust operation 📊 Use Cases & Examples 1. Financial News Monitoring Goal: Track market-moving Reuters financial news Keywords: "earnings", "fed rates", "market outlook" Instant alerts for breaking financial news Support trading and investment decisions 2. Competitive Intelligence Goal: Monitor industry-specific news for business insights Keywords: Company names, industry terms Track competitor mentions and market developments Generate competitive analysis reports 3. Crisis Communications Goal: Stay informed during breaking news events Keywords: "breaking", location names, event types Rapid response to developing situations Crisis management team notifications 4. Research & Academia Goal: Gather news data for academic research Keywords: Research topics, geographic regions Build datasets for media analysis Track news coverage patterns over time ⚙ Advanced Configuration Scaling for High Volume To handle larger news monitoring needs: Increase batch processing: Modify limit_per_input parameter Add parallel processing branches Implement queue management Add rate limiting: Insert delays between requests Monitor API usage quotas Implement exponential backoff Database integration: Store articles in PostgreSQL/MySQL Add deduplication logic Create search and filter capabilities Multi-Channel Distribution Expand beyond Telegram: Slack integration: Add Slack webhook node Format messages for team channels Include interactive buttons Email newsletters: Compile daily/weekly summaries HTML formatting with images Subscriber management API endpoints: Create webhook responses Build news API for other systems Real-time data streaming AI Enhancement Options Leverage Claude's capabilities further: Sentiment analysis: Add sentiment scoring to articles Track market sentiment trends Generate mood indicators Summarization: Create executive summaries Extract key points Generate abstracts Classification: Categorize articles by topic Tag with relevant industries Priority scoring system 📈 Performance & Limits Expected Performance Single request**: 60-120 seconds average processing time Articles per request**: 2-10 (configurable) Data accuracy**: 95%+ for standard Reuters articles Success rate**: 90%+ for accessible content Daily capacity**: Limited by Bright Data quotas Resource Usage Memory**: ~200MB per execution API calls**: 1 Bright Data + 1 Claude + 1 Telegram per execution Bandwidth**: ~5-10MB per article scraped Execution time**: 1-3 minutes per request Scaling Considerations Rate limiting**: Respect API quotas and limits Error handling**: Implement comprehensive retry logic Data validation**: Verify article quality and completeness Cost monitoring**: Track API usage across services Performance optimization**: Cache common requests when possible 🤝 Support & Community Getting Help n8n Community**: community.n8n.io Bright Data Support**: Contact through dashboard Anthropic Documentation**: docs.anthropic.com Telegram Bot API**: core.telegram.org/bots Contributing Share workflow improvements with the community Report issues and suggest enhancements Create variations for specific news sources Document best practices and optimizations 📋 Quick Setup Checklist Before You Start ☐ n8n instance running (self-hosted or cloud) ☐ Bright Data account with Reuters dataset access ☐ Anthropic API key for Claude access ☐ Telegram bot created via @BotFather ☐ 20 minutes for complete setup Setup Steps ☐ Import Workflow - Copy JSON and import to n8n ☐ Configure Bright Data - Set up API credentials and test ☐ Configure Claude - Add Anthropic API credentials ☐ Setup Telegram - Create bot and get chat ID ☐ Update Credentials - Replace all demo values with real ones ☐ Test Form - Submit test request and verify flow ☐ Check Telegram - Confirm message delivery ☐ Activate Workflow - Turn on for production use Ready to Use! 🎉 Your workflow form URL: https://your-n8n-instance.com/webhook/your-webhook-id 🎯 Happy News Monitoring! This workflow provides a solid foundation for automated Reuters news intelligence. Customize it to fit your specific monitoring needs and use cases. The combination of Bright Data's reliable scraping, Claude's AI analysis, and Telegram's instant delivery creates a powerful news monitoring solution.
by Mary Newhauser
RAG over a PDF with Weaviate This workflow allows you to upload a PDF file and ask questions about it using the Question and Answer Chain and the Weaviate Vector Store nodes. Who it's for This workflow is the simplest possible implementation of RAG with Weaviate in n8n. It's intended to act as an extendable template for RAG over your own documents. Prerequisites An existing Weaviate cluster. You can view instructions for setting up a local cluster with Docker here or a Weaviate Cloud cluster here. API keys to generate embeddings and power chat models. We use OpenAI, but feel free to switch out the models as you like. Self-hosted n8n instance. See this video for how to get set up in just three minutes. How it works Part 1: Manually upload data In this example, we manually upload a 100+ page article from arXiv called "A Survey of Large Language Models". But you can replace this with your own more advanced data pipeline, if you wish. Part 2: Embed and load data into Weaviate collection Here, we generate embeddings for the full-text of the article and store them in Weaviate. Part 3: Perform RAG over PDF file with Weaviate In this part of the workflow, you can enter your query by running the Chat Node and get a RAG response grounded in context via the Question and Answer Chain node. How to run the workflow Go through the prerequisites, creating a Weaviate cluster (can be local or cloud), downloading self-hosted n8n, and adding your API keys and other credentials. Select the embedding and chat models you'd like to use. Upload a PDF file you want to ask questions about. Execute the rest of the workflow.
by John Alejandro SIlva
🤖📨 Telegram AI Assistant with Multi-File Media Group Handling, Smart File Processing & PostgreSQL Integration > AI-powered Telegram bot for text, voice, video, documents & media — with database-driven grouping and Telegram-safe formatting. 📋 Description This n8n template creates a next-generation Telegram AI assistant 🧠💬 capable of handling text messages, media files, and documents with advanced processing, PostgreSQL integration, and AI-powered responses. It is designed to solve Telegram’s media group challenge 📦 — when multiple files are sent together, they are stored, processed, and combined into one coherent AI-generated reply. ✨ Key Features 📂 Multi-file media group management with PostgreSQL: media_group media_queue chat_histories 📑 Document parsing for CSV, HTML, ICS, JSON, ODS, PDF (with AI fallback), RTF, TXT, XML, and spreadsheets. 🎤 Voice & video transcription for AI analysis. 🖼️ Image, audio, and video description for richer AI context. 🛡️ Telegram-safe MarkdownV2 formatting with auto-splitting for messages over 4096 chars. ⚠️ Error fallback for unsupported file types. 💡 Acknowledgment A huge thank you to Ezema Gingsley Chibuzo 🙌 for the inspiration of the first version of this workflow: Create a Multi-Modal Telegram Support Bot with GPT-4 and Supabase RAG Your pioneering work laid the foundation for this improved, database-powered multi-modal assistant 🚀 🏷 Tags telegram ai-assistant postgresql multi-file media-group file-processing voice-transcription document-parser pdf-extraction markdown-formatting n8n-template 💼 Use Case Use this template if you need an AI-powered Telegram bot that can: 📦 Handle multiple files sent in a single message (albums, multiple PDFs, etc.). 🧾 Extract & analyze content from many file formats. 🎙️ Transcribe voice and video messages. 🗂️ Maintain chat memory for contextual AI answers. 🛡️ Avoid Telegram formatting errors and length limit issues. This workflow automates the full chain: Receive → Process → AI Analysis → Telegram-safe Reply. 💬 Example User Interactions 📄 Multiple PDFs with a caption** → AI extracts and summarizes all PDFs in one combined reply. 🎤 Voice message** → AI transcribes and replies with a contextual answer. 📊 CSV or spreadsheet file** → AI parses and summarizes the data. 🖼️ Multiple images** → AI describes each image and replies in a single message. 🔑 Required Credentials Telegram Bot API** (Bot Token) PostgreSQL** (Connection credentials) AI Provider API** (OpenAI, Google Gemini, or compatible LLM) ⚙️ Setup Instructions 🗄️ Create the PostgreSQL tables (Gray section SQL): media_group media_queue chat_histories 🔌 Configure the Telegram Trigger with your bot token. 🤖 Connect your AI provider credentials. 🗂️ Set up PostgreSQL credentials in the database nodes. ▶️ Deploy the workflow in n8n. 🎯 Start sending messages and files to your bot. 📌 Extra Notes ✅ Green section ensures only one trigger per media group. 📌 Yellow section guarantees captions and files are stored in the correct sequence. ✨ Purple section formats AI output to be Telegram-safe and split if needed. 🧠 AI prompt is not fixed, allowing full customization. 💡 Need Assistance? If you’d like help customizing or extending this workflow, feel free to reach out: 📧 Email: johnsilva11031@gmail.com 🔗 LinkedIn: John Alejandro Silva Rodríguez
by Adam Janes
How it works The workflow loads a list of test cases from a Google Sheet (previous results stored from an LLM) For each test case, we execute a call to an LLM judge in parallel (using HTTP Request + Webhook nodes) The judge uses the Input, Output, and Reference Answer fields from the spreadsheet to mark each LLM response as Pass/Fail The results are logged into a separate sheet in the same Sheets file. Set up steps: Add your credentials for Google Sheets and OpenRouter (or replace the OpenRouter node with your favourite chat model). Make a copy of the example Sheet to populate it with you own test data. Run the workflow with the Execute Workflow button next to the Manual Trigger node.
by Mario
Purpose This workflow allows you to transfer credentials from one n8n instance to another. How it works A multi-form setup guides you through the entire process You get to choose one of your predefined (in the Settings node) remote instances first Then all credentials of the current instance are being retrieved using the Execute Command node On the next form page you can select one of the credentials by their name and initiate the transfer Finally the credential is being created on the remote instance using the n8n API. A final form ending indicates if that action succeeded or not. Setup Select your credentials in the nodes which require those Configure your remote instance(s) in the Settings node Every instance is defined as object with the keys name, apiKey and baseUrl. Those instances are then wrapped inside an array. You can find an example described within a note on the workflow canvas. How to use Grab the (production) URL of the Form from the first node Open the URL and follow the instructions given in the multi-form Disclaimer Please note, that this workflow can only run on self-hosted n8n instances, since it requires the Execute Command Node. Security: Beware, that all credentials are being decrypted and processed within the workflow. Also the API keys to other n8n instances are stored within the workflow. This solution is primarily meant for transferring data between testing environments. For production use consider the n8n enterprise edition which provides a reliable way to manage credentials across different environments.