by WeblineIndia
AI-Powered Deal Content Recommendation and Personalization (Zoho CRM + OpenAI + Gmail + n8n) This workflow automates personalized content recommendations for Zoho CRM deals by analyzing deal details, fetching relevant case studies and whitepapers and generating an AI-crafted email tailored to each prospect. It triggers when Zoho CRM sends a Deal ID to the n8n Webhook, processes contextual data, generates recommendations and emails the results automatically. 🚀 Quick Start: “5-Step Instant Setup” Import this workflow into n8n. Connect Zoho CRM workflow rule to the Webhook URL and pass the Deal ID. Add Zoho CRM, OpenAI and Gmail credentials in n8n. Update the API URLs for case studies and whitepapers. Activate the workflow and test by updating a deal stage in Zoho CRM. What It Does This workflow enables intelligent content automation by bridging Zoho CRM deal activity with AI-driven contextual recommendations. When a deal advances to a specific stage, Zoho CRM sends its Deal ID to the n8n Webhook. The workflow retrieves the complete deal details — including stage, amount, description, contact and account information — and uses them to determine the prospect’s needs. It then fetches two content datasets (case studies and whitepapers) from configured API endpoints. The combined dataset is structured and passed to an OpenAI model that analyzes the deal’s industry, pain points and stage to select the most relevant content. The AI generates an email draft featuring these recommendations, which is parsed and automatically delivered via Gmail. This eliminates manual research, speeds up sales follow-ups and ensures prospects receive focused and valuable resources at the right time. Who’s It For Sales teams working in Zoho CRM. Pre-sales and solution consultants. Marketing teams maintaining content libraries. CRM admins building smart sales workflows. Companies selling B2B products or services with long sales cycles. Requirements to Use This Workflow An active n8n instance (cloud or self-hosted) Zoho CRM OAuth2** credentials OpenAI API key** (for GPT-4o-mini or equivalent model) Gmail OAuth2** credentials Two API sources providing: Case studies Whitepapers A Zoho CRM workflow rule capable of sending Deal ID to the Webhook How It Works & How To Set Up 1. Configure the Webhook Trigger Copy the Webhook URL from n8n. In Zoho CRM → Workflow Rules → Create Rule → choose “Deal Stage Updated.” Set Webhook to send the Deal ID to n8n. 2. Fetch Deal Details The workflow uses the Deal ID received from the Webhook to fetch deal data from Zoho CRM. Ensure your Zoho CRM credentials are connected in n8n. 3. Prepare Content API Configuration Open the “Set Content API Config” node. Replace placeholder URLs with your actual API endpoints for case studies and whitepapers. 4. Retrieve Content Assets The workflow queries your APIs and collects both datasets. This ensures updated, relevant assets are always used. 5. Structure All Data Deal information, case studies and whitepapers are merged into one contextual payload. This payload is optimized for the AI model. 6. Generate AI Recommendations The OpenAI node analyzes the complete dataset. It returns recommended case studies, recommended whitepapers and a personalized email draft. 7. Parse AI Output AI responses are parsed from code-block format into clean JSON for downstream usage. 8. Send the Email Gmail node sends the personalized email using the AI-generated content. Edit the recipient address as needed for production. How To Customize Nodes Deal Data Extraction Add or remove fields inside the “Extract Deal Context” node based on your CRM schema. Content API Sources Update URLs or switch to internal CMS, Airtable or Google Sheets. AI Prompt Customization Modify tone, selection logic or output formatting in the OpenAI node prompt. Email Delivery Replace Gmail with Outlook, Zoho Mail, SMTP or Slack notifications. Filtering Logic Add rule-based filtering before sending data to AI—for example, industry, region or deal size. Add-Ons & Enhancements Add Slack notifications for sales reps. Store AI recommendations in Zoho CRM Notes. Log outputs to Google Sheets for analytics. Add follow-up reminders using n8n Wait nodes. Add multi-language support. Expand with product brochures or pricing sheets. Use Case Examples Industry-Specific Nurturing Automatically send the best content based on a deal’s industry. ROI-Focused Prospects Provide ROI-driven case studies when deal description includes keywords like “cost”, “budget” or “ROI.” Accelerated Qualification Deliver targeted materials during the qualification stage to increase deal momentum. Sales Playbook Automation Map deal stages to recommended content without manual intervention. Dynamic Content Libraries Allow marketing teams to update content sources without touching the workflow. Troubleshooting Guide | Issue | Possible Cause | Solution | | ----------------------------------- | ---------------------------- | ----------------------------------------------- | | Workflow not triggering | Zoho CRM not calling Webhook | Re-check Webhook URL in Zoho CRM | | Deal data missing | Wrong field sent by Webhook | Ensure Zoho sends the correct Deal ID | | AI returns no JSON | Incorrect prompt format | Ensure prompt instructs AI to respond with JSON | | Email not sent | Gmail credential expired | Reconnect Gmail OAuth | | Case study or whitepaper list empty | API URL incorrect or offline | Verify API endpoints in configuration node | | Merge node missing inputs | One API failed | Check HTTP request nodes | Need Help? If you need assistance customizing this workflow, enhancing recommendation logic, integrating additional systems or building similar automation solutions, WeblineIndia is here to help. Our expert n8n workflow automation developers can extend this workflow with scoring models, personalization engines, CRM integrations and advanced AI features.
by Daiki Takayama
Who's it for This workflow is perfect for content creators, international teams, and businesses that need to translate documents into multiple languages automatically. Whether you're localizing documentation, translating marketing materials, or creating multilingual content, this workflow saves hours of manual work. What it does Automatically monitors a Google Drive folder for new documents (PDF, DOCX, TXT, or Markdown) and translates them into multiple languages using DeepL API. Each translated document is saved with a language-specific filename (e.g., document_en.pdf, document_zh.pdf) in a designated folder. You receive an email notification when all translations are complete. How it works Monitors a Google Drive folder for new files Detects file format (PDF/DOCX/TXT/Markdown) and extracts text Translates the content into your chosen languages (default: English, Chinese, Korean, Spanish, French, German) Saves translated files with language codes in the filename Sends an email notification with translation summary Optional: Records translation history in Notion database Set up instructions Requirements Google Drive account (for file storage) DeepL API key (free tier: 500,000 characters/month) Gmail account (for notifications) Notion account (optional, for tracking translation history) Setup steps Create Google Drive folders: Create a "Source" folder for original files Create a "Translated" folder for output Copy the folder IDs from the URLs Get DeepL API key: Sign up at DeepL API Copy your API key Configure the workflow: Open the "Configuration (Edit Here)" node (yellow node) Replace folder IDs with your own Set your notification email Choose target languages Set up credentials: Add Google Drive OAuth2 credentials Add DeepL API credentials Add Gmail OAuth2 credentials Activate the workflow and upload a test file! Customization options Change target languages**: Edit the targetLanguages array in the Configuration node (supports 30+ languages) Adjust polling frequency**: Change trigger from "every minute" to hourly or daily for batch processing Enable Notion tracking**: Set enableNotion to true and provide your database ID Add more file formats**: Extend the Switch node to handle additional file types Filter by file size**: Add conditions to skip files larger than a certain size Supported languages EN (English), ZH (Chinese), KO (Korean), JA (Japanese), ES (Spanish), FR (French), DE (German), IT (Italian), PT (Portuguese), RU (Russian), and 20+ more. Performance Short files** (1 page): ~30 seconds for 6 languages Medium files** (10 pages): ~2 minutes for 6 languages Large files** (100 pages): ~15 minutes for 6 languages Technical Details Trigger**: Google Drive folder monitoring (1-minute polling) Translation**: DeepL API with automatic source language detection Loop implementation**: Split Out + Aggregate pattern for parallel translation Error handling**: Catches API failures and sends email alerts Storage**: Original file format preserved in translated outputs Notes DeepL free tier provides 500,000 characters/month (approximately 250 pages) For high-volume translation, consider upgrading to DeepL Pro The workflow creates new files instead of overwriting, preserving translation history Google Docs are automatically converted to the appropriate format before translation What You'll Learn This workflow demonstrates several n8n patterns: File format detection and routing (Switch node) Loop implementation with Split Out + Aggregate Binary data handling for file operations Conditional logic with IF nodes (optional features) Cross-node data references Error handling and user notifications Perfect for learning automation best practices while solving a real business problem!
by Tricore Infotech Pvt Ltd
🛒 Shopify "No Orders in X Minutes" Alert 📌 Summary Never miss a revenue-impacting failure. This n8n workflow monitors your Shopify store and triggers an alert if X minutes pass without a single new order. By automatically detecting unexpected drops in order flow based on your custom schedule. It tracks downtime duration, sends rich multi-channel alerts, and can optionally send an automated "all clear" message when orders resume. ✨ Key Features Dynamic 'X Minutes' Tracking:** The workflow automatically calculates its lookback window based on your Schedule Trigger. If you set the trigger to check every 45 minutes, the workflow dynamically alerts you if no orders were placed in the last 45 minutes. Multi-Channel Alerts:** Delivers highly readable, structured Slack messages and styled Emails. Toggle Slack and Email alerts independently via a single configuration node. Optional Recovery Notifications:** Toggle on the ability to automatically send a green "✅ SYSTEM RECOVERED" alert when orders successfully resume after an outage, closing the loop for your team. Smart Error Handling:** Catches Shopify API errors (e.g., expired credentials or rate limits) and tracks them separately from organic "no order" events to prevent skewed downtime metrics. 🛠️ How It Works Trigger & Validate: The workflow runs on a schedule you choose (for example, every 30 minutes). Validates configuration to prevent silent failures (e.g., missing email addresses or no channels enabled). Fetch Order: Queries Shopify for any new orders created within the last trigger interval. Logic Branch: Orders Found: Calculates total downtime, resets the tracking counters, and sends a Recovery notification (if an outage was actively ongoing and the recovery toggle is enabled). ✅ No Orders: Increments the downtime counter and initiates the alert sequence. 🚨 Route: Checks configuration toggles and delivers formatted messages to your enabled channels. 📦 Nodes Used Schedule Trigger** - Controls check frequency (configurable) Configuration** - Centralized settings for channels, recovery alerts, and email recipient Validate Email Config? / All Channels Disabled?** - Safety gates to prevent silent failures Config Error** - Stops execution with a clear warning if setup is incomplete Fetch Orders** - Queries Shopify for recent orders using an automated time window Orders Found?** - Conditional branch logic Build Alert Message** - Formats consistent message with downtime metrics and color themes Handle API Error** - Catches and formats Shopify API failures independently Orders Resumed — Reset Counters** - Generates recovery payloads and clears workflow static data Recovery Enabled?** - Checks if a recovery message needs to be sent based on previous downtime and your configuration toggles Slack Enabled?* / *Email Enabled?** - Routes to enabled channels Alert Team via Slack** - Posts structured Slack messages Alert Team via Email** - Sends templated HTML alerts via Gmail 🚀 Setup Instructions Credentials: Connect Shopify (orders:read), Slack (chat:write), and Gmail (gmail.send). Important: Open the Slack node and manually select your target channel from the dropdown. Config Node: Open the Configuration node and set your preferences: enableSlackAlert: Toggle to true to enable Slack notifications. enableEmailAlert: Toggle to true to enable Email notifications. enableRecoveryNotification: Toggle to true if you want a follow-up message when orders resume. sendEmailTo: Enter your target email address (mandatory if email alerts are enabled). Activate: Toggle the workflow to Active and you're ready to go. It will start checking on schedule. Testing the Recovery Path (Optional): To manually simulate a recovery, temporarily delete the expression in the Shopify node's createdAtMin field and pick a date in the past. Execute the node so it finds orders and triggers the recovery alert, then paste the default expression back in. ⚙️ Customization Ideas For Low-Traffic Stores:* Edit the Build Alert Message code logic to only send an alert after *3** consecutive failures (useful for low-volume stores). Monitor Specific Order Types:** Filter for paid orders only, or orders with specific tags, to focus on the orders that matter most. On-Call Escalation:* Add a *Twilio** node after the Email node to send an SMS if the downtime exceeds 120 minutes. 📋 Requirements n8n Version:** 2.11.3+ Persistence:** Requires n8n Workflow Static Data ($getWorkflowStaticData) for downtime tracking. Credentials:** Shopify, Slack, and/or Gmail OAuth2. ⚠️ Limitations Symptom Detection Only:* This workflow detects the *absence of orders, not the root cause. It can't tell if your checkout is broken, a payment processor went down, or customers just aren't buying right now. Low Traffic Stores:** If your store naturally goes hours without an order, you will receive false positive alerts unless you increase the Schedule Trigger interval to match your typical order frequency. Volume Agnostic: The Shopify fetch node uses limit: 1. It does not track order volume or quantity, it only checks if at least one order exists within the timeframe.
by isaWOW
Quick overview Fill in a form with your exam date, subjects, daily available hours, and study start time, and this workflow generates a complete personalised day-by-day study schedule using GPT-4o-mini, adds every session to Google Calendar automatically, logs the full plan to Google Sheets, and emails. How it works You fill in a form with your name, exam date, subjects, daily available hours, preferred study start time, and email address. GPT-4o-mini reads your inputs and generates a complete day-by-day study plan in structured JSON — with specific topics per subject, session types (New Learning, Revision, Practice Test, Quick Review), durations between 1.5 and 3 hours, and start and end times. The first 60% of days focus on new learning and the last 40% shift to revision and practice. The final two days before the exam are reserved for quick review only. The schedule is parsed and split into individual study sessions — one per calendar event. Each study session is processed one at a time through a loop. For every session, a Google Calendar event is created with the subject, topic, start time, end time, session type, priority, and exam date in the description. The loop continues until all sessions have been added to the calendar. Once all calendar events are created, the full session list is reassembled and one row per study session is appended to your Google Sheets Study Planner tab. Gmail sends a formatted HTML confirmation email with the full day-by-day schedule table, session type and priority badges, a study plan overview, and five personalised study tips. Setup Open the OpenAI — GPT-4o-mini Model step and connect your OpenAI API credential. Open node 5. Google Calendar — Create Study Event, connect your Google Calendar OAuth2 credential, and replace YOUR_CALENDAR_ID with your actual calendar ID. To find it: open Google Calendar → Settings → click your calendar name → scroll to Calendar ID. For most users it is your Google account email address. Create a Google Sheet tab named exactly Study Planner with these 12 column headers: Student Name, Exam Date, Subject, Topic, Date, Day, Start Time, End Time, Duration (hrs), Session Type, Priority, Status. Open node 7. Google Sheets — Log Study Plan, connect your Google Sheets OAuth2 credential, and replace YOUR_GOOGLE_SHEET_ID. Find the Sheet ID by opening your spreadsheet in a browser and copying the string between /d/ and /edit in the URL. Open node 8. Gmail — Send Confirmation Email and connect your Gmail OAuth2 credential. The email is sent automatically to whatever address the student submits in the form. Activate the workflow and copy the form URL from node 1. Form — Study Planner Input to share with students. Requirements Active n8n instance (self-hosted or cloud) OpenAI account with GPT-4o-mini API access Google Calendar connected via OAuth2 Google Sheets with a tab named Study Planner Gmail account connected via OAuth2 for sending confirmation emails Customization Change the session duration range — in the system prompt of node 2. AI Agent — Generate Study Schedule, change "between 1.5 and 3 hours" to a different range to generate shorter or longer study blocks depending on your preference Change the new learning vs revision split — in the same system prompt, change "First 60% of days: New Learning" to a different percentage — for example 50/50 for a more balanced plan or 70/30 for exams that are further away Add a Slack notification when the schedule is ready — after node 8. Gmail — Send Confirmation Email, add a Slack step that posts the student name, exam date, total sessions, and a confirmation message to a study group channel Change the calendar event color per session type — in node 5. Google Calendar — Create Study Event, expand the additional fields and add a colorId value — Google Calendar supports color IDs 1 through 11, which you can map to each session type using an IF check before the calendar step Add reminder alerts to calendar events — in node 5. Google Calendar — Create Study Event, add a reminders field in the additional fields section to set a popup reminder 30 or 60 minutes before each study session Additional info The calendar event loop in this workflow uses SplitInBatches to process one study session at a time. Output 0 creates the next calendar event. Output 1 fires only when all sessions have been processed — this is what triggers the Sheets logging and email. Do not modify the SplitInBatches connections or the loop will break. GPT-4o-mini generates the full schedule based on the number of days between today and the exam date. If the exam date is less than 2 days away, the AI may return a very short plan or an empty daily plan — the workflow will throw a clear error in that case. The exam date must be at least 3 days in the future for a meaningful plan to be generated. The study start time field in the form must be entered in 24-hour format, for example 09:00 or 14:30. The AI uses this time as the anchor for scheduling all sessions throughout the day. An incorrectly formatted start time may cause calendar events to be created with invalid timestamps. The Google Sheets log step uses autoMapInputData which maps the sheet_rows array directly. Make sure the column headers in your Study Planner tab match exactly — including capitalization and spacing — otherwise rows may be saved to the wrong columns or the step may fail.
by isaWOW
Description Submit any video URL — podcast, webinar, interview, or YouTube video — along with the title, creator name, niche, target audience, and tone and the workflow transcribes the full recording automatically. WayinVideo's Transcription API returns a speaker-labeled, timestamped transcript which is sent to GPT-4o-mini in one call to produce all three content pieces simultaneously: a 10-tweet Twitter thread, a 200–300 word LinkedIn post, and a 600–800 word SEO blog post with HTML structure, meta description, and focus keyword. Word counts are tracked for all three pieces and everything is saved as one row in Google Sheets with Status set to Draft. Built for content marketers, solo creators, agencies, and social media managers who want to repurpose every video into three platform-specific pieces without writing anything manually. What This Workflow Does Transcribes the full video with speaker labels and timestamps** — WayinVideo's Transcription API returns every word spoken in the video with the speaker name and timestamp so GPT has full context to work from Generates all three content pieces in one GPT call** — The Twitter thread, LinkedIn post, and blog post are all produced together — saving API cost and keeping the voice consistent across platforms Produces a 10-tweet Twitter thread with a hook and CTA** — Tweet 1 is a scroll-stopping hook, tweets 2–9 cover one insight each from the transcript, and tweet 10 is a CTA with the video reference and hashtags Writes a platform-appropriate LinkedIn post** — A 200–300 word thought leadership post with a strong first line, numbered insights, a closing question, and professional hashtags Creates a full SEO blog post with HTML structure** — A 600–800 word post with an SEO title, meta description, focus keyword, and HTML H2 headings ready to paste into any CMS Tracks word counts for all three pieces** — The Twitter thread, LinkedIn post, and blog content each have their own word count column in the sheet so you can verify length at a glance Saves 18 fields to Google Sheets in one row** — All three pieces, their word counts, the focus keyword, meta description, hashtags, video metadata, and generation timestamp are all in one Draft row Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Content Engine) Credentials Required WayinVideo API key (pasted into 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results) OpenAI API key Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results. Missing either one will cause the workflow to fail. Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your WayinVideo API key — Log in to your WayinVideo account → go to Account Settings → copy your API key Add your WayinVideo API key to node 2 — Open node 2. WayinVideo — Submit Transcription → find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY → replace YOUR_WAYINVIDEO_API_KEY with your actual key Add your WayinVideo API key to node 4 — Open node 4. WayinVideo — Get Transcript Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Content Engine → add these 18 column headers in row 1: Video URL, Video Title, Creator Name, Niche, Target Audience, Duration (min), Twitter Thread, Twitter Word Count, LinkedIn Post, LinkedIn Word Count, Blog Title, Blog Meta Description, Focus Keyword, Blog Content, Blog Word Count, Hashtags, Generated On, Status Get your Google Sheet ID — Open your Google Sheet in a browser → copy the string between /d/ and /edit in the URL — this is your Sheet ID Connect Google Sheets — Open node 11. Google Sheets — Save Content Engine → click the document field → replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually → click the credential dropdown → add Google Sheets OAuth2 → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Video URL + Content Details → open it in a browser to submit your first video How It Works (Step by Step) Step 1 — Form: Video URL + Content Details You open the form URL and fill in six fields: the video URL (YouTube, Zoom, Vimeo, Loom, or any direct link), the video or episode title, the creator or brand name, the content niche (e.g. Digital Marketing, SaaS, Finance), the target audience, and the content tone (e.g. Professional, Casual and friendly, Inspirational). Submitting the form starts the pipeline. Step 2 — HTTP: WayinVideo — Submit Transcription The video URL is sent to WayinVideo's Transcription API — note this is a different API endpoint from Summarization, using /v2/transcripts. WayinVideo accepts the job and returns a task ID. The transcription returns speaker-labeled segments with timestamps and the full spoken text. Step 3 — Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to transcribe the full video. Step 4 — HTTP: WayinVideo — Get Transcript Results A GET request checks the transcripts results endpoint using the task ID from step 2. It returns the current status and, once complete, the full transcript array where each segment includes the speaker label, start time in milliseconds, end time, and spoken text. Step 5 — IF: Transcription Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the transcript is ready and the workflow moves forward to formatting. If still processing (NO path), the workflow routes to 6. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 4. This repeats until SUCCEEDED. Step 6 — Wait: 30 Seconds Retry When the transcript is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 — Code: Format Transcript Each transcript segment is formatted as [Speaker | MM:SS] Spoken text and all segments are joined into a single readable text block. Total duration is calculated from the last segment's end time. A word count of the transcript and the list of unique speakers are also extracted. All six form inputs are packaged alongside the formatted transcript for the GPT prompt. Step 8 — AI Agent: Generate All 3 Content Pieces GPT-4o-mini receives the full formatted transcript as the main input and the video context (title, creator, niche, audience, tone, duration, URL) in the system prompt. It generates all three pieces in one call using eight labeled output sections. For the Twitter thread: 10 numbered tweets (1/ to 10/), hook first, CTA last, each under 280 characters, no hashtags in the thread body, hashtags added separately as THREAD_HASHTAGS. For LinkedIn: a strong first line, short paragraphs, 3–5 numbered insights, a closing question, and professional hashtags. For the blog: an SEO title at 55–60 characters, a meta description at 150–155 characters, 600–800 words with HTML H2 headings, the focus keyword used naturally in the title, first paragraph, and at least one heading, and a concluding paragraph. Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the three-platform content generation. Step 10 — Code: Parse All Content Outputs All eight labeled sections are extracted from the AI output using regex: TWITTER_THREAD, THREAD_HASHTAGS, LINKEDIN_POST, BLOG_TITLE, BLOG_META_DESCRIPTION, BLOG_CONTENT, FOCUS_KEYWORD, and HASHTAGS. The Twitter thread and thread hashtags are combined into one field. Word counts are calculated for all three pieces — HTML tags are stripped from the LinkedIn and blog text before counting. If the Twitter thread, LinkedIn post, or blog content are missing, the step throws a clear error. All video metadata from step 7 is also packaged for the sheet row. Step 11 — Google Sheets: Save Content Engine One row is appended to your Content Engine tab with all 18 columns: video URL, video title, creator name, niche, target audience, estimated duration, Twitter thread with hashtags, Twitter word count, LinkedIn post, LinkedIn word count, blog title, blog meta description, focus keyword, blog content, blog word count, universal hashtags, generation timestamp, and Status set to Draft. Key Features ✅ Transcription API with speaker labels — WayinVideo returns each segment with the speaker's name and timestamp — giving GPT much richer context than a plain text dump ✅ Three platforms in one GPT call — All content is generated together in a single request so the voice and insights stay consistent across Twitter, LinkedIn, and the blog ✅ Twitter thread hashtags kept separate from body — The thread body follows Twitter best practice with no inline hashtags — hashtags are appended at the end as a separate section ✅ HTML-ready blog post — The blog content uses HTML H2 tags for headings so you can paste directly into WordPress, Webflow, or any CMS without additional formatting ✅ SEO meta description and focus keyword generated — Every blog post comes with a 150–155 character meta description and a primary keyword — ready to paste into your SEO plugin ✅ Word counts tracked for all three pieces — Twitter thread, LinkedIn post, and blog content each have their own count column so you can verify length before publishing ✅ Duration calculated from transcript — The estimated video duration in minutes is logged in the sheet so you can track which recordings produced the most content Customisation Options Add a retry limit to stop infinite polling — Before node 6. Wait — 30 Seconds Retry, add a Set step that increments a poll counter, then add a second IF check to stop after 15 polls and send a Gmail error notification instead of looping indefinitely. Send all three pieces to Gmail for review — After node 11. Google Sheets — Save Content Engine, add a Gmail step that sends the Twitter thread, LinkedIn post, and blog title in a plain-text email to the creator so they can review everything in their inbox before publishing. Add a Slack notification when content is ready — After node 11. Google Sheets — Save Content Engine, add a Slack step that posts the video title, niche, and a link to the Content Engine sheet to a #content-team channel so your team knows new content is ready to review. Change the blog post length — In the system prompt of node 8. AI Agent — Generate All 3 Content Pieces, change 600-800 words to a different range — for example 800-1000 words for more detailed posts or 400-600 words for shorter content. Change the Twitter thread length — In the system prompt of node 8. AI Agent — Generate All 3 Content Pieces, change Exactly 10 tweets to a different number — for example 8 tweets for shorter videos or 12 tweets for longer recordings with more insights. Troubleshooting Form submission not starting the workflow: Confirm the workflow is Active — inactive workflows do not receive form submissions Copy the Form URL fresh from node 1. Form — Video URL + Content Details after activating — URLs copied before activation will not work Make sure all six fields are filled in — all are marked required WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Transcription is replaced with your actual API key — not the placeholder Confirm the same replacement was made in node 4. WayinVideo — Get Transcript Results — both steps require the key Check the execution log of node 2 for the raw error — note this workflow uses the /v2/transcripts endpoint, not /v2/summaries — confirm the URL is correct Workflow stuck in the polling loop: Check that the video URL is publicly accessible — private YouTube videos, unlisted videos requiring login, or expired Zoom links will not be transcribed Open the execution log of node 4. WayinVideo — Get Transcript Results and inspect the raw response — WayinVideo may have returned FAILED with a specific reason Transcription typically takes longer than summarization for longer recordings — if the video is over 60 minutes, the loop may run many cycles before completing; this is expected GPT not generating all three content pieces: Confirm the API key is connected in node 9. OpenAI — GPT-4o-mini Model and your account has available credits All three pieces must be present for step 10 to succeed — if any section is missing from the GPT output, node 10. Code — Parse All Content Outputs throws an error with a message indicating which piece was not found For very long videos with large transcripts, the combined prompt may approach GPT's input token limit — try using a shorter video or truncating the transcript in step 7 by limiting the number of segments Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 11. Google Sheets — Save Content Engine is replaced with your actual Sheet ID from the URL Confirm the tab is named Content Engine exactly and all 18 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected and not expired — re-authorize if needed Support Need help setting this up or want a custom version built for your team or agency? 📧 Email:info@isawow.com 🌐 Website:https://isawow.com
by Mohamad Sasa
Qualify website leads with OpenAI in HubSpot Who’s it for This workflow is for agencies, consultants, SaaS teams, and service-based businesses that receive inbound leads through a website form and want to qualify them before following up. It helps you automatically score leads, understand fit and urgency, create or reuse HubSpot contacts, create HubSpot deals, and send an internal Gmail notification with the AI analysis. How it works A webhook receives a website form submission with the lead’s name, email, service, budget, and message. The workflow prepares the lead data, sends it to OpenAI, and asks the model to return structured JSON with a lead score, fit level, urgency, service category, summary, reason for the score, recommended next step, and suggested follow-up email. The workflow then checks HubSpot to see if a contact already exists with the submitted email address. If the contact already exists, it reuses that HubSpot contact. If no contact is found, it creates a new HubSpot contact. After that, the workflow creates a HubSpot deal, associates it with the contact, sends an internal Gmail notification with the AI qualification summary, optionally applies a Gmail label to the notification email, and returns a success response to the original webhook request. How to set up 1. Add the required environment variables This workflow uses environment variables so sensitive values are not hardcoded inside the public workflow JSON. Add these variables to your n8n environment: N8N_BLOCK_ENV_ACCESS_IN_NODE=false HUBSPOT_ACCESS_TOKEN=your_hubspot_private_app_access_token GMAIL_CLIENT_ID=your_google_oauth_client_id GMAIL_CLIENT_SECRET=your_google_oauth_client_secret N8N_BLOCK_ENV_ACCESS_IN_NODE=false allows this workflow to access environment variables inside nodes. HUBSPOT_ACCESS_TOKEN is your HubSpot private app access token. The workflow uses it in the HubSpot HTTP Request nodes. GMAIL_CLIENT_ID and GMAIL_CLIENT_SECRET are used when creating the Gmail OAuth2 credential in n8n. If you are running n8n with Docker, add these values to your .env file or Docker Compose environment config, then restart your n8n container. 2. Create a HubSpot private app In HubSpot, create a private app and give it the required CRM permissions for contacts and deals. The workflow needs permission to: search contacts create contacts create deals associate deals with contacts After creating the private app, copy the access token and add it to your n8n environment as: HUBSPOT_ACCESS_TOKEN=your_hubspot_private_app_access_token Do not paste the real token directly into the HTTP Request nodes. 3. Connect your OpenAI credential Open the node named: Message a model Then select your own OpenAI credential in n8n. The workflow uses n8n’s OpenAI credential system, so the actual OpenAI API key is not stored directly inside the workflow JSON. The template uses: gpt-4o-mini You can keep this model or change it to another supported OpenAI model. 4. Create and connect your Gmail OAuth2 credential The Gmail nodes use n8n’s Gmail OAuth2 credential system. To connect Gmail, create a Google OAuth client in Google Cloud Console, then use the client ID and client secret to create a Gmail OAuth2 credential in n8n. Use these environment variables for your Google OAuth values: GMAIL_CLIENT_ID=your_google_oauth_client_id GMAIL_CLIENT_SECRET=your_google_oauth_client_secret Then connect the Gmail OAuth2 credential to these workflow nodes: Send a message Add label to message The workflow uses n8n credentials, so Gmail OAuth tokens are not stored directly inside the workflow JSON. 5. Update the Gmail notification recipient Open the node named: Send a message Replace the recipient email with the email address that should receive the internal lead notification. The email includes the HubSpot deal summary, AI lead score, fit level, urgency, project details, recommended next step, and suggested follow-up email. 6. Update or remove the Gmail label step The workflow includes an optional Gmail label step. Open the node named: Add label to message Select the Gmail label you want to apply to the notification email. The original template is designed around a label named: Deals You can create a Gmail label named Deals, choose a different label, or remove the label step entirely. If you do not want to use Gmail labels, delete the Add label to message node and connect Send a message directly to Respond to Webhook. 7. Update the HubSpot deal stage Open the node named: Prepare HUBSPOT deal payload Find this field in the code: dealstage: "5030000846" Replace the value with a valid deal stage ID from your own HubSpot pipeline. This value is account-specific, so the sample value may not work in your HubSpot account. 8. Create or rename the HubSpot custom properties The workflow creates a HubSpot deal with AI qualification data. It uses these HubSpot deal property names: ai_fit_level ai_followup_email_draft ai_lead_score ai_summary ai_urgency service_interested_in recommended_next_step You have two options: Option 1: Create these custom deal properties in HubSpot. Option 2: Rename the property names inside the workflow to match custom properties you already have in HubSpot. These fields are used in the node named: Create HUBSPOT deal If these properties do not exist in your HubSpot account, the deal creation request may fail or HubSpot may reject the unknown fields. 9. Connect your website form to the webhook The workflow starts with a webhook. Send a POST request to the webhook URL with this body format: { "name": "Jane Doe", "email": "jane@example.com", "service": "AI Automations", "budget": "$10-20K", "message": "We want to automate lead qualification and CRM updates for our sales team." } The workflow expects these field names: name email service budget message If your website form uses different names, update the node named: Edit Fields For example, if your form sends full_name instead of name, update the fullName field mapping in the Edit Fields node. 10. Test the workflow Before activating the workflow, test it with a sample webhook request. Confirm that: OpenAI returns valid JSON HubSpot finds or creates the contact HubSpot creates the deal the deal is associated with the correct contact Gmail sends the internal notification the optional Gmail label works, or the label node is removed the webhook returns a success response Values you must update after import After importing the workflow, review and update these values for your own account: OpenAI credential Gmail credential Gmail notification recipient Gmail label HubSpot deal stage ID HubSpot custom deal properties Website form webhook URL Website form field mappings Some exported n8n workflows include internal IDs, credential references, webhook IDs, label IDs, and instance metadata so the workflow remains structurally valid when imported. These are not the same as API keys or access tokens, but you should still update the account-specific values after import. Environment variables you must add N8N_BLOCK_ENV_ACCESS_IN_NODE=false HUBSPOT_ACCESS_TOKEN=your_hubspot_private_app_access_token GMAIL_CLIENT_ID=your_google_oauth_client_id GMAIL_CLIENT_SECRET=your_google_oauth_client_secret Requirements n8n OpenAI account OpenAI credential connected in n8n HubSpot account HubSpot private app access token HubSpot CRM contacts and deals enabled Gmail account Google OAuth client ID and client secret Gmail OAuth2 credential connected in n8n Website form or app that can send POST requests to the n8n webhook Security notes This workflow is designed so sensitive API values are not hardcoded directly into the public workflow JSON. The HubSpot private app token should be stored as an environment variable: HUBSPOT_ACCESS_TOKEN=your_hubspot_private_app_access_token The Google OAuth client ID and client secret should be stored as environment variables: GMAIL_CLIENT_ID=your_google_oauth_client_id GMAIL_CLIENT_SECRET=your_google_oauth_client_secret The OpenAI API key and Gmail OAuth tokens should be stored inside n8n credentials, not pasted directly into workflow nodes. Before publishing or sharing your own modified version, search the JSON for private values such as: token secret apikey api_key client_secret Authorization Bearer refresh_token access_token password private_key Account-specific references like credential IDs, webhook IDs, label IDs, deal stage IDs, and instance IDs may appear in exported n8n workflows. These are generally not direct secrets, but users importing the workflow should replace the relevant credentials, labels, recipients, and HubSpot stage values with their own. How to customize the workflow You can customize the AI prompt, scoring rules, service categories, budget ranges, fit level definitions, urgency rules, HubSpot pipeline, HubSpot deal stage, HubSpot custom properties, Gmail notification recipient, and Gmail label behavior. You can also extend the workflow by adding Slack alerts, sales team task creation, lead routing rules, or automated follow-up sequences for qualified leads.
by isaWOW
Quick overview This workflow checks the US Department of Labour RSS feed every hour, filters for HR-relevant updates, uses OpenAI GPT-4o-mini to assess whether each item requires action, and logs actionable compliance tasks with summaries and checklists to a Google Sheets tracker. How it works Runs every hour and reads the latest items from the US Department of Labor RSS feed. Filters the feed items for HR-related keywords (for example wage, overtime, FMLA, discrimination, and compliance) while excluding settlement and back-pay style announcements. Processes the remaining articles one at a time to avoid rate limits. Sends each article’s title, date, excerpt, and link to OpenAI (GPT-4o-mini) to return strict JSON with actionability, summary, priority, checklist, owner team, and due timeline. Cleans and parses the AI JSON output, formats the checklist as bullet points, and defaults to non-actionable if parsing fails. Appends actionable items to a Google Sheets “Compliance Tracker” tab and waits 30 seconds before continuing to the next article. Setup Add an OpenAI credential for the GPT-4o-mini model. This workflow polls the US Department of Labor RSS feed every hour, filters articles for HR-relevant keywords, uses GPT-4o-mini to analyze each update for actionability, and saves only items requiring real HR action to a Google Sheets compliance tracker. 1 The workflow polls the US Department of Labor RSS feed automatically every hour to check for new employment law releases and regulatory updates. 2 A filter step checks each article's title and description against an HR keyword list — keeping items about labor, wage, safety, overtime, FMLA, discrimination, and compliance — while dropping settlement verdicts and back-pay award announcements. 3 Each filtered article is processed one at a time through a batch loop to avoid sending too many requests to the OpenAI API at once. 4 GPT-4o-mini analyzes each article and returns a structured JSON object containing: whether the update is actionable for HR, a 2-sentence summary, priority level (High, Medium, or Low), a specific action checklist, the owner team responsible, and a due timeline. 5 A parse step cleans the GPT output, strips any formatting, and converts the checklist array into bullet points ready for the sheet. 6 An actionability check routes each article: if GPT marked it actionable (Yes), it is saved to Google Sheets. If not actionable (No), it skips the sheet and goes directly to the wait step. 7 A 30-second wait runs after every article — whether saved or skipped — before the loop moves to the next article. This prevents rate limit errors and keeps the workflow stable. Requirements Active n8n instance (self-hosted or cloud) OpenAI account with GPT-4o-mini API access Google Sheets with a tab named Compliance Tracker Google Sheets OAuth2 credential connected in n8n No RSS account needed — the DOL feed is publicly accessible Customization Monitor a different agency — in node 1. RSS — US Dept of Labor Feed, replace the feedUrl value with any public compliance RSS feed: OSHA uses https://www.osha.gov/news/newsreleases/national/rss.xml, EEOC uses https://www.eeoc.gov/rss.xml, and NLRB uses https://www.nlrb.gov/news-outreach/rss Add more HR keywords — in node 2. Code — Filter HR Relevant Articles, add terms to the includeKeywords array such as ada, cobra, erisa, or pay transparency to catch additional regulation types Add email alerts for High Priority items — after node 7. Sheets — Save to Compliance Tracker, add a Gmail step with an IF check that sends an immediate email notification when the Priority field equals High Change the polling frequency — in node 1. RSS — US Dept of Labor Feed, change the poll interval from every hour to every 6 hours or daily to reduce API usage for lower-priority monitoring Add a Slack notification — after node 7. Sheets — Save to Compliance Tracker, add a Slack step to post the article title, priority, and due timeline to a compliance channel so the team is notified without checking the sheet Additional info The 30-second wait in node 8. Wait — 30s Before Next Article is intentional rate-limit protection. Both the actionable (YES) and non-actionable (NO) paths from the IF check merge at this wait step before looping back to process the next article. Do not remove or bypass this step — doing so may cause OpenAI API rate limit errors when many articles are processed in one run. The batch loop in node 3. Split — Process One by One processes all filtered articles from the current hourly poll in sequence. If 10 articles pass the keyword filter in one hour, the loop runs 10 times — each taking approximately 30 seconds minimum. Large batches may take several minutes to complete. GPT-4o-mini is instructed to only mark an article as actionable if it requires a real HR policy or process change. Informational updates, research reports, and court verdicts are typically marked as non-actionable and skipped without saving to the sheet.
by Hassan
Sycorda AI Lead Qualification & Meeting Booking System This workflow creates a sophisticated AI-powered sales assistant that automatically qualifies website visitors, schedules meetings, and manages the entire lead-to-booking pipeline without human intervention. The system acts as "Hassan," a friendly sales representative who engages prospects through natural conversation and converts interest into booked appointments with remarkable efficiency. Benefits: Complete Sales Automation - Engages website visitors 24/7, qualifies leads through intelligent conversation, and books meetings automatically without any manual oversight AI-Powered Lead Qualification - Uses advanced conversational AI with SPIN Selling and Challenger Sale methodologies to identify high-value prospects and overcome objections naturally Smart Calendar Integration - Automatically checks availability, prevents double-bookings, and sends professional confirmation emails with meeting details Intelligent Data Management - Tracks all interactions, prevents duplicate outreach, and maintains comprehensive conversation summaries for follow-up optimization Scalable Conversion System - Processes unlimited website visitors simultaneously while maintaining personalized, human-like interactions for maximum conversion rates Revenue-Focused Approach - Specifically designed to identify prospects interested in AI automation services and guide them toward high-value consulting calls How It Works: Website Visitor Engagement: Captures incoming chat messages from website visitors in real-time Initiates conversations using a trained AI persona that feels authentically human Gradually qualifies interest in AI automation services through strategic questioning Intelligent Lead Processing: Collects essential contact information (name, email, company) within first few exchanges Cross-references visitor history to provide personalized follow-up experiences Updates comprehensive database with conversation summaries and lead scoring Advanced Qualification System: Uses proven sales methodologies (SPIN, Challenger) to overcome objections naturally Identifies pain points, budget indicators, and timeline requirements through conversation Accesses company knowledge base to answer specific questions about services and pricing Automated Meeting Booking: Seamlessly transitions qualified prospects to calendar booking when interest is confirmed Checks real-time calendar availability to prevent conflicts and optimize scheduling Creates calendar events with proper attendee management and meeting details Professional Follow-Up Automation: Sends branded confirmation emails with meeting links and company information Maintains conversation context across multiple touchpoints for consistency Provides detailed handoff information to sales team for optimal meeting preparation Required Database Setup: Before running this workflow, create a Google Sheets database with these exact column headers: Essential Columns: Name** - Prospect's full name (collected during qualification) Email** - Primary email address (used for matching and updates) Summary** - Detailed conversation summary with key insights Date** - Timestamp of interaction for tracking and follow-up Setup Instructions: Create a new Google Sheet with these column headers in the first row Name the sheet "Web Chat Bot Convo Summary" Connect your Google Sheets OAuth credentials in n8n Update the document ID in the workflow nodes The merge logic uses the Email column to prevent duplicate entries and update existing records with new conversation data. Business Use Cases: Service-Based Businesses - Automatically qualify and book high-value consultation calls without hiring additional sales staff Digital Agencies - Scale lead generation for AI automation services while maintaining personalized prospect experiences Consultants & Coaches - Convert website traffic into booked discovery calls with intelligent qualification and objection handling B2B SaaS Companies - Identify enterprise prospects and schedule product demos through natural conversation flow Revenue Potential: This system can generate $10,000-$50,000+ monthly by converting website visitors into qualified meetings. A single automated booking for AI automation services typically ranges from $3,000-$15,000 in project value, making the ROI calculation extremely attractive. Conversion Metrics: Typically converts 15-25% of engaged website visitors into qualified meetings Saves 20+ hours weekly of manual lead qualification and follow-up Eliminates scheduling back-and-forth and missed appointment opportunities Difficulty Level: Advanced Estimated Build Time: 3-4 hours Monthly Operating Cost: ~$50-100 (AI API usage + integrations) Set Up Steps: Configure AI Services: Add OpenAI API credentials for conversational AI and Claude Sonnet for specialized tasks Set up appropriate rate limiting and cost controls for sustainable operation Customize the AI persona and conversation flow for your specific business Database Configuration: Create Google Sheets database with provided column structure Connect Google Sheets OAuth credentials for seamless data management Configure the merge logic for duplicate prevention and record updates Calendar Integration Setup: Connect Google Calendar OAuth with proper permissions for event creation Configure calendar checking logic to prevent double-bookings Set up meeting link generation and attendee management Email Automation: Connect Gmail OAuth for sending confirmation emails Customize the branded email template with your company information Test email delivery and formatting across different clients Conversation Optimization: Customize AI prompts for your specific industry and service offerings Adjust qualification questions to identify your ideal customer profile Set up objection handling responses that align with your sales methodology Advanced Configuration: Configure memory management for consistent multi-session conversations Set up proper error handling and fallback responses Implement conversation logging and analytics for optimization Testing & Launch: Test the complete flow with sample conversations and edge cases Verify calendar integration, email delivery, and data logging Deploy with monitoring to track performance and optimize conversion rates Advanced Customization: Multi-Language Support** - Adapt conversations for international prospects Industry-Specific Qualification** - Customize questioning for different market segments Integration Expansion** - Connect to CRM systems, Slack notifications, or other business tools Advanced Analytics** - Track conversion funnels, conversation quality, and ROI metrics A/B Testing Framework** - Test different conversation approaches and optimize for higher conversion This system transforms your website from a passive information source into an active sales machine that works around the clock to generate qualified meetings and drive revenue growth.
by Dariusz Koryto
Google Drive to FTP Transfer Workflow - Setup Guide Overview This n8n workflow automatically transfers files from Google Drive to an FTP server on a scheduled basis. It includes comprehensive logging, email notifications, and error handling. Features Automated Scheduling**: Runs every 6 hours (customizable) Manual Trigger**: Webhook endpoint for on-demand transfers File Filtering**: Supports specific file types and size limits Comprehensive Logging**: Detailed transfer reports saved to Google Drive Email Notifications**: HTML reports sent after each run Error Handling**: Graceful handling of failed transfers Batch Processing**: Files processed individually to prevent rate limits Prerequisites Before setting up this workflow, ensure you have: n8n instance running (self-hosted or cloud) Google Drive account with files to transfer FTP server with upload permissions Email service for sending reports (SMTP) Step-by-Step Setup Instructions 1. Google Drive API Setup 1.1 Create Google Cloud Project Go to Google Cloud Console Create a new project or select existing one Enable the Google Drive API: Navigate to "APIs & Services" → "Library" Search for "Google Drive API" Click "Enable" 1.2 Create OAuth2 Credentials Go to "APIs & Services" → "Credentials" Click "Create Credentials" → "OAuth client ID" Configure consent screen if prompted Choose "Web application" as application type Add your n8n instance URL to authorized redirect URIs: https://your-n8n-instance.com/rest/oauth2-credential/callback Note down the Client ID and Client Secret 1.3 Configure n8n Credential In n8n, go to "Credentials" → "Add Credential" Select "Google Drive OAuth2 API" Enter your Client ID and Client Secret Complete OAuth flow by clicking "Connect my account" Set credential ID as: your-google-drive-credentials-id 2. FTP Server Setup 2.1 FTP Server Requirements Ensure FTP server is accessible from your n8n instance Verify you have upload permissions Note the server details: Host/IP address Port (usually 21 for FTP) Username and password Destination directory path 2.2 Configure n8n FTP Credential In n8n, go to "Credentials" → "Add Credential" Select "FTP" Enter your FTP server details: Host: your-ftp-server.com Port: 21 (or your custom port) Username: your-ftp-username Password: your-ftp-password Set credential ID as: your-ftp-credentials-id 3. Email Setup (SMTP) 3.1 Choose Email Provider Configure SMTP settings for one of these providers: Gmail**: smtp.gmail.com, port 587, use App Password Outlook**: smtp-mail.outlook.com, port 587 Custom SMTP**: Your organization's SMTP server 3.2 Configure n8n Email Credential In n8n, go to "Credentials" → "Add Credential" Select "SMTP" Enter your SMTP details: Host: smtp.gmail.com (or your provider) Port: 587 Security: STARTTLS Username: your-email@example.com Password: your-app-password Set credential ID as: your-email-credentials-id 4. Workflow Configuration 4.1 Import Workflow Copy the workflow JSON from the artifact above In n8n, click "Import from JSON" Paste the workflow JSON and import 4.2 Update Credential References Google Drive nodes: Verify credential ID matches your-google-drive-credentials-id FTP node: Verify credential ID matches your-ftp-credentials-id Email node: Verify credential ID matches your-email-credentials-id 4.3 Customize Parameters FTP Server Settings (Upload to FTP node) { "host": "your-ftp-server.com", // Replace with your FTP host "username": "your-ftp-username", // Replace with your FTP username "password": "your-ftp-password", // Replace with your FTP password "path": "/remote/directory/{{ $json.validFiles[$json.batchIndex].name }}", // Update destination path "port": 21 // Change if using different port } Email Settings (Send Report Email node) { "sendTo": "admin@yourcompany.com", // Replace with your email address "subject": "Google Drive to FTP File Transfer - Report" } File Filter Settings (Filter & Validate Files node) In the JavaScript code, update these settings: const transferNotes = { settings: { maxFileSizeMB: 50, // Change maximum file size allowedExtensions: [ // Add/remove allowed file types '.pdf', '.doc', '.docx', '.txt', '.jpg', '.png', '.zip', '.xlsx' ], autoDeleteAfterTransfer: false, // Set to true to delete from Drive after transfer verifyTransfer: true // Keep true for verification } }; Google Drive Notes Storage (Upload Notes to Drive node) { "parents": { "parentId": "your-notes-folder-id" // Replace with actual folder ID from Google Drive } } 5. Schedule Configuration 5.1 Modify Schedule Trigger In the "Schedule Trigger" node, adjust the interval: { "rule": { "interval": [ { "field": "hours", "hoursInterval": 6 // Change to desired interval (hours) } ] } } Alternative schedule options: Daily**: "field": "days", "daysInterval": 1 Weekly**: "field": "weeks", "weeksInterval": 1 Custom cron**: Use cron expression for complex schedules 5.2 Webhook Configuration The webhook trigger is available at: POST https://your-n8n-instance.com/webhook/webhook-transfer-status Use this for manual triggers or external integrations. 6. Testing and Validation 6.1 Test Connections Test Google Drive: Run "Get Drive Files" node manually Test FTP: Upload a test file using "Upload to FTP" node Test Email: Send a test email using "Send Report Email" node 6.2 Run Test Transfer Activate the workflow Click "Execute Workflow" to run manually Monitor execution in the workflow editor Check for any error messages or failed nodes 6.3 Verify Results FTP Server**: Confirm files appear in destination directory Email**: Check you receive the transfer report Google Drive**: Verify transfer notes are saved to specified folder 7. Monitoring and Maintenance 7.1 Workflow Monitoring Execution History**: Review past runs in n8n interface Error Logs**: Check failed executions for issues Performance**: Monitor execution times and resource usage 7.2 Regular Maintenance Credential Renewal**: Google OAuth tokens may need periodic renewal Storage Cleanup**: Consider archiving old transfer notes Performance Tuning**: Adjust batch sizes or schedules based on usage 8. Troubleshooting 8.1 Common Issues Google Drive Authentication Errors: Verify OAuth2 credentials are correctly configured Check if Google Drive API is enabled Ensure redirect URI matches n8n instance URL FTP Connection Failures: Verify FTP server credentials and connectivity Check firewall settings allow FTP connections Confirm destination directory exists and has write permissions Email Delivery Issues: Verify SMTP credentials and server settings Check if email provider requires app-specific passwords Ensure sender email is authorized File Transfer Failures: Check file size limits in filter settings Verify allowed file extensions include your file types Monitor FTP server disk space 8.2 Debug Mode Enable debug mode by: Adding console.log statements in code nodes Using "Execute Workflow" with step-by-step execution Checking node outputs for data validation 9. Advanced Customizations 9.1 Additional File Filters Add custom filtering logic in the "Filter & Validate Files" node: // Example: Filter by modification date const isRecentFile = new Date(file.modifiedTime) > new Date(Date.now() - 7 * 24 * 60 * 60 * 1000); // Last 7 days // Example: Filter by folder location const isInSpecificFolder = file.parents && file.parents.includes('specific-folder-id'); 9.2 Enhanced Reporting Customize the email report template in "Send Report Email" node: 📊 File Transfer Report Summary Date: {{ new Date().toLocaleString('en-US') }} Success Rate: {{ Math.round((successfulTransfers / totalFiles) * 100) }}% 9.3 Integration with Other Services Add nodes to integrate with: Slack**: Send notifications to team channels Discord**: Post updates to Discord servers Webhook**: Trigger other workflows or systems Database**: Log transfers to MySQL, PostgreSQL, etc. 10. Security Considerations 10.1 Credential Security Use environment variables for sensitive data Regularly rotate FTP and email passwords Implement least-privilege access for service accounts 10.2 Network Security Use SFTP instead of FTP when possible Implement VPN connections for sensitive transfers Monitor network traffic for unusual patterns 10.3 Data Privacy Ensure compliance with data protection regulations Implement data retention policies for transfer logs Consider encryption for sensitive file transfers Support and Resources Documentation Links n8n Documentation Google Drive API Documentation n8n Community Forum Getting Help If you encounter issues: Check the troubleshooting section above Review n8n execution logs for error details Search the n8n community forum for similar issues Create a support ticket with detailed error information Note: Replace all placeholder values (URLs, credentials, IDs) with your actual configuration before running the workflow.
by isaWOW
Description Submit any podcast episode recording URL along with the episode number, podcast name, host name, episode topic, niche, and CTA link — and optionally a guest name and title if it is an interview episode — and the workflow transcribes and analyzes the full episode automatically. WayinVideo's Transcription API returns a speaker-labeled, timestamped transcript which GPT-4o-mini reads to write eight labeled show notes sections — episode title, SEO description, key takeaways, resources mentioned, timestamped highlights, guest bio, CTA block, and a fully compiled show notes document ready to paste. The GPT prompt adapts automatically for interview episodes versus solo episodes based on whether you provided a guest name. Everything is saved to Google Sheets as one row with Status set to Draft — ready to copy directly into Spotify for Podcasters, Apple Podcasts, or your episode page. Built for podcast producers, solo hosts, and content teams who spend 30–60 minutes per episode writing show notes manually. What This Workflow Does Transcribes the full episode with speaker labels and timestamps** — WayinVideo returns every spoken word with the speaker name and MM:SS timestamp so GPT can extract highlights and quotes from the actual episode content Detects interview vs solo format automatically** — If you provide a guest name in the form, the prompt adapts to write a guest bio and frame the show notes as an interview — if you leave it blank, it treats the episode as solo Generates a compiled FULL_SHOW_NOTES section** — All eight sections are assembled into one complete, copy-paste-ready show notes document — the full block is saved in its own column so you can paste it directly into Spotify, Apple, or a website without reassembling it manually Extracts timestamped highlights from the actual transcript** — GPT picks 6–8 of the most interesting moments from the episode using exact MM:SS timestamps from the transcript — not approximate or invented times Writes an SEO episode description with keyword in the first sentence** — The 150–200 word description follows podcast platform SEO best practice so your episode is discoverable in search Logs only real resources mentioned in the episode** — GPT is instructed to extract only resources, links, or tools that were explicitly named in the recording — no invented or generic resources Saves 19 fields per episode to Google Sheets** — All eight content sections plus episode metadata, word count, duration, recording URL, and CTA link are saved in one row per episode Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Show Notes Library) Credentials Required WayinVideo API key (pasted into 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results) OpenAI API key Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results. Missing either one will cause the workflow to fail. Estimated Setup Time: 15–20 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your WayinVideo API key — Log in to your WayinVideo account → go to Account Settings → copy your API key Add your WayinVideo API key to node 2 — Open node 2. WayinVideo — Submit Transcription → find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY → replace YOUR_WAYINVIDEO_API_KEY with your actual key Add your WayinVideo API key to node 4 — Open node 4. WayinVideo — Get Transcript Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Show Notes Library → add these 19 column headers in row 1: Episode Number, Episode Title, Podcast Name, Host, Guest, Topic, Duration, Recording URL, SEO Description, Key Takeaways, Resources Mentioned, Timestamped Highlights, Guest Bio, CTA Block, Full Show Notes, Word Count, CTA Link, Generated On, Status Get your Google Sheet ID — Open your Google Sheet in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets — Open node 11. Google Sheets — Save Show Notes Library → click the document field → replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually → click the credential dropdown → add Google Sheets OAuth2 → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Episode Recording + Details → open it in a browser to submit your first episode How It Works (Step by Step) Step 1 — Form: Episode Recording + Details You open the form URL and fill in up to nine fields. Five are required for all episodes: the recording URL, episode number, podcast name, host name, episode main topic, podcast niche, and CTA or subscribe link. Two are optional: Guest Name and Guest Title / Company — leave these blank for solo episodes and fill them in for interview episodes. The workflow uses whether you provided a guest name to decide how to frame the show notes. Step 2 — HTTP: WayinVideo — Submit Transcription The episode recording URL is sent to WayinVideo's Transcription API using the /v2/transcripts endpoint. WayinVideo accepts the job and returns a task ID. The transcription returns speaker-labeled segments — each with a speaker name, start time, end time, and spoken text. Step 3 — Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to transcribe the full episode. Longer episodes may need more polling cycles after this initial wait. Step 4 — HTTP: WayinVideo — Get Transcript Results A GET request checks the transcription results endpoint using the task ID from step 2. It returns the current status and, once complete, the full transcript array. Step 5 — IF: Transcription Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the transcript is ready and the workflow moves forward to formatting. If still processing (NO path), the workflow routes to 6. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 4. This repeats until SUCCEEDED. Step 6 — Wait: 30 Seconds Retry When the transcript is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 — Code: Format Transcript Each transcript segment is formatted as [Speaker | MM:SS] Spoken text and joined into a single readable block. Total episode duration is calculated and formatted as MM:SS. A word count of the transcript and unique speakers list are also extracted. An isInterviewEpisode flag is set to true if the Guest Name field was filled in — this flag is passed to the GPT prompt so it knows whether to write a guest bio or a solo note. All nine form inputs are packaged alongside the formatted transcript. Step 8 — AI Agent: Write Show Notes GPT-4o-mini receives the full formatted transcript as the main input and the episode context in the system prompt. The system prompt includes an inline conditional — if isInterviewEpisode is true, the guest name and title are shown; if false, it shows "Format: Solo Episode". GPT writes eight labeled sections: EPISODE_TITLE (60–70 characters with the main keyword), SEO_DESCRIPTION (150–200 words with keyword in the first sentence), KEY_TAKEAWAYS (5–8 specific actionable bullets), RESOURCES_MENTIONED (only things explicitly mentioned in the recording), TIMESTAMPED_HIGHLIGHTS (6–8 moments with exact MM:SS from the transcript), GUEST_BIO (2–3 sentences based only on what was said, or "Solo episode — no guest"), CTA_BLOCK (3–4 line subscribe and review prompt with the CTA link), and FULL_SHOW_NOTES (all sections compiled into one complete copy-paste block). Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the show notes generation. Step 10 — Code: Parse Show Notes Output All eight labeled sections are extracted from the GPT output using regex. If EPISODE_TITLE, SEO_DESCRIPTION, or FULL_SHOW_NOTES are missing, the step throws a clear error. Word count is calculated from the FULL_SHOW_NOTES section. All episode metadata from step 7 is also packaged for the sheet row. Step 11 — Google Sheets: Save Show Notes Library One row is appended to your Show Notes Library tab with all 19 columns: episode number, episode title, podcast name, host, guest, topic, duration, recording URL, SEO description, key takeaways, resources mentioned, timestamped highlights, guest bio, CTA block, full show notes, word count, CTA link, generation timestamp, and Status set to Draft. Key Features ✅ Adapts automatically for interview vs solo episodes — The workflow detects whether a guest name was provided and adjusts the GPT prompt accordingly — no separate workflow needed for different episode formats ✅ FULL_SHOW_NOTES compiled in one step — All eight sections are assembled into a single copy-paste-ready document — saved in its own column so you can paste the entire thing into Spotify or your website without reassembling ✅ Exact timestamps extracted from the transcript — Highlights use the real MM:SS values from the transcript — GPT is instructed not to invent or approximate timestamps ✅ Resources only extracted from what was actually said — The prompt explicitly forbids adding generic or invented resources — you only get links and tools the host or guest mentioned in the recording ✅ Episode duration calculated and formatted — The total episode length in MM:SS is computed from the last transcript segment and logged in the sheet — useful for show notes headers and episode descriptions ✅ Word count logged per episode — The full show notes word count is saved in the sheet so you can verify length before publishing ✅ Guest bio based only on transcript content — If it is an interview episode, GPT writes the bio from what was actually said in the recording — not invented credentials Customisation Options Add a retry limit to stop infinite polling — Before node 6. Wait — 30 Seconds Retry, add a Set step that increments a poll counter, then add a second IF check to stop after 15 polls and send a Gmail error notification to the host instead of looping indefinitely. Send the show notes to Gmail for review — After node 11. Google Sheets — Save Show Notes Library, add a Gmail step that sends the episode title, SEO description, key takeaways, and the full show notes body to a review email address so the host can check before publishing. Add a Slack notification when show notes are ready — After node 11. Google Sheets — Save Show Notes Library, add a Slack step that posts the episode number, title, guest name (or "Solo"), and a link to the Show Notes Library sheet to a #podcast-team channel. Increase the number of timestamped highlights — In the system prompt of node 8. AI Agent — Write Show Notes, change 6-8 key moments to 8-10 key moments for longer episodes with more discussion points worth highlighting. Change the SEO description length — In the system prompt of node 8. AI Agent — Write Show Notes, change 150-200 word episode description to a different range — for example 200-250 words for more detailed descriptions or 100-150 words for shorter platform-style summaries. Troubleshooting Form submission not starting the workflow: Confirm the workflow is Active — inactive workflows do not receive form submissions Copy the Form URL fresh from node 1. Form — Episode Recording + Details after activating Make sure all required fields are filled in — Guest Name and Guest Title / Company are optional; all other fields are required WayinVideo API key errors: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Transcription is replaced with your actual key — this workflow uses /v2/transcripts, confirm the URL in node 2 is correct Confirm the same replacement was made in node 4. WayinVideo — Get Transcript Results — both steps require the key Check the execution log of node 2 for the raw error — a 401 means wrong key, a 422 means the URL format is not supported by WayinVideo Workflow stuck in the polling loop: Check that the recording URL is publicly accessible — private Zoom links, expired recordings, or login-required videos will not be transcribed Open the execution log of node 4. WayinVideo — Get Transcript Results and check the raw response status — WayinVideo may have returned FAILED with a specific reason Long episodes (over 60 minutes) may require many polling cycles before completing — this is expected; the loop continues automatically GPT not generating all eight sections or show notes missing: Confirm the API key is connected in node 9. OpenAI — GPT-4o-mini Model and your account has available credits If EPISODE_TITLE, SEO_DESCRIPTION, or FULL_SHOW_NOTES are empty, node 10. Code — Parse Show Notes Output throws a clear error — check the execution log of node 8. AI Agent — Write Show Notes for the raw GPT output to see which section is missing For very long episodes with dense transcripts, the input may approach GPT's token limit — this is rare but can be resolved by shortening the transcript in step 7 Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 11. Google Sheets — Save Show Notes Library is replaced with your actual Sheet ID Confirm the tab is named Show Notes Library exactly and all 19 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected and not expired — re-authorize if needed Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@isawow.com 🌐 Website: https://isawow.com
by Incrementors
Quick overview This workflow runs daily to fetch multiple Google Alerts RSS feeds, uses OpenAI GPT-4.1-mini to score and summarize each alert with sentiment and recommended actions, then compiles the most relevant items into a branded HTML digest and sends it via Gmail. How it works Runs every 24 hours on a schedule. Loads a list of Google Alerts RSS feed URLs (with a name and category for each) and fetches each feed as XML. Parses each feed’s Atom entries from the last 48 hours and extracts the title, link, summary, published date, and feed metadata. Skips any feeds that have no recent entries. Sends each parsed alert to OpenAI (GPT-4.1-mini) to generate a relevance score (1–10), one-sentence insight, sentiment, and recommended action. Keeps only alerts with a relevance score of 4 or higher, aggregates them into a single list, and builds a grouped, sorted HTML email digest. Sends the HTML digest email via Gmail with a subject line that reflects the number of relevant alerts. Setup Get your Google Alerts RSS feed URL. Go to google.com/alerts, find an existing alert, click the RSS icon at the bottom, and copy the feed URL. Open node 2. Code — Set Alert Feed URLs and replace YOUR_ALERT_NAME with a descriptive name for the alert, replace YOUR_GOOGLE_ALERTS_RSS_URL with the RSS URL you just copied, and set the category value to any label you want (for example Brand Monitoring or Competitor Intelligence). To add more feeds, duplicate the object inside the array following the commented examples in the code. Open the OpenAI — GPT-4.1-mini Model step and connect your OpenAI API credential. Open node 11. Gmail — Send Digest Email, connect your Gmail OAuth2 credential, and replace REPLACE_WITH_YOUR_EMAIL@example.com with your actual email address. Open node 10. Code — Build HTML Email Digest and find YOUR_BRAND_NAME near the bottom of the code in the footer line — replace it with your company or personal name. Activate the workflow. It will run automatically every 24 hours. To test immediately, use the manual Execute option on node 1. Schedule — Every 24 Hours. Requirements Active n8n instance (self-hosted or cloud) One or more Google Alerts set up at google.com/alerts with RSS feed enabled OpenAI account with GPT-4.1-mini API access Gmail account connected via OAuth2 for sending the digest No additional accounts or API keys required — Google Alerts RSS feeds are publicly accessible Customization Add more Google Alerts feeds — in node 2. Code — Set Alert Feed URLs, duplicate the object inside the alertFeeds array and add any additional RSS feed URL with its own name and category; each feed is fetched and analyzed independently every day Lower or raise the relevance filter threshold — in node 8. IF — Filter Relevance (Score 4 or Above), change the value from 4 to any number between 1 and 10 to include more or fewer alerts in the daily digest Change the digest frequency — in node 1. Schedule — Every 24 Hours, change the interval from 24 hours to 12 hours for twice-daily digests or to 48 hours for every-other-day delivery Add a Slack notification for high-priority alerts — after node 9. Aggregate — Collect All Alerts, add a Slack step that filters for alerts with analysis_relevance of 8 or above and posts a quick message to a brand monitoring channel Extend the article lookback window — in node 4. Code — Parse RSS Entries, change the 48 in the hoursDiff comparison to 72 or 96 to catch alerts from the past 3 or 4 days — useful if you run the workflow less frequently Additional info The Google Alerts RSS feed URL must be copied exactly from your Google Alerts dashboard. Go to google.com/alerts, find your alert, and look for the RSS feed icon at the bottom of the alert row. If you do not see the RSS icon, make sure you are signed into your Google account and the alert is set to deliver via RSS. The workflow parses Atom-format XML which is the format Google Alerts uses for its RSS feeds. Standard RSS XML from other sources uses a different tag structure and may not parse correctly with this workflow without modifying node 4. Code — Parse RSS Entries. The relevance filter at node 8. IF — Filter Relevance (Score 4 or Above) means alerts GPT scores as 1, 2, or 3 are dropped and never appear in the email. If your digest is empty today, it may mean all alerts scored below 4 — you can temporarily lower the threshold to 1 in that node to test that feeds and parsing are working correctly. Replace YOUR_BRAND_NAME in node 10. Code — Build HTML Email Digest — this text appears in the email footer and in the subject line that recipients see. Leaving the placeholder unchanged will show YOUR_BRAND_NAME in every email you receive.
by Tejasv Makkar
🚀 Overview This n8n workflow automatically generates professional API documentation from C header (.h) files using AI. It scans a Google Drive folder for header files, extracts the source code, sends it to GPT-4o for structured analysis, and generates a beautiful HTML documentation page. The final documentation is uploaded back to Google Drive and a completion email is sent. This workflow is ideal for embedded systems teams, firmware engineers, and SDK developers who want an automated documentation pipeline. ✨ Key Features ⚡ Fully automated documentation generation 📁 Reads .h files directly from Google Drive 🤖 Uses AI to analyze C APIs and extract documentation 📑 Generates clean HTML documentation 📊 Documents functions, types, enums, and constants 🔁 Processes files one-by-one for reliability ☁️ Saves generated documentation back to Google Drive 📧 Sends a completion email notification 🧠 What the AI Extracts The workflow automatically identifies and documents: 📘 Overview of the header file 🔧 Functions Signatures Parameters Return values Usage examples 🧩 Enumerations 🧱 Data Types & Structures 🔢 Constants / Macros 📝 Developer Notes 🖥 Generated Documentation The output is a clean developer-friendly HTML documentation page including: 🧭 Sidebar navigation 📌 Function cards 📊 Parameter tables 💻 Code examples 🎨 Professional developer layout Perfect for: Developer portals SDK documentation Internal engineering documentation Embedded system libraries ⚙️ Workflow Architecture | Step | Node | Purpose | |-----|-----|--------| | 1 | ▶️ Manual Trigger | Starts the workflow | | 2 | 📂 Get all files | Reads files from Google Drive | | 3 | 🔎 Filter .h files | Keeps only header files | | 4 | 🔁 Split in Batches | Processes files sequentially | | 5 | ⬇️ Download file | Downloads the header file | | 6 | 📖 Extract text | Extracts code content | | 7 | 🤖 AI Extraction | AI extracts API structure | | 8 | 🧹 Parse JSON | Cleans AI output | | 9 | 🎨 Generate HTML | Builds documentation page | |10 | ☁️ Upload to Drive | Saves documentation | |11 | 📧 Email notification | Sends completion email | 🔧 Requirements To run this workflow you need: 🔹 Google Drive OAuth2 credentials 🔹 OpenAI API credentials 🔹 Gmail credentials 🛠 Setup Guide 1️⃣ Configure Google Drive Create two folders. Source folder Output folder Update the folder IDs in the nodes: Get all files from folder Save documentation to Google Drive 2️⃣ Configure OpenAI Add an OpenAI credential in n8n. Model used: The model analyzes C header files and returns structured API documentation. 3️⃣ Configure Gmail Add a Gmail OAuth credential. Update the recipient address inside: ▶️ Run the Workflow Click Execute Workflow. The workflow will: 1️⃣ Scan the Google Drive folder 2️⃣ Process each .h file 3️⃣ Generate HTML documentation 4️⃣ Upload documentation to Drive 5️⃣ Send a completion email 🖼 Documentation Preview 💡 Use Cases 🔧 Embedded firmware documentation 📦 SDK documentation generation 🧑💻 Developer portal automation 📚 C library documentation ⚙️ Continuous documentation pipelines 🔮 Future Improvements This workflow can be extended with several enhancements: 📄 PDF Documentation Export Add a step to convert the generated HTML documentation into PDF files using tools such as: Puppeteer HTML-to-PDF services n8n community PDF nodes This allows teams to distribute documentation as downloadable reports. 🔐 Local AI for Security (Ollama / Open-Source Models) Instead of using the OpenAI node, the workflow can be modified to run fully locally using AI models such as: Ollama** Open-source LLMs (Llama, Mistral, CodeLlama)** These models can run on your own server, which provides: 🔒 Better data privacy 🏢 No external API calls ⚡ Faster responses on local infrastructure 🛡 Increased security for proprietary source code This can be implemented in n8n using: HTTP Request node → Ollama API** Local AI inference servers Private LLM deployments 📚 Multi-Language Documentation The workflow could also support additional languages such as: .c .cpp .hpp .rs .go