by WeblineIndia
Sector Rotation Tracker & Alert System of Equity Market This workflow automates the tracking of stock market sector rotation. It fetches a list of active stocks from Google Sheets, pulls their last 5 days of market data from Yahoo Finance and calculates momentum and sector strength using custom code. It then compares this current data against historical data to detect capital rotation signals. Finally, an AI Agent (powered by Groq's Llama-3 model) acts as a financial analyst to interpret the shifts and sends an automated Gmail alert if a high-confidence bullish trend is detected. Quick Implementation Steps Don't want to read the details? Follow these quick steps to get started: Connect Credentials: Authenticate your Google Sheets, Gmail and Groq API accounts in n8n. Setup Google Sheets: Create a Google Sheet with two tabs. "Sheet1" needs an active column set to true for stocks you want to track. "Sheet2" is used to store daily historic data. Update Sector Map: Open the Group By Sector code node and update the sectorMap with your specific stock symbols and their corresponding sectors. Configure Email: Open the Send Email Alert node and enter your destination email address. Test and Run: Click "Test Workflow" to ensure data flows correctly, then activate it to run on your schedule! What It Does The Stock Sector Rotation Tracker acts as your personal automated quantitative analyst. It starts by pulling a predefined watchlist of active stocks from a connected Google Sheet. Using Yahoo Finance's API, it retrieves the daily closing prices and trading volumes over the past 5 days for each stock. Once the raw data is gathered, a series of custom JavaScript nodes process the information. It calculates 1-day, 3-day and 5-day returns, assigns momentum scores and evaluates volume ratios. The stocks are then grouped into their respective market sectors (e.g., IT, Banking, Auto) to calculate an aggregate "Sector Strength Score." This score is compared against historical data saved from previous days to determine if money is rotating into or out of a specific sector. To add a layer of human-like intelligence, the compiled data is sent to an AI Agent powered by Groq. The AI acts as an institutional equity researcher, providing a concise summary, explaining the possible reasons for the market movement and assigning a trading bias (Bullish, Bearish or Neutral) along with a confidence score out of 10. If the AI identifies a strong bullish signal, a detailed email alert is instantly dispatched via Gmail. Who It's For Retail Investors & Day Traders** Looking for automated daily watchlists and momentum alerts without paying for expensive terminal subscriptions. Financial Analysts & Wealth Managers** Needing an automated way to track institutional capital flows and sector rotation over time. Quant Enthusiasts** Wanting a foundation to build custom algorithmic trading indicators using n8n and AI. Requirements to Use This Workflow To successfully run this workflow, you will need: An active n8n account (Cloud or Self-Hosted). A Google Account to access Google Sheets (for data storage) and Gmail (for sending alerts). A free Groq API key to power the Llama 3 AI model. A basic understanding of stock symbols (tickers) as used on Yahoo Finance (e.g., INFY.NS or AAPL). How It Works & Set Up Step 1: Prepare Your Google Sheets You need a Google Spreadsheet with two specific tabs. Tab 1 (Watchlist):** Must include columns for stock symbols and an active column (set to true or false). Tab 2 (Historic Data):** Must include columns for date, sector, sector_strength_score, trend, rotation_signal and score_change. Step 2: Configure Credentials in n8n Google Sheets & Gmail:** Set up OAuth2 credentials for your Google account. Connect these to the Google Sheets nodes and the final Gmail node. Groq API:* Generate an API key from the Groq console and add it to the *Insights from Model** node. Step 3: Update Stock and Sector Mappings Open the Group By Sector code node. Modify the sectorMap JavaScript object to match the stock symbols in your Google Sheet. For example, change "INFY.NS": "IT" to match your desired ticker and sector. Step 4: Review AI and Email Thresholds The workflow uses an If node named Check if Bullish. By default, it sends an email if the AI Action is exactly Bullish OR if the AI Confidence score is greater than 7. You can adjust these thresholds based on how strict you want your alerts to be. How To Customize Nodes Modify the Timeframe** In the Get stocks Data node, the Yahoo Finance URL ends with ?range=5d&interval=1d. You can change this to 1mo (1 month) or interval to 1wk (1 week) to track macro trends instead of short-term momentum. Tweak the Math Formula** The Calculate Stock Returns code node assigns weights to different days (e.g., 1-day return is weighted at 50%, 3-day at 30%). You can easily adjust these multipliers to fit your personal trading strategy. Change the AI Prompt** Open the Prepare AI Insights Prompt code node or the AI Analyzer agent node to rewrite the AI's instructions. You can ask it to adopt a different persona, like a conservative dividend investor, rather than a momentum trader. Add-ons Want to take this workflow to the next level? Here are a few ideas: Slack / Discord Integration** Replace or supplement the Gmail node with a Slack or Discord node to push alerts directly to a trading community channel. SMS Notifications** Add a Twilio node to get instant text messages when a high-confidence rotation signal fires. Multiple AI Perspectives** Add a secondary AI node (like OpenAI's GPT-4o or Anthropic's Claude 3.5) to analyze the same data, then use an IF node to only send an alert if both models agree on a Bullish trend. Use Case Examples Daily Morning Briefing Schedule the workflow to run 30 minutes before the market opens to get a fresh perspective on where capital moved the previous day. Swing Trading Assistant Use the automated "ROTATION_IN" signals to build a shortlist of swing trade opportunities before the broader market catches on. Portfolio Rebalancing Track sector strength over weeks or months to decide when to rebalance a long-term retirement portfolio from lagging sectors to leading ones. Institutional Capital Flow Tracking Identify "volume boosts" alongside price momentum to spot hidden institutional buying in specific market sectors. Educational Paper Trading Forward the AI insights to a journal or note-taking app (like Notion) to learn how data-driven momentum aligns with actual market performance over time. Troubleshooting Guide | Issue | Possible Cause | Solution | | :--- | :--- | :--- | | Yahoo Finance HTTP Request Fails | Rate limits or invalid ticker symbol. | Check that the symbols in your Google Sheet exactly match Yahoo Finance tickers (e.g., adding .NS for Indian stocks). Add a longer batching interval in the HTTP node settings. | | No Data Moving Past "Group By Sector" | sectorMap doesn't match incoming symbols. | Open the Group By Sector node and ensure the ticker names in your code exactly match the tickers coming from the API. | | AI Node Throws JSON Parse Error | The AI responded with conversational text instead of strict JSON. | The Parse AI Output node has a fallback to catch this, but you can improve reliability by emphasizing Respond ONLY in valid JSON format in the AI Agent's system prompt. | | Google Sheets Node "Cannot find sheet" | Document ID or Sheet ID mismatch. | Re-select your specific Spreadsheet and Worksheet directly from the dropdown menus inside the Google Sheets nodes. | | Emails Are Not Sending | The IF node condition is not being met or Gmail authentication expired. | Check the execution logs. If the AI is returning a confidence of 6, it won't send. Re-authenticate your Google account if the node shows an OAuth error. | Need Help? Building financial automation workflows can be complex and tweaking momentum formulas or AI prompts sometimes requires a bit of trial and error. If you need assistance setting up this workflow, customizing the JavaScript nodes, integrating additional trading APIs or building entirely new automation systems tailored to your business, our n8n workflow developers are here to help! Reach out to WeblineIndia for expert n8n consulting, development and support to turn your automation ideas into reality.
by Incrementors
Description Paste any text into a simple form — an email, social caption, blog paragraph, or proposal — and submit. GPT-4o-mini rewrites it simultaneously in five distinct tones: Professional, Casual, Persuasive, Concise, and Empathetic. All five versions are saved as a single document in your Google Drive folder, and your Slack channel gets an instant preview of the Concise version. Built for content teams, copywriters, and agencies who write the same message repeatedly for different audiences. What This Workflow Does Rewrites in five tones at once** — sends your text to GPT-4o-mini and gets back five complete versions in one AI call, saving you from rewriting manually Enforces structured output** — uses a schema parser to guarantee all five tones are always returned, even if the AI tries to skip one Saves everything to Google Drive** — assembles all five versions into one clearly labeled document and uploads it to your chosen Drive folder automatically Names files by project and date** — every document is titled with your project name and today's date so you can find it instantly later Sends a Slack preview** — posts the Concise version to your team channel the moment the document is ready, no waiting, no manual sharing Defaults gracefully** — fills in missing audience fields automatically so the workflow never fails due to a blank optional field Setup Requirements Tools you need: n8n instance (self-hosted or n8n Cloud) OpenAI account with API access Google account with Google Drive Slack workspace with a bot app Estimated Setup Time: 15–20 minutes Step-by-Step Setup Update your config values — Open the node named 2. Set — Config Values. Replace YOUR_GOOGLE_DRIVE_FOLDER_ID with the ID of your Drive folder (open the folder in Google Drive, look at the URL bar, and copy the string after /folders/). Replace #YOUR-SLACK-CHANNEL with your Slack channel name including the # symbol. Replace YOUR COMPANY NAME with your company or team name. > ⚠️ All three placeholder values are in 2. Set — Config Values — you must update all three before activating. Connect your OpenAI credential — Open the node named 4. OpenAI — GPT-4o-mini Model. Click the credential dropdown and connect your OpenAI API key. If you do not have one, go to platform.openai.com, sign in, click your account name, select API Keys, and create a new key. Connect your Google Drive credential — Open the node named 8. Google Drive — Upload Tone Doc. Click the credential dropdown and connect your Google account using OAuth2. n8n will prompt you to sign in and grant Drive access. Connect your Slack credential — Open the node named 9. Slack — Send Concise Preview. Click the credential dropdown and connect your Slack OAuth2 app. After connecting, invite the Slack bot to your target channel by typing /invite @your-bot-name inside that channel. Activate the workflow — Click Activate in the top right of n8n. Copy the form URL from node 1. Form — Content Tone Rewriter and bookmark it or share it with your team. How It Works (Step by Step) Step 1 — Form Trigger: Content Tone Rewriter You open the form in your browser and fill in four fields: your original text, the content type (Email, Social Media Caption, Blog Paragraph, Client Proposal, Product Description, or Other), your name or project name, and an optional target audience. When you submit, the workflow starts immediately. Step 2 — Set: Config Values This step loads your configuration and maps every form field into clean variables. It sets the Drive folder ID, Slack channel, and company name from your placeholders. It also builds the document title automatically — combining your project name with today's date — and records the exact time the workflow ran. Step 3 — AI Agent: Tone Rewriter (with GPT-4o-mini and Structured Output Parser) This step sends your original text to GPT-4o-mini along with the content type, target audience, and company name. The AI is instructed to return exactly five rewrites: Professional, Casual, Persuasive, Concise, and Empathetic. The 5. Parser — Structured Tone Output enforces a strict schema on the AI response, so if any tone version is missing or malformed, the parser catches it. All five versions must be present before the workflow moves forward. Step 4 — Code: Assemble Document Content This step takes the five AI-generated versions and combines them into one complete document. It adds a header showing the project name, content type, target audience, and run timestamp. Each tone version is separated by a clear divider line and labelled. It also prepares the Slack message, which shows the Concise version as a quick preview along with the project name and date. Step 5 — Code: Convert to Binary This step converts the assembled text document into a binary file that Google Drive can accept. It encodes the content and sets the filename to match the document title with a .txt extension. This step also passes the Slack channel and preview message forward for the parallel Slack step. Step 6 — Google Drive Upload: Upload Tone Doc This step uploads the binary file to the Google Drive folder you configured. The file is named with your project name and today's date. After this step, the complete five-version document is permanently saved in your Drive. Step 7 — Slack: Send Concise Preview This step runs in parallel with the Drive upload. It posts the Concise tone version to your configured Slack channel. The message includes the project name, content type, run time, and the full Concise rewrite. Your team can read and use the shortest version immediately without opening Drive. Key Features ✅ Five tones in one submission — no need to run the form five times or manually rewrite anything yourself ✅ Schema-enforced AI output — the structured parser guarantees all five versions are always returned, preventing incomplete results ✅ Auto-dated Drive documents — files are named with project name and date so your library stays organized with zero manual effort ✅ Parallel delivery — Drive upload and Slack notification run at the same time, so your team gets the preview while the document is saving ✅ Configurable defaults — target audience falls back to "General audience" if left blank, so the workflow never breaks on optional fields ✅ Any content type — the form dropdown covers six common content types so GPT-4o-mini adapts its rewrites appropriately to each format ✅ Single config node — all three configuration values live in one place (2. Set — Config Values), making updates fast and error-free Customisation Options Add more content types to the dropdown — Open node 1. Form — Content Tone Rewriter, find the Content Type field, and add new options such as "LinkedIn Post", "Press Release", or "SMS Message". Change the AI temperature — Open node 4. OpenAI — GPT-4o-mini Model and adjust the temperature value (currently 0.7). Lower it to 0.3 for more consistent, conservative rewrites. Raise it to 0.9 for more creative variation between versions. Swap GPT-4o-mini for a different model — Open node 4. OpenAI — GPT-4o-mini Model and change the model to gpt-4o if you want higher-quality rewrites and your usage allows the extra cost. Save to a dated subfolder in Drive — Add a Google Drive "Create Folder" step before node 8. Google Drive — Upload Tone Doc that creates a folder named by month, then pass that new folder's ID into the upload step instead of the static folderId. Email the document link after upload — Add a Gmail node after node 8. Google Drive — Upload Tone Doc to send the Drive file link to yourself or a client automatically after every submission. Add a sixth tone — In node 3. AI Agent — Tone Rewriter, add a sixth instruction inside the prompt (for example, "humorous"). Then update the schema in 5. Parser — Structured Tone Output to include the new key, and update node 6. Code — Assemble Document Content to include the sixth version in the document. Troubleshooting OpenAI credential not connecting: Confirm the API key is active and has not expired in your OpenAI account Make sure your OpenAI account has credit available — the workflow calls the API on every submission Re-enter the credential in 4. OpenAI — GPT-4o-mini Model if the connection shows an error Google Drive upload failing: Confirm the folder ID in 2. Set — Config Values is correct — open the Drive folder, look at the URL, and copy only the string after /folders/ Reconnect your Google Drive OAuth2 credential in 8. Google Drive — Upload Tone Doc if access was revoked Make sure the Google account you connected has edit access to that folder Slack message not appearing: Confirm the channel name in 2. Set — Config Values includes the # symbol Make sure you invited the Slack bot to the target channel using /invite @your-bot-name Reconnect the Slack OAuth2 credential in 9. Slack — Send Concise Preview if it shows as disconnected AI returning incomplete tone versions: The 5. Parser — Structured Tone Output enforces all five keys — if the AI skips one, the parser will throw an error visible in the execution log Check the prompt in 3. AI Agent — Tone Rewriter has not been accidentally edited to remove any of the five tone instructions Reduce the temperature in 4. OpenAI — GPT-4o-mini Model to 0.5 for more reliable structured responses Form submits but workflow does not run: Confirm the workflow is Activated — the toggle must be on in the top right of n8n Check that the form URL you are using matches the active webhook URL shown in node 1. Form — Content Tone Rewriter Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://incrementors.com/
by isaWOW
Description Activate this workflow once and every day at 9AM it automatically processes all Zoom meetings from the past 24 hours — no manual action needed after any call. For each recorded meeting, it downloads the transcript, fetches all participants, and uses Claude 3.7 Sonnet with the Think Tool to write a 6-section structured summary covering key discussion points, decisions, action items, follow-up meeting details, and key quotes. The HTML summary is emailed to every participant individually, action items become ClickUp tasks, follow-up meetings get added to Google Calendar, a Slack notification is sent to your team, and every meeting is logged to Google Sheets. Built for teams who use Zoom for meetings and want complete post-meeting automation without spending time on notes, tasks, or emails after every call. > ⚠️ Zoom requirement: This workflow requires a Zoom Pro account or higher with Cloud Recording and Auto-Transcription enabled. Free Zoom accounts do not support cloud transcription. What This Workflow Does Downloads and parses the Zoom VTT transcript automatically** — The workflow fetches the transcript file from Zoom's recording API and parses the WEBVTT format into clean readable text Generates a 6-section AI meeting summary using Claude 3.7 Sonnet** — The Think Tool helps Claude reason through the transcript to extract meeting summary, key discussion points, decisions, action items, follow-up meeting details, and key quotes Emails the full HTML summary to every participant individually** — Participant emails are fetched from Zoom, deduplicated, and the summary is sent to each person with their name in the email Creates one ClickUp task per action item** — Action items extracted from the summary are split and created as separate tasks in your ClickUp list with the correct priority Creates a Google Calendar event if a follow-up meeting was mentioned** — The follow-up meeting section of the summary is parsed and a calendar event is created with all participants invited automatically Sends a Slack status notification to your team** — A message is posted with the meeting title, duration, participant count, and checkmarks showing which actions were completed Logs every processed meeting to Google Sheets** — Date, meeting title, duration, participant count, task count, and follow-up status are saved per meeting Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Zoom account — Pro or higher with Cloud Recording and Auto-Transcription enabled Anthropic account with Claude 3.7 Sonnet API access ClickUp account Google Calendar Gmail account Slack workspace Google Sheets Credentials Required Zoom OAuth2 (used in 3. Zoom — Get All Meetings, 5. Zoom — Get Recording Data, 7. Zoom — Download Transcript File, 9. Zoom — Get All Participants) Anthropic API key ClickUp API token Google Calendar OAuth2 Gmail OAuth2 Slack OAuth2 Google Sheets OAuth2 > ⚠️ Zoom OAuth2 appears in 4 steps — use the same Zoom credential in 3. Zoom — Get All Meetings, 5. Zoom — Get Recording Data, 7. Zoom — Download Transcript File, and 9. Zoom — Get All Participants. Estimated Setup Time: 40–50 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Enable Zoom Auto-Transcription — In your Zoom account, go to Settings → Recording → Cloud Recording → enable Auto-transcription. This must be done before any meeting is recorded. Create a Zoom OAuth app — Go to marketplace.zoom.us → Develop → Build App → OAuth → set scopes to meeting:read and recording:read → get your Client ID and Secret → connect Zoom OAuth2 in n8n credentials Connect Zoom OAuth2 to all four Zoom steps — Open nodes 3. Zoom — Get All Meetings, 5. Zoom — Get Recording Data, 7. Zoom — Download Transcript File, and 9. Zoom — Get All Participants → select the same Zoom OAuth2 credential in each Get your Anthropic API key — Log in to console.anthropic.com → go to API Keys → create a new key → connect it in n8n as an Anthropic credential → open node Anthropic — Claude 3.7 Sonnet Model → select this credential Get your ClickUp API token — In ClickUp, go to Settings → Apps → API Token → copy the token Get your ClickUp List ID — Right-click any list in ClickUp → click "Copy link" → the List ID is the last segment of the URL after the final / Add ClickUp credentials to node 16 — Open node 16. HTTP — Create ClickUp Task → in the URL, replace YOUR_CLICKUP_LIST_ID with your actual List ID → in the Authorization header, replace YOUR_CLICKUP_API_TOKEN with your actual token Connect Google Calendar — Open node 19. Google Calendar — Create Follow-Up → click the credential dropdown → add Google Calendar OAuth2 → authorize access → replace YOUR_CALENDAR_ID in the Calendar field with your actual calendar ID (usually your Google account email address) Connect Gmail — Open node 12. Gmail — Send to Each Participant → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Connect Slack — Open node 20. Slack — Send Team Notification → click the credential dropdown → add Slack OAuth2 → authorize access → replace YOUR_SLACK_CHANNEL_ID in the channel field with your actual Slack channel ID (right-click your channel in Slack → Copy link → the channel ID is the last segment) Create your Google Sheet tab — Open your Google Sheet → add a tab named Meeting Log → add these 9 column headers: Date, Meeting Title, Meeting ID, Duration (min), Participants, Summary Sent, Tasks Created, Follow-up Created, Processed At Get your Google Sheet ID — Open the spreadsheet in a browser → copy the string between /d/ and /edit Connect Google Sheets — Open node 21. Google Sheets — Log Meeting → replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID → add Google Sheets OAuth2 → authorize access Activate the workflow — Toggle the workflow to Active — it will run at 9AM daily. To run immediately on any meeting, click node 2. Manual Trigger and execute manually. How It Works (Step by Step) Steps 1 and 2 — Schedule and Manual Trigger 1. Schedule — Every Day 9AM fires at 9AM daily using the cron expression 0 9 * * . *2. Manual Trigger** lets you run the workflow immediately on demand. Both connect to the same next step — fetching all Zoom meetings. Step 3 — Zoom: Get All Meetings The Zoom API is called with OAuth2 to fetch all scheduled meetings for your account. The response returns a list of all meetings. Step 4 — Filter: Last 24 Hours Only Each meeting's start_time is checked against a 24-hour window from now minus 24 hours to now. Meetings outside this window are filtered out. Only meetings that actually happened in the last day proceed forward. Step 5 — HTTP: Zoom — Get Recording Data (with error branch) The Zoom recordings API is called for each filtered meeting to retrieve its recording files. If the meeting has no recording — because the host did not record it or Cloud Recording was not enabled — the error branch routes to 5b. Stop — No Recording Available which stops gracefully with a clear message instead of crashing. Step 6 — Code: Extract Transcript URL The recording files array is scanned for a file with file_type equal to TRANSCRIPT. The download URL is extracted. Meeting metadata — ID, topic, start time, duration — is also packaged. If no TRANSCRIPT file is found (separate from the recording failing), another clear error is thrown. Step 7 — HTTP: Zoom — Download Transcript File The VTT transcript file is downloaded from the extracted URL using the Zoom OAuth2 credential for authentication. The file content is returned as plain text. Step 8 — Code: Parse Transcript Text The WEBVTT format is parsed — cue numbers and timestamp lines are stripped, leaving only the spoken text lines. All lines are joined into a clean readable transcript. Word count and the meeting metadata from step 6 are also packaged. Step 9 — HTTP: Zoom — Get All Participants The Zoom past meetings API is called to fetch all participants from this specific meeting, including their names and email addresses. Step 10 — Claude 3.7: Generate Meeting Summary Claude 3.7 Sonnet receives the formatted transcript, participant list, meeting title, date, and duration. The Think Tool is attached — it gives Claude additional reasoning capacity before generating the summary. The system prompt specifies exactly six labeled sections: Meeting Summary, Key Discussion Points, Decisions Made, Action Items (with Task / Owner / Due / Priority format), Follow-up Meeting, and Key Quotes. Claude extracts only what was actually said in the transcript. Step 11 — Code: Format Email + Split Participants The Claude summary is converted to HTML with styled headings, bullet lists, and a dark branded header. The participants list is deduplicated by email address. One separate data object is returned per unique participant email so the next step can send individual emails. Step 12 — Gmail: Send to Each Participant An HTML summary email is sent to each unique participant email address individually. Each email has the participant's address in the To field, a subject line containing the meeting title and date, and the formatted HTML body. Step 13 — Code: Extract Action Items The Action Items section of the Claude summary is parsed using regex. If it is empty or says "None", the workflow returns hasTasks: false. If items are found, they are parsed for the task name, owner, due date, and priority level. Step 14 — IF: Has Action Items? If action items were found (YES path), the workflow splits them and creates ClickUp tasks. If no action items (NO path), the workflow skips directly to extracting follow-up meeting info. Steps 15 and 16 — Code: Split Tasks + HTTP: Create ClickUp Task The tasks array is split into individual rows — one per task. For each task, a POST request creates a ClickUp task in your specified list with the task name, description, priority (High=1, Medium=2, Low=3), and status set to "to do". Step 17 — Code: Extract Follow-Up Info The Follow-up Meeting section of the Claude summary is parsed for a date, topic, and participants. If it says "None scheduled", the workflow returns hasFollowUp: false. If a date is mentioned but cannot be parsed, the follow-up defaults to the next Tuesday at 10AM. Step 18 — IF: Has Follow-Up? If a follow-up meeting was mentioned (YES path), a Google Calendar event is created. If not (NO path), the workflow skips directly to the Slack notification. Step 19 — Google Calendar: Create Follow-Up A Google Calendar event is created with the follow-up meeting title and time. All meeting participants from step 9 are added as attendees. The event description includes the parsed follow-up section from the Claude summary. Step 20 — Slack: Send Team Notification A Slack message is posted to your channel with the meeting title, date, duration, and participant count. Three status lines use checkmarks (✅) or skip arrows (⏭️) to show whether the summary was emailed, tasks were created in ClickUp, and whether a follow-up calendar event was added. Step 21 — Google Sheets: Log Meeting One row is appended to your Meeting Log tab with all 9 columns: date, meeting title, meeting ID, duration, participant count, Summary Sent set to Yes, tasks created count, follow-up created (Yes or No), and the current timestamp. Key Features ✅ Dual trigger — scheduled and manual — Runs automatically every morning at 9AM and can also be triggered manually any time for immediate processing ✅ Graceful handling when no recording exists — Meetings without cloud recordings stop cleanly with an informative message rather than crashing the entire workflow run ✅ Claude 3.7 Sonnet with Think Tool — The Think Tool gives Claude additional reasoning before writing the summary — producing more accurate extraction of action items and decisions ✅ Participant email deduplication — If someone joined from multiple devices or appears twice in the participant list, they only receive one summary email ✅ Action items only created when found — The ClickUp task creation branch only runs when Claude actually extracted action items — meetings with no tasks skip that branch entirely ✅ Follow-up calendar event with all attendees — When a follow-up is mentioned, the calendar event automatically includes every meeting participant as an invitee ✅ Slack notification shows exactly what was done — The team message uses ✅ and ⏭️ to show which of the three automated actions were taken so everyone knows the status at a glance Customisation Options Change the daily run time — In node 1. Schedule — Every Day 9AM, edit the cron expression from 0 9 * * * to a different time — for example 0 8 * * * for 8AM or 0 18 * * * for a 6PM end-of-day run. Add a retry limit for ClickUp task creation — After node 16. HTTP — Create ClickUp Task, add an IF check that routes failed requests (non-200 responses) to a Gmail notification so you know if any task failed to create without crashing the rest of the flow. Change the action item format in the prompt — If your Claude summary produces action items in a different format from the expected Task: Owner | Due: Date | Priority: Level, edit node 13. Code — Extract Action Items to match your Claude output format — the regex pattern is the key part to update. Add a second Slack channel for urgent meetings — After node 20. Slack — Send Team Notification, add an IF check that routes meetings with action items labeled High priority to a separate #urgent-tasks Slack channel for immediate team attention. Extend the 24-hour window to process older meetings — In node 4. Filter — Last 24 Hours Only, change the hours: 24 value in the date comparison to a larger number — for example hours: 48 to catch meetings from the past two days on each run. Troubleshooting Workflow runs but stops at step 5b with "No Recording Available": Confirm that Cloud Recording is enabled in your Zoom account settings — go to zoom.us → Settings → Recording → Cloud Recording and toggle it on Confirm that Auto-Transcription is also enabled in the same section — the workflow specifically looks for a TRANSCRIPT file type, not just any recording file Confirm the meeting host has the correct Zoom plan — Cloud Recording requires Zoom Pro, Business, or Enterprise accounts Zoom OAuth2 returning 401 errors: Confirm the Zoom OAuth app at marketplace.zoom.us has the correct scopes: meeting:read and recording:read — missing either scope causes authentication failures Re-authorize the Zoom OAuth2 credential in n8n if the token has expired — OAuth tokens expire and need periodic reauthorization ClickUp tasks not being created: Confirm YOUR_CLICKUP_LIST_ID in the URL of node 16. HTTP — Create ClickUp Task is replaced with your actual List ID — get it by right-clicking a list in ClickUp and copying the link Confirm YOUR_CLICKUP_API_TOKEN in the Authorization header is replaced with your Personal API Token from ClickUp Settings → Apps Check the execution log of node 16 for the raw ClickUp error — a 401 means wrong token, a 404 means wrong List ID Google Calendar event not being created: Confirm the Google Calendar OAuth2 credential in node 19. Google Calendar — Create Follow-Up is connected and not expired Confirm YOUR_CALENDAR_ID is replaced with your actual calendar ID — for most users this is their Google account email address; go to Google Calendar → Settings → find your calendar's "Calendar ID" in the integration settings The calendar event only creates when Claude's summary contains a follow-up meeting with a parseable date — if the transcript did not mention a specific next meeting, step 18 takes the NO path and skips calendar creation Google Sheets not logging: Confirm YOUR_GOOGLE_SHEET_ID in node 21. Google Sheets — Log Meeting is replaced with your actual Sheet ID Confirm the tab is named Meeting Log exactly and all 9 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected in node 21 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
Description Add your news topics to a Google Sheet once — with keywords, article limits, and an Active toggle — and every morning at 7AM a personalized news digest lands in your inbox automatically. The workflow fetches fresh articles from Google News for each active topic, parses the RSS feed to extract titles, sources, and timestamps, and uses GPT-4o-mini to write a clear 3-sentence summary per article. All summaries are grouped by topic, assembled into a styled HTML email with dark section headers and article cards, sent to your inbox via Gmail, and logged to a Digest Log sheet with topic count, article count, and sent time. Built for anyone who wants a personalized daily news briefing without manually visiting news sites or curating articles each morning. What This Workflow Does Reads active topics from Google Sheets and skips paused ones** — You control which topics appear in your digest by setting Active to TRUE or FALSE — no need to delete rows to pause a topic Fetches fresh articles from Google News RSS per topic** — Each topic's keywords are used to build a live Google News RSS query so you always get today's articles Respects per-topic article limits** — Each row in your Topics sheet has a Max Articles column so you can get 5 articles for important topics and 2 for lower-priority ones Skips topics with no results today** — If Google News returns nothing for a topic on a given day, that topic is silently skipped rather than breaking the workflow Summarizes each article in 3 plain sentences** — GPT-4o-mini reads the article title and description and writes a factual, no-bullet summary so you can scan the digest quickly Groups all summaries into one styled HTML email** — Articles are organized by topic with dark headers, article cards, source attribution, and time-ago labels — all ready to read in any email client Logs every digest run to Google Sheets** — Date, topics count, articles found, and sent time are saved in a Digest Log tab so you can track your daily coverage Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Google Sheets (two tabs: Topics and Digest Log) OpenAI account with GPT-4o-mini API access Gmail account Credentials Required Google Sheets OAuth2 (used in 2. Google Sheets — Read Topics and 12. Google Sheets — Log Digest) OpenAI API key Gmail OAuth2 > ⚠️ Two separate Google Sheet IDs are used — replace YOUR_GOOGLE_SHEET_ID in 2. Google Sheets — Read Topics and YOUR_LOG_SHEET_ID in 12. Google Sheets — Log Digest. These can be the same spreadsheet or different ones — just make sure each uses the correct Sheet ID. > ⚠️ Your email address — replace YOUR_EMAIL_ADDRESS in 11. Gmail — Send Digest Email with the inbox where you want to receive your daily digest. Estimated Setup Time: 20–25 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Create your Topics tab — Open your Google Sheet → add a tab named Topics → add these 4 column headers in row 1: Topic, Search Keywords, Max Articles, Active → add your first topics with Active set to TRUE Example rows: | Topic | Search Keywords | Max Articles | Active | |---|---|---|---| | AI News | artificial intelligence 2025 | 3 | TRUE | | Cricket | india cricket latest | 2 | TRUE | Create your Digest Log tab — In the same spreadsheet or a new one → add a tab named Digest Log → add these 5 column headers: Date, Topics Count, Articles Found, Email Sent, Sent At Get your Google Sheet ID for Topics — Open the spreadsheet containing the Topics tab in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets for reading topics — Open node 2. Google Sheets — Read Topics → replace YOUR_GOOGLE_SHEET_ID with your actual Sheet ID → click the credential dropdown → add Google Sheets OAuth2 → authorize access Get your Digest Log Sheet ID — If the Digest Log tab is in the same spreadsheet, use the same Sheet ID; if it is a different spreadsheet, open it and copy that Sheet ID Connect Google Sheets for logging — Open node 12. Google Sheets — Log Digest → replace YOUR_LOG_SHEET_ID with the correct Sheet ID → confirm Google Sheets OAuth2 is selected Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Set your email address — Open node 11. Gmail — Send Digest Email → replace YOUR_EMAIL_ADDRESS in the Send To field with your actual email address Connect Gmail — Open the same node 11. Gmail — Send Digest Email → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Activate the workflow — Toggle the workflow to Active — it will run automatically every day at 7AM. To test immediately, click on node 1. Schedule — Every Day 7AM and use the manual Execute option. How It Works (Step by Step) Step 1 — Schedule: Every Day 7AM The workflow fires automatically every day at 7AM using the cron expression 0 7 * * *. It can also be triggered manually using the Execute option in n8n. Step 2 — Google Sheets: Read Topics All rows from your Topics tab are read. Each row contains a topic name, search keywords, max articles limit, and Active status. Step 3 — IF: Active Topics Only This filter checks the Active column for each row. If it equals TRUE (YES path), the topic is included and passes forward to the RSS fetch. If it is FALSE or blank (NO path), the topic is silently skipped — no error is thrown. This lets you pause any topic without deleting it from the sheet. Step 4 — HTTP: Fetch Google News RSS For each active topic, the Search Keywords value is used to build a Google News RSS URL — for example https://news.google.com/rss/search?q=artificial+intelligence+2025&hl=en-US. The RSS feed is fetched as plain text. Step 5 — Code: Parse RSS + Extract Articles The RSS XML text is parsed using regex to extract individual article items. For each item, the title, link, description, source name, and publication date are extracted. HTML tags are stripped from the description. A time-ago label is calculated (e.g. "3 hours ago") from the publication date. Only up to the Max Articles limit for that topic are kept. The output is one object containing the topic name and the articles array. Step 6 — IF: Has Articles? This check confirms whether any articles were found for this topic today. If the articles array has results (YES path), the topic proceeds to splitting and summarizing. If no articles were returned (NO path), the topic is silently skipped — the rest of the workflow continues normally with other topics. Step 7 — Code: Split Into Individual Articles The articles array is split into individual rows — one per article — each carrying the topic name, article title, link, description, source, time-ago, and publication date. Every article then flows through GPT separately. Step 8 — AI Agent: Summarize Article GPT-4o-mini receives the article title, description, and source for each article. The system prompt instructs GPT to write exactly 3 sentences in plain English — factual and specific, no bullet points, no formatting, maximum 60 words total. The 3 sentences are returned as plain text separated by line breaks. Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the article summaries. Step 10 — Code: Build HTML Email All summarized articles from all topics are collected together. They are grouped by topic name. For each topic, an emoji is assigned from a built-in map (🤖 for AI News, 🏏 for Cricket, ₿ for Bitcoin, ⚙️ for n8n, 🚀 for Startup India, 📰 for everything else). The HTML email is assembled with a dark header showing today's date, a blue stats bar with topic and article counts, topic sections with dark header blocks, and article cards with the article title as a link, source and time-ago, the 3-sentence summary, and a "Read full article →" link. The email is truncated to 4000 characters if needed. Total topic and article counts are also returned for the log step. Step 11 — Gmail: Send Digest Email The formatted HTML email is sent to your address via Gmail. The subject line is automatically set to ☀️ Your Daily News Digest — [Date]. The sender name is set to "Daily News Digest". Step 12 — Google Sheets: Log Digest One row is appended to your Digest Log tab with today's date, the number of topics that had articles, the total article count, Email Sent set to Yes, and the time the email was sent. Key Features ✅ Active toggle per topic — Set Active to FALSE in the sheet to pause any topic without deleting it — it is excluded from that day's digest and re-included when you set it back to TRUE ✅ Per-topic article limits — Each topic has its own Max Articles setting so you can get more coverage on high-priority topics and less on lower-priority ones ✅ Topics with no results are silently skipped — If Google News has nothing for a topic on a given day, it is skipped without breaking the workflow or generating an empty section in the email ✅ Emoji auto-assigned per topic — Topics like AI News, Cricket, and Bitcoin get recognizable emojis in the email header — making sections instantly scannable ✅ Time-ago labels on every article — Each article card shows how recently it was published (e.g. "2 hours ago") so you can tell at a glance which news is freshest ✅ Styled HTML email — no setup required — The email uses inline CSS with dark headers, article cards, and a footer — readable in Gmail, Outlook, and Apple Mail without any template configuration ✅ Daily run logged to Google Sheets — Every digest run is recorded with topic and article counts so you can track coverage trends over time Customisation Options Add a new topic — In your Topics tab, add a new row with the topic name, search keywords (any words or phrase you would search on Google News), your preferred article limit, and Active set to TRUE — it will appear in the next morning's digest. Change the digest delivery time — In node 1. Schedule — Every Day 7AM, edit the cron expression from 0 7 * * * to a different time — for example 0 6 * * * for 6AM or 0 8 * * 1-5 for weekdays only at 8AM. Add more topic emojis — In node 10. Code — Build HTML Email, add entries to the topicEmojis object — for example 'Finance': '💰' or 'Sports': '⚽' — so your new topics get a matching icon. Add a Slack notification alongside the email — After node 11. Gmail — Send Digest Email, add a Slack step that posts the topic count, article count, and a note that the digest has been sent to a #news-digest channel. Target a specific country in RSS results — In node 4. HTTP — Fetch Google News RSS, edit the URL to change &hl=en-US&gl=US&ceid=US:en to a different locale — for example &hl=en-IN&gl=IN&ceid=IN:en for India-specific news results. Troubleshooting Workflow not triggering at 7AM: Confirm the workflow is Active — inactive workflows do not run on a schedule Check that your n8n instance is running at 7AM — self-hosted instances that are off will not fire scheduled workflows Check your n8n server's timezone setting — the cron expression runs based on server time, which may differ from your local timezone To test immediately, click on node 1. Schedule — Every Day 7AM and use the manual Execute option No topics appearing in the email (digest sent with no articles): Confirm your Topics tab has at least one row with Active set to exactly TRUE (not true or True) — the filter check is case-insensitive but the value must be present Confirm YOUR_GOOGLE_SHEET_ID in node 2. Google Sheets — Read Topics is replaced with your actual Sheet ID Open the execution log of step 3 to check how many rows passed the active filter Articles not loading for a specific topic: The Search Keywords for that topic may be too specific or produce no results on Google News — try broader keywords or check the topic's keywords work in a direct Google News search Open the execution log of node 4. HTTP — Fetch Google News RSS and check the raw RSS response — if it is empty or returns an error, the keywords or URL format may be incorrect Some topics may simply have no new articles on a given day — the workflow skips them silently; this is expected behavior Gmail failing to send: Confirm the Gmail OAuth2 credential in node 11. Gmail — Send Digest Email is connected and not expired — re-authorize if needed Confirm YOUR_EMAIL_ADDRESS in the Send To field is replaced with a valid email address Check your Gmail account's daily sending limit — if you send many test runs, you may approach Gmail's limit Google Sheets log not saving rows: Confirm YOUR_LOG_SHEET_ID in node 12. Google Sheets — Log Digest is replaced with your actual Sheet ID — note this may differ from the Topics Sheet ID Confirm the tab is named Digest Log exactly and all 5 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected in node 12 — it is easy to authorize in node 2 but forget in node 12 Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by ayo.o
Quick overview This workflow runs three times daily to generate an AI “home cam” short video concept with OpenAI, create the video via kie.ai, then download and archive it to Google Drive, upload it to YouTube as a public video, and send a confirmation email via Gmail. How it works Runs on a schedule three times a day (08:00, 12:00, and 18:00). Selects a random scenario number from the configured range and asks OpenAI (GPT-4.1-mini) to generate a title, description, tags, and a detailed text-to-video prompt as structured JSON. Builds a kie.ai Sora-2 text-to-video job request using the generated prompt and submits it to the kie.ai API. Waits and repeatedly polls kie.ai until the job succeeds and returns a result payload containing a video download URL. Downloads the generated video file from the returned URL. Uploads the video to a specified Google Drive folder, publishes it to YouTube with the AI-generated metadata, and emails you a notification containing the prompt and video link. Setup Add an OpenAI API credential, a kie.ai API key using HTTP Header Auth, and OAuth credentials for Google Drive, YouTube, and Gmail. In the workflow variables, set your notification email address, the target Google Drive folder ID, and the callback URL value used in the kie.ai request. Review or adjust the random scenario range (videoIdeaMin/videoIdeaMax) and YouTube upload settings (for example, privacyStatus and notifySubscribers) before activating the workflow. Requirements OpenAI API credential kie.ai API key OAuth credentials for Google Drive, YouTube, and Gmail
by Incrementors
Description Submit your landing page URL, current headline, conversion goal, and target audience using a simple form and the workflow does the rest. It scrapes your page, cleans the content, and sends everything to GPT-4o-mini which generates 10 headline variations — each using a different psychological framework such as benefit-led, pain-led, curiosity, urgency, and social proof. Every headline is scored on four dimensions and ranked by test priority. All 10 are logged to Google Sheets and a Gmail report groups them by priority with specific testing tips, ready to hand straight to your developer. Built for marketers, growth teams, and conversion specialists who want data-driven headline options without spending hours writing them manually. What This Workflow Does Scrapes the landing page for real context** — Fetches the actual page content so GPT generates headlines grounded in your real copy and offer — not generic variations Generates 10 headlines across 10 frameworks** — Each variation uses a different psychological approach: benefit-led, pain-led, curiosity, social proof, specificity, urgency, before and after, question, bold claim, and FOMO Scores every headline on four dimensions** — Clarity, emotional pull, specificity, and SEO fit are each rated 1–10 and averaged into an overall score Assigns test priority automatically** — The two strongest headlines are marked "Test First", the next three "Test Second", the next three "Test Third", and the remaining two "Lower Priority" Logs all 10 headlines to Google Sheets** — Each headline gets its own row with framework, copy, all four scores, priority label, and submission details Sends a Gmail report grouped by priority** — The email organises all 10 headlines into priority sections with a testing tip per headline and step-by-step instructions for running the A/B test Setup Requirements Tools Needed n8n instance (self-hosted or cloud) OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Headline Tests) Gmail account (the account you want to receive the report) Credentials Required OpenAI API key Google Sheets OAuth2 Gmail OAuth2 Estimated Setup Time: 10–15 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Fill in Config Values — Open node 2. Set — Config Values → replace all three placeholders: | Field | What to enter | |---|---| | PASTE_YOUR_GOOGLE_SHEET_ID_HERE | The ID from your Google Sheet URL (the string between /d/ and /edit) | | PASTE_YOUR_EMAIL_HERE | The email address where the headline report should be sent | | PASTE_YOUR_NAME_HERE | Your name for the email greeting and sign-off | Connect OpenAI — Open node 6. 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 Headline Tests → add these 13 column headers in row 1: Date, Page URL, Page Name, Headline #, Framework, Headline Copy, Clarity Score, Emotional Pull, Specificity, SEO Fit, Overall Score, Test Priority, Submitted By Connect Google Sheets — Open node 9. Google Sheets — Log Headline Tests → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Connect Gmail — Open node 12. Gmail — Send Headline Report → click the credential dropdown → add Gmail OAuth2 → sign in with the Gmail account that matches your email address → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Landing Page Headline Generator → open it in a browser to submit your first page How It Works (Step by Step) Step 1 — Form: Landing Page Headline Generator You open the form URL in a browser and fill in six fields: the landing page URL, your current headline, the page name, the conversion goal (e.g. "Book a demo"), the target audience (e.g. "SaaS founders"), and your name. Submitting the form kicks off the entire workflow automatically. Step 2 — Set: Config Values Your Google Sheet ID, recipient email, sender name, and all six form inputs are stored here. Today's date is also generated automatically for the sheet log. Step 3 — HTTP: Scrape Landing Page An HTTP request fetches the raw HTML of the page URL you submitted with a 15-second timeout. The response is returned as plain text for cleaning. Step 4 — Code: Clean Page Content The raw HTML is cleaned by removing all script blocks, style blocks, HTML comments, navigation, header, and footer sections. Structural tag closings are converted to line breaks. All remaining HTML tags are stripped and common HTML entities are decoded. The result is capped at 3,500 characters. If the page returns less than 100 characters, the workflow throws an error and stops rather than sending near-empty content to GPT. Step 5 — AI Agent: Generate Headlines GPT-4o-mini receives the current headline, conversion goal, target audience, page name, and cleaned page content. It writes exactly 10 headline variations — one for each of the 10 psychological frameworks. Each headline is under 12 words and directly connected to the conversion goal. For each headline it returns: the framework name, the headline copy, four scores (clarity, emotional pull, specificity, SEO fit each from 1–10), an overall score as the average of the four, a test priority label, and one specific testing tip under 20 words. Step 6 — OpenAI: GPT-4o-mini Model This is the language model powering the generation step. It runs at temperature 0.7 for creative, varied headlines and is capped at 1,500 tokens to comfortably fit all 10 structured headlines in one response. Step 7 — Parser: Structured Headline Output This step enforces the exact array schema GPT-4o-mini must return. It validates that all 10 headlines are present and each has all required fields in the correct format before results move forward. Step 8 — Code: Split Headlines for Sheets The array of 10 headlines is converted into individual rows — one per headline — so each can be written to Google Sheets separately. An isLastRow flag is set to true only on headline number 10. The full headline array is also attached to the last row so the Gmail report has all 10 headlines available when it fires. Step 9 — Google Sheets: Log Headline Tests Each headline is appended as one row to your Headline Tests tab. All 13 columns are populated: date, page URL, page name, headline number, framework, headline copy, all four scores, overall score, test priority, and submitter name. All 10 rows are logged before the Gmail step fires. Step 10 — IF: All Headlines Logged? After each row is written, this check reads the isLastRow flag. If true (YES path — all 10 are logged), the workflow moves to build and send the Gmail report. If false (NO path — more rows still need logging), the workflow routes to 13. Set — More Rows and continues to the next headline. Step 11 — Code: Build Gmail Report All 10 headlines are sorted by overall score and grouped into their four test priority sections: Test First, Test Second, Test Third, and Lower Priority. Each section lists the framework, headline copy, overall score, all four sub-scores, and the specific testing tip. A step-by-step testing guide is appended at the end explaining how to run the A/B test starting with the Test First headlines and working down. The email subject includes the page name and today's date. Step 12 — Gmail: Send Headline Report The complete report is sent to your configured email address with no attribution footer. The full breakdown arrives in one plain-text email grouped by priority and ready to forward to your developer or testing tool. Step 13 — Set: More Rows This step handles non-final headline rows during the logging loop. It sets a brief in-progress message and the loop continues to the next row. Key Features ✅ Ten frameworks in one run — Every submission covers all major psychological approaches so you always have a diverse set of options ready to test ✅ Page-grounded headlines — GPT reads your actual page content before writing — every headline connects to your real offer and audience, not generic templates ✅ Four-dimension scoring — Clarity, emotional pull, specificity, and SEO fit are scored separately so you know exactly why each headline ranks where it does ✅ Automatic test priority ranking — No manual sorting needed — the two strongest headlines are flagged Test First so your team knows exactly where to start ✅ Gmail fires exactly once — The isLastRow flag ensures the report arrives after all 10 rows are logged, not after each individual headline ✅ Structured output enforced — A schema parser validates all 10 headlines and all required fields before anything reaches your sheet — no broken or incomplete rows ✅ Step-by-step testing instructions in the email — The Gmail report includes a testing guide so you can hand it directly to whoever runs your A/B tests ✅ Permanent headline library in Sheets — Every run adds 10 rows to your Headline Tests tab — over time you build a searchable database of headline ideas by page and framework Customisation Options Change the number of headlines — In node 5. AI Agent — Generate Headlines, edit the prompt to request a different number of headlines (e.g. 5 instead of 10) — also update the isLastRow check in node 8. Code — Split Headlines for Sheets to match the new count (h.headlineNumber === 5). Replace a framework with one specific to your industry — In node 5. AI Agent — Generate Headlines, edit the frameworks list in the prompt to swap one of the default options for something more relevant — for example replace "Fear of missing out" with "Authority and expertise" for B2B pages. Add a Slack notification when the report is ready — After node 12. Gmail — Send Headline Report, add a Slack step that posts the page name, top headline, and its score to a #growth or #marketing channel so your team sees the best headline immediately without checking email. Run audits on a recurring basis — Replace the form trigger with a Schedule trigger and a Set step with hardcoded page URLs to automatically re-audit the same pages every month and track whether your live headline score improves over time. Send headlines to a different team member per page — In node 2. Set — Config Values, add logic that maps the pageName field to different email addresses — for example pricing page audits go to the sales team, homepage audits go to the marketing lead. 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 — Landing Page Headline Generator after activating — URLs copied before activation will not work Make sure the Landing Page URL starts with http — the HTTP scrape step will fail on any other format Page scraping returning empty or very short content: Some pages block automated requests — add a User-Agent header to node 3. HTTP — Scrape Landing Page: Name = User-Agent, Value = Mozilla/5.0 (compatible; n8n-bot/1.0) If the page uses JavaScript rendering (e.g. React or Vue), the HTML may arrive empty — these pages cannot be scraped with a basic HTTP request Check the execution log of node 3 for the response status code — a 403 means the site is blocking bots OpenAI not generating all 10 headlines: Confirm the API key is connected in node 6. OpenAI — GPT-4o-mini Model and your account has available credits Check the execution log of node 5. AI Agent — Generate Headlines for the raw GPT response — if fewer than 10 headlines are returned, the schema parser in node 7 will flag the missing fields If the issue is consistent, increase maxTokens in node 6 from 1500 to 2000 to give GPT more room Google Sheets not logging all 10 rows: Confirm the Google Sheets OAuth2 credential in node 9. Google Sheets — Log Headline Tests is connected and not expired Check that PASTE_YOUR_GOOGLE_SHEET_ID_HERE in node 2. Set — Config Values is replaced with your actual sheet ID from the URL Confirm the tab is named Headline Tests exactly — capitalization must match sheetName in Config Values Verify all 13 column headers in row 1 match exactly: Date, Page URL, Page Name, Headline #, Framework, Headline Copy, Clarity Score, Emotional Pull, Specificity, SEO Fit, Overall Score, Test Priority, Submitted By Gmail report not arriving: Confirm the Gmail OAuth2 credential in node 12. Gmail — Send Headline Report is connected and authorized Check that PASTE_YOUR_EMAIL_HERE in node 2. Set — Config Values is replaced with your actual email address Check the execution log of node 10. IF — All Headlines Logged? to confirm isLastRow reached true — if it never fires YES, the 10th headline may not have been processed correctly Check your spam or promotions folder on the first send Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by Incrementors
Description Connect Fireflies to this workflow once and every client meeting you record automatically generates a polished recap email sent directly to your client. The moment transcription finishes, the workflow detects the client's email from the participant list, uses GPT-4o-mini to write a warm 250-word professional recap with key points and action items, and sends it via Gmail with your address as the reply-to. Every sent email is also logged to Google Sheets for tracking. Built for account managers, consultants, and agency owners who want to follow up with clients professionally after every call — without spending 15 minutes writing the email themselves. What This Workflow Does Triggers automatically when a meeting ends** — Fireflies fires the workflow the moment transcription completes, so the recap reaches your client while the meeting is still fresh Detects the client email intelligently** — Uses three strategies to find the right recipient: looks for an external participant domain, checks the meeting title for an embedded email, then falls back to your default client email Writes a warm professional recap** — GPT-4o-mini produces a 250-word email with a greeting, thank-you opener, key points as bullets, action items, and a sign-off — all grounded in real meeting content Sends the email via Gmail with your reply-to** — The email arrives from your Gmail account and replies come directly back to you, with no AI footprint or Fireflies links visible to the client Extracts the client name from their email** — Converts the email address into a readable first name for the greeting automatically Logs every sent recap to Google Sheets** — Appends a 7-column record per email including meeting date, title, client email, subject, status, and Fireflies link for delivery tracking Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with webhook access OpenAI account with GPT-4o-mini API access Gmail account (the account you want to send recaps from) Google Sheets (one sheet with a tab named Recap Email Log) Credentials Required Fireflies API key (pasted into 2. Set — Config Values) OpenAI API key Gmail OAuth2 Google Sheets OAuth2 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 Activate the workflow and copy the webhook URL — Toggle the workflow to Active → click on node 1. Webhook — Fireflies Transcript Done → copy the Production URL shown Register the webhook in Fireflies — Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → paste the webhook URL → save Get your Fireflies API key — In Fireflies, go to Settings → Integrations → Fireflies API → copy your API key Fill in Config Values — Open node 2. Set — Config Values → replace all placeholders: | Field | What to enter | |---|---| | YOUR_FIREFLIES_API_KEY | Your Fireflies API key from step 4 | | YOUR FULL NAME | Your name as it should appear in the email sign-off | | you@yourcompany.com | Your email address (must match the Gmail account you connect in step 8) | | YOUR COMPANY NAME | Your company name (used in the email sign-off and AI prompt) | | YOUR_GOOGLE_SHEET_ID | The ID from your Google Sheet URL (the string between /d/ and /edit) | | client@example.com | A fallback email used when no external participant is detected — set this to your most common client email or a test address | | yourcompany.com | Your company's email domain (e.g. incrementors.com) — used to identify which participant is the client | > ⚠️ Do NOT change the meetingId field — it is extracted automatically from the Fireflies webhook. Connect OpenAI — Open node 6. 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 Recap Email Log → add these 7 column headers in row 1: Date, Meeting Title, Client Email, Email Subject, Status, Fireflies URL, Logged At Connect Gmail — Open node 8. Gmail — Send Recap Email → click the credential dropdown → add Gmail OAuth2 → sign in with the Gmail account that matches senderEmail in your Config Values → authorize access Connect Google Sheets — Open node 9. Google Sheets — Log Sent Recaps → click the credential dropdown → add Google Sheets OAuth2 → sign in with your Google account → authorize access Activate the workflow — Confirm the workflow is Active — Fireflies will now fire it automatically after every recorded meeting How It Works (Step by Step) Step 1 — Webhook: Fireflies Transcript Done This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a request to this webhook URL containing the meeting ID. The workflow fires instantly — no manual trigger is ever needed. Step 2 — Set: Config Values Your Fireflies API key, sender name, sender email, company name, Google Sheet ID, sheet tab name, default client email, your company domain, and the meeting ID are all stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats. Step 3 — HTTP: Fetch Transcript A request is sent to the Fireflies API using your API key and the meeting ID. It retrieves the meeting title, date, duration, participants, transcript URL, gist, overview, bullet points, keywords, and action items from the Fireflies summary. Only lightweight summary fields are fetched — no full sentence-by-sentence transcript. Step 4 — Code: Extract Data and Detect Client Email This step runs three detection strategies to find the client email. First, it scans the participant list for any email address whose domain does not match your company domain — that participant is the client. Second, if no external participant is found, it checks whether an email address is embedded directly in the meeting title. Third, if neither strategy works, it falls back to the defaultClientEmail from your config. Once the client email is identified, the first name is extracted from the email address (e.g. john.smith@client.com becomes "John Smith") and used as the greeting name. All meeting metadata is also cleaned and formatted here. Step 5 — AI Agent: Write Recap Email GPT-4o-mini receives the meeting details, Fireflies summary, key points, action items, client name, and sender details. It writes a plain-text email following a fixed structure: a greeting using the client's name, a warm thank-you opener referencing the meeting topic, 3–4 bullet points summarizing key discussion points from the real meeting content, a next steps section listing action items, a warm closing sentence, and a sign-off with your name and company. The email contains no AI mentions, no Fireflies links, and no internal notes. Step 6 — OpenAI: GPT-4o-mini Model This is the language model powering the writing step. It runs at temperature 0.6 for a natural, warm writing style — not too creative and not too robotic — and is capped at 600 tokens to keep the email within the 250-word target. Step 7 — Code: Prepare Email Fields The AI-generated email body is read and validated — if it is under 50 characters, the step throws an error and stops rather than sending a broken email. The email subject line is assembled automatically as: Meeting Recap — [Meeting Title] — [Meeting Date]. All fields needed for both sending and logging are packaged into one clean output. Step 8 — Gmail: Send Recap Email The recap email is sent to the detected client email address. Your sender email is set as the reply-to address so any client reply comes directly back to your inbox. The email has no n8n attribution footer. Step 9 — Google Sheets: Log Sent Recaps At the same time as the email is sent, a new row is appended to your Recap Email Log tab with all 7 columns: meeting date, meeting title, client email, email subject, status (always "Sent"), the Fireflies transcript URL, and the logged-at timestamp. Both steps 8 and 9 run simultaneously — logging never delays sending. Key Features ✅ Three-strategy client email detection — Finds the right recipient from participant domain, meeting title, or fallback — no manual input needed per meeting ✅ No AI footprint in the email — The prompt explicitly forbids any mention of AI, automation, or Fireflies — the email reads as if you wrote it personally right after the call ✅ Reply-to set to your address — Client replies go directly to your inbox, not to an n8n webhook or unmonitored address ✅ Client name extracted automatically — The first name is parsed from the client's email address and used in the greeting without any manual entry ✅ Parallel sending and logging — Gmail sends and Google Sheets logs run at exactly the same time — the sheet is always current ✅ Error guard on AI output — If GPT fails to generate a proper email body, the workflow stops cleanly rather than sending a blank or broken message to a client ✅ Auto-generated subject line — The subject is assembled from the meeting title and date automatically — consistent format every time, no editing needed ✅ Lightweight Fireflies fetch — Only summary fields are pulled (no full transcript), keeping each API call fast and the response small Customisation Options Add CC to your manager — In node 8. Gmail — Send Recap Email, add a cc field in the options and set it to your manager's email address so they are automatically copied on every client recap without you having to remember. Change the email tone — In node 5. AI Agent — Write Recap Email, edit the prompt instruction from "warm professional" to "formal" or "casual" to match your relationship with different client types — you can also add client-specific instructions like "this client prefers very brief emails." Send a Slack notification after every sent recap — After node 8. Gmail — Send Recap Email, add a Slack node that posts to a #client-updates channel with the client email, meeting title, and a note that the recap was sent — giving your team visibility without checking the sheet. Add a 10-minute delay before sending — After node 7. Code — Prepare Email Fields, add a Wait step set to 10 minutes before the Gmail step — giving you a window to check the Google Sheet log and cancel if something looks wrong before the client receives it. Use a different email for different client domains — In node 4. Code — Extract Data and Detect Client Email, add a lookup object that maps known client domains to specific sender names or email addresses — useful for agencies managing multiple branded accounts. Troubleshooting Workflow not triggering when a meeting ends: Confirm the workflow is Active — inactive workflows do not receive Fireflies webhooks Log in to app.fireflies.ai → Settings → Developer Settings → Webhooks → confirm the URL matches the Production URL from node 1. Webhook — Fireflies Transcript Done exactly Fireflies only fires webhooks for meetings where you are the organizer — guest meetings will not trigger it Email sent to the wrong person or to the fallback address: Check that yourEmailDomain in node 2. Set — Config Values is your actual company domain (e.g. incrementors.com, not @incrementors.com) — the @ symbol must not be included Check the participant list in the Fireflies transcript for this meeting — if all participants share your domain, the workflow will fall through to defaultClientEmail For internal-only meetings, update defaultClientEmail to a safe test address so the fallback does not send to a real client Gmail credential error or email not sending: Confirm the Gmail OAuth2 credential in node 8. Gmail — Send Recap Email is connected with the same Gmail account as senderEmail in Config Values — mismatched accounts cause auth failures If the Gmail credential expired, re-authorize it in n8n Settings → Credentials → find the Gmail credential → reconnect OpenAI not generating the email body: Confirm the API key is connected in node 6. OpenAI — GPT-4o-mini Model and your account has available credits If the generated body is under 50 characters, step 7. Code — Prepare Email Fields throws an error and stops the workflow — check the execution log of node 5. AI Agent — Write Recap Email for the raw GPT response Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node 9. Google Sheets — Log Sent Recaps is connected and not expired — re-authorize if needed Check that YOUR_GOOGLE_SHEET_ID in node 2. Set — Config Values is the ID from the sheet URL, not the full URL Confirm the tab is named Recap Email Log exactly — capitalization must match sheetName in Config Values Verify all 7 column headers in row 1 match exactly: Date, Meeting Title, Client Email, Email Subject, Status, Fireflies URL, Logged At Support Need help setting this up or want a custom version built for your team or agency? 📧 Email: info@incrementors.com 🌐 Website: https://www.incrementors.com/
by WeblineIndia
AI-Powered Abandoned Cart Recovery (WooCommerce + CoCart + n8n) This workflow automatically tracks abandoned carts from a WooCommerce store, waits for a defined time, rechecks the cart status, generates a personalized reminder email using AI, sends it to the customer via Gmail and notifies the internal team on Slack. It helps recover lost revenue by following up with customers at the right time using personalized, human-friendly messaging — without any manual work. This workflow listens for abandoned cart events from your store, waits for a configurable delay (such as 30–60 minutes), verifies whether the cart is still unpaid and then automatically sends a personalized reminder email generated by AI. At the same time, it sends a Slack notification to your internal team for visibility. You receive: Automated abandoned cart detection** AI-generated personalized reminder emails** Customer email delivery via Gmail** Internal Slack notifications for your team** Ideal for ecommerce teams who want a simple, automated way to recover abandoned carts and improve conversion rates. What It Does This workflow automates the full abandoned cart recovery process: Receives abandoned cart data from the store via webhook. Normalizes incoming cart and customer information. Waits for a defined time to allow natural checkout completion. Rechecks the cart status using the CoCart API. Validates whether: Items are still in the cart Payment is still pending Generates a personalized reminder email using OpenAI. Extracts email subject and body from AI output. Sends the reminder email to the customer via Gmail. Sends a Slack message to notify the internal team. If the cart is already completed, the workflow stops automatically. Who’s It For This workflow is ideal for: Ecommerce store owners WooCommerce merchants Marketing teams handling cart recovery Sales teams tracking abandoned purchases Agencies building automation for ecommerce clients Anyone wanting automated abandoned cart follow-ups Requirements to Use This Workflow To run this workflow, you will need: n8n instance** (cloud or self-hosted) WooCommerce store** CoCart plugin** installed and configured OpenAI API key** Gmail account** with OAuth access Slack workspace** (for internal notifications) Basic understanding of webhooks and API responses How It Works Webhook Trigger – Store sends abandoned cart data to n8n. Data Normalization – Cart key, email, product details are structured. Wait Period – Workflow pauses for a defined time (30–60 minutes). Recheck Cart – Cart status is fetched again from CoCart. Abandoned Cart Validation – Checks if items exist and payment is pending. AI Email Generation – OpenAI creates a friendly reminder email. Email Parsing – Subject and body are extracted from AI output. Customer Email – Gmail sends the reminder to the customer. Slack Notification – Internal team is notified about the abandoned cart. Setup Steps Import the provided n8n workflow JSON file. Connect the Webhook node to your store so abandoned cart data is sent correctly. Configure the Wait node with your desired delay (example: 30–60 minutes). Ensure the CoCart API endpoint is accessible and accepts the cart key. Connect your OpenAI account to generate email content. Configure the Gmail node to send reminder emails to customers. Connect Slack credentials to receive internal notifications. Activate the workflow — abandoned cart recovery starts automatically. How To Customize Nodes Customize Wait Time Adjust the Wait node to: Send reminders faster (15–30 minutes) Send reminders later (1–2 hours) Customize Email Content Modify the AI Agent prompt to: Change email tone (formal, friendly, urgent) Add discount messaging Include brand voice or CTA text Customize Slack Notifications You can: Change the Slack channel Add mentions (@team, @sales) Include cart value or product links Add-Ons (Optional Enhancements) You can extend this workflow to: Send multiple reminder emails (1st, 2nd, final) Add SMS or WhatsApp reminders Apply discount codes automatically Track recovered carts in a database Segment customers by cart value Add analytics or dashboards Use Case Examples 1\. Cart Recovery Recover lost sales automatically without manual follow-ups. 2\. Sales Team Visibility Slack alerts keep your team informed of high-value abandoned carts. 3\. Personalized Marketing AI generates human-like emails tailored to each customer. 4\. Scalable Automation Works for one store or hundreds of carts per day. Troubleshooting Guide | Issue | Possible Cause | Solution | |---------------------|------------------------------|-----------------------------------------------| | No webhook data | Webhook not connected | Verify store webhook URL | | Email not sent | Gmail not authenticated | Reconnect Gmail credentials | | Cart always skipped | IF conditions incorrect | Check item count & payment status | | AI output empty | OpenAI API issue | Verify API key and limits | | Slack alert missing | Wrong channel or token | Reconnect Slack credentials | Need Help? If you need help customizing or extending this workflow with advanced features such as adding multi-step reminders, discounts, analytics or scaling it for production, then our n8n automation experts at WeblineIndia are happy to assist you.
by isaWOW
Description Automatically convert any video URL into a fully structured, publish-ready SEO blog post using WayinVideo AI transcription, GPT-4o-mini, and Google Sheets — zero manual writing required. What This Workflow Does This workflow takes a single video URL and does everything for you. It transcribes the video using WayinVideo — a powerful multilingual video transcription API that accurately converts spoken content into clean, structured text — then passes that transcript to an AI Agent that writes a complete SEO blog post with title, meta description, slug, sections, FAQs, key takeaways, and tags. The final output is saved directly as a draft row in Google Sheets, ready for review and publishing. Perfect for content marketers, YouTubers, agencies, and SEO teams who want to repurpose video content at scale without touching a keyboard. Key Features AI-powered transcription via Wayin: Uses the WayinVideo API to transcribe any video URL into clean, timestamped text segments with word count and duration metadata — supporting multilingual content. Smart polling loop: Automatically polls Wayin every 5 seconds until transcription is complete — no manual waiting or webhook setup needed. Structured SEO output: GPT-4o-mini generates a complete blog post with H2 sections (300+ words each), meta description (155 chars), URL slug, focus keyword, secondary keywords, FAQs, and a CTA conclusion. Strict JSON schema enforcement: A Structured Output Parser validates every AI response — no broken outputs, no missing fields. Google Sheets auto-logging: Every blog post is instantly saved as a draft row with date, video URL, word count, read time, tags, and status. Webhook-triggered: Works as part of any larger pipeline — trigger it from Make, Zapier, or your own frontend. How It Works Receive Video URL — Webhook accepts a POST request with {"url": "your-video-link"} Submit Transcription — Wayin — Sends the video URL to WayinVideo API to start English transcription job Poll Transcription Status — Fetches job status using the transcription ID every 5 seconds Wait 5 Seconds — Pauses execution between each poll attempt to avoid rate limits Is Transcription Complete? — IF status = SUCCEEDED → move forward, ELSE → re-poll Process Transcript Data — Joins all text segments, calculates word count and video duration Generate SEO Blog Post — AI Agent (GPT-4o-mini) writes the full structured blog post Parse Blog JSON Output — Enforces strict JSON schema and auto-fixes any format issues Save to Google Sheets — Appends all blog fields as a new draft row Return Success Response — Sends confirmation back to the webhook caller Setup Requirements Tools you'll need: Active n8n instance (self-hosted or n8n Cloud) WayinVideo account + API key (for video transcription) OpenAI API key (GPT-4o-mini for blog generation) Google Sheets with OAuth access (for draft storage) Estimated setup time: 10–15 minutes Configuration Steps 1. Add credentials in n8n: OpenAI API key Google Sheets OAuth API 2. Add your WayinVideo API Key: Open Submit Transcription — Wayin node → replace YOUR_WAYIN_API_KEY in the Authorization header Open Poll Transcription Status node → replace YOUR_WAYIN_API_KEY in the Authorization header 3. Set up your Google Sheet: Create a sheet with these exact column headers: Date | Video URL | SEO Title | Slug | Focus Keyword | Meta Description | Secondary Keywords | Read Time | Tags | Word Count | Duration (min) | Status 4. Update Sheet Document ID: Open Save to Google Sheets node Replace YOUR_GOOGLE_SHEET_DOCUMENT_ID with your actual Sheet ID (found in the Google Sheet URL) 5. Test the workflow: Activate the workflow Send a POST request to your webhook URL: POST https://your-n8n-domain/webhook/43129e0a-... Body: {"url": "https://youtube.com/watch?v=example"} Check your Google Sheet for the new draft row Use Cases Content marketers: Repurpose every YouTube video, webinar, or podcast episode into an SEO blog post automatically — 10x your content output without extra writing. SEO agencies: Generate first-draft blog posts for clients from recorded calls, demos, or training videos in minutes. Course creators: Turn every lesson or tutorial video into a standalone blog post to drive organic search traffic. YouTubers & podcasters: Build a content library of written posts from existing video content with zero extra effort. Customization Options Change the AI model: Replace gpt-4o-mini with gpt-4o or gpt-4-turbo in both OpenAI nodes for higher quality output on complex topics. Add WordPress publishing: Connect a WordPress REST API node after Save to Google Sheets to auto-publish instead of saving as draft. Change output language: Modify the WayinVideo API target_lang parameter and GPT system prompt to generate blog posts in any language. Adjust blog structure: Edit the system prompt in Generate SEO Blog Post to change section count, word targets, tone, or add custom fields like author bio or schema markup. Add Slack/email notifications: Insert a Slack or Gmail node after Return Success Response to notify your team when a new draft is ready. Troubleshooting Transcription stuck in polling loop: Check your WayinVideo API key is valid and the video URL is publicly accessible. Private or age-restricted videos may fail. AI output missing fields: The Structured Output Parser auto-fixes most issues. If errors persist, add explicit field instructions to the GPT system prompt. Google Sheets not updating: Verify OAuth credentials are connected and the Sheet Document ID is correct (not the full URL, just the ID string between /d/ and /edit). Webhook not triggering: Make sure the workflow is activated (toggle ON) before sending test requests. Test mode webhooks use a different URL than production. Resources WayinVideo — Transcription API n8n Documentation OpenAI API Reference Google Sheets API Support Need help setting up or want a custom version built for your use case? 📧 Email: info@isawow.com 🌐 Website: https://isawow.com/
by isaWOW
Description Submit your webinar recording URL along with the webinar title, host name, company name, date, and CTA link and the workflow automatically handles every follow-up. WayinVideo summarizes the webinar and extracts numbered highlights, then GPT-4o-mini writes a personalized 150–200 word email per registered Salesforce lead — addressing them by first name, referencing their role and company, and citing 2–3 specific things covered in the webinar. Gmail sends each email, Salesforce logs a completed Task activity on each lead record, and Google Sheets logs every send with the Salesforce Task ID. Built for marketing teams, sales teams, and agencies who want to follow up with every registered lead immediately after a webinar ends — without writing a single email manually. What This Workflow Does Summarizes the webinar automatically** — WayinVideo extracts a structured summary with numbered highlights from the recording so GPT has real content to reference in every email Fetches all registered leads from Salesforce** — A query pulls up to 500 leads where the webinar name matches your Salesforce custom field — no manual list export needed Writes a personalized email per lead** — GPT addresses each lead by first name, references their job title and company, and cites 2–3 specific webinar highlights relevant to their role Sends each email via Gmail** — Every lead receives a personalized email sent from your Gmail account with your company name as the sender Logs a completed Task on each Salesforce lead record** — A Task activity is created with WhoId linking it to the correct lead — so your CRM shows the follow-up was completed and when Logs every send to Google Sheets** — Each row captures the webinar title, lead details, email subject, personalized intro, Salesforce Lead ID, Salesforce Task ID, sent status, and timestamp Polls automatically until the summary is ready** — Waits 90 seconds then checks every 30 seconds until WayinVideo finishes processing the recording Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Salesforce org with OAuth2 access and a Webinar_Name__c custom field on the Lead object Gmail account connected via OAuth2 Google Sheets (one sheet with a tab named Follow-up Log) Credentials Required WayinVideo API key (pasted into 2. WayinVideo — Submit Summarization and 4. WayinVideo — Get Summary Results) OpenAI API key Salesforce OAuth2 (used in 8. Salesforce — Query Registered Leads and 13. Salesforce — Log Email as Activity) Gmail OAuth2 Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Summarization and 4. WayinVideo — Get Summary Results. Missing either one will cause the workflow to fail. Estimated Setup Time: 30–40 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 Summarization → 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 Summary Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 10. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Verify your Salesforce custom field — In your Salesforce org, confirm the Lead object has a field with the API name Webinar_Name__c that is populated at registration time. If your field has a different API name, open node 8. Salesforce — Query Registered Leads and update the SOQL query to use your actual field name. Connect Salesforce for lead query — Open node 8. Salesforce — Query Registered Leads → click the credential dropdown → add Salesforce OAuth2 → complete the authorization flow in your browser Connect Salesforce for task logging — Open node 13. Salesforce — Log Email as Activity → click the credential dropdown → select the same Salesforce OAuth2 credential Connect Gmail — Open node 12. Gmail — Send Follow-Up Email → click the credential dropdown → add Gmail OAuth2 → complete the Google authorization flow Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Follow-up Log → add these 10 column headers in row 1: Webinar Title, Lead Email, Lead Name, Lead Company, Email Subject, Personalized Intro, Salesforce Lead ID, Salesforce Task ID, Sent Status, Sent On 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 14. Google Sheets — Log Follow-Up → 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 — Webinar URL + Details → open it in a browser to submit your first webinar How It Works (Step by Step) Step 1 — Form: Webinar URL + Details You open the form URL and fill in six fields: the webinar recording URL, the webinar title (which must match the value in your Salesforce Webinar_Name__c field exactly), the host or speaker name, the company or brand name, the webinar date, and the CTA link for the follow-up email. Submitting the form starts the entire pipeline. Step 2 — HTTP: WayinVideo — Submit Summarization The webinar URL is sent to WayinVideo's Summarization API. WayinVideo accepts the job and returns a task ID confirming the summarization has started. Step 3 — Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to process the recording. Step 4 — HTTP: WayinVideo — Get Summary Results A GET request checks the summarization results endpoint using the task ID. It returns the current status and, once complete, the summary text, highlights array, and tags array. Step 5 — IF: Summary Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves forward. 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 summary is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 — Code: Extract Summary Data The summary text, numbered highlights (formatted as 1. highlight, 2. highlight, etc.), and tags are extracted from the WayinVideo results. All six form inputs are also packaged here. Everything is assembled into one clean object that feeds both the Salesforce query and the GPT email prompt. Step 8 — Salesforce: Query Registered Leads A SOQL query runs against your Salesforce org to fetch all leads where Webinar_Name__c matches the webinar title you entered in the form, with a limit of 500 leads. The results include each lead's first name, last name, email, company, and job title. Each lead becomes one email to send. Step 9 — AI Agent: Write Personalized Email GPT-4o-mini receives the full lead details (first name, last name, email, company, job title) alongside the webinar context (title, host name, company, date, CTA link, recording URL, full summary, and numbered highlights). It writes a 150–200 word email in three labeled sections: a subject line 45–55 characters long referencing the webinar topic, a 1–2 sentence personalized opening that references the lead's role or company, and the full email body starting with "Hi [FirstName]" — warm in tone, referencing 2–3 specific highlights, including the recording URL and CTA link, and ending with the host's name as the signature. Step 10 — OpenAI: GPT-4o-mini Model This is the language model powering the personalized email writing for each lead. Step 11 — Code: Parse Email Output The three labeled sections — SUBJECT_LINE, PERSONALIZED_INTRO, and EMAIL_BODY — are extracted from the GPT output using regex. Lead details from step 8 and webinar details from step 7 are also packaged for the Gmail, Salesforce, and Sheets steps. If the subject line is not found, a fallback subject using the webinar title is used. Step 12 — Gmail: Send Follow-Up Email The personalized email is sent to the lead's email address using the full email body from GPT. The sender name is set to your company name from the form. Each lead receives their own individual email — not a broadcast. Step 13 — Salesforce: Log Email as Activity A completed Task is created in Salesforce linked to the lead's record using their Salesforce Lead ID as the WhoId. The Task is marked Completed with today's date, Normal priority, and a description that includes the webinar title, email subject, and the lead's email address. This means your CRM reflects the follow-up as done immediately. Step 14 — Google Sheets: Log Follow-Up One row is appended to your Follow-up Log tab with all 10 columns: webinar title, lead email, lead full name, lead company, email subject, personalized intro, Salesforce Lead ID, Salesforce Task ID (returned by step 13), Sent Status set to Sent, and the current timestamp. The final result is a personalized email sent to every registered lead, a completed CRM Task on every lead record, and a full send log in Google Sheets — all triggered by one form submission. Key Features ✅ Personalized per lead using their first name, title, and company — Every email addresses the lead by name and frames the webinar highlights around their specific role — not a mass blast ✅ Webinar highlights referenced in every email — GPT cites 2–3 numbered highlights from the actual webinar content — making each email feel relevant to what the lead attended ✅ Salesforce Task logged with WhoId association — Each completed Task is linked to the correct lead record via WhoId — your CRM shows the follow-up is done without any manual logging ✅ Recording URL included in every email — Every lead gets a link to rewatch the recording so they can engage further without needing a separate reminder email ✅ Up to 500 leads processed per run — The Salesforce SOQL query fetches up to 500 registered leads so even large webinars are covered in one form submission ✅ Sender name set to your company — Gmail sends each email with your company or brand name as the sender — not a generic n8n address ✅ Salesforce Task ID captured in Google Sheets — The sheet log includes the Task ID returned by Salesforce so you can cross-reference sends against CRM records at any time 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 form submitter instead of looping indefinitely. Use a different Salesforce field to match leads — In node 8. Salesforce — Query Registered Leads, edit the SOQL query to use a different field if your org does not use Webinar_Name__c — for example Campaign_Name__c or a tag field — as long as it identifies which leads attended which webinar. Add a Salesforce lead status update after sending — After node 13. Salesforce — Log Email as Activity, add a Salesforce Update step that sets the lead's Status to "Webinar Follow-Up Sent" so your sales team can filter CRM views by follow-up status. Add a Slack notification when all emails are sent — After the last lead row is processed, add a Slack step that posts the webinar title and total number of emails sent to a #marketing or #sales channel so your team knows the follow-up campaign is complete. Change the email length — In the system prompt of node 9. AI Agent — Write Personalized Email, change the rule from 150-200 words to 100-150 words for shorter emails or 200-250 words for more detailed follow-ups depending on your audience preference. Troubleshooting WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Summarization is replaced with your actual API key — not the placeholder Confirm the same replacement was made in node 4. WayinVideo — Get Summary 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 unsupported Salesforce query returning zero leads: Confirm the Webinar Title you entered in the form exactly matches the value stored in the Webinar_Name__c field on your lead records — including capitalization and spacing Open node 8. Salesforce — Query Registered Leads and review the SOQL query — if your field name is different from Webinar_Name__c, update it to match your org's actual API field name Confirm the Salesforce OAuth2 credential is connected and your user has permission to query Lead records Gmail sending errors: Confirm the Gmail OAuth2 credential in node 12. Gmail — Send Follow-Up Email is connected and not expired — re-authorize if needed Check that the lead's Email field in Salesforce is populated — leads with empty email fields will cause this step to fail Gmail has a daily sending limit — if you are sending to more than ~500 leads in one run, consider using a transactional email service instead Salesforce Task not being created: Confirm the Salesforce OAuth2 credential in node 13. Salesforce — Log Email as Activity has permission to create Task records — some restricted Salesforce profiles block Task creation via API Check the execution log of node 13 for the raw Salesforce error — a common issue is the WhoId field not accepting Lead IDs if your org has Task configuration restrictions Confirm the lead ID from step 8 is being passed correctly — check the execution log of node 11. Code — Parse Email Output to verify leadId is populated Google Sheets not logging rows: Confirm YOUR_GOOGLE_SHEET_ID in node 14. Google Sheets — Log Follow-Up is replaced with your actual sheet ID from the URL Confirm the tab is named Follow-up Log exactly and all 10 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 isaWOW
Submit a call recording and get a full AI-powered analysis delivered automatically. Your recording is transcribed with OpenAI Whisper, then GPT-4o breaks down sentiment, objections, buying signals, deal risk, next steps, and a ready-to-send follow-up email. Results are saved to Airtable, posted to your Slack channel, and shown to the rep as a rich summary page the moment the form is submitted. This workflow is built for sales teams, revenue operations managers, and sales coaches who want consistent call intelligence without manual review. What This Workflow Does Automatic transcription** — downloads your audio file and converts it to text using OpenAI Whisper, handling mp3, wav, and m4a formats Deep AI analysis** — GPT-4o reads the full transcript and identifies sentiment, deal risk, momentum, objections with direct quotes, and buying signals Deal stage recommendation** — suggests whether the deal should advance, stay, or retreat based on what actually happened on the call Coaching feedback** — generates one specific, actionable coaching tip for the rep based on their talk ratio and call behaviour CRM-ready note** — writes a professional 2–3 sentence note you can paste directly into any CRM Follow-up email draft** — generates a warm, personalised follow-up email referencing something the prospect actually said Multi-channel delivery** — saves the full analysis to Airtable, sends a summary to Slack, and shows the rep an HTML results page instantly Setup Requirements Tools you'll need Active n8n instance (self-hosted or n8n Cloud) OpenAI account with API access (Whisper + GPT-4o) Airtable account with a base and table ready Slack workspace with an incoming webhook configured Estimated Setup Time: 15–20 minutes Step-by-Step Setup Get your OpenAI API key Go to https://platform.openai.com/api-keys and create a new secret key. In n8n, open the 4. OpenAI — Transcribe with Whisper1 node → find the Authorization header → replace YOUR_OPENAI_API_KEY with your key. > ⚠️ This key appears in 1 node (Whisper). The AI Agent uses a separate n8n credential — see step 2. Connect your OpenAI credential for the AI Agent In n8n: go to Credentials → Add credential → OpenAI API → paste your API key. Open the 7. OpenAI — Chat Model (GPT-4o) node → select your new credential from the dropdown. Connect your Airtable credential In n8n: go to Credentials → Add credential → Airtable Personal Access Token → paste your token (get it at https://airtable.com/create/tokens). Open the 9. Airtable — Save Full Analysis node → select your credential, then choose your base and table from the dropdowns. Your Airtable table should have columns matching these names exactly: Submission ID, Rep Name, Rep Email, Company, Contact Name, Contact Email, Deal Stage (Before), Deal Stage (AI Recommended), Deal Value, Call Duration (min), Word Count, Sentiment, Sentiment Score, Primary Intent, Deal Risk, Deal Momentum, Objection Count, Buying Signal Count, Competitors Mentioned, Summary, CRM Note, Coaching Tip, Rep Talk Ratio, Follow-up Email Draft, Submitted At, Processed At. Connect your Slack webhook In Slack, go to https://api.slack.com/apps → create an app → enable Incoming Webhooks → copy the webhook URL. In n8n, go to Credentials → Add credential → Slack → Webhook → paste the URL. Open the 10. Slack — Post Analysis to Channel node → select your Slack credential. Activate the workflow Click the toggle at the top of the workflow editor to set it to Active. Copy the form URL from the 1. Form — Sales Rep Submits Call1 node and share it with your sales team. How It Works (Step by Step) Step 1 — Form (n8n Form Trigger) The sales rep fills out a web form with their name, email, the prospect's details, current deal stage, estimated deal value, and a direct link to the audio recording. They can also add optional notes before the analysis runs — for example, flagging that a competitor was mentioned. When they submit, the workflow starts automatically. Step 2 — Code: Clean & Validate Form Data The workflow reads and cleans every field from the form submission. It strips extra whitespace, normalises email addresses to lowercase, and checks that required fields — rep name, email, company, contact name, and audio link — are all present. If anything is missing, the workflow stops and returns an error immediately. A unique submission ID is generated (formatted as CALL- followed by a timestamp) so every call record is trackable. Step 3 — HTTP: Download Audio File The workflow makes an HTTP request to the audio URL the rep provided and downloads the file. It supports any direct-download link to an mp3, wav, or m4a file. A 60-second timeout is set in case the file is slow to download. Step 4 — OpenAI: Transcribe with Whisper The downloaded audio is sent to OpenAI's Whisper API. Whisper converts the spoken audio into a full text transcript with timestamps. The response format is set to verbose_json so the workflow receives structured output. This step has a 3-minute timeout for long calls. Step 5 — Code: Merge Transcript with Call Data The transcript text is pulled from the Whisper response and checked — if it comes back empty, the workflow throws an error explaining the audio may be silent or corrupted. The word count is calculated, then the transcript is merged together with all the original form data so the next step has everything it needs in one place. Step 6 — AI Agent: GPT-4o Sales Analysis The full transcript and all call metadata are passed to a GPT-4o AI agent with a detailed system prompt. The agent is instructed to return a single valid JSON object containing: a 3–5 sentence summary, overall sentiment with a score out of 100, primary prospect intent, deal risk level, deal momentum, a recommended deal stage, estimated rep talk ratio, a list of objections with direct quotes, buying signals, competitor names, next steps with owners and deadlines, a coaching tip, a CRM note, and a personalised follow-up email draft. The agent is told never to hallucinate — if something isn't in the transcript, it returns an empty array or null. Step 7 — Code: Parse & Combine AI Analysis The raw text output from the AI agent is cleaned of any accidental markdown formatting, then parsed as JSON. The parsed analysis is merged with the original call data into one complete record, and a processedAt timestamp is added. Step 8, 9, 10 — Fan-out: Airtable, Slack, and HTML Page The complete record is sent to three places simultaneously. The 9. Airtable — Save Full Analysis node creates a new row with all 26 fields. The 10. Slack — Post Analysis to Channel node sends a notification to your sales channel. The 11. Code — Build HTML Confirmation Page node builds a formatted HTML results page — including summary, sentiment score, objections, next steps, coaching tip, and the full follow-up email draft — which is returned directly to the rep via the 12. Webhook — Show Results Page to Rep node as their form confirmation. Key Features ✅ Audio format flexibility — works with mp3, wav, and m4a files from any direct-download URL ✅ Quote-backed objection detection — every objection includes a direct quote from the transcript, not a paraphrase ✅ Deal stage intelligence — compares the rep's reported stage with the AI's recommended stage after the call ✅ Rep talk ratio — estimates how much the rep vs. the prospect spoke, enabling targeted coaching ✅ Zero-hallucination rules — the AI is instructed to return empty arrays rather than guess when data isn't present ✅ Instant rep results page — the rep sees their full analysis the moment they submit, no waiting for an email ✅ Parallel delivery — Airtable, Slack, and the results page are all updated in the same execution, not sequentially ✅ Submission IDs — every call gets a unique ID for tracking, filtering, and referencing in follow-up conversations Customisation Options Switch to a cheaper model for high-volume teams Open the 7. OpenAI — Chat Model (GPT-4o) node and change the model from gpt-4o to gpt-4o-mini. This reduces cost by roughly 15× with minimal quality loss for standard sales calls. Add a CRM update step after Airtable After the 9. Airtable — Save Full Analysis node, add a HubSpot or Salesforce node to automatically update the deal stage, log the CRM note, and create a follow-up task using the next steps from the analysis. Tag the rep in Slack by email In the 10. Slack — Post Analysis to Channel node, extend the message template to look up the rep's Slack user ID by their email address using the Slack users.lookupByEmail API, then @mention them directly in the notification. Add a language detection step Before the AI agent, add a Code node that checks transcript.length and language — then pass the detected language to the Whisper node's language parameter and adjust the GPT-4o prompt to respond in the same language as the transcript. Send the follow-up email automatically After the HTML page step, add a Gmail or Outlook node that sends the analysis.follow_up_email directly to the prospect's email address (contactEmail), so reps can approve and send in one click rather than copy-pasting. Troubleshooting Whisper transcription returns an error: Check that the audio URL is a direct download link — not a Google Drive share link or a page URL Confirm the file format is mp3, wav, or m4a Verify your OpenAI API key in the 4. OpenAI — Transcribe with Whisper1 node is correct and has available credits Increase the download timeout in the 3. HTTP — Download Audio File1 node if the file is large GPT-4o returns an empty or unparseable response: Open the 8. Code — Parse & Combine AI Analysis node and check the error message — it will show the first 300 characters of the raw GPT-4o output Make sure the OpenAI credential in the 7. OpenAI — Chat Model (GPT-4o) node has GPT-4o access enabled on your OpenAI account If the response contains markdown fences, the cleanup code in node 8 handles this automatically — but check that the credential is correctly selected Airtable row not being created: Confirm your Airtable table has columns with names that match exactly (including spaces and capitalisation) — e.g. Deal Stage (Before) not Deal Stage Before Check that your Airtable Personal Access Token has write access to the correct base Slack notification not arriving: Test your webhook URL directly using a tool like Postman or curl to confirm it's active Verify the credential is selected in the 10. Slack — Post Analysis to Channel node — a missing credential causes the node to silently fail due to continueOnFail: true The form submits but the rep never sees the results page: The workflow uses responseMode: lastNode, meaning the form waits for the final webhook response node to complete. If any step errors out silently (Airtable or Slack failures are set to continue on fail), the HTML page should still render — check the 12. Webhook — Show Results Page to Rep node execution log for errors. 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 Amirhosein Zahedi
📧 Analyze, classify, and summarize emails using RAG (automatic taxonomy learning) This workflow automatically reads incoming Gmail messages, analyzes them using AI with a retrieval-augmented classification system (RAG), organizes emails into structured categories, stores results in Google Sheets, and even generates an audio summary sent directly to Telegram. ⚙️ How It Works The workflow creates an intelligent email processing pipeline combining Gmail, OpenAI, vector embeddings, and Google Sheets to continuously learn and improve email categorization accuracy. Email Trigger The workflow starts automatically whenever a new email arrives in Gmail using the Gmail Trigger node. Email Extraction & Cleaning The full email content, sender information, subject, and timestamp are retrieved and normalized. HTML formatting is removed so the AI receives clean text data. Knowledge Base Loading (RAG) Email tagging examples stored in a Google Sheets document are loaded and converted into embeddings. These examples act as the official taxonomy for categories and subcategories. Vector Store Creation The workflow builds an in-memory vector database containing historical tagging samples. This allows semantic similarity search during classification. AI Analysis Agent An OpenAI-powered AI Agent performs multiple tasks in a single step: Summarizes the email (short paragraph) Creates a one-line short message Classifies the email using retrieved vector examples Extracts keywords Assigns confidence score Detects whether a new category or subcategory was created The agent strictly prioritizes retrieved taxonomy examples to maintain consistent labeling. Structured Data Storage Processed email data — including summary, category, keywords, and metadata — is appended to a Google Sheets log, creating a searchable email intelligence database. Self-Learning Taxonomy If the AI determines a new category or subcategory is required: The new label is automatically added to the tagging samples sheet An admin notification is sent via Telegram This allows the system to evolve over time. Audio Summary Generation The summarized email text is converted into speech using OpenAI audio generation. Telegram Notification The generated audio summary is automatically delivered to Telegram, allowing quick email review without reading. 🧩 Features ✅ Fully automated Gmail monitoring ✅ Retrieval-Augmented Generation (RAG) email classification ✅ Consistent taxonomy enforcement via vector similarity ✅ Automatic keyword extraction & confidence scoring ✅ Self-updating category knowledge base ✅ Google Sheets email database ✅ AI-generated voice summaries ✅ Telegram admin notifications ✅ Continuously improving classification accuracy 🚀 Setup Steps 1. Required Accounts Google account (Gmail + Google Sheets) OpenAI API account Telegram Bot n8n instance (Cloud or Self-hosted) 2. Configure Credentials in n8n Create the following credentials inside n8n: Gmail OAuth2 – used by Gmail Trigger and message retrieval Google Sheets OAuth2 – for email storage and taxonomy dataset OpenAI API – for embeddings, AI analysis, and audio generation Telegram API – for sending notifications and audio summaries 3. Prepare Google Sheets Sheet 1 — Email Log date email name subject summarized text category subcategory keywords Sheet 2 — Tagging Samples (Knowledge Base) id subject email_text category subcategory keywords This sheet acts as the classification training reference used by the vector store. 4. Configure Telegram Create a Telegram bot using BotFather Copy the bot token into n8n credentials Replace the chatId value with your Telegram user or group ID 5. Connect OpenAI Add your OpenAI API key Ensure access to chat models and embeddings No additional configuration required 6. Activate the Workflow Enable the workflow Send a test email to your Gmail inbox Verify that: Email appears in Google Sheets Categories are assigned Audio summary arrives in Telegram 💡 Recommended Usage Email triage automation Customer support inbox classification Sales lead categorization Personal productivity systems AI-assisted knowledge management 🧠 Architecture Notes This workflow uses a Retrieval-Augmented Generation (RAG) pattern inside n8n by combining Google Sheets as a lightweight knowledge base with an in-memory vector store. Instead of relying purely on model reasoning, classification decisions are grounded in previously approved examples, producing stable and explainable categorization. Over time, the workflow becomes smarter as new categories are automatically added, effectively turning your inbox into a continuously learning AI system.