by Akshay Chug
Overview Your inbox shouldn't run your day. This workflow checks Gmail every 15 minutes, uses Claude AI to classify every new email into Urgent, Needs Reply, FYI Only, Automated, or Spam — then takes the right action automatically: Slack alert for urgent, draft reply saved for action needed, label and archive for everything else. Every email logged to Google Sheets. How it works Polls Gmail every 15 minutes for new unread emails Claude Sonnet reads each email and classifies it into one of five categories Urgent emails trigger an immediate Slack alert with sender, subject and summary Needs Reply emails get a Claude-written draft saved to Gmail drafts ready for one-click send FYI Only emails get labelled and marked as read automatically Automated emails (newsletters, receipts, notifications) get labelled and archived Spam gets moved to trash Every email processed is logged to Google Sheets with category and reasoning Setup steps Gmail — Connect your Gmail account in Check for New Emails, and all action nodes Gmail labels — Create four labels in Gmail: AI-Urgent, AI-Needs-Reply, AI-FYI, AI-Automated. Copy each label ID into the corresponding label node Claude AI — Add your Anthropic API key to the Claude Sonnet sub-node from console.anthropic.com Slack — Connect your Slack account in Notify Urgent Email and set your channel. Disable this node if you do not use Slack Customise the prompt — Open Classify Email Intent and add your name, role, and any VIP senders that should always route as Urgent Google Sheets — Create a sheet called Email Log with columns: Timestamp, Sender, Subject, Category, Summary, Reasoning, Draft Saved Activate — runs every 15 minutes automatically
by Cheng Siong Chin
How It Works This workflow automates competitive intelligence gathering and market analysis for businesses needing real-time insights on competitors, industry trends, and market positioning. Designed for marketing teams, strategy analysts, and business development professionals, it solves the time-intensive challenge of manually monitoring competitor activities across multiple channels. The system schedules regular data collection, fetches competitor information from various sources, employs multiple AI agents (OpenAI for analysis, sentiment evaluation, and report generation) to process data, validates outputs through structured parsing, and delivers comprehensive reports via email. By automating data aggregation, sentiment analysis, and insight generation, organizations gain actionable intelligence faster, identify market opportunities proactively, and maintain competitive advantage through continuous monitoring—essential for dynamic markets where timing determines success. Setup Steps Connect Schedule Trigger (set monitoring frequency: daily/weekly) Configure Fetch Data node with competitor website URLs/APIs Add OpenAI API keys to all AI agent nodes Link Google Sheets credentials for storing historical analysis data Configure Gmail node with SMTP credentials for report distribution Set up Slack/Discord webhooks for instant critical alert notifications Prerequisites OpenAI API account (GPT-4 recommended), competitor data sources/APIs Use Cases SaaS competitor feature tracking, retail pricing intelligence Customization Modify AI prompts for industry-specific metrics, adjust sentiment thresholds for alert triggers Benefits Reduces research time by 85%, provides 24/7 competitor monitoring, eliminates manual data aggregation
by Harshil Khunt
Quick overview This workflow automates invoicing and payment follow-ups using Google Sheets, PDFShift, Groq (LLM), Gmail, and Telegram, sending initial invoices with PDF attachments, scheduling overdue reminders at 9am, and letting you mark invoices as paid via a Telegram command with automatic thank-you emails and sheet updates. How it works Triggers when a new row is added to a Google Sheets “Client Invoices” spreadsheet to start the invoice-sending flow. Generates an HTML invoice, converts it to a PDF via the PDFShift API, and uses Groq to draft a short invoice email. Sends the invoice email via Gmail with the generated PDF attached, then updates the Google Sheet to set Status to Unpaid and log the send date. Runs every morning at 9am, reads all invoices from Google Sheets, filters for Status = Unpaid, and calculates how many days each invoice is overdue. Routes each unpaid invoice to a 7-day, 14-day, or 30-day reminder track based on overdue days and whether prior reminders were already sent. Uses Groq to write the appropriate reminder email, sends it via Gmail, posts a notification to Telegram, and updates the Google Sheet to flag the reminder as sent. Triggers on incoming Telegram messages, parses commands starting with “paid”, looks up the matching client in Google Sheets, marks the invoice as Paid, emails the client a thank-you via Gmail, and confirms back on Telegram (or sends a “client not found” message). Setup Connect credentials for Google Sheets (read/update and trigger), Gmail, Telegram, and Groq. Add PDFShift credentials as HTTP Basic Auth for the PDF conversion request (or replace the PDF generation step with your preferred PDF service). Create/confirm the Google Sheets columns used by the workflow, including Client Name, Client Email, Service, Amount, Invoice Date, Due Date, Status, Notes, First Reminder Sent, Second Reminder Sent, and Final Notice Sent (and optional Currency). Update the Google Sheets document ID/sheet tab, and set the Telegram chat ID(s) used for owner notifications and bot replies. Adjust the schedule trigger time (9am) and reminder thresholds (7/14/30 days) and email wording/subjects as needed for your billing policy.
by Incrementors
Description Add your competitors' YouTube video URLs to a Google Sheet once and every Monday at 8AM the workflow automatically processes each one. WayinVideo summarizes each video and extracts structured highlights and tags, then GPT-4o-mini reads the summary and extracts ten competitive intelligence fields — content type, messaging angle, key claims, target audience signals, pricing signals, strengths, weaknesses, opportunity for your team, urgency score, and urgency reasoning. Each video is saved as a structured Airtable record and the sheet row is marked Processed. Built for marketing teams, product managers, and growth teams who want to automatically track what competitors are saying in their video content every week without watching hours of recordings. What This Workflow Does Summarizes competitor videos automatically** — WayinVideo extracts structured highlights and tags from each competitor video without any manual watching or note-taking Extracts ten competitive intelligence fields per video** — GPT-4o-mini identifies content type, messaging angle, key claims, audience signals, pricing signals, strengths, weaknesses, opportunity for your team, urgency score, and urgency reasoning Assigns an urgency score from 1 to 10** — GPT rates how urgently your team needs to respond to this competitor content — with a one-sentence explanation of why Identifies specific opportunities for your team** — Each Airtable record includes bullet-pointed actions your team could take in response or content you could create to counter the competitor Creates one Airtable record per video** — Every competitor video becomes a fully structured intelligence record with Status set to New for your team to review and act on Marks each video as Processed in Google Sheets** — After saving to Airtable, the sheet row is updated so the same video is never processed again on a future Monday run Runs fully unattended every Monday** — Just add new competitor URLs to the sheet and the pipeline processes them automatically the next Monday morning Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Airtable account with a base and table set up Google Sheets (one spreadsheet with a Video Queue tab) Credentials Required WayinVideo API key (pasted into 3. WayinVideo — Submit Summarization and 5. WayinVideo — Get Summary Results) OpenAI API key Airtable Personal Access Token (pasted into 11. HTTP — Save to Airtable) Google Sheets OAuth2 (used in 2. Google Sheets — Read Pending Videos and 12. Google Sheets — Mark as Processed) > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 3. WayinVideo — Submit Summarization and 5. WayinVideo — Get Summary Results. Missing either one will cause the workflow to fail. > ⚠️ Google Sheet ID appears in 2 steps — replace YOUR_COMPETITOR_SHEET_ID in both 2. Google Sheets — Read Pending Videos and 12. Google Sheets — Mark as Processed. 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 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 3 — Open node 3. 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 5 — Open node 5. WayinVideo — Get Summary Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create your Google Sheet — Open a new or existing Google Sheet → add a tab named exactly Video Queue → add these 6 column headers in row 1: Video URL, Video Title, Competitor Name, Your Product / Brand, Status, Processed Date → add your first competitor video URLs in the rows below, leaving Status and Processed Date blank 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 for reading — Open node 2. Google Sheets — Read Pending Videos → click the document field → replace YOUR_COMPETITOR_SHEET_ID with your actual Sheet ID → click the credential dropdown → add Google Sheets OAuth2 → authorize access Connect Google Sheets for marking — Open node 12. Google Sheets — Mark as Processed → click the document field → replace YOUR_COMPETITOR_SHEET_ID with the same Sheet ID → confirm the Google Sheets OAuth2 credential is selected Create your Airtable table — In Airtable, open your base → create a table named Competitor Intelligence → add these 16 fields: Week (Date), Competitor Name (text), Video Title (text), Video URL (URL), Content Type (single select), Messaging Angle (long text), Key Claims Made (long text), Target Audience Signals (long text), Pricing / Offer Signals (long text), Strengths Identified (long text), Weaknesses / Gaps (long text), Opportunity for Us (long text), Urgency Score (Number), Tags (text), Summary (long text), Status (single select — add "New" as default option) Get your Airtable Base ID and table name — Open your Airtable base in a browser → the Base ID starts with app and is in the URL → your table name is Competitor Intelligence (URL-encode the space as %20 → Competitor%20Intelligence) Get your Airtable Personal Access Token — Go to airtable.com/create/tokens → click Create new token → give it a name → add scope data.records:write → add your base under Access → click Create token → copy the token Add your Airtable credentials to node 11 — Open node 11. HTTP — Save to Airtable → in the URL, replace YOUR_AIRTABLE_BASE_ID with your actual Base ID and YOUR_AIRTABLE_TABLE_NAME with Competitor%20Intelligence → in the Authorization header, replace YOUR_AIRTABLE_API_KEY with your Personal Access Token Activate the workflow — Toggle the workflow to Active — it will run automatically every Monday at 8AM. To test immediately, click on node 1. Schedule — Every Monday 8AM and use the manual Execute option. How It Works (Step by Step) Step 1 — Schedule: Every Monday 8AM The workflow fires automatically every Monday at 8AM using the cron expression 0 8 * * 1. No manual trigger is needed once the workflow is active. Step 2 — Google Sheets: Read Pending Videos All rows from your Video Queue tab are read. Each row contains a video URL, video title, competitor name, and your brand name. Every row that has not been marked Processed is picked up and run through the full intelligence pipeline. Step 3 — HTTP: WayinVideo — Submit Summarization The competitor video URL is sent to WayinVideo's Summarization API. WayinVideo accepts the job and returns a task ID confirming the summarization has started. Step 4 — Wait: 90 Seconds The workflow pauses for 90 seconds before the first status check, giving WayinVideo time to process the video. Step 5 — HTTP: WayinVideo — Get Summary Results A GET request checks the summarization results endpoint using the task ID from step 3. It returns the current processing status and, once complete, the summary text, highlights array, and tags array. Step 6 — IF: Summary Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves directly to GPT analysis — no intermediate code step needed. If still processing (NO path), the workflow routes to 7. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 5 to check again. This repeats until SUCCEEDED. Step 7 — Wait: 30 Seconds Retry When the summary is not yet ready, the workflow waits 30 seconds then returns to step 5 for another check. The loop continues automatically. Step 8 — AI Agent: Extract Competitive Intelligence GPT-4o-mini receives the competitor name, video title, your brand name, video URL, WayinVideo summary text, highlights joined as a pipe-separated string, and tags joined as a comma-separated string — all passed directly from steps 2 and 5. It writes ten labeled sections: content type from a fixed list, messaging angle, key claims as bullet points, target audience signals, pricing and offer signals, strengths, weaknesses and gaps, opportunity for your team as specific actionable bullet points, an urgency score from 1–10, and a one-sentence urgency reasoning. GPT is instructed to base everything only on the WayinVideo summary — no outside knowledge is used. Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the competitive analysis. It runs with default settings for structured, consistent intelligence output. Step 10 — Code: Parse Intelligence Output All ten labeled sections are extracted from the AI output using regex. A Monday week date is calculated from the current date — this is the date field for Airtable to make records filterable by week. The video URL, title, competitor name, summary text, and tags from the sheet and WayinVideo are also packaged for the Airtable record. Step 11 — HTTP: Save to Airtable A POST request creates one Airtable record in your Competitor Intelligence table with all 16 fields populated. Status is set to New on every record. Airtable returns the new record ID on success. Step 12 — Google Sheets: Mark as Processed The Video Queue row matching this video URL is updated with Status set to Processed and today's date in the Processed Date column. This prevents the same video from being picked up in future Monday runs. Key Features ✅ Fully automated weekly competitor monitoring — Runs every Monday at 8AM with zero manual input after the one-time setup — just add new URLs to the sheet whenever you find new competitor content ✅ WayinVideo summary passed directly to GPT — No intermediate code step between summarization and analysis — the summary, highlights, and tags go straight into the GPT prompt for cleaner, faster processing ✅ Ten structured intelligence fields per video — Each Airtable record gives your team everything needed to evaluate a competitor video: claims, audience, pricing signals, strengths, gaps, and a specific opportunity bullet list ✅ Urgency scoring with reasoning — Every record includes a 1–10 urgency rating and a one-sentence explanation so your team can triage which videos need an immediate response ✅ Fixed content type categories — GPT assigns one of nine content type labels so your Airtable table is filterable and sortable by type across all competitors and weeks ✅ Monday week date auto-calculated — Every record is tagged with the Monday date of the week it was processed so you can filter Airtable by week and track competitor activity over time ✅ Status tracking prevents double-processing — Videos marked Processed in the sheet are skipped on all future Monday runs — add new competitor URLs any time and they are picked up automatically Customisation Options Change the weekly run day or time — In node 1. Schedule — Every Monday 8AM, edit the cron expression from 0 8 * * 1 to run on a different day or time — for example 0 7 * * 1 for 7AM Monday or 0 8 * * 3 for Wednesday morning. Add a retry limit to stop infinite polling — Before node 7. Wait — 30 Seconds Retry, add a Set step that increments a poll counter, then add a second IF check to stop after 15 polls and send a Gmail error notification instead of looping indefinitely. Send a Monday digest email after all videos are processed — After the last video is marked Processed, add a Gmail step that sends a plain-text email listing all competitor videos processed that week, their urgency scores, and direct Airtable links — so your team gets a Monday morning brief in their inbox. Add a Slack alert for high-urgency videos — After node 11. HTTP — Save to Airtable, add an IF check that triggers only when urgencyScore is 7 or higher, then add a Slack step that posts the competitor name, video title, urgency score, and opportunity bullets to a #competitive-intel channel for immediate team visibility. Track multiple competitors with separate Airtable views — In Airtable, create one filtered view per competitor using the Competitor Name field — so each team member or account manager can monitor only the competitors relevant to them without filtering manually. Troubleshooting Workflow not triggering on Monday: Confirm the workflow is Active — inactive workflows do not run on a schedule Check that your n8n instance is running at 8AM Monday — self-hosted instances that are off will not fire scheduled workflows To test immediately, click on node 1. Schedule — Every Monday 8AM and use the manual Execute option — do not wait for the scheduled run to verify your setup WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 3. WayinVideo — Submit Summarization is replaced with your actual API key — not the placeholder Confirm the same replacement was made in node 5. WayinVideo — Get Summary Results — both steps require the key Check the execution log of node 3 for the raw error — a 401 means wrong key, a 422 means the video URL format is unsupported Workflow stuck in the polling loop: Check that the competitor video URL is publicly accessible — private YouTube videos, unlisted videos requiring login, or unavailable videos will cause WayinVideo to fail Open the execution log of node 5. WayinVideo — Get Summary Results and inspect the raw response — WayinVideo may have returned FAILED with a specific reason If the loop runs indefinitely, deactivate the workflow, fix the video URL in your sheet, and resubmit Airtable records not being created: Confirm YOUR_AIRTABLE_BASE_ID in the URL of node 11. HTTP — Save to Airtable is replaced with your actual Base ID starting with app Confirm YOUR_AIRTABLE_TABLE_NAME is replaced — if your table name has a space, encode it as %20 (e.g. Competitor%20Intelligence) Confirm YOUR_AIRTABLE_API_KEY in the Authorization header is replaced with a valid Personal Access Token with data.records:write scope Check the execution log of node 11 for the Airtable error — a 422 means a field name in the JSON body does not match your actual Airtable column name exactly Google Sheets not reading videos or not marking rows: Confirm YOUR_COMPETITOR_SHEET_ID is replaced in both 2. Google Sheets — Read Pending Videos and 12. Google Sheets — Mark as Processed — they must use the same Sheet ID Confirm the tab is named Video Queue exactly and all 6 column headers match Check that the Google Sheets OAuth2 credential is connected in both steps — it is easy to connect 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 isaWOW
Description Add your YouTube video URLs to a Google Sheet once and every Monday at 7AM the workflow automatically converts each pending video into a complete newsletter draft. WayinVideo summarizes each video and extracts numbered highlights and tags, then GPT-4o-mini reads the summary and writes a full newsletter issue — subject line, preview text, hook intro, three H2 content sections, a featured quote, CTA button text, and hashtags — all assembled into a Markdown-formatted newsletter body with a week-number issue label. The draft is saved to a Newsletter Drafts tab and the video row is marked Processed in the Video Queue. Built for content creators, media brands, newsletter writers, and marketing teams who publish YouTube videos and want a ready-to-send newsletter draft waiting for them every Monday morning without writing anything manually. What This Workflow Does Runs every Monday at 7AM and stops cleanly if the queue is empty** — An early check detects whether any videos are pending and exits gracefully if there are none — no errors on empty weeks Summarizes each video automatically** — WayinVideo extracts a structured summary, numbered highlights, and tags from each YouTube video so GPT has real content to base the newsletter on Assigns a week-number issue label to every draft** — The issue number is calculated from the current week of the year (e.g. Issue #18 — 2025) so your newsletter archive stays organized automatically Writes a 12-section newsletter in one GPT call** — Subject line, preview text, intro hook, three H2 sections with bodies, featured quote, CTA text, and hashtags are all produced together in a single request Assembles a complete Markdown newsletter body** — All sections are combined into one formatted body with H2 headings and a blockquote for the featured quote — ready to paste into any email platform Saves 14 fields to the Newsletter Drafts tab** — Subject line, preview text, full newsletter body, featured quote, CTA text and link, hashtags, word count, and generation timestamp are all saved per draft Marks each video as Processed in the Video Queue** — After saving the draft, the sheet row is updated so the same video is never processed again on a future Monday run Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Google Sheets (one spreadsheet with two tabs: Video Queue and Newsletter Drafts) Credentials Required WayinVideo API key (pasted into 4. WayinVideo — Submit Summarization and 6. WayinVideo — Get Summary Results) OpenAI API key Google Sheets OAuth2 (used in 2. Google Sheets — Read Pending Videos, 13. Google Sheets — Save Newsletter Draft, and 14. Google Sheets — Mark Video Processed) > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 4. WayinVideo — Submit Summarization and 6. WayinVideo — Get Summary Results. Missing either one will cause the workflow to fail. > ⚠️ Two separate Google Sheet IDs are used — replace YOUR_VIDEO_QUEUE_SHEET_ID in 2. Google Sheets — Read Pending Videos and 14. Google Sheets — Mark Video Processed, and replace YOUR_NEWSLETTER_SHEET_ID in 13. Google Sheets — Save Newsletter Draft. These can be the same spreadsheet or different ones — just make sure each uses the correct Sheet ID. 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 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 4 — Open node 4. 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 6 — Open node 6. WayinVideo — Get Summary Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 11. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Create the Video Queue tab — Open your Google Sheet → add a tab named exactly Video Queue → add these 8 column headers in row 1: Video URL, Video Title, Newsletter Niche / Brand, Target Audience, Newsletter Tone, CTA Link, Status, Processed Date → add your first YouTube video URLs in the rows below, leaving Status and Processed Date blank Create the Newsletter Drafts tab — In the same spreadsheet or a new one → add a tab named exactly Newsletter Drafts → add these 14 column headers in row 1: Video URL, Video Title, Newsletter Niche, Issue Number, Subject Line, Preview Text, Newsletter Body, Featured Quote, CTA Text, CTA Link, Hashtags, Word Count, Generated On, Status Get your Video Queue Sheet ID — Open the spreadsheet containing the Video Queue tab in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets for reading and marking — Open node 2. Google Sheets — Read Pending Videos → replace YOUR_VIDEO_QUEUE_SHEET_ID with your actual Sheet ID → click the credential dropdown → add Google Sheets OAuth2 → authorize access → repeat the same Sheet ID replacement in node 14. Google Sheets — Mark Video Processed Get your Newsletter Drafts Sheet ID — If it is a separate spreadsheet, open it and copy the Sheet ID from the URL; if it is the same spreadsheet, use the same Sheet ID Connect Google Sheets for newsletter drafts — Open node 13. Google Sheets — Save Newsletter Draft → replace YOUR_NEWSLETTER_SHEET_ID with the correct Sheet ID → confirm Google Sheets OAuth2 is selected Activate the workflow — Toggle the workflow to Active — it will run automatically every Monday at 7AM. To test immediately, click on node 1. Schedule — Every Monday 7AM and use the manual Execute option. How It Works (Step by Step) Step 1 — Schedule: Every Monday 7AM The workflow fires automatically every Monday at 7AM using the cron expression 0 7 * * 1. It can also be triggered manually at any time using the Execute option in n8n. Step 2 — Google Sheets: Read Pending Videos All rows from your Video Queue tab are read. Each row contains a YouTube video URL, video title, newsletter niche or brand, target audience, newsletter tone, and CTA link. Step 3 — IF: Any Pending Videos Today? This is the empty queue gate. If the total number of rows is greater than zero (YES path), the workflow has videos to process and continues. If the sheet has no rows (NO path), the workflow stops cleanly — no error is thrown. This prevents failures on weeks when no new videos have been added. Step 4 — HTTP: WayinVideo — Submit Summarization Each YouTube video URL is submitted to WayinVideo's Summarization API. WayinVideo accepts the job and returns a task ID. Multiple videos are processed sequentially — step 4 runs once per video. Step 5 — Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to process the video. Step 6 — 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 7 — IF: Summary Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the summary is ready and the workflow moves forward to extraction. If still processing (NO path), the workflow routes to 8. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 6. This repeats until SUCCEEDED. Step 8 — Wait: 30 Seconds Retry When the summary is not yet ready, the workflow waits 30 seconds then returns to step 6 for another check. Step 9 — Code: Extract Summary Data The summary text and numbered highlights (formatted as 1. highlight, 2. highlight) are extracted from the WayinVideo response. Tags are joined as a comma-separated string. All sheet columns (niche, audience, tone, CTA link) are also packaged. The current week number of the year is calculated and formatted as an issue label — for example Issue #18 — 2025 — so every newsletter draft is automatically numbered. Step 10 — AI Agent: Write Newsletter GPT-4o-mini receives the summary and highlights as the main input and the newsletter context (title, niche, audience, tone, issue number, CTA link, video URL) in the system prompt. It writes 12 labeled sections: SUBJECT_LINE (45–55 characters), PREVIEW_TEXT (85–100 characters that never repeats the subject), NEWSLETTER_INTRO (2–3 sentence hook), SECTION_1_HEADING through SECTION_3_HEADING (four to seven words each), SECTION_1_BODY through SECTION_3_BODY (80–120 words each from the highlights), FEATURED_QUOTE (the most insightful statement from the highlights), CTA_TEXT (3–5 word button text), and HASHTAGS (4–6 niche-relevant hashtags). Step 11 — OpenAI: GPT-4o-mini Model This is the language model powering the newsletter writing. Step 12 — Code: Parse Newsletter Output All 12 labeled sections are extracted from the GPT output using regex. A complete Markdown newsletter body is assembled by joining: intro → blank line → ## Section 1 Heading → body → blank line → ## Section 2 Heading → body → blank line → ## Section 3 Heading → body → blank line → blockquote of featured quote → blank line → CTA as a Markdown link. Word count is calculated from the assembled body. If the subject line or intro are missing, the step throws a clear error. Step 13 — Google Sheets: Save Newsletter Draft One row is appended to your Newsletter Drafts tab with all 14 columns: video URL, video title, newsletter niche, issue number, subject line, preview text, newsletter body, featured quote, CTA text, CTA link, hashtags, word count, generation timestamp, and Status set to Draft. Step 14 — Google Sheets: Mark Video Processed The Video Queue row matching this video URL is updated with Status set to Processed and today's date in the Processed Date column. This prevents the same video from being picked up in future Monday runs. Key Features ✅ Graceful empty queue handling — The workflow checks whether any videos are queued before doing anything — runs every Monday without failing on weeks when nothing new is added ✅ Week-number issue label auto-calculated — Every draft is tagged with the current week number and year so your newsletter archive is self-organizing without any manual numbering ✅ Featured quote extracted from highlights — GPT identifies the single most insightful statement from the video highlights and saves it separately so you can use it as a pull quote in your email design ✅ Markdown newsletter body fully assembled — All sections are combined in one code step with correct H2 headings and a blockquote — ready to paste into Mailchimp, Beehiiv, ConvertKit, or any Markdown-aware editor ✅ Word count tracked per draft — The newsletter body word count is logged in the sheet so you can see at a glance whether each draft meets your length target before reviewing ✅ CTA link pulled from the sheet row — The CTA link comes directly from your Video Queue row — so different videos in your queue can point to different CTAs without any prompt changes ✅ Two-tab separation of concerns — The Video Queue manages what to process; the Newsletter Drafts stores finished output — keeping operations clean and easy to manage Customisation Options Change the weekly run day or time — In node 1. Schedule — Every Monday 7AM, edit the cron expression from 0 7 * * 1 to a different schedule — for example 0 6 * * 1 for 6AM Monday or 0 7 * * 3 for Wednesday morning. Add a retry limit to stop infinite polling — Before node 8. Wait — 30 Seconds Retry, add a Set step that increments a poll counter, then add a second IF check to stop after 15 polls and send a Gmail error notification instead of looping indefinitely. Send the newsletter draft to Gmail for review — After node 13. Google Sheets — Save Newsletter Draft, add a Gmail step that emails the subject line, preview text, and full newsletter body to your inbox so you receive a formatted preview every Monday without opening the sheet. Add a Slack notification when drafts are ready — After node 13. Google Sheets — Save Newsletter Draft, add a Slack step that posts the issue number, video title, subject line, and a link to the Newsletter Drafts sheet to a #newsletter-team channel so your team knows a new draft is ready to review. Change the newsletter length — In the system prompt of node 10. AI Agent — Write Newsletter, change 350-500 words total to a different range — for example 500-700 words for longer newsletters or 250-350 words for shorter digest-style issues. Troubleshooting Workflow running every Monday but no drafts being generated: The most common cause is an empty Video Queue — if no rows exist in the sheet, step 3 stops the workflow cleanly with no output and no error; this is expected behavior Confirm the workflow is Active and your n8n instance is running at 7AM Monday — self-hosted instances that are off will not fire To test immediately, click on node 1. Schedule — Every Monday 7AM and use the manual Execute option WayinVideo API key errors: Confirm YOUR_WAYINVIDEO_API_KEY is replaced in both 4. WayinVideo — Submit Summarization and 6. WayinVideo — Get Summary Results — missing either one causes a 401 error Check the execution log for the specific failing step — node 4 errors mean the submission failed, node 6 errors mean the polling request failed Confirm your WayinVideo account is active and the key has not expired Polling loop getting stuck: Check that each YouTube URL in the Video Queue is publicly accessible — private YouTube videos or unavailable videos will not be processed by WayinVideo Open the execution log of node 6. WayinVideo — Get Summary Results and check the raw response — WayinVideo may have returned FAILED with a specific reason If a single video causes the loop to run indefinitely, remove it from the queue, reactivate the workflow, and resubmit Newsletter Drafts tab not receiving rows: Confirm YOUR_NEWSLETTER_SHEET_ID in node 13. Google Sheets — Save Newsletter Draft is the correct Sheet ID — if the Newsletter Drafts tab is in a different spreadsheet than the Video Queue, it needs its own Sheet ID Confirm the tab is named Newsletter Drafts exactly and all 14 column headers in row 1 match exactly Check that the Google Sheets OAuth2 credential is connected in node 13 — it is easy to authorize in node 2 but forget in node 13 Video Queue rows not being marked as Processed: Confirm YOUR_VIDEO_QUEUE_SHEET_ID in node 14. Google Sheets — Mark Video Processed is the same Sheet ID used in node 2 — they must point to the same spreadsheet Confirm the tab name in node 14 is Video Queue exactly The update matches rows by Video URL — if the URL in the sheet has a trailing space or slightly different format from what was submitted, the match will fail 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
Description Submit any YouTube video URL along with your video title, channel name, niche, focus keyword, and a section query for timestamps and the workflow runs two AI processes simultaneously. WayinVideo's Summarization API and Find Moments API both start at the same time — one generating a structured video summary and the other finding chapter transition moments — each with its own independent polling loop. Once both complete, a merge step combines everything and GPT-4o-mini writes a complete YouTube SEO package in one call: an 800–1000 character description with chapters embedded, a standalone chapter list, 15 keyword tags, 6 hashtags, the above-the-fold hook, and SEO notes. Everything is saved to Google Sheets as one row — Status set to Ready — ready to paste directly into YouTube Studio. Built for YouTube creators, video agencies, and content managers who publish regularly and want a complete SEO package generated automatically without writing descriptions manually after every upload. What This Workflow Does Runs Summarization and Find Moments APIs simultaneously** — Both WayinVideo APIs start at the same time from the form submission — not sequentially — so the total processing time is the same as running one Uses two independent polling loops** — Each API has its own 90-second initial wait and 30-second retry loop — neither blocks the other if one takes longer to complete Sorts chapters chronologically and prepends 0:00 Introduction** — All found moments are sorted by start time and a 0:00 Introduction line is added automatically if the first moment does not start at the beginning Generates a full YouTube description with chapters embedded** — The description follows YouTube best practices: focus keyword in the first 100 characters, hook above the fold, bullet points of what viewers will learn, chapters embedded in the body Produces exactly 15 keyword tags and 6 hashtags** — The tag list mixes exact keyword, broad niche, long-tail, and channel-related terms; hashtags include the focus keyword, niche, and discovery hashtags Saves the above-the-fold hook separately** — The first two lines of the description are extracted and saved in their own column so you can check the preview without opening the full description Tracks description character count and tag count** — Both are logged in the sheet so you can verify against YouTube's limits before publishing Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named YouTube SEO) Credentials Required WayinVideo API key (pasted into 2a. WayinVideo — Submit Summarization, 2b. WayinVideo — Submit Find Moments, 4a. WayinVideo — Get Summary Results, and 4b. WayinVideo — Get Moments Results) OpenAI API key Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 4 steps — replace YOUR_WAYINVIDEO_API_KEY in all four: 2a. WayinVideo — Submit Summarization, 2b. WayinVideo — Submit Find Moments, 4a. WayinVideo — Get Summary Results, and 4b. WayinVideo — Get Moments Results. Missing any one will cause that branch to fail. 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 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 2a — Open node 2a. WayinVideo — Submit Summarization → find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY → replace the placeholder with your actual key Add your WayinVideo API key to node 2b — Open node 2b. WayinVideo — Submit Find Moments → find the same Authorization header → replace the placeholder with the same key Add your WayinVideo API key to node 4a — Open node 4a. WayinVideo — Get Summary Results → find the Authorization header → replace the placeholder with your key Add your WayinVideo API key to node 4b — Open node 4b. WayinVideo — Get Moments Results → find the same Authorization header → replace the placeholder with your key Connect OpenAI — Open node 8. 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 YouTube SEO → add these 16 column headers in row 1: Video URL, Video Title, Channel, Niche, Focus Keyword, Description Hook, YouTube Description, Description Char Count, Chapter Timestamps, Total Chapters, YouTube Tags, Tag Count, Hashtags, SEO Notes, Generated On, Status Get your Google Sheet ID — Open your Google Sheet in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets — Open node 10. Google Sheets — Save YouTube SEO Package → click the document field → replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually → click the credential dropdown → add Google Sheets OAuth2 → authorize access Activate the workflow — Toggle the workflow to Active → copy the Form URL from node 1. Form — Video URL + SEO Details → open it in a browser to submit your first video How It Works (Step by Step) Step 1 — Form: Video URL + SEO Details You open the form URL and fill in seven fields: the YouTube video URL, the video title, the channel name, the content niche, the focus keyword (e.g. "SEO tutorial for beginners"), the section query for timestamps (4–6 descriptive words like "step by step tutorial section transition"), and an optional channel or website link. Submitting the form triggers both API submissions simultaneously. Steps 2a and 2b — HTTP: WayinVideo Parallel Submissions The form submission triggers two separate API calls at the same time. 2a. WayinVideo — Submit Summarization sends the video URL to WayinVideo's Summarization API and receives a task ID. 2b. WayinVideo — Submit Find Moments sends the same URL along with your section query to WayinVideo's Find Moments API with a limit of 12 moments, and receives a separate task ID. Both run independently from this point forward. Steps 3a and 3b — Wait: 90 Seconds (Independent) Each branch pauses for 90 seconds independently. 3a. Wait — 90 Seconds (Summary) waits for the summarization branch. 3b. Wait — 90 Seconds (Moments) waits for the moments branch. Neither branch waits for the other. Steps 4a and 4b — HTTP: WayinVideo Results Polling 4a. WayinVideo — Get Summary Results checks the summarization results endpoint using the task ID from step 2a. 4b. WayinVideo — Get Moments Results checks the find-moments results endpoint using the task ID from step 2b. Each returns its own status and data independently. Steps 5a and 5b — IF: Status Checks Each branch has its own polling gate. 5a. IF — Summary Complete? checks whether the summarization status equals SUCCEEDED. If YES, the summary branch passes its data to the merge step. If NO, it routes to 5c. Wait — 30 Seconds Retry (Summary) which pauses 30 seconds then loops back to step 4a. 5b. IF — Moments Complete? works identically for the moments branch — YES passes to merge, NO routes to 5d. Wait — 30 Seconds Retry (Moments) which loops back to step 4b. Both loops run independently — if one API finishes before the other, that branch waits at the merge step until the other arrives. Steps 5c and 5d — Wait: 30 Seconds Retry (Independent) 5c. Wait — 30 Seconds Retry (Summary) is the summary branch retry. 5d. Wait — 30 Seconds Retry (Moments) is the moments branch retry. Each loops back only to its own polling step. Step 6 — Code: Merge + Format API Results This step reads from both completed branches — the summarization data from step 4a and the moments clips array from step 4b — and combines them. The moments clips are sorted chronologically by start time. If the first moment does not start at 0:00, a 0:00 Introduction line is prepended. All form inputs are also packaged. The combined output is one clean object ready for GPT: the video summary, numbered highlights, WayinVideo tags, formatted chapter list with total count, and all form metadata. Step 7 — AI Agent: Write YouTube SEO Package GPT-4o-mini receives the summary, highlights, chapter timestamps, and WayinVideo tags as the main input, and the full video context in the system prompt. It generates six labeled sections: YOUTUBE_DESCRIPTION (800–1000 characters with chapters embedded and hashtags at the end, focus keyword in the first 100 characters), CHAPTERS_STANDALONE (clean chapter list for copy-paste), YOUTUBE_TAGS (exactly 15 comma-separated lowercase tags), HASHTAGS (exactly 6 hashtags), DESCRIPTION_HOOK (just the first two lines), and SEO_NOTES (2–3 specific tips for this video's niche). Step 8 — OpenAI: GPT-4o-mini Model This is the language model powering the SEO package generation. Step 9 — Code: Parse SEO Output All six labeled sections are extracted from the GPT output using regex. The tag count is calculated by splitting the tags string on commas. The description character count is measured. If the YouTube description or tags are missing, the step throws a clear error. All metadata from the merge step is also packaged for the sheet row. Step 10 — Google Sheets: Save YouTube SEO Package One row is appended to your YouTube SEO tab with all 16 columns: video URL, video title, channel, niche, focus keyword, description hook, full YouTube description, character count, chapter timestamps, total chapters, YouTube tags, tag count, hashtags, SEO notes, generation timestamp, and Status set to Ready. Key Features ✅ Two WayinVideo APIs run simultaneously — Summarization and Find Moments both start from the form submission at the same time — saving time compared to running them sequentially ✅ Two fully independent polling loops — Each API has its own retry loop so if one takes longer than the other, they never block each other ✅ 0:00 Introduction auto-prepended — The merge step checks whether the first found moment is at the very start — if not, a 0:00 Introduction line is added automatically ✅ YouTube description character count tracked — The sheet logs the exact character length of the description so you can verify it falls within YouTube's recommended range before publishing ✅ Above-the-fold hook saved separately — The first two lines of the description are extracted into their own column so you can quickly check what viewers see before clicking "more" ✅ Exactly 15 tags and 6 hashtags enforced — GPT is instructed to generate exactly these counts per YouTube SEO best practice — not a variable number ✅ SEO notes specific to the niche — The SEO_NOTES section gives 2–3 actionable tips tailored to the video's specific topic and niche — not generic YouTube advice Customisation Options Increase the number of chapter moments returned — In node 2b. WayinVideo — Submit Find Moments, change "limit": 12 to a higher number such as 15 to find more chapter transitions — useful for longer videos with many distinct sections. Add a retry limit to stop infinite loops on either branch — Before nodes 5c. Wait — 30 Seconds Retry (Summary) and 5d. Wait — 30 Seconds Retry (Moments), add Set steps that increment separate poll counters, then add second IF checks on each to stop after 15 polls and send a Gmail error notification rather than looping indefinitely. Send the SEO package to Gmail for review — After node 10. Google Sheets — Save YouTube SEO Package, add a Gmail step that sends the video title, description hook, all 15 tags, and a link to the YouTube SEO sheet so you can review the package in your inbox without opening the sheet. Add a Slack notification when the package is ready — After node 10. Google Sheets — Save YouTube SEO Package, add a Slack step that posts the video title, focus keyword, total chapters, and a sheet link to a #youtube-content channel so your team knows a new package is ready. Change the chapter query for different video styles — The Section Query for Timestamps field in the form directly drives what moments WayinVideo finds — try "main topic introduction and explanation" for educational videos or "demonstration and example section" for tutorial-style content. Troubleshooting Form submission not starting the workflow: Confirm the workflow is Active — inactive workflows do not receive form submissions Copy the Form URL fresh from node 1. Form — Video URL + SEO Details after activating Make sure all six required fields are filled in — the Channel / Website Link field is optional WayinVideo API key errors on either branch: Confirm YOUR_WAYINVIDEO_API_KEY is replaced in all four steps: 2a. WayinVideo — Submit Summarization, 2b. WayinVideo — Submit Find Moments, 4a. WayinVideo — Get Summary Results, and 4b. WayinVideo — Get Moments Results — each branch has two steps and missing either one on that branch causes it to fail independently Check the execution log of whichever step failed — a 401 means wrong key, a 422 means invalid URL or request format Confirm your WayinVideo account is active and the key has not expired Either polling loop stuck and not completing: Check that the YouTube video URL is publicly accessible — private videos, unlisted videos requiring login, or unavailable videos will cause WayinVideo to fail on that branch Open the execution log of the failing step (4a or 4b) and check the raw response — WayinVideo may have returned FAILED with a specific reason The two branches are independent — if only one gets stuck, the other will complete and wait at the merge step; identify which branch failed and fix it specifically GPT not generating all six sections: Confirm the API key is connected in node 8. OpenAI — GPT-4o-mini Model and your account has available credits Check the execution log of node 7. AI Agent — Write YouTube SEO Package for the raw output — if the YOUTUBE_DESCRIPTION or YOUTUBE_TAGS sections are missing, node 9. Code — Parse SEO Output throws a clear error If the video summary is very short or the moments list is empty, GPT may produce a thinner output — confirm that both APIs returned data in step 6's execution log Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 10. Google Sheets — Save YouTube SEO Package is replaced with your actual Sheet ID Confirm the tab is named YouTube SEO exactly and all 16 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 Rajeet Nair
Overview This workflow implements a complete Retrieval-Augmented Generation (RAG) knowledge assistant with built-in document ingestion, conversational AI, and automated analytics using n8n, OpenAI, and Pinecone. The system allows users to upload documents, automatically convert them into embeddings, query the knowledge base through a chat interface, and receive daily reports about chatbot performance and document usage. Instead of manually searching through documentation, users can ask questions in natural language and receive answers grounded in the uploaded files. The workflow retrieves the most relevant document chunks from a vector database and provides them to the language model as context, ensuring accurate and source-based responses. In addition to answering questions, the workflow records all chat interactions and generates daily usage analytics. These reports summarize chatbot activity, highlight the most referenced documents, and identify failed lookups where information could not be found. This architecture is useful for teams building internal knowledge assistants, documentation chatbots, AI support tools, or searchable company knowledge bases powered by Retrieval-Augmented Generation. How It Works Document Upload Interface Users upload PDF, CSV, or JSON files through a form trigger. These documents become part of the knowledge base used by the chatbot. Document Processing Uploaded files are loaded and converted into text. The text is split into smaller chunks to improve embedding quality and retrieval accuracy. Embedding Generation Each text chunk is converted into vector embeddings using the OpenAI Embeddings node. Vector Database Storage The embeddings are stored in a Pinecone vector database. This creates a searchable semantic index of the uploaded documents. Chat Interface Users interact with the knowledge base through a chat interface. Each message becomes a query sent to the RAG system. RAG Retrieval The workflow retrieves the most relevant document chunks from Pinecone. These chunks are provided to the language model as context. AI Response Generation The chatbot generates an answer using only the retrieved document information. This ensures responses remain grounded in the knowledge base. Chat Logging User questions, AI responses, timestamps, and referenced documents are logged. This enables monitoring and analytics of chatbot usage. Daily Analytics Workflow A scheduled trigger runs every morning. The workflow retrieves chat logs from the previous 24 hours. Report Generation Usage statistics are calculated, including: total questions asked failed document lookups most referenced documents overall success rate. Email Summary A formatted HTML report is generated and sent via email to provide a daily overview of chatbot activity and knowledge base performance. Setup Instructions Configure Pinecone Create a Pinecone index for storing document embeddings. Enter the index name in the Workflow Configuration node. Add OpenAI Credentials Configure credentials for: OpenAI Chat Model OpenAI Embeddings node. Configure Data Tables Create the following n8n Data Tables: form_responses chat_logs Set Workflow Parameters In the Workflow Configuration node configure: Pinecone namespace chunk size chunk overlap retrieval depth (top-K). Configure Email Notifications Add Gmail credentials to send daily summary reports. Deploy the Workflow Share the document upload form with users. Enable the chat interface for question answering. Use Cases Internal Knowledge Assistant Allow employees to search internal documentation using natural language questions. Customer Support Knowledge Base Provide instant answers from support manuals, product documentation, or help center articles. Documentation Search Engine Turn large document collections into an AI-powered searchable knowledge system. AI Helpdesk Assistant Enable support teams to quickly retrieve answers from company knowledge repositories. Knowledge Base Analytics Monitor chatbot usage, identify missing documentation, and understand which files are most valuable to users. Requirements n8n with LangChain nodes enabled OpenAI API credentials Pinecone account and index Gmail credentials for sending reports n8n Data Tables: form_responses chat_logs
by Avkash Kakdiya
Quick overview This workflow triggers on HubSpot dealstage changes, pulls full deal, contact, and owner details, uses OpenAI to generate a concise Slack-ready update with next steps, notifies the right Slack channel or emails the owner for ClosedWon, logs the event to Google Sheets, and writes a note back to HubSpot. How it works Triggers in HubSpot whenever a deal property changes and continues only when the changed property is the deal stage. Retrieves the full deal record from HubSpot, formats key fields (stage label, value, close date, won/lost flags), and builds an AI prompt. Sends the prompt to OpenAI to generate a 3–4 sentence stage-change summary with two actionable next steps. Posts the AI summary to Slack, routing high-value deals to a leadership channel and other deals to the sales team channel. Appends a structured log entry (deal, stage, owner/contact, value, close date, AI summary, timestamp) to Google Sheets. Fetches the HubSpot owner and contact details to enrich downstream messages, then sends a Gmail congratulations email for Closed Won deals or a Slack loss alert with the loss reason for Closed Lost deals. Creates a note in HubSpot containing the stage-change notification and AI summary, and associates the note with the deal. Setup Connect your HubSpot Trigger credentials and add an HTTP header auth credential for HubSpot API calls to owners, contacts, notes creation, and note-to-deal association endpoints. Connect your OpenAI credential and select a model in the OpenAI node. Connect your Slack OAuth2 credential and update the target channels/messages for leadership, sales, loss alerts, and error alerts. Connect your Gmail credential for sending Closed Won emails and ensure deal owners in HubSpot have an email address. Connect your Google Sheets credential and replace the document ID with your spreadsheet ID (and confirm the target sheet name and columns).
by Rishabh Dugar
This workflow automates the full lifecycle of a vehicle insurance claim — from an incoming Gmail email to a signed, watermarked PDF decision letter delivered back to the claimant. It monitors Gmail for emails with a PDF claim attachment, deduplicates them against a Google Sheet, parses the claim PDF using PDF API Hub's OCR, evaluates the claim with OpenAI GPT-4o-mini (or a built-in mock evaluator for testing), and routes it to one of three paths: Approved** — generates a signed approval letter, stamps it APPROVED, uploads to Google Drive, and emails the claimant Rejected** — generates a rejection letter, stamps it REJECTED, uploads to Google Drive, and emails the claimant Manual Review** — notifies your claims adjuster by email for human review Every claim is logged and tracked in a Google Sheet. What you need Gmail OAuth2** — to monitor the claims inbox and send decision emails Google Sheets OAuth2** — for claim logging and duplicate detection Google Drive OAuth2** — to store processed claim PDFs OpenAI API key** — only required when ai_mode is set to openai PDF API Hub API key** — get one free at pdfapihub.com (30 free API calls) Setup Google Sheets Create a Google Sheet with a tab named Claims and add these headers in row 1: claim_id | claimant_name | claimant_email | claim_type | decision | approved_amount | reasoning | risk_flags | summary | processed_at | email_message_id A sample sheet you can clone is linked in the Sticky Note — Overview node inside the workflow. After creating the sheet, open every Google Sheets node in the workflow and point it to your sheet and tab. Google Drive Create two folders in your Drive: Approved Claims and Rejected Claims. Set each folder in the corresponding Upload node. Workflow Config node Edit the Workflow Config Set node to configure: | Field | Description | |---|---| | self_email | Your email — receives duplicate-claim alerts | | claims_adjuster_email | Email for manual review notifications | | ai_mode | mock for testing, openai for production | | mock_decision | APPROVED, REJECTED, or MANUAL_REVIEW (mock mode only) | | company_name | Used in generated PDF letters | | support_phone | Used in generated PDF letters | | appeals_email | Used in generated PDF letters | How it works New Claim Uploaded — Gmail trigger polls every minute for emails with subject containing "insurance claim" and a PDF attachment Check Duplicate in Sheet — looks up the Gmail message ID in the tracking sheet to skip already-processed emails Extract Claim Data — sends the PDF to PDF API Hub's Parse PDF node and returns the full claim text as JSON AI Mode Router — routes to OpenAI or Mock evaluator based on ai_mode config AI Claim Evaluator / Mock AI Evaluator — produces a structured decision with decision, reasoning, approved_amount, risk_flags, and claimant details Parse AI Decision — extracts the structured JSON from the AI response Log Claim to Sheet — appends the claim record to Google Sheets Route by Decision — branches into Approved, Rejected, or Manual Review paths PDF generation — HTML-to-PDF nodes generate branded decision letters using PDF API Hub Sign + Watermark — approval letters are digitally signed and stamped APPROVED or REJECTED Upload + Email — PDFs are uploaded to Drive and the decision is emailed to the claimant Customisation tips Edit the AI system prompt in the AI Claim Evaluator node to match your own underwriting rules and risk thresholds Switch mock_decision in Workflow Config between APPROVED, REJECTED, and MANUAL_REVIEW to test all three paths without making any API calls Edit the HTML inside the letter-generation nodes to match your company branding Adjust the >$50,000 → MANUAL_REVIEW threshold directly in the AI prompt PDF API Hub nodes used Parse PDF** — extracts claim text from the uploaded PDF attachment HTML to PDF** ×2 — generates the approval and rejection letter PDFs Sign PDF** — adds an authorised digital signature to the approval letter Add Watermark** ×2 — stamps APPROVED (green) or REJECTED (red) across the letter A note on quality This is not an AI-generated template. AI was used as a coding assistant for certain pieces, but every path and every input has been manually validated end-to-end — including sending a real claim email, receiving the decision email back, verifying the signed and watermarked PDF was uploaded to the correct Google Drive folder, and confirming the Google Sheet was updated with the claim record. Both the OpenAI path and mock mode were tested manually across all three decision outcomes: APPROVED, REJECTED, and MANUAL_REVIEW.
by Davide
This workflow automates the creation, assignment, tracking, and monitoring of tasks (issues) inside a Paperclip system using AI and external integrations. View this Youtube Video Tutorial to setup your Paperclip instance for FREE and get API Key (subtitles in English). ✅ Key Advantages 1. ✅ Full Automation of Task Lifecycle The workflow handles everything: Task intake → assignment → tracking → completion notification No manual intervention is required. 2. ✅ AI-Powered Task Assignment Using an LLM: Tasks are assigned intelligently based on context Reduces human decision-making errors Scales easily with more agents 3. ✅ Centralized Tracking with Google Sheets Acts as a lightweight database Easy to audit, monitor, and share Provides historical tracking of tasks 4. ✅ Real-Time Monitoring & Alerts Scheduled checks ensure tasks are constantly monitored Instant email notifications when tasks are completed Improves responsiveness and visibility 5. ✅ Modular & Scalable Architecture Each block (Webhook, AI, API, Sheets, Email) is independent Easy to extend (e.g., Slack alerts, dashboards, analytics) Can integrate with other systems without redesigning everything 6. ✅ Efficient Resource Utilization Batch processing (Split in Batches) avoids overload Scheduled execution reduces unnecessary API calls 7. ✅ Seamless API Integration Connects Paperclip, OpenAI, Google Sheets, and Gmail Demonstrates strong interoperability across services How it works This workflow automates the assignment and tracking of issues/tasks to AI agents (called "Paperclip agents") and monitors their completion. Two main flows: Issue creation WF (triggered via Webhook or Manual): Receives a task with title and issue via webhook Fetches the company ID from the Paperclip API Retrieves all available Paperclip agents for that company Normalizes agent data (id, name, title) Uses GPT-5-mini to intelligently assign the task to the most appropriate agent Creates a new issue in Paperclip with the assigned agent Logs the issue to a Google Sheet with metadata (date, ID, title, issue, assigned agent) Completion monitoring WF (runs every 10 minutes via Schedule Trigger): Fetches all open issues (where COMPLETED column is empty) from Google Sheets Loops through each open issue Checks the current status of each issue in Paperclip API If status is "completed", sends a Gmail alert and updates the COMPLETED column in Sheets with the completion timestamp Set up steps API Credentials: Configure httpBearerAuth credentialwith your Paperclip API key Set up openAiApi credential Configure gmailOAuth2 credential for sending completion alerts Set up googleSheetsOAuth2Api credential for Sheets access Google Sheets Setup: Clone this Sheet Sheet must contain columns: DATE, TITLE, ISSUE, ASSIGN, ID, COMPLETED Share the sheet with the service account or OAuth account used in credentials Paperclip API Configuration: Replace all https://paperclip.xxx.xxx URLs with your actual Paperclip instance URL Verify the /api/agents/me, /api/companies/{id}/agents, and /api/issues/{id} endpoints are accessible Workflow Settings: Webhook path is auto-generated – copy this for external calls Update the Gmail recipient from xxx@xxx.xxx to your target email address Adjust schedule trigger interval (currently 10 minutes) as needed Testing: Activate the workflow Use the Manual Trigger or send a POST request to the webhook URL with payload containing title and issue fields Monitor execution logs to verify agent assignment and issue creation 👉 Subscribe to my new YouTube channel. Here I’ll share videos and Shorts with practical tutorials and FREE templates for n8n. Need help customizing? Contact me for consulting and support or add me on Linkedin.
by isaWOW
Description Submit any customer support call recording URL along with the agent name, customer details, issue category, call date, and product name and the workflow transcribes and analyzes the full call automatically. WayinVideo's Transcription API returns a speaker-labeled timestamped transcript which GPT-4o-mini reads to extract 10 structured fields — ticket subject, issue summary, root cause, resolution given, follow-up actions, key customer quotes, sentiment, priority, CSAT prediction, and tags. A Zendesk ticket is created via the REST API with the customer as the requester and the full structured summary as the ticket body, and every call is logged to Google Sheets with the Zendesk Ticket ID and URL. Built for customer support teams, customer success managers, and QA teams who record support calls and want structured tickets created automatically without manually listening to recordings after every call. What This Workflow Does Transcribes the full call with speaker labels and timestamps** — WayinVideo's Transcription API returns every word spoken in the call labeled by speaker and time so GPT has accurate context for every field it extracts Extracts 10 structured support intelligence fields** — GPT identifies the ticket subject, issue summary, root cause, resolution given, follow-up actions, key customer quotes, sentiment, priority, CSAT prediction, and tags — all from what was actually said Predicts CSAT on a 1–5 scale** — GPT assesses how the call ended and assigns a predicted customer satisfaction score so your team can proactively follow up on low-scoring calls Builds a structured Zendesk ticket body** — All 10 fields are assembled into a formatted ticket body with clear section headers making it immediately readable in Zendesk Creates the Zendesk ticket with the customer as requester** — The ticket is opened in Zendesk with the customer's name and email as the requester — not the agent — so reply threads go to the right person Maps priority to Zendesk values automatically** — The GPT priority label (Urgent, High, Normal, Low) is converted to the exact value Zendesk expects before the API call Logs 19 fields to Google Sheets** — Every field plus the Zendesk Ticket ID and constructed Ticket URL are saved in one row per call for QA review and reporting Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Zendesk account with API token access Google Sheets (one sheet with a tab named Support Call Log) Credentials Required WayinVideo API key (pasted into 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results) OpenAI API key Zendesk subdomain, agent email, and API token (used in 11. HTTP Request — Create Zendesk Ticket) Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results. Missing either one will cause the workflow to fail. > ⚠️ Three Zendesk placeholders in node 11 — replace YOUR_ZENDESK_SUBDOMAIN in both the URL and the Ticket URL column, YOUR_ZENDESK_EMAIL, and YOUR_ZENDESK_API_TOKEN in the Authorization header of 11. HTTP Request — Create Zendesk Ticket. Estimated Setup Time: 25–30 minutes Step-by-Step Setup Import the workflow — Open n8n → Workflows → Import from JSON → paste the workflow JSON → click Import Get your WayinVideo API key — Log in to your WayinVideo account → go to Account Settings → copy your API key Add your WayinVideo API key to node 2 — Open node 2. WayinVideo — Submit Transcription → find the Authorization header value Bearer YOUR_WAYINVIDEO_API_KEY → replace YOUR_WAYINVIDEO_API_KEY with your actual key Add your WayinVideo API key to node 4 — Open node 4. WayinVideo — Get Transcript Results → find the same Authorization header → replace YOUR_WAYINVIDEO_API_KEY with the same key Connect OpenAI — Open node 9. OpenAI — GPT-4o-mini Model → click the credential dropdown → add your OpenAI API key → test the connection Get your Zendesk API token — Log in to Zendesk Admin Center → go to Apps and Integrations → APIs → Zendesk API → click Add API token → give it a name → copy the token (you can only see it once) Get your Zendesk subdomain — Your Zendesk subdomain is the part before .zendesk.com in your Zendesk URL — for example if your URL is mycompany.zendesk.com then your subdomain is mycompany Configure Zendesk credentials in node 11 — Open node 11. HTTP Request — Create Zendesk Ticket → in the URL, replace YOUR_ZENDESK_SUBDOMAIN with your actual subdomain → in the Authorization header value, replace YOUR_ZENDESK_EMAIL with the email address of your Zendesk agent account, replace YOUR_ZENDESK_API_TOKEN with the token you copied in step 6 Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Support Call Log → add these 19 column headers in row 1: Call Date, Agent Name, Customer Name, Customer Email, Product, Issue Category, Issue Summary, Root Cause, Resolution Given, Follow-up Required, Sentiment, Priority, CSAT Prediction, Tags, Zendesk Ticket ID, Zendesk Ticket URL, Call Duration (min), Recording URL, Created On Get your Google Sheet ID — Open your Google Sheet in a browser → copy the string between /d/ and /edit in the URL Connect Google Sheets — Open node 12. Google Sheets — Log Support Record → click the document field → replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID manually → also replace YOUR_ZENDESK_SUBDOMAIN in the Zendesk Ticket URL formula in this step → 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 — Support Call + Details → open it in a browser to submit your first call How It Works (Step by Step) Step 1 — Form: Support Call + Details Your support agent opens the form URL and fills in seven fields: the call recording URL (Zoom, Loom, Google Meet, or any direct link), the agent name, the customer name, the customer email, the issue category (e.g. Billing, Technical Issue, Onboarding), the call date, and the product or service name. Submitting the form starts the workflow. Step 2 — HTTP: WayinVideo — Submit Transcription The call recording URL is sent to WayinVideo's Transcription API using the /v2/transcripts endpoint. WayinVideo accepts the job and returns a task ID. The transcription returns speaker-labeled segments — each with a speaker name, start time, end time, and spoken text. Step 3 — Wait: 90 Seconds The workflow pauses 90 seconds before the first status check, giving WayinVideo time to transcribe the full call. Step 4 — HTTP: WayinVideo — Get Transcript Results A GET request checks the transcription results endpoint using the task ID from step 2. It returns the current status and, once complete, the full transcript array with each speaker-labeled segment. Step 5 — IF: Transcription Complete? This is the polling gate. If the status equals SUCCEEDED (YES path), the transcript is ready and the workflow moves forward to formatting. If still processing (NO path), the workflow routes to 6. Wait — 30 Seconds Retry which pauses 30 seconds then loops back to step 4. This repeats until SUCCEEDED. Step 6 — Wait: 30 Seconds Retry When the transcript is not yet ready, the workflow waits 30 seconds then returns to step 4 for another check. Step 7 — Code: Format Transcript Each transcript segment is formatted as [Speaker | MM:SS] Spoken text and joined into a single readable block. Total call duration in minutes, unique speakers, and transcript word count are also calculated. All seven form inputs are packaged alongside the formatted transcript for the GPT prompt. Step 8 — AI Agent: Extract Support Summary GPT-4o-mini receives the full formatted transcript as the main input and the call context (agent, customer, product, category, date, duration, recording URL) in the system prompt. It extracts 10 labeled sections: TICKET_SUBJECT (a specific 60–80 character subject line), ISSUE_SUMMARY (2–3 sentences of what the customer reported), ROOT_CAUSE (why it happened or "Under investigation"), RESOLUTION_GIVEN (what was done or "Unresolved — escalation required"), FOLLOW_UP_REQUIRED (specific actions or "None"), KEY_QUOTES (the most important things the customer said), SENTIMENT (one of five levels), PRIORITY (one of four levels based on tone and severity), CSAT_PREDICTION (a number 1–5), and TAGS (5–8 lowercase comma-separated tags). Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the support analysis. Step 10 — Code: Parse Support Output All 10 labeled sections are extracted from the GPT output using regex. The priority text is mapped to the exact Zendesk API priority value using a lookup table (urgent → urgent, high → high, normal → normal, low → low). A structured Zendesk ticket body is assembled with clear section headers — SUPPORT CALL SUMMARY, ISSUE SUMMARY, ROOT CAUSE, RESOLUTION GIVEN, FOLLOW-UP REQUIRED, KEY QUOTES FROM CUSTOMER, CALL INTELLIGENCE (sentiment, priority, CSAT), and TAGS — each on separate lines so the ticket is immediately readable in Zendesk. Step 11 — HTTP: Create Zendesk Ticket A POST request creates the ticket in Zendesk via the REST API. The ticket includes the subject, the structured body, the customer's name and email as the requester, the mapped Zendesk priority, the type set to "problem", and the tags array parsed from the GPT output. Zendesk returns the new ticket's ID and other metadata. Step 12 — Google Sheets: Log Support Record One row is appended to your Support Call Log tab with all 19 columns. The Zendesk Ticket ID comes from the API response. The Zendesk Ticket URL is constructed directly in the sheet formula as https://YOUR_ZENDESK_SUBDOMAIN.zendesk.com/agent/tickets/TICKET_ID so every row has a clickable link to the ticket. All other fields come from the parsed GPT output and form inputs. Key Features ✅ Speaker-labeled transcript passed to GPT — Each segment includes the speaker name and timestamp so GPT can distinguish between what the customer said and what the agent said when extracting quotes and sentiment ✅ CSAT prediction per call — Every ticket includes a predicted satisfaction score based on how the call ended — allowing your team to prioritize follow-ups before survey results come in ✅ Structured ticket body with section headers — The Zendesk ticket body is formatted with labeled sections so any agent opening the ticket can read the summary, root cause, and follow-up in seconds ✅ Customer set as ticket requester automatically — The ticket is opened with the customer's email as the requester — not the agent's — so Zendesk email threading works correctly from the first reply ✅ Priority mapped to Zendesk API values — GPT's priority label is automatically converted to the exact lowercase value Zendesk expects in the API body — no manual conversion needed ✅ Zendesk Ticket URL in every sheet row — The log row includes a direct clickable link to the Zendesk ticket so QA and managers can jump from the sheet to the ticket in one click ✅ Tags parsed from GPT output and sent to Zendesk — The tags field from GPT is split, trimmed, and sent as a proper array in the Zendesk API body — making the ticket filterable immediately 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 agent instead of looping indefinitely. Send a Slack notification when a high-priority ticket is created — After node 11. HTTP Request — Create Zendesk Ticket, add an IF check that triggers only when priority equals "urgent" or "high", then add a Slack step that posts the ticket subject, customer name, and Zendesk URL to a #support-escalations channel. Send a confirmation email to the agent — After node 12. Google Sheets — Log Support Record, add a Gmail step that sends the agent a plain-text email with the Zendesk ticket subject, ID, URL, and predicted CSAT so they have a record without opening the sheet. Add a Zendesk assignee — In the JSON body of node 11. HTTP Request — Create Zendesk Ticket, add "assignee_id": YOUR_ZENDESK_AGENT_ID inside the ticket object to automatically assign every created ticket to a specific agent or team — get the agent ID from your Zendesk Admin Center. Change the ticket type — In node 11. HTTP Request — Create Zendesk Ticket, change "type": "problem" to "type": "incident", "question", or "task" depending on the nature of the support calls you are logging — this affects how Zendesk categorizes and reports on the tickets. 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 — Support Call + Details after activating — URLs copied before activation will not work Make sure all seven fields are filled in — all are marked required WayinVideo API key errors: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Transcription is replaced with your actual key — this workflow uses the /v2/transcripts endpoint, confirm the URL in node 2 is correct Confirm the same key replacement was made in node 4. WayinVideo — Get Transcript Results Check the execution log of node 2 for the raw error — a 401 means wrong key, a 422 means the URL format is not supported Workflow stuck in the polling loop: Check that the recording URL is publicly accessible — private Zoom links, password-protected meetings, or expired recordings will not be transcribed Open the execution log of node 4. WayinVideo — Get Transcript Results for the raw response — WayinVideo may have returned FAILED with a specific reason Transcription of longer support calls (over 30 minutes) may take several polling cycles before completing — this is expected Zendesk ticket not being created: Confirm YOUR_ZENDESK_SUBDOMAIN in the URL of node 11. HTTP Request — Create Zendesk Ticket is replaced with just your subdomain (e.g. mycompany) — not the full URL Confirm YOUR_ZENDESK_EMAIL is the email address of your Zendesk agent account — it must be an active agent email with API access Confirm YOUR_ZENDESK_API_TOKEN is replaced with the token generated in Admin Center → APIs — tokens can only be viewed once at creation; if lost, generate a new one Check the execution log of node 11 for the Zendesk API error — a 401 means wrong credentials, a 422 means a field in the request body is invalid Google Sheets not saving the row: Confirm YOUR_GOOGLE_SHEET_ID in node 12. Google Sheets — Log Support Record is replaced with your actual Sheet ID Confirm YOUR_ZENDESK_SUBDOMAIN in the Zendesk Ticket URL formula in node 12 is also replaced — this is a second occurrence of the placeholder Confirm the tab is named Support Call Log exactly and all 19 column headers in row 1 match exactly 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 Bernhard Zindel
Summarize Google Alerts with Gemini Turn your noisy Google Alerts folder into a concise, AI-curated executive briefing. This workflow replaces dozens of individual notification emails with a single, structured daily digest. How it works Ingest:** Fetches unread Google Alerts emails from your Gmail inbox. Clean:** Extracts article links, scrapes the website content, and strips away ads and clutter to ensure high-quality AI processing. Analyze:** Uses Google Gemini to summarize each article into a concise 2-4 sentence overview. Deliver:** Compiles a professional HTML email report sorted by topic, sends it to you, and automatically marks the original alerts as read. Set up steps Connect Gmail:** Authenticate your Gmail account to allow reading alerts and sending the digest. Connect Gemini:** Add your Google Gemini API key. Configure Recipient:* Update the *Send Email Digest** node with your desired destination email address. Schedule:* (Optional) Replace the Manual Trigger with a *Schedule Trigger** (e.g., every morning at 7 AM) to fully automate the process.