by Incrementors
Description Paste any Zoom, Google Meet, or Teams recording URL into a simple form along with the meeting title, team name, date, and Slack channel and the workflow handles everything automatically. WayinVideo transcribes the full meeting with speaker labels and timestamps, then GPT-4o-mini extracts five structured sections: a meeting summary, action items with owners and due dates, decisions made, key discussion points, and next steps. A formatted Slack message is posted to your team channel and every meeting summary is logged to Google Sheets with the Slack message timestamp. Built for teams who run regular standups, project meetings, or client calls and want action items shared on Slack automatically — without anyone writing notes or copy-pasting summaries. What This Workflow Does Transcribes meetings with speaker labels** — WayinVideo processes the full recording and returns every spoken segment attributed to the correct speaker with timestamps Extracts five structured sections automatically** — GPT-4o-mini identifies the meeting summary, action items with owners and due dates, decisions, key discussion points, and next steps from the transcript Assigns owners to every action item** — Action items include the responsible person's name if mentioned in the meeting, falling back to "Team" if no specific person was named Posts a formatted Slack message with Block Kit** — The Slack message uses headers, fields, dividers, and sections so it is easy to scan on any device — not a wall of text Includes a recording link in the Slack message** — Every Slack message ends with a clickable link to the full recording so anyone can watch back without searching for the URL Polls automatically until transcription is ready** — Waits 90 seconds then checks every 30 seconds until the transcript is available, with no manual monitoring needed Logs the full summary to Google Sheets** — Appends a row with the meeting title, team, date, duration, attendees, all five extracted sections, recording URL, Slack channel, and Slack message timestamp Setup Requirements Tools Needed n8n instance (self-hosted or cloud) WayinVideo account with API access OpenAI account with GPT-4o-mini API access Slack workspace with a bot connected to your team channel Google Sheets (one sheet with a tab named Meeting Log) Credentials Required WayinVideo API key (pasted into 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results) OpenAI API key Slack OAuth2 credential Google Sheets OAuth2 > ⚠️ WayinVideo API key appears in 2 steps — replace YOUR_WAYINVIDEO_API_KEY in both 2. WayinVideo — Submit Transcription and 4. WayinVideo — Get Transcript Results. Missing either one will cause the workflow to fail. Estimated Setup Time: 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 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 Slack channel ID — Open Slack in a browser → right-click on the channel you want to post to → click "Copy link" → the channel ID is the string starting with C at the end of the URL (e.g. C08ABCDEF12) Connect Slack and set the channel — Open node 11. Slack — Post Action Items → click the credential dropdown → add Slack OAuth2 → authorize n8n access to your workspace → replace YOUR_SLACK_CHANNEL_ID in the channel field with your actual channel ID Create your Google Sheet tab — Open your Google Sheet → add a tab named exactly Meeting Log → add these 13 column headers in row 1: Meeting Title, Team, Date, Duration (min), Attendees, Summary, Action Items, Decisions, Next Steps, Recording URL, Slack Channel, Slack Message TS, Logged On Connect Google Sheets — Open node 12. Google Sheets — Log Meeting Summary → click the document field → replace YOUR_GOOGLE_SHEET_ID by selecting your spreadsheet or entering the Sheet ID (the string between /d/ and /edit in your Sheet URL) → 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 — Meeting URL + Details → open it in a browser to submit your first meeting How It Works (Step by Step) Step 1 — Form: Meeting URL + Details You open the form URL in a browser and fill in five fields: the meeting recording URL (Zoom, Google Meet, Teams, Loom, or any direct link), the meeting title, the team name, the meeting date, and the Slack channel name where the summary should be posted (e.g. #team-updates). Submitting the form starts the workflow. Step 2 — HTTP: WayinVideo — Submit Transcription The meeting recording URL is sent to the WayinVideo transcription API with the target language set to English. WayinVideo accepts the job and returns a task ID confirming transcription has started. Step 3 — Wait: 90 Seconds The workflow pauses for 90 seconds before the first status check. Meeting recordings are typically 30–90 minutes long and need more initial processing time than shorter videos. Step 4 — HTTP: WayinVideo — Get Transcript Results A GET request checks the WayinVideo results endpoint using the task ID from step 2. It returns the current processing status and, once complete, the full speaker-labeled transcript with timestamps. 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 to check again. 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. The loop continues automatically. Step 7 — Code: Format Transcript Each segment is formatted as [Speaker Name | MM:SS] text. Total meeting duration in minutes, word count, and unique speaker names (attendees) are calculated. All form inputs — meeting title, team name, meeting date, Slack channel, and recording URL — are packaged here for the AI prompt. Step 8 — AI Agent: Extract Meeting Summary GPT-4o-mini receives the formatted transcript and a detailed system prompt. It extracts five labeled sections: a 2–3 sentence meeting summary, action items each with owner name and due date (or TBD), decisions made, up to five key discussion points, and next steps. If any section has no content from the transcript, it writes "None mentioned" or "None recorded" rather than inventing content. The output uses exact section labels so the parsing step is reliable. Step 9 — OpenAI: GPT-4o-mini Model This is the language model powering the meeting extraction. It runs with default settings for consistent, structured output. Step 10 — Code: Build Slack Message The AI output is parsed using regex to extract each of the five labeled sections. A complete Slack Block Kit JSON message is assembled with: a header block showing the meeting title, a fields section showing team, date, duration, and attendees in two columns, a divider, and then individual section blocks for Meeting Summary, Action Items, Decisions Made, Key Discussion Points, Next Steps, and a clickable recording link. A context block at the bottom credits the automation. All five extracted text sections and meeting metadata are also packaged for Google Sheets logging. Step 11 — Slack: Post Action Items The Block Kit message is posted to your specified Slack channel using the connected Slack OAuth2 credential. Slack returns a message timestamp (ts) which is used to uniquely identify the message for thread tracking. Step 12 — Google Sheets: Log Meeting Summary One row is appended to your Meeting Log tab with all 13 columns populated: meeting title, team, date, duration, attendees, summary, action items, decisions, next steps, recording URL, Slack channel, the Slack message timestamp, and the log timestamp. Your team now has a permanent searchable record of every meeting processed. Key Features ✅ Slack Block Kit formatting — The message renders with headers, two-column metadata fields, and divided sections so it is easy to scan in any Slack client — mobile or desktop ✅ Owner names extracted from transcript — GPT reads the transcript for assignments and names the right person per action item — not just a generic bullet list ✅ Recording link embedded in every message — The Slack message always includes a clickable link to the full recording so team members can watch back without asking for the URL ✅ 90-second initial wait for meeting-length recordings — The longer first pause is calibrated for typical 30–90 minute meeting recordings rather than short clips ✅ Five structured sections per meeting — Summary, action items, decisions, key points, and next steps are all extracted separately so different team members can scan only what they need ✅ Slack message timestamp logged to Sheets — The ts value saved in Google Sheets lets you build direct links to the exact Slack message for any meeting in your log ✅ Graceful fallback for missing content — If no action items or decisions are found in the transcript, GPT writes "None identified" rather than inventing or leaving fields blank Customisation Options Post to a different channel per team — In node 1. Form — Meeting URL + Details, add a dropdown field with multiple channel options — then in node 11. Slack — Post Action Items, map the channel ID dynamically based on the team name selected, so engineering meetings go to #eng-standup and sales meetings go to #sales-updates. 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 that stops after 20 polls and sends a Slack error message to the channel instead of looping indefinitely. Send a direct message to each action item owner — After node 11. Slack — Post Action Items, add a second Slack step that sends a direct message to each person named in the action items list — parse the owner names from the actionItems text and send individual DMs with their specific tasks. Add a due date filter for urgent action items — In node 10. Code — Build Slack Message, add logic that scans the actionItems text for any item with "Due: today" or "Due:" plus the current date, then add a separate Slack section block that highlights only those urgent items at the top of the message. Trigger automatically from a Zoom webhook — Replace node 1. Form — Meeting URL + Details with a Zoom webhook trigger that fires when a cloud recording becomes available — eliminating the manual form submission step entirely. Troubleshooting WayinVideo returning an error on submission: Confirm YOUR_WAYINVIDEO_API_KEY in node 2. WayinVideo — Submit Transcription is replaced with your actual API key — not the placeholder text Confirm the same replacement was made in node 4. WayinVideo — Get Transcript Results — both steps require the key Check the execution log of node 2 for the raw error — a 401 means wrong key, a 422 means the URL format is not supported Workflow stuck in the polling loop: Check that the meeting recording URL is publicly accessible — Zoom recordings with password protection or expired links will not be processed Open the execution log of node 4. WayinVideo — Get Transcript Results to inspect the raw response — WayinVideo may have returned FAILED with a specific error If the loop runs indefinitely, deactivate the workflow, fix the URL, and resubmit Slack message not posting: Confirm the Slack OAuth2 credential in node 11. Slack — Post Action Items is connected and your n8n Slack app has been added to the target channel — in Slack, go to the channel → click the channel name → Integrations → Add apps Confirm YOUR_SLACK_CHANNEL_ID is replaced with the actual channel ID starting with C — not the channel name like #team-updates Check the execution log of node 11 for the raw Slack API error — a channel_not_found error means wrong ID or the app is not in the channel GPT not extracting all five sections: Confirm the API key is connected in node 9. OpenAI — GPT-4o-mini Model and your account has credits Check the execution log of node 8. AI Agent — Extract Meeting Summary for the raw output — if section labels are missing, the regex in node 10 will return the fallback values Very short meetings with less than 5 minutes of transcript may not have enough content for all five sections — this is expected behavior Google Sheets not logging the row: Confirm YOUR_GOOGLE_SHEET_ID in node 12. Google Sheets — Log Meeting Summary is replaced with your actual sheet ID from the URL Confirm the tab is named Meeting Log exactly and all 13 column headers 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@incrementors.com 🌐 Website: https://www.incrementors.com/
by AlphaInsider
AlphaInsider Telegram Chat Bot Automate trading on AlphaInsider by monitoring Telegram messages. Uses AI to analyze signals and execute trades, create posts, or answer questions. How It Works Message Flow: Telegram → Route (DM/Channel) → Detect Type (Text/Voice) → Transcribe (if voice) → Global Settings → Fetch Positions → AI Analysis → Route Action (Trade/Post/Q&A) → Execute → Reply (if DM) Three AI Actions: Trade - Executes orders on AlphaInsider based on clear trading signals Post - Creates audience posts on AlphaInsider from commentary or analysis Q&A - Responds to direct questions about positions or trading The AI agent analyzes messages with current portfolio context, determines intent, and routes to the appropriate action. Prerequisites n8n instance** (self-hosted or cloud) AlphaInsider account** with API access - Sign up OpenAI API key** - Get key Telegram Bot** - Create via @BotFather Quick Setup 1. Configure Credentials Telegram API: Create bot with @BotFather and copy auth token Add token to Telegram Channel Listener node (Optional) Add bot as admin to channel with no permissions OpenAI API: Get API key from OpenAI Platform Add to OpenAI Model and Transcribe Voice Message nodes AlphaInsider API: Go to Developer Settings Click n8n button and copy API key Add to Get Positions, Search Stocks, and Create Orders nodes 2. Configure Workflow Global Settings Node: strategy_id** (required): Copy from AlphaInsider strategy URL (e.g. URL: https://alphainsider.com/strategy/niAlE-cMI8TdsYQllZLmf, Strategy ID: niAlE-cMI8TdsYQllZLmf) whitelist** (optional): Restrict trading to specific securities using ["SYMBOL:EXCHANGE"] format, or leave as [] for all Channel Check Node (optional): Set channel_id to monitor specific channel (e.g., -1001234567890) Leave default to monitor all messages 3. Activate Toggle Active in the workflow editor. Your bot is now monitoring Telegram. Features Real-time monitoring** via webhook for instant processing Dual input modes**: Direct messages and channel posts Voice message support**: Automatic transcription with OpenAI Whisper Portfolio context**: Considers existing positions before trading Leverage support**: Up to 2x (200%) portfolio leverage Security whitelist**: Optional restriction to approved securities Interactive replies**: Responds to DMs with confirmations or answers Trading Logic Trade Signals (action = trade): Long**: buy, bullish, loading up, moon, strong buy Short**: sell, dumping, overvalued, bearish, exiting Close**: take profit, exiting, holding cash, getting out Posts (action = post): Broadcasting information or analysis to followers No explicit trading intention Q&A (action = none): Position queries and trading questions Pure observation or technical analysis Weak/ambiguous signals Allocation Rules: Percentages: 0 to 2.0 (1.5 = 150% leverage) Total must not exceed 2.0 Cannot mix stocks and crypto Conservative approach - only acts on clear signals Example Usage Buy Signal: Message: "Extremely bullish on Nvidia. Adding more NVDA" Current: 50% TSLA Result: 150% NVDA + 50% TSLA = 200% Reallocation: Message: "Selling Tesla to buy Microsoft" Current: 100% TSLA Result: 100% MSFT (TSLA closed) Post to Audience: Message: "Bitcoin breaking key resistance at $45k!" Result: Post created on AlphaInsider Position Query: Message: "What are my current positions?" Reply: "Your current positions are: TSLA:NASDAQ long 100%, MSFT:NASDAQ long 50%." Supported Exchanges COINBASE** - Cryptocurrencies NYSE** - New York Stock Exchange NASDAQ** - NASDAQ Stock Market Troubleshooting | Issue | Solution | |-------|----------| | Webhook not triggering | Verify bot is admin in channel with correct permissions | | AI not trading | Ensure messages contain clear action words (buying, selling, closing) | | Trades not executing | Verify AlphaInsider credentials and strategy_id | | Voice messages failing | Check OpenAI API key in Transcribe Voice Message node | | Wrong channel messages | Update channel_id in Channel Check node | | Not replying to DMs | Verify Telegram credentials in User Reply node | Customization Open Parse Stock Allocations node to modify trading logic: Signal recognition keywords Leverage limits (default: 2.0) Allocation strategies Risk filters Disclaimer Trading involves risk. Always test thoroughly before using with real money. Start with small allocations and security whitelists. Users are responsible for their own trading decisions and risk management.
by Hồ Đình Huy
Quick overview This workflow accepts invoice PDFs or images from an n8n Form or Telegram, uses Google Gemini to OCR and extract structured invoice fields and line items, appends the results to Google Sheets, and sends a success or rejection notification via Telegram. How it works Receives an invoice file upload either from an n8n Form or from a Telegram bot message. Validates that the incoming file exists and is a supported PDF or image format, otherwise prepares a rejection message. Uploads the file to Google Gemini and routes it to Gemini document analysis for PDFs or image analysis for images. Parses Gemini’s JSON response, normalizes dates and numeric fields, and ensures line items are present as an array. Splits the extracted line items into rows and appends the invoice data to an Invoices worksheet in Google Sheets. Builds a processing summary and sends a Telegram notification for success, or sends the prepared rejection message for invalid files. Setup Add a Google Gemini (PaLM) API credential and select a Gemini model (for example, models/gemini-2.5-flash) in the Gemini nodes. Add a Google Sheets OAuth2 credential and replace REPLACE_WITH_GOOGLE_SHEET_ID with your spreadsheet ID, ensuring an Invoices sheet exists. Add a Telegram bot credential, set REPLACE_WITH_TELEGRAM_CHAT_ID, and (optionally) message your bot once so it can send you notifications. If using the n8n Form entry point, open the form URL for the “invoice” path and use it as the upload page for PDF/image invoices.
by Salome
Quick Overview This workflow powers a Telegram astrology bot that manages chat sessions in Supabase, calculates natal or synastry charts via AstrologyAPI using location and timezone lookups, and uses Google Gemini (via an n8n AI Agent) plus reference text from Google Drive to craft responses back to Telegram. How it works Receives incoming Telegram messages and callback queries from users. Looks up the user’s session in Supabase by chat ID and routes the conversation through a state machine to collect either natal or synastry birth details. Inserts or updates the session state and collected inputs in Supabase, and sends the next prompt/status message back to the user in Telegram. When enough birth data is provided, parses the intake text, geocodes the city with OpenStreetMap Nominatim, and fetches a timezone offset from the GeoNames Timezone API. Calls AstrologyAPI (western_horoscope or synastry_horoscope) with the computed coordinates and timezone to generate chart data. Downloads a JSON reference file from Google Drive and merges it with the live chart output to build an analysis context. Sends the user prompt plus context to a Google Gemini chat model through an AI Agent with memory, logs the reading metadata to Supabase, and posts the final formatted response to Telegram. Setup Add Telegram bot credentials and set the bot webhook in n8n so Telegram can deliver updates to the Telegram Trigger. Add Supabase credentials and create the required tables/fields (sessions with chat_id, state, mode, p1_data, p2_data; and astrology_readings for logging). Add HTTP Basic Auth credentials for AstrologyAPI and confirm the endpoint URLs match your AstrologyAPI plan (western_horoscope and synastry_horoscope). Provide a valid GeoNames username in the timezone request, and ensure outbound HTTP access to OpenStreetMap Nominatim and GeoNames from your n8n instance. Add Google Drive OAuth credentials and update the Google Drive file ID for the reference JSON (synastry.json) if you use a different file. Add Google Gemini (PaLM) API credentials for the chat model used by the AI Agent.
by Tricore Infotech Pvt Ltd
Quick overview This workflow runs daily to read a Google Sheets content calendar, use OpenAI to generate brand-compliant Instagram captions and images from a master brand context file, watermark each image with your logo, publish posts via the Facebook Graph API, and write publishing results back to Google Sheets. How it works Runs on a daily schedule and loads configuration values like your logo URL, Google Sheet URL, brand context URL, S3 bucket name, and Instagram Business ID. Downloads the brand context file and your logo image, then resizes the logo for watermarking. Reads Google Sheets to find today’s posts with Status set to Pending, and stops if no posts are found. Sorts the pending posts by their scheduled time, then processes them one at a time and waits until each post’s exact scheduled Date/Time. Uses OpenAI (gpt-4o-mini) to generate an Instagram caption plus layout metadata in a strict JSON format, then parses and sanitizes the JSON for downstream use. Uses OpenAI (gpt-image-2) to generate a 1024×1024 image based on the brand context and the selected layout, then downloads the generated image and composites the resized logo at the calculated position. Uploads the final image to Amazon S3 to obtain a public URL, creates and publishes an Instagram media container via the Facebook Graph API, and updates Google Sheets with Published/Failed status, caption, image URL, timestamp, and any error message. Setup Add credentials for Google Sheets OAuth2, OpenAI API, AWS (IAM) for S3, and Facebook Graph API (Meta) with permissions to publish to your Instagram Business account. Update the Set Config values with a public logoUrl, your googleSheetUrl, a direct raw-text/markdown masterContextUrl, your awsS3BucketName, and your instagramBusinessId. Create or update your Google Sheet with the required headers (at minimum: Date, Time, Topic, Context, Status, Publish Time, Post Image, Post Caption, Error Message) and share it with the Google account used by the Google Sheets credential. Ensure your S3 bucket allows public-read objects (or adjust the upload ACL strategy) so Instagram can fetch the image_url from the S3 URL. Keep the Date and Time values in the sheet consistent with the workflow’s expectations (Date as YYYY-MM-DD and Time as HH:MM) so the wait step resumes correctly. Requirements n8n version 1.0+ Google Sheets (with Editor access for the n8n service account) OpenAI API key (with sufficient limits for GPT-4o-mini and gpt-image-2 for Image Generation) AWS Account (S3 bucket configured for public reads and an IAM user and Your S3 bucket must have 'Block Public Access' disabled to use public ACLs. Buckets created after April 2023 have this enabled by default — disable it in your bucket settings under Permissions.) Instagram Business Account connected to a Facebook Page (Graph API scopes: instagram_basic, instagram_content_publish). Customization Swap the LLM Engine:** If you prefer working with Google's models for complex data pipelines, you can easily swap the OpenAI text node out for a Gemini 2.5 Flash node, which handles strict JSON schema outputs brilliantly. Scale the Watermark:** Adjust the width/height parameters in the Resize Logo node if your brand logo needs to be more prominent or subtle on the final output. Add Notifications:** Connect a Slack or Gmail node directly to the Format Error Alert node so your team gets instant pings if a scheduled post fails to publish.
by Feras Dabour
Auto-generate job descriptions from briefing notes with OpenAI and Google Docs Who is this for Recruiters, HR teams, and hiring managers who conduct role briefing conversations and want to convert their meeting notes into polished, structured job descriptions automatically -- without manual copywriting. What this workflow does This workflow watches a Google Drive folder for new briefing documents, extracts structured job data using AI, generates a professional HTML job description, sends it to Microsoft Teams for approval, and exports the final version as a PDF to Google Drive. How it works Trigger -- A Google Drive Trigger detects when a new Google Doc (e.g. a briefing transcript) is created in a watched folder. File organization -- A timestamped subfolder is created and the document is moved into it for clean project structure. Document reading -- The Google Doc content is fetched via the Google Docs API. AI data extraction -- An OpenAI AI Agent analyzes the transcript (supports German input) and extracts structured job data: title, department, responsibilities, skills, benefits, tech stack, and more -- output as JSON. Data logging -- The extracted fields are appended to a Google Sheets tracker for reference and audit. Prompt assembly -- A Code node builds a detailed prompt from the structured data, choosing between "create" mode (first draft) or "revise" mode (feedback loop). JD generation -- A second AI Agent (JD-Writer) generates a complete, styled HTML job description following a professional template with sections like responsibilities, profile, benefits, and diversity statement. Human review -- The draft is sent to a Microsoft Teams chat with an approve/reject form and an optional feedback field. Approval path -- If approved, the HTML is converted to PDF and uploaded to the Google Drive subfolder alongside the original briefing. Revision loop -- If rejected, the feedback is routed back to the JD-Writer for targeted revisions, and the updated draft is re-sent for approval. Setup steps Google Drive & Docs -- Create OAuth2 credentials. Set the folder ID in the Google Drive Trigger node to the folder where briefing documents are saved. Google Sheets -- Create a spreadsheet with columns for all job data fields (job_title, department, responsibilities, hard_skills, soft_skills, etc.). Update the Sheet ID in the Google Sheets node. OpenAI -- Add your API key as an OpenAI credential. Used for both the data extraction agent (reads the transcript) and the JD-Writer agent (generates the job description). Microsoft Teams -- Create OAuth2 credentials. Set the Teams chat ID in the approval node to the chat or channel where drafts should be reviewed. HTML-to-PDF -- Install the community node n8n-nodes-htmlcsstopdf (self-hosted only). Add the API credential. Requirements Community node:* n8n-nodes-htmlcsstopdf -- *self-hosted n8n only** OpenAI API key (GPT-4 or newer recommended) Google Drive, Docs & Sheets OAuth2 credentials Microsoft Teams OAuth2 credentials How to customize AI extraction prompt** -- Edit the system message in the "Extract job data from transcript" node to adjust which fields are extracted or to support different transcript languages. JD template style** -- Modify the prompt in the "Build JD-Writer prompt" Code node to change tone, section order, or formatting style of the generated job description. Approval channel** -- Change the Teams chat ID to route drafts to a different team or channel. Output format** -- Swap the HTML-to-PDF node for a different converter, or skip PDF and use the raw HTML output directly. Tracker columns** -- Add or remove columns in Google Sheets to match your internal job data schema. Revision depth** -- The approval loop supports unlimited revision cycles. The JD-Writer applies feedback minimally without rewriting from scratch.
by Vonn
This n8n template demonstrates how to fully automate the creation of UGC-style product videos using AI, starting from a simple Google Sheet. It transforms product data into AI-generated images, cinematic video scripts, and final videos, then uploads everything to Google Drive and updates your sheet automatically. 💡 Use cases Generate UGC ads at scale for e-commerce products Create TikTok / Reels content automatically Build content pipelines for agencies or creators Rapidly test different product angles, audiences, and messaging Automate creative production from structured data (Google Sheets) Good to know This workflow uses multiple AI services (image + video), so cost depends on usage: Image generation (DALL·E) Video generation (Sora) Video generation is asynchronous and may take several minutes per item Some AI models (like Sora) may be region-restricted or limited access Generated image URLs may expire, so storing them (as done here) is important How it works Reads product data from Google Sheets and selects rows marked "Pending". Creates a prompt and generates a product image. Analyzes the image and turns it into a video script. Sends the script to Sora and waits until the video is ready. Uploads the video to Google Drive and updates the sheet. Logs errors and marks the row as "Error". How to use Add products to Google Sheets with name, description, audience, and set status to "Pending". Run the workflow or let the schedule trigger process items automatically. The system generates image → script → video, uploads them, and updates your sheet. Requirements Requires OpenAI, Google Sheets, and Google Drive accounts. Requires an n8n instance with credentials configured. Customizing this workflow Replace the schedule trigger with a webhook or form for real-time use. Generate multiple videos per product. Send outputs to platforms like TikTok, Meta Ads, or CMS tools. Add voiceovers, captions, or permanent asset storage.
by Mychel Garzon
Stop treating document review as a manual task. Let AI extract, classify, and route every contract, invoice, and NDA automatically. Legal and financial document review is slow, inconsistent, and expensive when done by hand. This workflow accepts any document via webhook, runs it through Claude Sonnet 4.6 for structured extraction and risk classification, logs the result to a compliance audit sheet, and fires alerts before a human ever opens the file. How it works The workflow operates in six stages: 1. Ingestion & Early Validation The webhook receives the document payload and immediately validates and deduplicates before responding. Invalid payloads return a 400. Duplicate submissions within a 30-day window (matched by SHA-256 fingerprint) return a 200 without reprocessing. Only clean, unique requests receive a 202 Accepted and continue to processing. 2. Document Acquisition Routes to one of two paths depending on the payload. URL submissions pass through an SSRF guard (blocks private ranges, hex/octal/decimal IP obfuscation, and non-HTTPS schemes), download the file, check it stays under 10 MB, and extract text via PDF parser. Inline text submissions pass directly to the prompt builder. 3. LLM Extraction & Classification The prompt is assembled with explicit prompt-injection defences using document delimiters, then sent to Claude Sonnet 4.6 via the Basic LLM Chain. The response is parsed and normalised into a structured output item covering document type, parties, dates, obligations, governing law, total value, and a plain-English summary. 4. Risk Routing & Alerting Classifies the document as LOW, MEDIUM, or HIGH risk based on explicit criteria embedded in the prompt (unlimited liability, GDPR exposure, lock-in periods, penalty clauses, and more). HIGH risk triggers an email and Slack alert chain in parallel with logging. A separate branch monitors token usage and fires a Slack nudge if input tokens exceed 40,000. 5. Compliance Logging Every processed document is appended to a Google Sheets audit log with job ID, risk level, parties, risk factors, governing law, token counts, and a truncated summary. Both the HIGH risk alert path and the LOW/MEDIUM path write to the same sheet. 6. Delivery & Callback If the original payload included a callback URL, the full extraction result is POSTed back to the upstream system after passing a second SSRF guard. The callback includes the job ID for end-to-end traceability. Key benefits Prompt-injection defence:** Document content is isolated between delimiters with explicit instructions to treat everything inside as data, not commands Dual input support:** Accepts both remote document URLs and raw inline text from any upstream system Early rejection:** Validation and deduplication run before the webhook responds, so invalid or duplicate requests never consume LLM credits SSRF protection:** Both the download URL and callback URL pass through guards that block private ranges, loopback addresses, and obfuscated IP formats Audit-ready logging:** Every extraction is logged with token costs, risk classification, and a full job ID for compliance traceability Global error handling:** A dedicated Error Trigger catches any execution failure and posts a structured alert to Slack with the failed node name Setup Credentials: Connect your Anthropic account to the Anthropic Chat Model node Google Sheets: Connect a Google Sheets OAuth2 credential to the Log to Google Sheets node Slack: Connect your Slack credential to the three Slack nodes (High Risk Alert, High Token Alert, Pipeline Error) Environment variables: Set GSHEETS_SPREADSHEET_ID, GSHEETS_SHEET_NAME, ALERT_FROM_EMAIL, and ALERT_TO_EMAIL SMTP: Connect an SMTP credential to the Email: High Risk Alert node Allowlist (optional): Set ALLOWED_DOWNLOAD_DOMAINS as a comma-separated list of trusted document domains Model (optional): To switch model versions, update the model field directly in the Anthropic Chat Model node Activate: POST a test payload to the webhook path process-document Who this is for Legal operations teams:** Automating first-pass contract review and risk flagging before legal sign-off Finance departments:** Extracting structured data from invoices and agreements at volume without manual entry Compliance teams:** Maintaining a complete, timestamped audit log of every document processed and its risk classification MSPs and agencies:** Offering AI-powered document intelligence as a managed service to clients Required credentials Anthropic (Claude Sonnet 4.6) Google Sheets OAuth2 Slack SMTP (for High Risk email alerts) How to customize it Adjust risk criteria:** Modify the risk level rules in the Prepare Claude Prompt node to match your organisation's legal thresholds Add more alert channels:** Fan out from Snapshot Parsed Result to add Teams messages, PagerDuty alerts, or HubSpot ticket creation for HIGH risk documents Extend the schema:** Add fields to the JSON schema in Prepare Claude Prompt to extract additional data points specific to your document types Custom triggers:** Swap the webhook for an email trigger, a SharePoint file watch, or a scheduled batch processor
by Rajeet Nair
Overview This workflow enables GDPR-compliant document processing by detecting, masking, and securely handling personally identifiable information (PII) before AI analysis. It ensures that sensitive data is never exposed to AI systems by replacing it with tokens, while still allowing controlled re-injection of original values when permitted. The workflow also maintains full audit logs for compliance and traceability. How It Works Document Upload & Configuration Receives documents via webhook and initializes configuration such as document ID, thresholds, and database tables. Text Extraction Extracts raw text from uploaded documents for processing. Multi-Detector PII Detection Detects emails, phone numbers, ID numbers, and addresses using regex and AI-based detection. PII Aggregation & Conflict Resolution Merges detections, resolves overlaps, removes duplicates, and builds a unified PII map. Tokenization & Vault Storage Replaces sensitive data with secure tokens and stores original values in a database vault. Masking & Validation Generates masked text and verifies that all PII has been successfully removed before AI processing. AI Processing (Masked Data) Processes the document using AI while preserving tokens to prevent exposure of sensitive information. Re-Injection Controller Determines which fields are allowed to restore original PII based on permissions. Secure Retrieval & Restoration Retrieves original values from the vault and restores them only where permitted. Audit Logging Stores metadata, detected PII types, and re-injection events for compliance tracking. Error Handling & Alerts Blocks processing and triggers alerts if masking fails or compliance rules are violated. Setup Instructions Activate the webhook and upload a document (PDF or supported file) Configure AI credentials (Anthropic / OpenAI) Set database credentials for PII vault and audit logs Adjust detection thresholds and compliance settings if needed Execute the workflow and review outputs and logs Use Cases GDPR-compliant document processing pipelines Secure AI document analysis with PII protection Automated redaction and tokenization systems Financial, legal, or healthcare document processing Privacy-first AI workflows for sensitive data Requirements n8n (latest version recommended) Anthropic or OpenAI API credentials PostgreSQL (or compatible database) for vault and audit logs Input documents (PDF or text-based files)
by Akshay Chug
Quick overview This workflow receives new GoHighLevel contacts via webhook, uses Anthropic Claude Sonnet to score and classify them as Hot/Warm/Cold, tags the contact in GoHighLevel accordingly, alerts your team in Slack for hot leads, and logs every lead with reasoning and next steps to Google Sheets. How it works Receives a webhook request from GoHighLevel when a new contact is created. Loads your lead qualification settings (ICP details, keywords, thresholds) and normalizes the incoming contact fields. Sends the contact details and ICP to Anthropic Claude Sonnet to return a JSON score, tier, reasoning, next action, and recommended GoHighLevel tag. Parses and validates the Claude response, then routes the lead based on the tier (Hot, Warm, or Cold). For Hot leads, posts an alert to a Slack channel and updates the contact in GoHighLevel via the REST API. For Warm and Cold leads, updates the contact in GoHighLevel via the REST API with the appropriate tier tagging. Appends the lead details, score, tier, reasoning, next action, and timestamp to a Google Sheets log. Setup Create a GoHighLevel “Contact Created” webhook that points to this workflow’s webhook URL, and provide your GoHighLevel API key and Location ID in the configuration step. Add an Anthropic credential (API key) for the Claude Sonnet model used to score and classify leads. Connect Slack credentials and set the target channel for hot-lead alerts, or disable the Slack step if you don’t use Slack. Connect Google Sheets credentials, set the spreadsheet ID and sheet name, and ensure the sheet has columns for timestamp, contact info, score, tier, reasoning, and next action. Review the ICP settings and tier thresholds (hot/warm cutoffs) to match your qualification criteria, then activate the workflow and test by creating a contact in GoHighLevel. Customization No customizations needed beyond the standard setup. The only node users need to edit is Configure ICP and Settings, where they add their GHL API key, Location ID, and describe their ideal customer profile in plain text. The scoring logic, Claude prompt, and all three branches work out of the box. Users can optionally adjust the Hot and Warm score thresholds in the Route by Tier switch node if they want to change how selective the classifier is.
by Jasurbek
Overview Automatically anonymize CVs/resumes while preserving professional information. Perfect for recruitment agencies ensuring GDPR compliance and bias-free hiring. Features Supports multiple file formats (PDF, DOCX, etc.) Multi-language support (preserves original language) Removes PII: names, emails, phones, addresses Preserves: skills, experience, dates, achievements Outputs professionally formatted PDF Requirements OpenAI API key (GPT-4 recommended) Stirling PDF service (self-hosted or cloud) n8n version 1.0+ Setup Instructions Configure OpenAI credentials Set up Stirling PDF API endpoint Update API key in HTTP Request nodes Activate workflow Test with sample CV Usage POST to webhook endpoint with CV file as UploadCV field. Use Cases Recruitment agencies (GDPR compliance) HR departments (bias-free screening) Job boards (candidate privacy)
by Cheng Siong Chin
How It Works This workflow automates automotive regulatory compliance evaluation by intelligently routing assessments through parallel evaluation paths based on component type. Designed for automotive compliance officers, quality assurance teams, and regulatory affairs managers, it solves the complex challenge of ensuring vehicle components meet diverse regulatory standards across safety, emissions, and performance requirements. The system receives compliance evaluation requests via webhook, determines whether components require split assessment or integrated regulatory database checks, then processes each path using OpenAI-powered compliance agents with specialized tools for performance simulation and structured output parsing. Results are aggregated, risk scores calculated using business rules, enriched with compliance metadata, and logged to regulatory databases while responding to the originating system with actionable compliance status and required remediation actions. Setup Steps Configure webhook endpoint URL for compliance evaluation system integration Set up OpenAI API credentials for Automotive Compliance Agent access Configure Check Evaluation Type node with component classification rules Set up Fetch Regulatory Database node with regulatory standards API credentials Update Performance Simulation Tool with automotive testing parameters Configure Calculator node with compliance scoring algorithms Customize Structured Output Parser for regulatory reporting format requirements Prerequisites Active OpenAI API account, automotive compliance evaluation system with webhook capability Use Cases Pre-production component compliance validation, supplier part certification Customization Modify compliance agent prompts for region-specific regulations, adjust risk scoring thresholds Benefits Accelerates compliance evaluation by 70%, ensures systematic multi-regulation assessment