by Dr. Firas
This workflow contains community nodes that are only compatible with the self-hosted version of n8n. Automate Video Creation from Voice Input with HeyGen & n8n ๐ฅ Who is this for? This workflow is ideal for: Content creators who want to turn ideas into videos in minutes Marketers managing multi-platform video campaigns Agencies needing scalable video workflows for multiple clients Entrepreneurs looking to automate social media presence ๐ก What problem is this workflow solving? Creating and publishing videos across TikTok, YouTube, Instagram and more is: Time-consuming (writing scripts, creating videos, uploading manually) Inconsistent (different platforms, formats, captions) Hard to scale without automation This workflow solves it by turning a voice note into a complete AI video โ scripted, generated, and published automatically. โ๏ธ What this workflow does Capture idea via Telegram voice note Transcribe audio to text using OpenAI Whisper Generate script, title, and caption with GPT-5 Create avatar video with HeyGen based on your script Save final video to Google Drive and log metadata in Google Sheets Upload video to Blotato Auto-publish to 9 platforms (TikTok, YouTube Shorts, Instagram, LinkedIn, Facebook, Twitter (X), Threads, Bluesky, Pinterest) Send Telegram notification once published ๐งฐ Setup Before you start, youโll need: โ A Telegram Bot connected to n8n ๐ An OpenAI API key (Whisper + GPT-5) ๐ญ A HeyGen API key for avatar video generation ๐ Google Drive + Sheets integrations for storage & logs ๐งฉ A Blotato Pro account with API access enabled ๐ฆ Verified Community Nodes enabled in n8n Admin Panel โ๏ธ Blotato node installed + credentials configured ๐ A Google Sheet template to log titles, captions, and video links ๐ ๏ธ How to customize this workflow Change prompts** โ Adjust GPT-5 prompts to fit your tone or brand Select avatars** โ Configure HeyGen avatar and voice to match your style Choose platforms** โ Activate only TikTok, YouTube, Instagram, etc. Add approvals** โ Insert a Telegram or Slack approval step before publishing Extend reporting** โ Push analytics or engagement data into Sheets or Notion This workflow transforms a simple voice message into a ready-to-publish viral video โ fully automated, consistent, and scalable. ๐ Documentation: Notion Guide Need help customizing? Contact me for consulting and support : Linkedin / Youtube
by Vasu Gupta
AI Video Generator & Social Media Publisher (Telegram Bot) Turn a single text message into a fully produced video and publish it across 5 social media platforms automatically. This workflow combines AI video generation (Fal.ai) with a "Human-in-the-loop" approval system via Telegram, ensuring you never post content without checking it first. Who is this for? Social Media Managers who want to automate Short/Reel creation. Content Creators looking to scale their output on Instagram, TikTok, and YouTube. Brands that need consistent, on-brand video content generated from simple text prompts. How it works Trigger: Send a text message to your Telegram bot (e.g., "A futuristic city with neon lights"). AI Drafting: An AI Agent (GPT-4o) converts your message into a detailed cinematic video prompt based on your brand guidelines. Generation: Fal.ai (Veo3 model) generates a high-quality 9:16 video. Approval Loop: The bot sends you the video preview. Reply "Great": The workflow proceeds to publishing. Reply with feedback (e.g., "Too dark, make it brighter"): The AI refines the prompt and regenerates the video. Publishing: Once approved, the workflow generates platform-specific captions and hashtags, logs the post to Google Sheets, and uploads the video to Blotato to publish on Instagram, Facebook, LinkedIn, TikTok, and YouTube Shorts. Requirements OpenAI API Key** Fal.ai API Key** (for video generation) Telegram Bot Token** Google Sheets** (for logging posts) Blotato Account** (for multi-channel publishing) How to set up Credentials: configure your credentials for OpenAI, Fal.ai, Telegram, Google Sheets, and Blotato. Fal.ai Setup: Create a Header Auth credential named Authorization with value Key <YOUR_FAL_KEY>. Google Sheets: In the "Log to Google Sheets" node, select the specific Sheet you want to use for tracking. Blotato: In the 5 publishing nodes (Instagram, Facebook, etc.), select your specific Account IDs from the dropdowns. Brand Customization: Open the "Draft Video Prompt" and "Generate Caption" nodes to edit the System Prompt with your specific brand voice and aesthetic guidelines.
by Dr. Firas
Auto-Generate Social Media Videos with GPT-5 and Publish via Blotato > โ ๏ธ Disclaimer: This workflow uses Community Nodes (Blotato) and requires a self-hosted n8n instance with "Verified Community Nodes" enabled. ๐ฅ Who is this for? This workflow is perfect for: Content creators and influencers who post regularly on social media Marketing teams that want to scale branded video production Solo entrepreneurs looking to automate their video marketing Agencies managing multi-client social media publishing ๐ก What problem is this workflow solving? Creating high-quality video content and publishing consistently on multiple platforms is time-consuming. You often need to: Write compelling captions and titles Adapt content to fit each platformโs requirements Publish manually or across disconnected tools This workflow automates the entire process โ from idea to publishing โ so you can focus on growth and creativity, not logistics. โ๏ธ What this workflow does Receives a video idea via Telegram Saves metadata to Google Sheets Transcribes the video using OpenAI Whisper Generates a catchy title and caption using GPT-5 Uploads the final media to Blotato Publishes the video automatically to: TikTok Instagram YouTube Shorts Facebook X (Twitter) Threads LinkedIn Pinterest Bluesky Updates the post status in Google Sheets Sends confirmation via Telegram ๐งฐ Setup Before launching the workflow, make sure to: Create a Blotato Pro account and generate your API Key Enable Verified Community Nodes in the n8n Admin Panel Install the Blotato community node in n8n Create your Blotato credential using the API key Make a copy of this Google Sheet template Ensure your Google Drive folder with videos is shared publicly (viewable by anyone with the link) Link your Telegram Bot and configure the trigger node Follow the sticky note instructions inside the workflow ๐ ๏ธ How to customize this workflow Modify the GPT-5 prompt to reflect your brand voice or campaign tone Add/remove social platforms depending on your strategy Include additional AI modules (e.g., for voiceover or thumbnails) Insert review/approval steps (via Slack, email, or Telegram) Connect Airtable, Notion, or your CRM to track results This is your all-in-one AI video publishing engine, built for automation, scale, and growth across the social web. ๐ Documentation: Notion Guide Need help customizing? Contact me for consulting and support : Linkedin / Youtube
by Vincent Nguyen
This n8n template shows how to fully automate your social media workflow from Google Sheets to X, Threads, LinkedIn, Facebook, and Instagram โ with AI-generated visuals. Instead of manually writing, designing, and posting content, this workflow turns a single Google Sheet row into multi-platform posts plus a custom AI image that matches your message. You write once. n8n posts everywhere. How it works A scheduled trigger checks your Google Sheet for content marked โReady To Post.โ The post text is pulled from Sheets and sent to all text-only platforms (X and Threads). At the same time, an AI agent analyzes your post and generates a high-quality image prompt. GPT-Image creates a custom visual based on that prompt. The image is uploaded to ImgBB to create a shareable URL. That image + your caption are automatically posted to LinkedIn, Facebook, and Instagram. Finally, your Google Sheet is updated so you never repost the same content twice. How to use Add your posts to Google Sheets in the Content column. Set Status = Ready To Post when you want it published. Make sure all platform credentials are connected in n8n. Turn the workflow on and let it run automatically. What you get Hands-free posting to 5 platforms AI-generated visuals for every post Zero manual design work Built-in error handling No duplicate posts Requirements Google Sheets access X (Twitter) account Threads account LinkedIn account Facebook & Instagram Page access ImgBB account OpenAI credentials for image generation Need help? Ask in the n8n Forum or shoot me a DM on LinkedIn Happy automating ๐
by AI Solutions
Who is this for This template is built for small business owners, content marketers, and agencies who publish regularly to a WordPress blog and want to automatically surface that content as a polished weekly email digest โ without manual curation or copywriting. If you have a WordPress site, an OpenAI API key, and a Gmail account, you can have this running in under 30 minutes. What it does The workflow runs every Monday morning and fully automates your newsletter pipeline: it fetches your latest blog posts, uses GPT-4o to write professional summaries, renders everything into a responsive branded HTML email, then delivers it to every subscriber on your list. How it works A Schedule Trigger fires once a week (Monday at 10 AM by default) to kick off the pipeline. Fetch WP Posts calls the WordPress REST API to retrieve posts published in the last 7 days, requesting up to 20 results with embedded featured media in a single request โ no separate media lookups needed. Process Posts is a Code node that normalizes the raw WordPress API response into clean article objects. It extracts titles, excerpts, URLs, featured image URLs, categories, and publish dates; strips HTML tags and decodes entities; de-duplicates by URL; and returns the top 12 articles sorted newest-first. AI โ Generate Summaries is a LangChain AI Agent backed by GPT-4o. It receives the structured article list and returns a JSON payload containing a 3โ5 sentence professional summary for each article plus a short weekly overview paragraph. Image and article URLs are passed through unchanged โ the prompt explicitly instructs the model not to modify them. Format HTML Email renders the AI output into a fully responsive, table-based HTML email. The layout includes a branded header with logo, a weekly overview callout block, individual article cards with featured images, a CTA button, and a footer with unsubscribe link. All brand variables (site name, logo URL, colors, CTA link) are defined as named constants at the top of the Code node for easy customization. Get Subscribers retrieves your mailing list from a Google Sheets worksheet. This node can be swapped for any other list source โ Excel, Airtable, a CRM โ with no changes needed downstream. Check Valid Email filters out any subscriber records that are missing an email address before delivery. Records without a valid email exit silently on the FALSE branch. Send Newsletter loops through each valid subscriber and delivers the HTML email via Gmail, with the newsletter date dynamically inserted in the subject line. How to set up In Fetch WP Posts, replace YOUR-WORDPRESS-SITE.com with your WordPress domain. In LLM โ GPT-4o, select your OpenAI API credential. In Format HTML Email, update the constants at the top of the Code node: SITE_NAME, SITE_URL, LOGO_URL, CTA_URL, and CTA_TEXT. In Get Subscribers, update the Worksheet and table name. Swap the node entirely if your subscriber list lives elsewhere. In Send Newsletter, select your Gmail OAuth2 credential and update the senderName option. Optionally adjust the send day and time in Weekly Schedule. Requirements WordPress site with the default REST API enabled (no plugin required for posts) Google Sheet or alternative source for your subscriber list OpenAI API key Gmail account with OAuth2 configured in n8n Self-hosted n8n** โ this workflow uses @n8n/n8n-nodes-langchain (AI Agent + OpenAI Chat Model), which requires a self-hosted instance How to customize the workflow Post window* โ Change days: 7 in the after query parameter of *Fetch WP Posts to cover a longer or shorter period. Article count* โ Update articles.slice(0, 12) in *Process Posts and the matching slice in the AI prompt to show more or fewer articles per issue. AI model* โ Swap GPT-4o for GPT-4o-mini or GPT-4.1 in the *LLM โ GPT-4o sub-node to adjust quality vs. cost. Brand styling* โ All colors, fonts, logo, and layout are controlled inside the *Format HTML Email Code node. The HTML uses table-based layout for broad email client compatibility including Outlook. Subscriber source* โ Replace *Get Subscribers with our Wordpress API (paid version), Airtable, HubSpot, or any other n8n-supported node. Map the email field and the rest of the workflow requires no changes. Send frequency** โ Change the Schedule Trigger to bi-weekly, monthly, or any custom cron expression. Email service** โ Replace the Gmail node with Outlook, SendGrid, Mailgun, or any SMTP-compatible service supported by n8n. Visit automatedintelligentsolutions.com for more information and workflows.
by Ayaka Sato
Who's it for Small teams, solo operators, and security-conscious individuals who receive email attachments from external senders. Useful for freelancers, agencies, HR teams, and anyone handling CVs, invoices, or documents from unknown sources. How it works Every minute, the workflow polls Gmail for new unread emails with attachments. For each attachment, it calculates the SHA256 hash and queries VirusTotal for known-malware matches. In parallel, an AI model analyzes the email subject and body for phishing patterns. A rule-based scorer combines both signals into three threat levels: Danger (VirusTotal malicious count >= 3 OR AI detects phishing) triggers a Gmail quarantine label plus a Slack alert. Suspicious (partial hits) logs to a human review queue in Google Sheets. Safe saves the attachment to Google Drive. AI is used only for text classification โ the final quarantine decision is always rule-based. Set up steps Get a free VirusTotal API key at virustotal.com Create a Google Sheet named suspicious_queue with columns: timestamp, email_from, email_subject, attachment, malicious_count, ai_verdict Create a Gmail label called QUARANTINE and a Google Drive folder for safe attachments Open Set Configuration and fill in the Sheet ID, Drive folder ID, Slack channel, and label name Connect Gmail, Sheets, Drive, Slack, OpenAI, and VirusTotal (Header Auth with x-apikey) credentials Activate the workflow How to customize Adjust thresholds in the Code node, swap Slack for Discord or Teams, or add SPF and DKIM header checks before scanning.
by Salman Mehboob
This template automates the complete hiring pipeline for digital agencies managing applications across multiple job roles. When a candidate submits a Google Form with their CV, the system scores it with AI against a role-specific weighted job profile, lets HR decide in Google Sheets with a single typed decision, sends a personalized email automatically, and tracks the Calendly interview booking in real time โ all without leaving the tools you already use. This template contains 3 linked workflows that must all be active for the full pipeline to run. How it works Workflow 1 โ CV Screening Pipeline Triggers when a new row is added to the Google Form responses sheet Extracts the Google Drive file ID from the CV upload URL, handling all three Drive URL formats automatically Checks an n8n Data Table to block duplicate applications by email โ stops processing if the candidate already exists Routes the candidate to the correct job profile based on their selected role using a Switch node Each job profile (Set node) defines: required skills, nice-to-have skills, minimum years of experience, seniority thresholds (Junior / Mid / Senior), and weighted scoring criteria (technical skills weight, experience weight, nice-to-have weight) All branches converge into a single Normalize Data node that cleans Google Form field names into standardized keys CV is downloaded from Google Drive and extracted from PDF to plain text AI evaluates the CV using a dynamically built prompt pulling all values from the job profile โ no hardcoded role logic in the AI node Structured output parser returns: score (out of 10), seniority level, recommendation (Interview / Maybe / Reject), matched skills, missing skills, nice-to-have matched, experience comment, red flags, and a plain English summary All results are written back to the same Google Sheet row matched by the candidate's email address Workflow 2 โ HR Decision Email Sender Watches the Google Sheet every minute for updates to the HR_Decision column An IF node confirms the decision is filled and Email_Status is not already "Sent" โ preventing duplicate emails if the sheet is updated again HR types exactly "Send Invite" or "Send Rejection" in the HR_Decision column to trigger the correct path Interview invitation email includes a pre-filled Calendly booking link with the candidate's name and email already populated as URL parameters Rejection email delivers a warm, personalized message referencing the role applied for After sending, Email_Status is immediately updated to "Sent" in the sheet Workflow 3 โ Calendly Interview Tracker Listens for Calendly webhook events in real time: invitee.created and invitee.canceled On booking: extracts the interview start time, formats it to your local timezone, and writes it to the Interview_Time column matched by email On cancellation: checks the rescheduled flag โ if true, stops and lets the new invitee.created event handle the update; if false, writes "Meeting canceled" to the sheet How to use Connect Google Sheets Trigger credential (OAuth2) and point it to your Form Responses sheet Connect Google Drive credential (OAuth2) โ needs read access to the folder where Google Forms stores CV uploads Connect OpenRouter credential โ get a free API key at openrouter.ai. Default model is set to a free model for testing. Switch to a stronger model for production Connect Gmail credential (OAuth2) for sending invitation and rejection emails Connect Calendly credential (OAuth2) In the Invitation Message node, replace YOUR_CALENDLY_LINK with your actual Calendly event URL Add these columns manually to your Google Form responses sheet: score, seniority, recommendation, matched_skills, missing_skills, nice_to_have_matched, experience_comment, red_flags, summary, HR_Decision, Email_Status, Interview_Time Create an n8n Data Table named CV Screening with a single column: Email (string type) Customize each Job Profile Set node with your agency's actual role requirements, skill lists, and scoring weights Activate all three workflows Requirements Google Sheets** (OAuth2) โ application tracking and HR decision sheet Google Drive** (OAuth2) โ CV file storage and download Gmail** (OAuth2) โ sending invitation and rejection emails OpenRouter** (API key) โ AI model access for CV evaluation Calendly** (OAuth2) โ interview booking and cancellation tracking n8n Data Table** โ built-in n8n feature, no external service needed Notes & customization To add a new job role:** add the role to your Google Form dropdown, add a new condition to the Route by Job Role Switch node, and duplicate any existing Job Profile Set node with updated values Scoring weights:** tech_weight, experience_weight, and nice_to_have_weight in each Job Profile node must add up to 100 HR_Decision values are case-sensitive:** type Send Invite or Send Rejection exactly as written Calendly email matching:** the candidate must book using the same email they applied with โ the invitation link pre-fills this automatically so this is handled in normal use Free model limits:** OpenRouter free models allow approximately 200 requests per day, which is sufficient for most agency hiring volumes ๐ฌ Contact Information For Help and queries, contact LinkedIn:** Salman Mehboob Email:**salmanmehboob1947@gmail.com
by Akshay Chug
Quick overview This workflow monitors a Gmail inbox for unread support emails, uses Anthropic Claude to classify and draft replies, routes urgent tickets to Slack and a Gmail draft, auto-replies to normal tickets, and logs all tickets to Google Sheets for reporting. How it works Triggers every minute when a new unread email arrives in Gmail inbox. Applies workflow settings (Slack channel, Google Sheet ID/name, support email, and max email length) and builds a structured prompt from the email subject, sender, and truncated body. Sends the prompt to Anthropic Claude (Sonnet) to return a JSON classification with category, priority, sentiment, summary, draft reply, and an internal note. Parses the AI JSON output, applies safe defaults if parsing fails, and prepares reply metadata like timestamp and reply subject. For urgent tickets, creates a Gmail draft reply, posts an alert to a Slack channel with ticket details, and appends a log row to Google Sheets. For normal tickets, sends the draft reply as a plain-text Gmail message and appends a log row to Google Sheets. For low-priority tickets, skips replying and appends a log row to Google Sheets. Setup Connect Gmail credentials for the Gmail Trigger and the Gmail actions used to create drafts and send replies. Add Anthropic credentials for the Claude Sonnet model used to classify tickets and draft responses. Connect Slack credentials and set your target Slack channel ID in the settings. Connect Google Sheets credentials, create a spreadsheet with a โSupport Ticketsโ sheet (or update the sheet name), and set the Google Sheet ID in the settings. Update the settings values (support email, max email characters, sheet name) to match your environment before activating the workflow.
by Sankar Battula
This workflow turns a simple Telegram message into a full stock research report inspired by Warren Buffettโs value investing approach. A user sends a ticker symbol such as AAPL, MSFT, or AMZN, and the workflow validates the input, runs AI-powered research, performs discounted cash flow calculations, and sends a polished HTML report to Gmail with a final verdict. It is designed as a reusable finance analysis template for creators, developers, and automation builders who want to combine Telegram, AI agents, live research, and email delivery in one workflow. Templates in n8n are intended to help users learn, reuse best practices, and quickly adapt a workflow to their own setup, so this version is structured to be easy to follow and reconfigure after import. What this workflow does Receives a stock ticker from Telegram and cleans the input before processing. Validates the ticker format and stops invalid requests early with a helpful reply. Uses an AI agent to generate a Buffett-style investment analysis. Uses SerpAPI for live company and market research. Uses a calculator tool for DCF and margin-of-safety math. Sends the final HTML report to Gmail and confirms completion in Telegram. Setup instructions Import the workflow into n8n and reconnect your credentials for Telegram, OpenAI, SerpAPI, and Gmail. n8n templates are designed to be imported and then configured in the userโs own environment. Open the Extract Ticker, Chat ID & Email node and replace YOUR_EMAIL@gmail.com with your destination email address. Create or connect your Telegram bot credentials, then test by sending a stock ticker like AAPL or MSFT. Connect your Gmail OAuth2 account so the workflow can send the HTML report email. Activate the workflow and run a live test from Telegram. Requirements Telegram Bot API credentials OpenAI API credentials SerpAPI credentials Gmail OAuth2 credentials Best for Finance research demos AI agent workflow examples Telegram-to-email automations Value investing and stock analysis use cases
by isaWOW
Description Connect Fireflies to this workflow once and every meeting you record is automatically categorized and logged to Google Sheets the moment transcription finishes. GPT-4o-mini reads the meeting title, keywords, overview, and action items, then assigns one of seven categories โ Sales, Client, Internal, HR, Product, Finance, or Other โ along with a confidence rating and a one-sentence reason. Each meeting becomes one clean row in your sheet with emoji labels for instant visual scanning. Built for founders, operations managers, and team leads who want a searchable, sortable record of how their time is actually being spent across meeting types. What This Workflow Does Triggers instantly when a meeting ends** โ Fireflies fires the workflow the moment transcription completes, so no manual step is ever needed Fetches meeting details from Fireflies** โ Retrieves the title, date, duration, participants, keywords, overview, and action items for each meeting Assigns one of seven categories** โ GPT-4o-mini classifies every meeting as Sales, Client, Internal, HR, Product, Finance, or Other based on actual meeting content Scores confidence per classification** โ Returns High, Medium, or Low confidence so you know which categorizations to trust and which to review Adds emoji labels for visual scanning** โ Category and confidence values are emoji-coded before logging so your sheet is readable at a glance without filtering Logs one row per meeting to Google Sheets** โ Appends a 10-column record automatically including date, title, category, confidence, reason, duration, participants, keywords, and a direct Fireflies link Setup Requirements Tools Needed n8n instance (self-hosted or cloud) Fireflies.ai account with webhook access OpenAI account with GPT-4o-mini API access Google Sheets (one sheet with a tab named Meeting Categories) Credentials Required Fireflies API key (pasted into Set Config Values) OpenAI API key Google Sheets 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 Activate the workflow and copy the webhook URL โ Toggle the workflow to Active โ click on node Fireflies Webhook โ 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 Get your Google Sheet ID โ Open your Google Sheet in a browser โ look at the URL โ copy the string between /d/ and /edit (e.g. in docs.google.com/spreadsheets/d/1ABC123xyz/edit, the ID is 1ABC123xyz) Fill in Config Values โ Open node Set Config Values โ replace the two placeholders: | Field | What to enter | |---|---| | YOUR_FIREFLIES_API_KEY | Your Fireflies API key from step 4 | | YOUR_GOOGLE_SHEET_ID | Your Google Sheet ID from step 5 | > โ ๏ธ Do NOT change the meetingId field โ it is extracted automatically from the Fireflies webhook and must remain as-is. Create your Google Sheet tab โ Open your Google Sheet โ add a tab named exactly Meeting Categories โ add these 10 column headers in row 1: Date, Meeting Title, Category, Confidence, Reason, Duration (min), Participants, Keywords, Fireflies URL, Logged At Connect OpenAI โ Open node OpenAI Chat Model โ click the credential dropdown โ add your OpenAI API key โ test the connection Connect Google Sheets โ Open node Log to Google Sheets โ 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 Webhook This step listens for a signal from Fireflies. Every time a meeting finishes transcribing, Fireflies sends a POST request to this webhook URL containing the meeting ID and event type. No manual trigger is needed โ it fires automatically after every recorded call where you are the organizer. Step 2 โ Set: Config Values Your Fireflies API key, Google Sheet ID, sheet tab name, and the meeting ID from the webhook are stored here. The meeting ID is extracted automatically from all possible Fireflies payload formats โ you never need to enter it manually. Step 3 โ HTTP: Fetch Transcript from Fireflies 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, keywords, overview, and action items. Only lightweight summary fields are fetched โ no full sentence-by-sentence transcript โ keeping the response fast and small. Step 4 โ Code: Extract Meeting Data The Fireflies response is processed into clean, usable fields. Keywords are limited to the top 12, the overview is capped at 600 characters, and action items are limited to the top 5. The meeting date is formatted as a readable date string. If the transcript is not found or not yet ready, the step throws an error and the workflow stops cleanly without creating a blank row in your sheet. Step 5 โ AI Agent: Categorize Meeting GPT-4o-mini receives the meeting title, keywords, overview, action items, participants, and duration. It assigns exactly one category from the seven options and returns three structured fields: the category name, a confidence level (High, Medium, or Low), and a one-sentence plain-text reason for the choice. The model runs at temperature 0.1 for highly consistent, repeatable categorization. Step 6 โ OpenAI Chat Model This is the language model powering the categorization step. It uses GPT-4o-mini at temperature 0.1 and is capped at 150 tokens โ only three short fields are needed per meeting, making this extremely cost-efficient at approximately $0.0002 per meeting. Step 7 โ Structured Output Parser This step enforces the exact three-field schema GPT-4o-mini must return. It validates that category, confidence, and reason are all present and correctly typed before the results move forward, preventing any malformed AI output from reaching your sheet. Step 8 โ Code: Prepare Sheet Row The AI output is read and emoji labels are added based on category and confidence. Category emojis: ๐ฐ Sales, ๐ค Client, ๐ข Internal, ๐ฅ HR, ๐ ๏ธ Product, ๐ Finance, ๐ Other. Confidence emojis: โ High, ๐ก Medium, โ ๏ธ Low. All meeting metadata from step 4 is combined with the AI output into one complete row ready for logging. Step 9 โ Google Sheets: Log to Google Sheets One row is appended to your Meeting Categories tab with all 10 columns populated: date, meeting title, category with emoji, confidence with emoji, reason, duration in minutes, participants, keywords, Fireflies transcript URL, and the logged-at timestamp. The final result: every meeting ends with a new row in your Google Sheet โ categorized, confidence-rated, and ready to filter or sort by meeting type. Key Features โ Fires automatically on every meeting โ No manual input ever needed after the one-time webhook setup in Fireflies โ Seven category options cover all meeting types โ Sales, Client, Internal, HR, Product, Finance, and Other handle virtually every business meeting scenario โ Confidence rating per classification โ High, Medium, and Low ratings tell you exactly how certain the AI was so you can spot which rows to review manually โ Emoji-coded for instant visual scanning โ Category and confidence columns use emojis so you can read your sheet at a glance without needing to filter โ Direct Fireflies link in every row โ Each row includes a clickable link back to the full Fireflies transcript so you can open the original meeting in one click โ Ultra-low cost per meeting โ GPT-4o-mini at temperature 0.1 with a 150-token cap costs approximately $0.0002 per meeting โ a full year of daily meetings costs less than a dollar โ Structured output enforced โ A schema parser validates all three AI fields before anything reaches your sheet โ no broken or incomplete rows โ Lightweight API call โ Only summary fields are fetched from Fireflies (not full sentences), keeping each API call fast and the response small Customisation Options Add your own custom categories โ In node AI Agent โ Categorize Meeting, edit the category list in the prompt to replace or add categories that match your business (e.g. replace "Finance" with "Investor" or add "Partnership" as an eighth option) โ also update the schema in Structured Output Parser to match. Add a Slack notification for Sales meetings โ After node Log to Google Sheets, add an IF check that reads the category field โ if it contains "Sales", post a Slack message to your #sales-team channel with the meeting title, participants, and Fireflies link for immediate team visibility. Filter out internal meetings from the sheet โ In node Prepare Sheet Row, add a condition: if the category is "Internal" and confidence is "High", set a skipLog flag to true โ then add an IF check before Log to Google Sheets to bypass logging for confirmed internal meetings and keep your sheet focused on client-facing activity. Add a weekly category summary email โ Add a separate Schedule trigger that fires every Monday morning, reads the Meeting Categories sheet via a Google Sheets read step, counts rows by category from the past 7 days, and sends a summary email showing how many Sales, Client, and Internal meetings happened that week. Use a different sheet per category โ In node Prepare Sheet Row, add logic that maps each category to a different sheetName value โ then Log to Google Sheets will route each meeting to its own dedicated tab (e.g. all Sales calls on a Sales tab, all Client calls on a Client tab). 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 is saved and matches the Production URL from node Fireflies Webhook exactly Note that Fireflies only fires the webhook for meetings where you are the organizer โ guest meetings will not trigger it Fireflies API key error or transcript not found: Confirm YOUR_FIREFLIES_API_KEY in node Set Config Values is replaced with your actual key โ not the placeholder text Get your key from fireflies.ai โ Settings โ Integrations โ Fireflies API If the transcript is not found, Fireflies may still be processing the meeting โ this workflow stops cleanly with an error in this case; the meeting will not be logged until you rerun it manually or wait for the next webhook OpenAI not categorizing correctly: Confirm the API key is connected in node OpenAI Chat Model and your account has available credits Check the execution log of node AI Agent โ Categorize Meeting for the raw GPT response If categories are inconsistent, confirm the prompt text in AI Agent โ Categorize Meeting is intact and has not been accidentally edited Google Sheets not logging rows: Confirm the Google Sheets OAuth2 credential in node Log to Google Sheets is connected and not expired โ re-authorize if needed Check that YOUR_GOOGLE_SHEET_ID in node Set Config Values is the ID from the sheet URL, not the full URL Confirm the tab is named Meeting Categories exactly โ capitalization must match the sheetName value in Set Config Values Verify all 10 column headers in row 1 match exactly: Date, Meeting Title, Category, Confidence, Reason, Duration (min), Participants, Keywords, Fireflies URL, Logged At AI returning a category not in the list: The Structured Output Parser enforces the schema โ if an unexpected value appears, check the execution log of AI Agent โ Categorize Meeting for the raw output Confirm the seven category names in the prompt match exactly what the schema parser expects: Sales, Client, Internal, HR, Product, Finance, Other 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 Mychel Garzon
Quick overview This workflow polls Outlook for meeting summary emails, uses GPT-4o to extract strategic decisions and action items from the transcript, logs decisions to a SharePoint list, creates Microsoft To Do tasks with normalized due dates, and sends failure alerts via Outlook email if any node errors occur. How it works An Outlook trigger polls for new emails from a configured bot sender address every 15 minutes and passes matching messages downstream. A deduplication node checks each email's conversation ID against a rolling in-memory list and drops any threads already processed in a previous run. The list is capped at 100 entries and rotates automatically. The HTML body of each email is stripped of markup and converted to clean plain text before being passed to the AI node. GPT-4o analyzes the plain text transcript and returns a structured JSON object containing two arrays: Strategic_Decisions and Action_Items. A parse node strips any markdown fences from the AI output, splits the two arrays, and routes them to separate output branches โ decisions to SharePoint, action items to the due date normalizer. Each strategic decision is logged as a new item in the configured SharePoint list for permanent team-level record keeping. Action item due dates are normalized from YYYY-MM-DD to the dateTimeTimeZone format Microsoft Graph requires, then each action item is created as a dated Microsoft To Do task with assignee and deadline included Setup Replace bot@yourcompany.com in the Outlook Trigger sender filter with the actual address your meeting bot uses to send transcript emails. Connect your Microsoft Outlook OAuth2 credential to both the Outlook Trigger node and the Send Error Email node. Replace admin@yourcompany.com in the error node with your actual admin address. Connect your OpenAI credential to the Extract Insights via AI node. The prompt expects the AI to return a JSON object with Strategic_Decisions and Action_Items arrays โ adjust the prompt if your meeting bot structures summaries differently. Connect your Microsoft SharePoint credential to the Log to SharePoint List node and configure the target site ID and list ID where decisions should be stored. Connect your Microsoft To Do credential to the Create To Do Tasks node and replace YOUR_TODO_LIST_ID with your actual task list ID. In the Parse & Route Arrays node settings, set the number of outputs to 2 so the split routing works correctly. Requirements Microsoft Outlook OAuth2 account with inbox access and a configured meeting bot sender address OpenAI API key with access to GPT-4o Microsoft SharePoint site with a list configured to receive decision records Microsoft To Do account with a task list ready to receive action items Customization Change the polling interval in the Outlook Trigger node from 15 minutes to any frequency that matches your meeting cadence. Adjust the DEADLINE_HOUR_UTC constant in the Normalize Due Date node to set task deadlines in your team's local timezone. Default is 14:00 UTC (17:00 EEST). Modify the GPT-4o prompt in the Extract Insights via AI node to match the structure of your meeting bot's email format or extract additional fields beyond decisions and action items. Add a Slack or Teams notification node after the SharePoint and To Do branches to alert the team when new decisions or tasks have been created. Additional info The Parse & Route Arrays node must have its output count set to 2 manually in the node settings tab on the canvas. This is not configurable from the parameters panel and is easy to miss during setup. If the AI output cannot be parsed, the node defaults to empty arrays for both Strategic_Decisions and Action_Items so the workflow never crashes on a malformed response. Due dates must be in YYYY-MM-DD format in the AI output. The Normalize Due Date node silently skips any value that does not match this pattern, leaving the task without a deadline rather than failing.
by Jitesh Dugar
Deliver your product updates in a modern, accessible format. This workflow automatically transforms GitHub releases into podcast-style audio announcements and distributes them via email and Slack. ๐ฏ What This Workflow Does This template bridges your development cycle with your marketing and communication channels. ๐ Step 1 โ GitHub Trigger & Notion Synthesis GitHub Trigger:** Fires when a new release is published Parsing:** Converts raw markdown into structured categories (features, fixes, improvements) Notion Merge:** Enriches data with additional context from your Notion changelog database ๐๏ธ Step 2 โ AI Scriptwriting & Professional TTS Script Generation:** OpenAI converts technical notes into a conversational 60โ90 sec script Voice Generation:** ElevenLabs turns the script into high-quality audio CDN Hosting:** Uploads MP3 via UploadToURL to generate a public URL ๐ง Step 3 โ Multimedia Newsletter Delivery Subscriber Fetch:** Loads email list from Google Sheets Email Creation:** Builds a rich HTML email with embedded audio player Distribution:** Sends via Gmail using BCC list ๐ฌ Step 4 โ Internal Sync & Database Update Slack Alert:** Posts update with audio preview to team channel Notion Update:** Marks entry as published and stores audio URL โจ Key Features Bidirectional Notion Sync:** Reads and updates changelog entries Conversational AI:** Converts technical updates into human-friendly audio Dynamic HTML Emails:** Includes inline audio playback High-Quality Voice:** Uses ElevenLabs for realistic narration ๐ง Setup Requirements Required Integrations GitHub:** Personal Access Token (repo read scope) Notion:** Integration token + changelog database ElevenLabs:** API key + Voice ID OpenAI:** API key UploadToURL:** For MP3 hosting Slack:** Bot token Environment Variables NOTION_DATABASE_ID APPROVER_EMAIL DISCORD_WEBHOOK_URL SLACK_CHANNEL_ID Humanize your software updates. Import this template and start broadcasting your product journey with audio.