by Jaruphat J.
⚠️ Note: This template requires a community node and works only on self-hosted n8n installations. It uses the Typhoon OCR Python package and custom command execution. Make sure to install required dependencies locally. Who is this for? This template is for developers, operations teams, and automation builders in Thailand (or any Thai-speaking environment) who regularly process PDFs or scanned documents in Thai and want to extract structured text into a Google Sheet. It is ideal for: Local government document processing Thai-language enterprise paperwork AI automation pipelines requiring Thai OCR What problem does this solve? Typhoon OCR is one of the most accurate OCR tools for Thai text. However, integrating it into an end-to-end workflow usually requires manual scripting and data wrangling. This template solves that by: Running Typhoon OCR on PDF files Using AI to extract structured data fields Automatically storing results in Google Sheets What this workflow does Trigger: Run manually or from any automation source Read Files: Load local PDF files from a doc/ folder Execute Command: Run Typhoon OCR on each file using a Python command LLM Extraction: Send the OCR markdown to an AI model (e.g., GPT-4 or OpenRouter) to extract fields Code Node: Parse the LLM output as JSON Google Sheets: Append structured data into a spreadsheet Setup 1. Install Requirements Python 3.10+ typhoon-ocr: pip install typhoon-ocr Install Poppler and add to system PATH (needed for pdftoppm, pdfinfo) 2. Create folders Create a folder called doc in the same directory where n8n runs (or mount it via Docker) 3. Google Sheet Create a Google Sheet with the following column headers: | book\_id | date | subject | detail | signed\_by | signed\_by2 | contact | download\_url | | -------- | ---- | ------- | ------ | ---------- | ----------- | ------- | ------------- | You can use this example Google Sheet as a reference. 4. API Key Export your TYPHOON_OCR_API_KEY and OPENAI_API_KEY in your environment (or set inside the command string in Execute Command node). How to customize this workflow Replace the LLM provider in the Basic LLM Chain node (currently supports OpenRouter) Change output fields to match your data structure (adjust the prompt and Google Sheet headers) Add trigger nodes (e.g., Dropbox Upload, Webhook) to automate input About Typhoon OCR Typhoon is a multilingual LLM and toolkit optimized for Thai NLP. It includes typhoon-ocr, a Python OCR library designed for Thai-centric documents. It is open-source, highly accurate, and works well in automation pipelines. Perfect for government paperwork, PDF reports, and multilingual documents in Southeast Asia.
by Ryan
Who is this template for? This template is for any Microsoft Outlook user who wants a trained AI agent to reason and reply on their behalf. Teach your agent tone and writing style to replicate your own, or develop a persona for a shared inbox. Requirements Outlook with authentication credentials OpenAI account with authentication credentials A few sample email replies of various lengths and topics How it works: Connect your Outlook account. Select (filter) which email sender(s) your trained AI agent will reply to. [Tip: pick a sender that has some repeatability either with a topic (ie. sales) or an individual (coworker@yourcompany.com)] Connect your OpenAI account. Choose your AI model (ie. gpt-4o-mini) Add Prompt (User Message) and select "system message" from the option below Update the instructions by filling in your name (or persona), response style, and add full email replies from the topic or individual you want the AI agent to emulate. [Tip: Add actual replies from your email sent folder, including your greeting and sign off. Paste each email sample between a set of <example> .... </example> tags] Configure the reply (or reply all) to remain within the original email string Test it! Send an email from the address to which your agent wants to respond. Check your sent (or draft) folder for the result. Enjoy all the free time you now have!! If you have questions or need assistance, email us at: support@teambisonandbird.com ++This template does not include retrieving email addresses out of the message or body of the email.++
by Guillaume Duvernay
Description This template provides a simple and powerful backend for adding speech-to-text capabilities to any application. It creates a dedicated webhook that receives an audio file, transcribes it using OpenAI's gpt-4o-mini model, and returns the clean text. To help you get started immediately, you'll find a complete, ready-to-use HTML code example right inside the workflow in a sticky note. This code creates a functional recording interface you can use for testing or as a foundation for your own design. Who is this for? Developers:** Quickly add a transcription feature to your application by calling this webhook from your existing frontend or backend code. No-code/Low-code builders:** Embed a functional audio recorder and transcription service into your projects by using the example code found inside the workflow. API enthusiasts:** A lean, practical example of how to use n8n to wrap a service like OpenAI into your own secure and scalable API endpoint. What problem does this solve? Provides a ready-made API:** Instantly gives you a secure webhook to handle audio file uploads and transcription processing without any server setup. Decouples frontend from backend:** Your application only needs to know about one simple webhook URL, allowing you to change the backend logic in n8n without touching your app's code. Offers a clear implementation pattern:** The included example code provides a working demonstration of how to send an audio file from a browser and handle the response—a pattern you can replicate in any framework. How it works This solution works by defining a clear API contract between your application (the client) and the n8n workflow (the backend). The client-side technique: Your application's interface records or selects an audio file. It then makes a POST request to the n8n webhook URL, sending the audio file as multipart/form-data. It waits for the response from the webhook, parses the JSON body, and extracts the value of the Transcript key. You can see this exact pattern in action in the example code provided in the workflow's sticky note. The n8n workflow (backend): The Webhook node catches the incoming POST request and grabs the audio file. The HTTP Request node sends this file to the OpenAI API. The Set node isolates the transcript text from the API's response. The Respond to Webhook node sends a clean JSON object ({"Transcript": "your text here..."}) back to your application. Setup Configure the n8n workflow: In the Transcribe with OpenAI node, add your OpenAI API credentials. Activate the workflow to enable the endpoint. Click the "Copy" button on the Webhook node to get your unique Production Webhook URL. Integrate with the frontend: Inside the workflow, find the sticky note labeled "Example Frontend Code Below". Copy the complete HTML from the note below it. ⚠️ Important: In the code you just copied, find the line const WEBHOOK_URL = 'YOUR WEBHOOK URL'; and replace the placeholder with the Production Webhook URL from n8n. Save the code as an HTML file and open it in your browser to test. Taking it further Save transcripts:* Add an *Airtable* or *Google Sheets** node to log every transcript that comes through the workflow. Error handling:** Enhance the workflow to catch potential errors from the OpenAI API and respond with a clear error message. Analyze the transcript:* Add a *Language Model** node after the transcription step to summarize the text, classify its sentiment, or extract key entities before sending the response.
by Wyeth
Encode JSON to Base64 String in n8n This example workflow demonstrates how to convert a JSON object into a base64-encoded string using n8n’s built-in file processing capabilities. This is a common requirement when working with APIs, webhooks, or SaaS integrations that expect payloads to be base64-encoded. > Tip: The three green-highlighted nodes (Stringify → Convert to File → Extract from File) can be wrapped in a Subworkflow to create a reusable Base64 encoder in your own projects. 🔧 Requirements Any running n8n instance (local or cloud) No credentials or external services required What This Workflow Does Generates example JSON data Converts the JSON to a string Saves the string as a binary file Extracts the file’s contents as a base64 string Outputs the base64 string on the final node Step-by-Step Setup Manual Trigger Start the workflow using the Manual Execution node. This is useful for testing and development. Create JSON Data The Create Json Data node uses raw mode to construct a sample object with all major JSON types: strings, numbers, booleans, nulls, arrays, nested objects, etc. Convert to String The Convert to String node uses the expression ={{ JSON.stringify($json) }} to flatten the object into a single string field named json_text. Convert to File The Convert to File node takes the json_text value and saves it to a UTF-8 encoded binary file in the property encoded_text. Extract from File This node takes the binary file and extracts its contents as a base64-encoded string. The result is saved in the base64_text field. Customization Tips Replace the sample JSON in the Create Json Data node with your own payload structure. To make this reusable, extract the three core nodes into a Subworkflow or wrap them in a custom Function. Use the base64_text output field to post to APIs, store in databases, or include in webhook responses.
by Gerald Denor
AI-Powered Proposal Generator - Sales Automation Workflow Overview This n8n workflow automates the entire proposal generation process using AI, transforming client requirements into professional, customized proposals delivered via email in seconds. Use Case Perfect for agencies, consultants, and sales teams who need to generate high-quality proposals quickly. Instead of spending hours writing proposals manually, this workflow captures client information through a web form and uses GPT-4 to generate contextually relevant, professional proposals. How It Works Form Trigger - Captures client information through a customizable web form OpenAI Integration - Processes form data and generates structured proposal content Google Drive - Creates a copy of your proposal template Google Slides - Populates the template with AI-generated content Gmail - Automatically sends the completed proposal to the client Key Features AI Content Generation**: Uses GPT-4 to create personalized proposal content Professional Templates**: Integrates with Google Slides for polished presentations Automated Delivery**: Sends proposals directly to clients via email Form Integration**: Captures all necessary client data through web forms Customizable Output**: Generates structured proposals with multiple sections Template Sections Generated Proposal title and description Problem summary analysis Three-part solution breakdown Project scope details Milestone timeline with dates Cost integration Requirements n8n instance** (cloud or self-hosted) OpenAI API key** for content generation Google Workspace account** for Slides and Gmail Basic n8n knowledge** for setup and customization Setup Complexity Intermediate - Requires API credentials setup and basic workflow customization Benefits Time Savings**: Reduces proposal creation from hours to minutes Consistency**: Ensures all proposals follow the same professional structure Personalization**: AI analyzes client needs for relevant content Automation**: Eliminates manual copy-paste and formatting work Scalability**: Handle multiple proposal requests simultaneously Customization Options Modify AI prompts for different industries or services Customize Google Slides template design Adjust form fields for specific information needs Personalize email templates and signatures Configure milestone templates for different project types Error Handling Includes basic error handling for API failures and form validation to ensure reliable operation. Security Notes All credentials have been removed from this template. Users must configure their own: OpenAI API credentials Google OAuth2 connections for Slides, Drive, and Gmail Form webhook configuration This workflow demonstrates practical AI integration in business processes and showcases n8n's capabilities for complex automation scenarios.
by Airtop
Automating LinkedIn Company URL Verification Use Case This automation verifies that a given LinkedIn URL actually belongs to a company by comparing the website listed on their LinkedIn page against the expected company domain. It is essential for ensuring data accuracy in lead qualification, enrichment, and CRM updates. What This Automation Does Input Parameters Company LinkedIn**: The LinkedIn URL to be verified. Company Domain**: The expected domain (e.g., example.com) for validation. Airtop Profile (connected to LinkedIn)**: Airtop Profile with LinkedIn authentication. Output Confirmation whether the LinkedIn page corresponds to the provided domain. Returns the verified LinkedIn URL if the match is confirmed. How It Works Extracts the website URL from the specified LinkedIn company profile. Compares the extracted URL with the provided company domain. If the domain is contained in the extracted website, the LinkedIn profile is confirmed as valid. Returns the original LinkedIn URL if the match is successful. Setup Requirements Airtop API Key LinkedIn-authenticated Airtop Profile Next Steps Use for LinkedIn Discovery Validation**: Ensure correctness after automated LinkedIn page discovery. Combine with CRM Updates**: Prevent incorrect LinkedIn links from being stored in CRM. Automate in Data Pipelines**: Use this as a validation gate before enrichment or scoring steps.
by bangank36
This workflow restores all n8n instance workflows from GitHub backups using the n8n API node. It complements the Backup Your Workflows to GitHub template by allowing users to seamlessly restore previously saved workflows. How It Works The workflow fetches workflows stored in a GitHub repository and imports them into your n8n instance. Setup Instructions To configure the workflow, update the Globals node with the following values: repo.owner** – Your GitHub username repo.name** – The name of your GitHub repository storing the workflows repo.path** – The folder path within the repository where workflows are stored For example, if your GitHub username is john-doe, your repository is named n8n-backups, and workflows are stored in a workflows/ folder, you would set: repo.owner → john-doe repo.name → n8n-backups repo.path → workflows/ Required Credentials GitHub API** – Access to your repository n8n API** – To import workflows into your n8n instance Who Is This For? This template is ideal for users who want to restore their workflows from GitHub backups, ensuring easy migration and recovery in case of data loss. Check out my other templates: 👉 My n8n Templates
by Nskha
This N8N workflow automates the process of sharing files from Google Drive. It includes OAuth2 authentication, batch processing, public link generation, and access status modification for efficient file handling. Suitable for users seeking to streamline their Google Drive file sharing process. sutiable for bulk actions, tested on 4.2K files folder working like charm. How It Works Initialize Workflow: The process begins with a Manual Trigger, allowing the user to start the workflow at their convenience. Folder ID Specification: A 'Set Folder ID' node where the user can enter the desired Google Drive Folder ID. List Files from Google Drive: The 'Google Drive' node lists all files within the specified folder using OAuth2 authentication. Batch Processing: The 'Loop Over Items' node processes the files in batches for efficiency. Generate Public Links: The 'Generate Download Links' node creates downloadable links for each file. Change File Access: The 'Change Status' node alters the file status to make them publicly accessible. Merge and Output: A 'Merge' node consolidates the data, preparing it for further actions or output. Set Up Steps Estimated Time**: The setup should take approximately 10-15 minutes. Initial Setup**: You'll need to provide OAuth2 credentials for Google Drive and specify a folder ID. Customization**: Adjust the batch size and file access permissions according to your needs. Detailed Descriptions**: For specific configuration details, refer to the sticky notes within the workflow. Example Item output { "link": "https://drive.google.com/u/3/uc?id=1hojqPfXchNTY8YRTNkxSo-8txK9re-V4&export=download&confirm=t&authuser=0", "name": "firefox_rNjA0ybKu7.png", "kind": "drive#permission", "id": "anyoneWithLink", "type": "anyone", "role": "reader", "allowFileDiscovery": false } You can store the output data with any data store node you want, for example save them into Excel Sheet or Airtable etc... Keywords: n8n workflow, Google Drive integration, file sharing automation, batch file processing, public link generation, OAuth2 authentication, workflow automation
by Halfbit 🚀
Daily YouTrack In-Progress Tasks Summary to Discord by Assignee Keep your team in sync with a daily summary of tasks currently In Progress in YouTrack — automatically posted to your Discord channel. This workflow queries issues, filters them by status, groups them by assignee and priority, and sends a formatted message to Discord. It's perfect for teams that need a lightweight, automated stand-up report. > 📝 This workflow uses Discord as an example. You can easily replace the messaging integration with Slack, Mattermost, MS Teams, or any other platform that supports incoming webhooks. Use Case Remote development teams using YouTrack + Discord Replacing daily stand-up meetings with async updates Project managers needing quick visibility into active tasks Features Scheduled** daily execution (default: weekdays at 09:00) Status filter**: only issues marked as In Progress Grouping** by assignee and priority Custom mapping** for user mentions (YouTrack → Discord) Clean Markdown output** for Discord, with direct task links Setup Instructions YouTrack Configuration Get a permanent token: Go to your YouTrack profile → Account Security → Authentication Create a new permanent token with "Read Issue" permissions Copy the token value Set the base API URL: Format: https://yourdomain.youtrack.cloud/api/issues Replace yourdomain with your actual YouTrack instance Identify custom field IDs: Method 1: Go to YouTrack → Administration → Custom Fields → find your "Status" field and note its ID Method 2: Use API call GET /api/admin/customFieldSettings/customFields to list all field IDs Method 3: Inspect a task's API response and look for field IDs in the customFields array Example Status field ID: 105-0 or 142-1 Discord Configuration Create a webhook URL in your Discord server: Server Settings → Integrations → Webhooks → New Webhook Choose target channel and copy the webhook URL Extract webhook ID from URL (numbers after /webhooks/) Environment Variables & Placeholders | Placeholder | Description | |-------------|-------------| | {{API_URL}} | Your YouTrack API base URL | | {{TOKEN}} | YouTrack permanent token | | {{FIELD_ID}} | ID of the "Status" custom field | | {{QUERY_FIELDS}} | Fields to fetch (e.g., summary, id) | | {{PROJECT_LINK}} | Link to your YouTrack project | | {{USER_X}} | YouTrack usernames | | {{DISCORD_ID_X}} | Discord mentions or usernames | | {{NAME_X}} | Display names | | {{WEBHOOK_ID}} | Discord webhook ID | | {{DISCORD_CHANNEL}} | Discord channel name | | {{CREDENTIAL_ID}} | Your credential ID in n8n | Testing the Workflow Test YouTrack connection: Execute the "HTTP Request YT" node individually Verify that issues are returned from your YouTrack instance Check if the Status field ID is correctly filtering tasks Verify filtering: Run the "Filter fields" node Confirm only "In Progress" tasks pass through Check message formatting: Execute the "Discord message" node Review the generated message content and formatting Test Discord delivery: Run the complete workflow manually Verify the message appears in your Discord channel Schedule verification: Enable the workflow Test weekend skip functionality by temporarily changing dates Customization Tips Language**: All labels/messages are in English — customize if needed User mapping**: Adjust assignee → Discord mention logic in the message builder Priorities**: Update the priorityMap to reflect your own naming structure Schedule**: Modify the trigger time in the Schedule Trigger node Alternative platforms**: Swap out the Discord webhook for another messaging service if preferred
by Jonathan | NEX
Supercharge Your Security Operations for Free Stop wasting time manually investigating suspicious IP addresses. This workflow template is your launchpad to automating real-time IP cybersecurity analysis using the NixGuard platform, which you can use for free. This is the first of a two-part system designed to integrate seamlessly into your existing security stack, especially with Wazuh. It calls our main workflow, Automate IP Reputation Checks and Get AI Risk Summaries from NixGuard, to do the heavy lifting. What This Workflow Unlocks for You Free AI-Powered Risk Summaries:** Don't just get data; get answers. NixGuard provides a clear, human-readable summary of why an IP is considered risky. Automated IP Reputation Checks:** Programmatically check any IP against a vast array of threat intelligence sources. A Foundation for Your SOC Automation:** Use the results to trigger your incident response process. The template includes a pre-built example of how to send a detailed alert to Slack, which you can easily adapt for Jira, TheHive, or any other tool. How the Two-Workflow System Works This "Dispatcher" workflow is designed for flexibility. It holds your API key and input, then calls the main analysis workflow. This allows you to easily create multiple triggers (e.g., one for Slack bots, one for webhooks) without duplicating the core logic. Critical Setup Instructions Get the Main Workflow: First, add the main analysis engine to your n8n instance from the community page: NixGuard Analysis Workflow. Add Your Free API Key: In this workflow, click the blue Set API Key & Initial Prompt node. Paste your free NixGuard API key into the apiKey value field. Connect The Workflows: Click the purple Execute NixGuard & Wazuh Workflow node. In the parameters, use the dropdown to select the main analysis workflow you added in Step 1. Ready to automate your threat intelligence? Get your free API key and learn more at; 🔗 Learn more about NixGuard: [thenex.world](thenex.world )🔗 Get started with a free security subscription: thenex.world/security/subscribe Tags: Free, IP Analysis, NixGuard, Wazuh, Security, Automation, AI, Cybersecurity, Threat Intelligence, SOC, Incident Response, IP Reputation, DevSecOps, API
by Agent Studio
Overview This workflow answers user requests sent via Mac Shortcuts Several Shortcuts call the same webhook, with a query and a type of query Types of query are: translate to english translate to spanish correct grammar (without changing the actual content) make content shorter make content longer How it works Select a text you are writing Launch the shortcut The text is sent to the webhook Depending on the type of request, a different prompt is used Each request is sent to an OpenAI node The workflow responds to the request with the response from GPT Shortcut replace the selected text with the new one For a demo and setup instructions: How to use it Activate the workflow Download this Shortcut template Install the shortcut In step 2 of the shortcut, change the url of the Webhook In Shortcut details, "add Keyboard Shortcut" with the key you want to use to launch the shortcut Go to settings, advanced, check "Allow running scripts" You are ready to use the shortcut. Select a text and hit the keyboard shortcut you just defined
by Alex Dunlop
Who is this for? Professionals and individuals who receive high volumes of emails, those who want to automatically organize their Gmail inbox using AI classification. What problem is this workflow solving? Manual email sorting is time-consuming and inconsistent. This workflow automatically categorizes incoming emails into 8 predefined labels (To respond, FYI, Comment, Notification, Meeting update, Awaiting reply, Actioned, Marketing) to help maintain inbox zero and prioritize responses. What this workflow does Monitors Gmail for new incoming emails Uses AI to analyze email content and classify into appropriate categories Automatically applies the corresponding Gmail label Runs on a schedule to process emails consistently Setup Prerequisites n8n instance (cloud or self-hosted) Gmail account with API access enabled Access to an LLM provider (OpenAI, Anthropic Claude, or similar) Step-by-Step Configure Gmail Credentials Create Gmail Labels Configure LLM Chain Set Email Polling Schedule Test the Workflow Create Gmail Labels Before running the workflow, create these 8 labels in your Gmail account: To respond FYI Comment Notification Meeting update Awaiting reply Actioned Marketing How to customize this workflow to your needs Modify Classification Categories To change the email categories, update two places: In the AI prompt (Basic LLM Chain node): Your new category - Description of what emails fit here Another category - Description [... continue with your categories] In Gmail labels: Create corresponding labels in your Gmail account with the exact same names and numbering. Adjust Classification Rules The AI prompt contains specific rules for each category. To modify: Edit the "Key classification rules" section in the LLM prompt Add examples of emails that should go into each category Specify edge cases and how they should be handled Change Email Sources Currently monitors all incoming emails. To filter specific emails: In the Gmail Trigger node, add filters such as: from:specific-sender@domain.com subject:contains-keyword -label:already-processed You can also change this use Outlook Modify Polling Frequency More frequent**: Add multiple poll times (e.g., 9 AM, 12 PM, 6 PM) Less frequent**: Change to once daily or weekly Real-time**: Switch to webhook-based triggering (requires Gmail API setup) I choose daily for cost.